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


   Notas para construir la versin MingW32/Cygwin de Allegro.

   Escrito por Henrik Stokseth.

   Robert J Ohannessian aadi actualizaciones a las instrucciones de
   instalacin y un ejemplo de cmo usar Dev-C++ con Allegro.

   Vase readme.txt para un punto de vista ms general.



==========================================
============ notas de MingW32 ============
==========================================

   Esto es una versin completa de Allegro para MingW32. Su construccin
   no depende de las libreras DLL compiladas con MSVC, ya que puede
   crearlas por s mismo. Me agrada decir que usando Allegro y otras
   herramientas profesionales y libres pueden crearse programas para la
   plataforma Win32. En esta nota me gustara agradecer a Peter Puck que
   haya hecho esto realidad y que acabase lo que yo empec. Disfruten!

   El ejemplo de salvapantallas es construido, pero debe copiar el archivo
   scrsave.scr a la carpeta de windows para probarlo adecuadamente.

   Si tiene instaladas tanto las utilidades GNU como el Bash GNU, ajuste la
   variable de entorno UNIX_TOOLS (ajuste UNIX_TOOLS=1) para que funcione
   la compilacin. Esto sucede porque la herramienta make GNU usar
   automticamente sh.exe en lugar de command.com si lo encuentra accesible.

   Ejecutar 'make depend' y 'fixdll.bat' requiere que se haya instalado el
   programa GNU sed. Ejecutar 'make clean' y 'make uninstall' requiere
   que se tengan instaladas las herramientas de archivo (fileutils)
   GNU. Puede descargar algunas utilidades extra para MingW32 desde
   'http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/download.html'
   y
   'ftp://ftp.franken.de/pub/win32/develop/gnuwin32/mingw32/porters/Mikey/'.

   Si, en cualquier momento del proceso de instalacin, obtiene un mensaje
   del tipo 'Out of Environment space' (sin espacio para entorno), dirjase
   las F.A.Q. (P.U.F., preguntas usualmente formuladas) de Allegro para
   saber cmo solucionarlo.



=============================================================================
============ Obtener e instalar el compilador y las herramientas ============ 
=============================================================================

   Tienes cuatro formas diferentes de usar MingW32 y Allegro en tu
   ordenador.

   - La seccin 'Preparando MingW32 para construir Allegro' describe
     cmo preparar las herramientas de lnea de comandos MingW32, que es la
     eleccin para aquellos a los que les guste trabajar en linea de
     comandos.

   - La seccin 'Preparando Dev-C++ para construir Allegro' describe cmo
     prepara las herramientas de lnea de comandos MingW32 y el entorno de
     desarrollo Dev-C++. Esta es la eleccin de los que prefieren trabajar
     en un entorno grfico de desarrollo.

   - La seccin 'Preparando Cygwin para construir Allegro' describe cmo
     preparar el compilador Cygwin para construir Allegro. Cygwin ofrece
     un maduro entorno de estilo UNIX para trabajar.

   - La ltima seccin 'Compilacin cruzada' describe cmo preparar las
     herramientas de lnea de comando MingW32 para compilar programas Win32
     desde sistemas Linux.

   Nota: Ser necesario un programa para descomprimir archivos de tipos .zip,
   .tar.gz y, opcionalmente, .tar.bz2. Se recomienda PowerArchiver
   (shareware), el cual puede descargar de: 'http://www.powerarchiver.com'.



