Bennu Game Development

Foros en Español => Plataformas => MacOS X (x86) => Topic started by: josebita on December 08, 2012, 12:35:00 AM

Title: Instrucciones de compilación para OSX
Post by: josebita on December 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.
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.
Title: Re:Instrucciones de compilación para OSX
Post by: SplinterGU on December 08, 2012, 02:36:42 AM
muy bien hecho joseba!

karma++
Title: Re:Instrucciones de compilación para OSX
Post by: josebita on December 08, 2012, 04:53:58 AM
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 :)
Title: Re:Instrucciones de compilación para OSX
Post by: SplinterGU on December 08, 2012, 07:59:10 AM
por eso lo hice... para ti, para simplificarte la vida.
Title: Re:Instrucciones de compilación para OSX
Post by: KeoH on December 08, 2012, 07:57:48 PM
voy a ver si encuentro una version piratilla del leopard y lo pruebo en una maquina virtual xD
Title: Re:Instrucciones de compilación para OSX
Post by: DCelso on December 08, 2012, 08:34:08 PM
Lo del include sdl /sdl. No lo entiendo. Si en pc no hace falta...
Title: Re:Instrucciones de compilación para OSX
Post by: josebita on December 09, 2012, 01:55:08 AM
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.
Title: Re:Instrucciones de compilación para OSX
Post by: 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?
Title: Re:Instrucciones de compilación para OSX
Post by: josebita on December 09, 2012, 04:15:08 PM
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.
Title: Re:Instrucciones de compilación para OSX
Post by: SplinterGU on December 09, 2012, 04:47:25 PM
cual es la inicializacion que te refieres?
Title: Re:Instrucciones de compilación para OSX
Post by: josebita on December 09, 2012, 05:03:03 PM
Quote from: SplinterGU on December 09, 2012, 04:47:25 PM
cual es la inicializacion que te refieres?
Todo esto:
http://hg.libsdl.org/SDL/file/fba40d9f4a73/src/main/macosx/SDLMain.m
Title: Re:Instrucciones de compilación para OSX
Post by: SplinterGU on December 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.
Title: Re:Instrucciones de compilación para OSX
Post by: DCelso on December 09, 2012, 08:43:08 PM
Eso mismo iba a decir yo.  ;)
Title: Re:Instrucciones de compilación para OSX
Post by: SplinterGU on December 10, 2012, 12:15:54 AM
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.