20100606

Instalación de DevkitARM nativo para Mac OS X junto con SDL de GP32

(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 en la entrada