===================================================================
============ Preparando MingW32 para construir Allegro ============ 
===================================================================

   Para disponer de MingW32, necesita obtener las siguientes distribuciones
   de internet. Por favor, no descomprima ni instale nada hasta el paso 3.

   1) Descargue la distribucin MingW32 completa desde
      'http://www.mingw.org'. Debera descargar el paquete completo en
      lugar de varios pequeos, salvo que quiera mover archivos a mano. :-)
      En el momento de escribir esto (Noviembre de 2001), la versin 1.1 es
      la ms nueva. Aqu tiene un enlace directo:
      'http://prdownloads.sourceforge.net/mingw/MinGW-1.1.tar.gz'

   2) Obtenga el SDK DirectX minimal para Mingw32. (dx70_mgw.zip) Se
      puede descargar de 'http://alleg.sourceforge.net/wip.html'. Por favor,
      no lo confunda con dx70_min.zip.

   3) Instale la distribucin MingW32 del paso 1. Recomendamos descomprimirlo
      en 'c:\mingw32' (los pasos siguientes asumen que se ha hecho as). No
      instale nada en un directorio con espacios, smbolos de suma o resta,
      barras de divisin o cualquier otra cosa que pueda confundir al
      compilador. Eso va de aviso por si lo quera meter en
      C:\Archivos de Programa.

   4) Descomprima el archivo del paso 2 en 'c:\mingw32'. Sobreescriba los
      archivos repetidos. Nota: Si se usa una copia antigua de MingW32 donde
      los subdirectorios Include y Lib no existen, entonces descomprima el
      archivo en el subdirectorio 'c:\mingw32\i386-mingw32msvc'.

   5) Ahora es necesario aadir 'c:\mingw32\bin' al *comienzo* de la
      variable PATH.

      Si usa Windows 9x, puede aadir la lnea 'path c:\mingw32\bin;%PATH%'
      al final del archivo 'c:\autoexec.bat'. Puede usar 'edit', 'msconfig',
      'sysedit', 'notepad' o cualquier otro editor capaz de editar texto
      ASCII.

      Si usa Windows NT (lo que incluye al 2000 y al XP), entonces abra
      el Panel de Control, pulse sobre el accesorio 'Sistema', la seccin
      'Avanzada', y, finalmente, el botn 'Entorno'. Seleccione la lnea
      'PATH=', y adale 'c:\mingw32\bin'.

   6) De la misma forma aada la lnea 'set MINGDIR=C:\mingw32' a su
      'c:\autoexec.bat'.

   7) Ahora, reinicie!

   Pruebe la instalacin tecleando en la lnea de comandos: 'gcc -v'. La
   respuesta debe ser similar a:

   Reading specs from C:\MINGW32\BIN\..\lib\gcc-lib\i386-mingw32msvc\2.95.3\specs
   gcc version 2.95.3 20010726 (release)

   (Si no conoce otra manera, pulse Inicio -> Ejecutar y escriba
   'command'. En Windows 2000 y XP debe escribir 'cmd'.)



===================================================================
============ Preparando Dev-C++ para construir Allegro ============ 
===================================================================

   Algunos prefieren usar la distribucin Dev-C++ para crear programas
   con Allegro. Dev-C++ es un entorno de desarrollo integrado (IDE)
   muy bonito e incluye un compilador MingW32 actualizado. Por favor,
   no descomprima o instale nada hasta el paso 4.

   Obteniendo lo que necesita:

   1) Descargue la distribucin MingW32 completa de
      'http://www.mingw.org'. Debera descargar el paquete completo en
      lugar de varios pequeos, salvo que quiera mover archivos a mano. :-)
      En el momento de escribir esto (Noviembre de 2001), la versin 1.1 es
      la ms nueva. Aqu tiene un enlace directo:
      'http://prdownloads.sourceforge.net/mingw/MinGW-1.1.tar.gz'

   2) Descargue el entorno de desarrollo Dev-C++ 4 (sin compilador Mingw
      y libreras) desde 'http://www.bloodshed.net/dev/download.html'. De
      nuevo, asegrese de que no instala nada hasta que llegue al paso 4.

   3) Obtenga el SDK DirectX minimal para Mingw32. (dx70_mgw.zip) Se
      puede descargar de 'http://alleg.sourceforge.net/wip.html'. Por favor,
      no lo confunda con dx70_min.zip.


   Proceso de instalacin:

   4) Instale el paquete del paso 1. Se recomienda descomprimirlo en la
      carpeta 'C:\Dev-Cpp' (los pasos siguientes asumen que esa es la que
      va a usarse).  No instale nada en un directorio con espacios, smbolos
      de suma o resta, barras de divisin o cualquier otra cosa que pueda
      confundir al compilador. Eso va de aviso por si lo quera meter en
      C:\Archivos de Programa.

   5) Instale el paquete del paso 2 en la carpeta 'C:\Dev-Cpp'. Sobreescriba
      cualquier archivo existente con los nuevos.

   6) Descomprima el archivo del paso 3 a 'C:\Dev-Cpp'. Sobreescriba
      cualquier archivo existente con los nuevos.

   7) Ahora necesita aadir 'C:\Dev-Cpp\bin' al *comienzo* del PATH
      (ruta de bsqueda).

      Si usa Windows 9x, puede aadir la lnea 'path c:\Dev-Cpp\bin;%PATH%'
      al final del archivo 'c:\autoexec.bat'. Puede usar 'edit', 'msconfig',
      'sysedit', 'notepad' o cualquier otro editor capaz de edita texto
      ASCII.

      Si usa Windows ME, necesitar ejecutar 'msconfig', seleccionar la
      seccin 'Entorno' y aadir 'c:\Dev-Cpp\bin' a la variable PATH.

      Si usa Windows NT (lo que incluye al 2000 y al XP), entonces abra
      el Panel de Control, pulse sobre el accesorio 'Sistema', la seccin
      'Avanzada', y, finalmente, el botn 'Entorno'. Seleccione la lnea
      'PATH=', y adale 'c:\Dev-Cpp\bin'.

   8) De la misma forma aada la lnea 'set MINGDIR=C:\Dev-Cpp' a su
      'c:\autoexec.bat', o a su entorno.

   9) Ahora, reinicie!

   Compruebe la instalacin tecleando desde la lnea de comando lo
   siguiente: 'gcc -v'. La respuesta debe ser similar a:

   Using builtin specs.
   gcc version 2.95.2 19991024 (release)

   (Pulse en Inicio -> Ejecutar y teclee "command" o "cmd" para tener una
   linea de comandos.)

   10) Ahora siga leyendo un poco ms abajo las instrucciones sobre
       instalar Allegro y un programa de ejemplo.

   

