Re: BennuGD para Dreamcast
¡Muchas gracias alexislight! Se agradece :)
Sigo con mis notas personales: esta vez es un pequeño tutorial para compilar la última versión de BennuGD en nuestro sistema host... el MAC OS X!!
[b][color=#ff0000]¡MUY IMPORTANTE![/color] BennuGD compila pero no funciona para entornos de 64bits (sólo compilaremos para arquitectura i386)[/b]
[color=#0099ff]COMPILAR BENNUGD[/color]
* Tendremos que tener instalado XCode 8 y uno de los siguientes repositorios: Macports o Homebrew.
* Para empezar, debemos de instalar las siguientes librerías necesarias para compilar: SDL, SDL_mixer, libpng. También añadiremos la freetype para un siguiente módulo que compilaremos.
Abrimos un terminal y ejecutamos:
[b]Macports[/b]: >> sudo port install libsdl +no_x11 +universal libsdl_mixer +universal zlib +universal libpng +universal freetype +universal
[b]Homebrew[/b]:
>> brew install zlib --universal libpng freetype --universal libmikmod --universal
>> brew install sdl --universal
>> brew install sdl_mixer --universal --with-libmikmod --with-libvorbis
[b][color=#ff0000]Actualización Agosto 2017:[/color][/b] Homebrew ya no soporta usar versiones viejas de OpenSSL, así que hay que modificar los Makefiles para quitar toda referencia al uso de la SSL. Deben de tocar estos ficheros:
[b]modules/configure.in[/b] -> Cambiar el caso de "darwin", y no compilar "mod_crypt"
[b]modules/Makefile.am[/b] -> Quitar la referencia a mod_crypt
[b]core/configure.in[/b] -> Cambiar el caso de "darwin" y comentar "AC_SUBST(CRYPT_LDFLAGS)"
[b]core/bgdi/src/Makefile.am[/b] -> Quitar la referencia de $(CRYPT_LDFLAGS)
[b]core/bgdc/src/Makefile.am[/b] -> Quitar el fichero "../../common/b_crypt.c \"
[b]core/bgdrtm/src/Makefile.am[/b] -> Quitar la referencia de $(CRYPT_LDFLAGS)
[b][color=#ff0000]Actualización Agosto 2017 (2) :[/color][/b] Si queréis compiar la librería mod_image, debéis de instalar la librería libpng pero compilando para [b]32/64 bits[/b], y además instalar la SDL_image también para [b]32/64 bits[/b], y con el flag "-without-webp"
* Descargamos el código fuente de BennuGD con este comando:
>> svn co https://svn.code.sf.net/p/bennugd/code/ bennugd
* Copia el siguiente script que aparece a continuación y lo guardas como "[b]build-osx.sh[/b]". Ya está preparado para i386, además del path a /usr/local (Macports puede usar /opt/local).
[code]#!/bin/bash
TARGET=osx-darwin
export CFLAGS="-DTARGET_MAC -arch i386 -I/usr/local/include"
export LDFLAGS="-arch i386 -framework Cocoa"
echo "### CFLAGS and LDFLAGS env ###"
echo $CFLAGS;
echo $LDFLAGS;
echo "### Building BennuGD Core ###"
cd core
chmod a+x configure
# Patch Makefile.in's to build .dylib's instead of .so's
FILES="bgdrtm/src/Makefile.in bgdrtm/src/Makefile.am"
for i in $FILES; do
echo $i
sed -i -e 's/-module/-shared/g' $i
done
# Patch BGDI (main executable) OSX SDLmain init
# Fixing multiple relinking :)
FILES="bgdi/src/Makefile.in bgdi/src/Makefile.am"
for i in $FILES; do
echo $i
sed -i -e 's/.libs -lbgdrtm/.libs -lSDLmain -lSDL -lbgdrtm/g' $i
sed -i -e 's/bgdi_LDFLAGS =/bgdi_LDFLAGS := -arch i386 -framework Cocoa/g' $i
done
case $1 in
release)
./configure && make clean && make
;;
*)
make
;;
esac
if [ $? -ne 0 ]; then
echo "*** ABORT ***"
exit 1
fi
cd -
echo "### Building BennuGD Modules ###"
cd modules
chmod a+x configure
# Patch Makefile.in's to build .dylib's instead of .so's
for i in *; do
if [ -d $i ]; then
sed -i -e 's/-module/-shared/g' $i/Makefile.in;
sed -i -e 's/-module/-shared/g' $i/Makefile.am;
fi;
done
case $1 in
release)
./configure && make clean && make
;;
*)
make
;;
esac
if [ $? -ne 0 ]; then
echo "*** ABORT ***"
exit 1
fi
cd -
echo "### Building BennuGD Tools ###"
cd tools/moddesc
chmod a+x configure
case $1 in
release)
./configure && make clean && make
;;
*)
make
;;
esac
if [ $? -ne 0 ]; then
echo "*** ABORT ***"
exit 1
fi
cd -
echo "### Copying files to bin folder ###"
mkdir -p bin/$TARGET 2>/dev/null
#cp 3rdparty/des-4.04b/libdes.so bin/$TARGET
cp core/bgdi/src/.libs/bgdi bin/$TARGET
cp core/bgdc/src/bgdc bin/$TARGET
cp core/bgdrtm/src/.libs/libbgdrtm.dylib bin/$TARGET
cp $(find modules -name '*.dylib') bin/$TARGET
cp tools/moddesc/moddesc bin/$TARGET
echo "### Build done! ###"
exit 0[/code]
* Abrid el fichero /core/bgdi/src/main.c para añadir el define:
#include <SDL/SDL.h>
Es importante hacerlo, ya que sino os dará un error de linkaje que dice que no os encuentra SDL_main.
* Abrid el fichero /modules/libdraw/libdraw.c y quitad dos "_inline" de:
void _HLine32_stipple( uint32_t * ptr, uint32_t length )
void _HLine32_nostipple( uint32_t * ptr, uint32_t length )
* [color=#ff0000]NUEVO![/color] Abrid el fichero /modules/mod_sound/mod_sound_exports.h y comentad estas dos funciones:
// FUNC( "UNLOAD_SONG" , "P" , TYPE_INT , modsound_unload_song2 ),
// FUNC( "UNLOAD_WAV" , "P" , TYPE_INT , modsound_unload_wav2 ),
* Todo listo!! Para compilarlo en nuestro Mac:
[code]>> cd bennugd
>>./build-osx.sh release[/code]
¡Y tachán! Dentro de la carpeta bin/osx-darwin tendremos los binarios bgdc (compilador), bgdi (intérprete), los ficheros .dylib (módulos de BennuGD) y la utilidad moddesc (que nos da info de los modulos).