Instrucciones de compilación para OSX

Started by josebita, December 08, 2012, 12:35:00 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Hace poco he reinstalado el Mac y dado que estoy reinstalando todo para poder volver a compilar BennuGD para OSX aprovecho para poner las instrucciones aquí, dado que las otras que circulan por ahí están un poco desfasadas.

       
  • Instalar Xcode
  • Instalar macports
  • Abrir el programa Terminal
  • Ejecutar el siguiente comando:
    sudo port install libsdl +no_x11 +universal libsdl_mixer +universal zlib +universal libpng +universal openssl +universal
    (tardará un buen rato)
  • Descargar el código fuente de BennuGD ejecutando el siguiente comando en la terminal:
    svn co https://bennugd.svn.sourceforge.net/svnroot/bennugd bennugd
  • Copiar en la carpeta del código fuente de BennuGD el script que pongo más abajo en un fichero de texto de nombre "build-osx.sh"
  • Editar el fichero core/bgdi/src/main.c y debajo en la línea 37 añadir:
    #include <SDL/SDL.h>
  • Ejecutar en la terminal el siguiente comando:
    cd bennugd
    chmod a+x build-osx.sh
    ./build-osx.sh release
Una vez hecho esto tendréis BennuGD compilado para OSX en la carpeta bin/osx-darwin

#!/bin/bash

TARGET=osx-darwin

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
    sed -i -e 's/-module/-shared/g' $i
done

FILES="bgdi/src/Makefile.in
bgdi/src/Makefile.am"
for i in $FILES; do
    sed -i -e 's/-lbgdrtm/-lbgdrtm -lSDLmain -lSDL -Wl,-framework,Cocoa/g' $i
done

case $1 in
    release)
        CFLAGS="-arch i386 -I/opt/local/include" LDFLAGS="-arch i386 -L/opt/local/lib" ./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)
        CFLAGS="-arch i386 -I/opt/local/include" LDFLAGS="-arch i386 -L/opt/local/lib" ./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)
        CFLAGS="-arch i386 -I/opt/local/include" LDFLAGS="-arch i386 -L/opt/local/lib" ./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



[Editado] He añadido openssl a la lista de librerías que se deben instalar con macports.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on December 08, 2012, 02:36:42 AM
muy bien hecho joseba!

karma++
La verdad es que eso que hiciste de que buscara las libmod* además de las mod* me ha simplificado mucho la vida en la compilación para mac :)

SplinterGU

por eso lo hice... para ti, para simplificarte la vida.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

voy a ver si encuentro una version piratilla del leopard y lo pruebo en una maquina virtual xD

DCelso

Lo del include sdl /sdl. No lo entiendo. Si en pc no hace falta...
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

josebita

Quote from: DCelso on December 08, 2012, 08:34:08 PM
Lo del include sdl /sdl. No lo entiendo. Si en pc no hace falta...
Aquí sí hace falta. Es por alguna cuestión de cómo las aplicaciones deben hablarse con OSX que no es igual en todas las plataformas.

SplinterGU

joseba, por que hay que poner SDL.h en core/bgdi/src/main.c ?

me gustaria saber la razon... si es por el #define main(...) sdl_main(...) en el .pc, eso hay que cambiar el .pc... yo en todas mis instalaciones cambio el .pc... lo lamento por las instalaciones estandard, pero el reemplazo del main de sdl hace cosas que no son buenas... y ya los modulos hacen las inicializaciones correctas... hacer doble inicializacion va a dar problemas... (a pesar de que en teoria no deberia, en algun que otro caso lo dan...)

pero quizas tu te refieres a otras cosas... podrias explicar con mas detalles?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on December 09, 2012, 02:01:06 AM
joseba, por que hay que poner SDL.h en core/bgdi/src/main.c ?

me gustaria saber la razon... si es por el #define main(...) sdl_main(...) en el .pc, eso hay que cambiar el .pc... yo en todas mis instalaciones cambio el .pc... lo lamento por las instalaciones estandard, pero el reemplazo del main de sdl hace cosas que no son buenas... y ya los modulos hacen las inicializaciones correctas... hacer doble inicializacion va a dar problemas... (a pesar de que en teoria no deberia, en algun que otro caso lo dan...)

pero quizas tu te refieres a otras cosas... podrias explicar con mas detalles?
Es para que SDL haga la inicialización, sí.
El tema es que en OSX los programas que no sean de modo texto deben hacer una inicialización propia (no la propia de los módulos).
Yo no tengo mayor inconceniente pero debes decirme qué hacer exactamente para ver si funciona o no.

SplinterGU

cual es la inicializacion que te refieres?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2


SplinterGU

#11
que es lo que pasa si no usas esa inicializacion? por lo que veo mete la aplicacion en el menu bar y no se que otra cosa mas, pero no se si hay algo critico...

edit: y bueno, si te sirve hacerlo asi, adelante, pero no me parece ideal meterle al bgdi dependencias de SDL, cuando todo lo que se busco desde el principio era que no la tenga.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

Quote from: DCelso on December 09, 2012, 08:43:08 PM
Eso mismo iba a decir yo.  ;)

te entendi perfectamente a que apuntabas, y como opino igual, pregunte... ;) lo que no quito es que si esa es la unica forma o la mas rapida (en este momento) y no queda otra opcion, y bueno, adelante con ello... pero la cosa es que realmente lo programas que no son texto, son aquellos que incluyen mod_video (o libvideo, para ser precisos) y ahi deberia hacerse esta inicializacion si es que realmente es necesaria.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2