==================================================================
============ Preparando Cygwin para construir Allegro ============ 
==================================================================

   1) Obtenga los paquetes que forman Cygwin. Obtenga setup.exe de
      'http://sources.redhat.com/cygwin/'. Inicie el programa de
      configuracin y descargue los paquetes: bash, binutils, cygwin,
      fileutils, gcc, gdb, login, make, man, mingw, sed, sh-utils,
      texinfo, textutils y w32api.

      Instale los paquetes. El resto de la instalacin supone que se ha
      instalado en 'c:\cygwin'.

   2) Obtenga el kit de desarrollo (SDK) minimal de
      DirectX 7 para MingW32. (dx70_mgw.zip). Descrguelo de
      'http://alleg.sourceforge.net/wip.html' y descomprmalo en un
      direcxtorio temporal, por ejemplo 'C:\Temp'. Mueva el contenido de
      'C:\Temp\lib' a 'C:\cygwin\lib\w32api', y el de 'C:\Temp\include' a
      'c:\cygwin\usr\include\w32api'.

   3) Site el texto siguiente en '/etc/profile' (c:\cygwin\etc\profile):
      export ALLEGRO_USE_CYGWIN=1
      export MINGDIR=/usr/local

   4) Inicie su entorno BASH shell de cygwin, que puede encontrar tanto en
      su escritorio como en el men inicio. Asegrese de que /bin/sh existe,
      si no es as, ejecute: 'ln -s /bin/bash.exe /bin/sh.exe'.

   5) Ejecute './fix.sh mingw32'. Esto tardar un poco...

   Pruebe la instalacin tecleando en la linea de comandos del entorno BASH:
   'gcc -v'. La respuesta debe ser similar a:

   Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
   gcc version 2.95.3-5 (cygwin special)



=============================================
============ Compilacin cruzada ============
=============================================

   Breve ejemplo de como preparar un sistema de compilador cruzado basado
   en MingW32:

   1) Descargue el compilador cruzado precompilado MingW32 cross-compiler
      de: 'http://www.devolution.com/~slouken/SDL/Xmingw32/' Descomprmalo
      en '/usr/local/'. Si lo sita en cualquier otro sitio, deber editar
      el archivo 'xmake.sh' y substituir XC_PATH y INSTALL_BASE con los
      nombres apropiados.

   2) Obtenga el SDK DirectX minimal para Mingw32. (dx70_mgw.zip) Se puede
      descargar de 'http://alleg.sourceforge.net/wip.html'. Descomprmalo en
      '/usr/local/cross-tools/i386-mingw32msvc/'. Asegrese que convierte
      todos los archivos de texto al estilo unix (con unzip -a) o el
      preprocesador se quejar.

   3) Ejecute './fix.sh mingw32 --dtou'. Ha terminado los preparativos.

   4) Ya puede ejecutar './xmake.sh' para construir la biblioteca Allegro
      y ejecutar './xmake.sh install' como superusuario para instalar
      Allegro. Puede usar 'xmake.sh' como usara 'make' para compilar todo
      el material que acompaa a Allegro.  Por ejemplo: Para obtener la
      documentacin puede ejecutar './xmake.sh docs'.

      

