(Esta entrada fue publicada originalmente en el wiki de GP32Spain)
Estos son los pasos a seguir para compilar, prácticamente desde cero, un entorno de desarrollo para Mac OS X. De esta manera se garantiza que el compilador aprovecha efectivamente el tipo de procesador que tenga el Mac. Para poder seguirlos adecuadamente, se debe tener un conocimiento del trabajo con línea de comandos en entornos UNIX/Linux, ya que casi todos los pasos deben realizarse desde la aplicación Terminal de Mac OS X u otra aplicación de similar (xterm, etc). El script de compilación está pensado para ejecutarse sobre BASH.
Este procedimiento se ha utilizado con éxito para preparar entornos de compilación en ordenadores Apple Macintosh con procesador Intel o PowerPC, y con Mac OS X Tiger (10.4.11) o Leopard (10.5.1).
Instrucciones para compilar el entorno de desarrollo básico
- Instalar las herramientas gratuitas de desarrollo de Apple, que vienen incluidas con los discos de instalación del sistema operativo, o se pueden descargar desde http://developer.apple.com/tools/xcode/
- Obtener el script oficial de compilación de devkitARM (versión antigua y última versión), desde la página oficial en http://downloads.sourceforge.net/devkitpro/buildscripts.tar.bz2?modtime=1108388392 y http://downloads.sourceforge.net/devkitpro/buildscripts-20060724.tar.bz2
- (Opcional si se tiene instalado wget) Obtener el código fuente de las herramientas necesarias (binutils, gcc, etc.) en http://ftp.gnu.org/gnu/binutils/binutils-2.15.tar.bz2 y ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-3.4.3/gcc-core-3.4.3.tar.bz2 y ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-3.4.3/gcc-g++-3.4.3.tar.bz2 y http://osdn.dl.sourceforge.net/sourceforge/devkitpro/libogc-src-20050121.tar.bz2 y ftp://sources.redhat.com/pub/newlib/newlib-1.12.0.tar.gz
- Obtener SDL precompiladas para GP32 y ejemplos en http://downloads.sourceforge.net/sdl-gp32/sdl4gp32-precompiled-28082005.tar.bz2 y http://downloads.sourceforge.net/sdl-gp32/examples-src-28082005.tar.bz2
- Crear una imagen de disco, al menos de 650MBytes de espacio y con soporte para mayúsculas y minúsculas (necesario para que funcionen bien las utilidades basadas en Linux)
hdiutil create -size 650M -fs HFSX -volname gp32SDKbuild -partitionType Apple_HFS -attach gp32SDKbuild
- Copiar al nuevo disco, en un directorio llamado files, los archivos que se han bajado
- Iniciar Terminal y compilar devkitARM en la imagen de disco:
cd /Volumes/gp32SDKbuild
mkdir src
cd src
tar xjf /Volumes/gp32SDKbuild/files/buildscripts.tar.bz2
cd buildscripts
./build-devkit.sh
- Responder a las preguntas del script:
This script will build and install your devkit. Please select the one you require
1: build devkitARM (gba gp32)
2: build devkitPPC (gamecube)
- Responder 1, para compilar las herramientas de GP32:
The installation requires binutils-2.15, gcc3.4.3 and newlib-1.12.0. Please select an option:
1: I have already downloaded the source packages
2: Download the packages for me (requires wget)
- Responder 1 si se han bajado los archivos necesarios (binutils, gcc, etc.), por ejemplo de una compilación anterior, o 2 si no se dispone de ellos (ojo, que la descarga sólo funciona si se ha instalado wget, que no está instalado por defecto en OS X).
Please enter the directory where you would like 'devkitARM' to be installed:
for mingw/msys you must use :/ or you will have include path problems
- Introducir el directorio de la imagen de disco (en este ejemplo /Volumes/gp32SDKbuild).
Please enter the path to the directory that contains the source packages:
- Si se habían bajado ya los archivos necesario (binutils, gcc, etc.) indicar dónde se encuentran (por ejemplo /Volumes/gp32SDKbuild/files).
Ready to install devkitARM in /Volumes/gp32SDKbuild
press return to continue
- Pulsar Enter. A continuación comenzará el proceso de compilación, tomárselo con calma, ya que puede llevar desde varios minutos hasta más de dos horas si el ordenador es antiguo.
...
Would you like to delete temporary files? [Y/n]
y
Would you like to delete the source directories? [Y/n]
y
Would you like to delete the source packages? [y/N]
N
note: Add the following to your PATH variable; /Volumes/gp32SDKbuild/bin
- Compilar la utilidad b2fxec, usando los fuentes de los últimos scripts de devkitARM:
cd /Volumes/gp32SDKbuild/src
rm -rf buildscripts/*
tar xjf /Volumes/gp32SDKbuild/files/buildscripts-20060724.tar.bz2
cd tools/gp32/b2fxec
make
cp b2fxec /Volumes/gp32SDKbuild/bin
Normalmente no se produce ningún error, y ahora, para poder compilar, basta con:
- Montar la imagen de disco
- Ajustar PATH para que incluya /Volumes/gp32SDKbuild/bin (o la ruta equivalente si el disco se monta en otra ruta distinta)
- Preparar Makefile para que use arm-elf como arquitectura
Instrucciones para instalar las SDL precompiladas y los ejemplos
- Descomprimir la versión precompilada de SDL
cd /Volumes/gp32SDKbuild
mkdir sdl
cd sdl
tar xjf /Volumes/gp32SDKbuild/files/sdl4gp32-precompiled-28082005.tar.bz2
Ahora, para poder compilar usando SDL, basta con:
- Montar la imagen de disco
- Ajustar PATH para que incluya /Volumes/gp32SDKbuild/bin (o la ruta equivalente si el disco se monta en otra ruta distinta)
- Preparar Makefile para que use arm-elf como arquitectura, y Volumes/gp32SDKbuild/sdl como ruta extra para incluir archivos y librerías
Instrucciones para comprobar los ejemplos
Seguir los siguientes pasos para comprobar que los ejemplos compilan correctamente (y por lo tanto el entorno funciona):
- Descomprimir los ejemplos
cd /Volumes/gp32SDKbuild/src
tar xjf /Volumes/gp32SDKbuild/files/examples-src-28082005.tar.bz2
- Editar el archivo Makefile de uno cualquiera de los ejemplos, cambiando
CC = arm-elf-gcc
AS = arm-elf-as
LD = arm-elf-ld
OBJCOPY = arm-elf-objcopy
por
GP32PATH = /Volumes/gp32SDKbuild/sdl
DEVKITPATH = /Volumes/gp32SDKbuild
CC = $(DEVKITPATH)/bin/arm-elf-gcc
AS = $(DEVKITPATH)/bin/arm-elf-as
LD = $(DEVKITPATH)/bin/arm-elf-ld
OBJCOPY = $(DEVKITPATH)/bin/arm-elf-objcopy
- Abrir Terminal, ir al directorio donde se encuentra el ejemplo modificado y compilar
make
- Copiar el archivo FXE que se haya creado nuevo (y los archivos auxiliares si los hubiera) al directorio GPMM de una tarjeta SD, y comprobar en la consola que el ejemplo funciona.
No hay comentarios:
Publicar un comentario