Autor Tema: Instrucciones de compilación para OSX  (Leído 2422 veces)

josebita

  • Administrator
  • *****
  • Mensajes: 4039
  • Karma: 257
    • BennuGD Mobile Worklog
Instrucciones de compilación para OSX
« en: Diciembre 08, 2012, 12:35:00 am »
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

Código: [Seleccionar]
#!/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.
« última modificación: Enero 24, 2013, 11:43:52 pm por josebita »

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Instrucciones de compilación para OSX
« Respuesta #1 en: Diciembre 08, 2012, 02:36:42 am »
muy bien hecho joseba!

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

josebita

  • Administrator
  • *****
  • Mensajes: 4039
  • Karma: 257
    • BennuGD Mobile Worklog
Re:Instrucciones de compilación para OSX
« Respuesta #2 en: Diciembre 08, 2012, 04:53:58 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

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Instrucciones de compilación para OSX
« Respuesta #3 en: Diciembre 08, 2012, 07:59:10 am »
por eso lo hice... para ti, para simplificarte la vida.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

  • Hero Member
  • *****
  • Mensajes: 1170
  • Karma: 17
Re:Instrucciones de compilación para OSX
« Respuesta #4 en: Diciembre 08, 2012, 07:57:48 pm »
voy a ver si encuentro una version piratilla del leopard y lo pruebo en una maquina virtual xD

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 180
Re:Instrucciones de compilación para OSX
« Respuesta #5 en: Diciembre 08, 2012, 08:34:08 pm »
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

  • Administrator
  • *****
  • Mensajes: 4039
  • Karma: 257
    • BennuGD Mobile Worklog
Re:Instrucciones de compilación para OSX
« Respuesta #6 en: Diciembre 09, 2012, 01:55:08 am »
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

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Instrucciones de compilación para OSX
« Respuesta #7 en: Diciembre 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?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

  • Administrator
  • *****
  • Mensajes: 4039
  • Karma: 257
    • BennuGD Mobile Worklog
Re:Instrucciones de compilación para OSX
« Respuesta #8 en: Diciembre 09, 2012, 04:15:08 pm »
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

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Instrucciones de compilación para OSX
« Respuesta #9 en: Diciembre 09, 2012, 04:47:25 pm »
cual es la inicializacion que te refieres?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

  • Administrator
  • *****
  • Mensajes: 4039
  • Karma: 257
    • BennuGD Mobile Worklog
Re:Instrucciones de compilación para OSX
« Respuesta #10 en: Diciembre 09, 2012, 05:03:03 pm »

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Instrucciones de compilación para OSX
« Respuesta #11 en: Diciembre 09, 2012, 06:58:21 pm »
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.
« última modificación: Diciembre 09, 2012, 07:06:32 pm por SplinterGU »
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 180
Re:Instrucciones de compilación para OSX
« Respuesta #12 en: Diciembre 09, 2012, 08:43:08 pm »
Eso mismo iba a decir yo.  ;)
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12536
  • Karma: 370
Re:Instrucciones de compilación para OSX
« Respuesta #13 en: Diciembre 10, 2012, 12:15:54 am »
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