==========================================
============ Instalar Allegro ============
==========================================

   Instrucciones de cmo construir la versin MingW32 de Allegro paso
   a paso.  Se asume que has descomprimido allegro a c:\allegro.

   Primero se configura Allegro escribiendo en la lnea de comandos lo
   siguiente: (Pulse en Inicio -> Ejecutar y teclee "command" o "cmd"
   para tener una linea de comandos.)

   cd c:\allegro
   fix.bat mingw32

   Por defecto se construye la versin de Allegro enlazada dinmicamente,
   pero si desea obtener la versin enlazada estticamente (sus programas
   sern ms grandes pero no requerirn el archivo DLL), escriba en la
   lnea de comandos:

   SET STATICLINK=1

   De la misma forma podemos escribir una de las lneas siguientes para
   obtener la versin de depuracin o la de perfilado de la biblioteca:

   SET DEBUGMODE=1
   SET PROFILEMODE=1

   Ahora estamos preparados para crear la biblioteca Allegro . Teclee:

   make

   Una vez que la compilacin ha terminado, puede recuperar algo de
   espacio en disco tecleando "make compress", que usa el programa UPX
   para comprimir los archivos ejecutables y las .dll optimizadas. Antes
   de ejecutar "make compress", se debera haber fijado la variable de
   entorno UPX_BIN a la direccin correcta de upx.exe. Se tendr que
   ejecutar "make compress" antes de "make install" si se desea que sea
   la .dll comprimida  la que se site en la carpeta windows. Para liberar
   an ms espacio en disco, se puede ejecutar "make clean" para eliminar
   todos los ficheros temporales y la documentacin en formato HTML.

   Y entonces, el ltimo paso:

   make install

   Ahora se tiene instalado tanto mingW32 como Allegro! Mire el resto
   de la documentacin y los ejemplos para aprender ms de ella.



========================================
============ Usando Allegro ============
========================================

   Todas las funciones, variables y estructuras de datos de Allegro
   estn definidas en allegro.h. Se debe incluir este archivo en todos
   los programas, y enlazarlos con la librera optimizada liballeg.a,
   o bien con la librera de depuracin liballd.a, o con la librera de
   perfilado liballp.a. Debe incluir las libreras de enlace dinmico
   (DLL) de Allegro en cualquier programa que quiera distribuir para
   instalar en otros equipos.

   Si se usa una librera enlazada estticamente, se debe definir el
   smbolo de prepocesador ALLEGRO_STATICLINK antes de incluir cualquiera
   de las cabeceras (.h) de Allegro y enlazar el programa resultante con
   Allegro y las libreras Win32/DirectX en ese orden (ver la variable
   LIBRARIES en el archivo makefile.mgw).

   No debe olvidar que es necesario usar la macro END_OF_MAIN() despus
   del fin de la funcin main().

=======================================

   Un ejemplo simple de una lnea de comando que compila el programa de
   ejemplo 'foo' que usa allegro:

   gcc foo.c -mwindows -O2 -Wall -o foo.exe -lalleg

=======================================

   Un ejemplo sencillo de cmo crear un pequeo programa con Dev-C++:

   Ponga en funcionamiento Dev-C++ y cree un nuevo proyecto (File/New
   Project). Seleccione "Windows Application", y pulse sobre el botn
   "Ok". Nombre el proyecto y ascielo a un archivo nuevo. Ahora debera
   ver un ejemplo de cdigo en una ventana. Cirrela, ya que no la va
   a necesitar (el uso de Allegro es mucho ms sencillo). Cree un nuevo
   archivo (File/New Source File), entonces escriba un pequeo programa
   Allegro. Puede inspirarse en los ejemplos que acompaan a la librera
   si lo desea. Aqu tiene un pequeo programa que puede teclear para
   ver que todo funciona:

      #include <allegro.h>

      int main() {
         allegro_init();
         allegro_message("Hola, mundo!");
         return 0;
      }
      END_OF_MAIN();

   Ahora necesita decirle a Dev-C++ que va a hacer un programa que usa
   Allegro. Para ello, vaya la ventana de opciones del proyecto (men
   Project/Project Options), y teclee -lalleg (o -lalld para la versin de
   depuracin) en el espacio bajo "Further object file or linker options".

   Compile su proyecto! Simplemente pulse en la marca verde de la barra
   de tareas de Dev-C++. Corrija los errores sintcticos del cdigo y
   pulse en "Execute" para ejecutarlo. Si todo ha funcionado, ver una
   ventana emergente con el mensaje "Hola, mundo!" en ella.



   Feliz programacin!
