Estoy intentando compilar Bennu en MacOS X leopard.
Hay que tocar algunas cosillas para que la compilación sea "./configure && make && make install"
Del fichero core/configure.in, a la parte de *darwin* hay que añadirle un "-arch i386" a las LDFLAGS y CFLAGS. Esto crea un binario para i386.
Habría que hacer que las librerías se compilaran con extensión ".dylib" en lugar de ".so" pero realmente no sé cómo se hace...
Iré editando según vaya encontrando cositas.
(El core con la libdes incluída ya parece funcionar, es fácil, me estoy pegando con las dependencias de los módulos)
Vale, ya está.
Olvidaos de lo de arriba. La solución al final me ha quedado demasiado artesanal, así que Splinter, no te sé decir exáctamente qué cambiar para que las cosas funcionen, pero sí te sé decir qué efecto deben tener:
Lo primero de todo es que hay que compilar para arquitectura de 32 bits. Parece ser que en Snow Leopard (OSX 10.6) por defecto la compilación se hace ya para 64 bits, así que el configure hay que hacerlo de la siguiente forma (tanto para core como para modules):
[code language="bash"]/configure CFLAGS="-arch i386" CXXFLAGS="-arch i386" LDFLAGS="-L/sw/lib -arch i386" OBJCFLAGS="-arch i386" --build="i386-apple-darwin10.0.0"[/code]
Es más que probable que más de un flag sobre, pero así nos aseguramos.
Aún así, la compilación fallará.
En el portátil que me han dejado, las cosas están compiladas con fink y por eso, las dependencias están en /sw/lib, así que el configure de los módulos se queja de que no encuentra la SDL_mixer (a pesar de estar instalada bien, esto me ha llevado un buen rato encontrarlo).
Se arregla añadiendo "-L/sw/lib" a la línea del configure.in que busca el símbolo Mix_AllocateChannels.
Aún así la compilación fallará.
Al compilar las lib* (incluída la libbgdrtm.so) se usa el flag de enlazado para ld "-module". No sé qué hace ni por qué se arregla pero cambiándolo a "-shared" en cada lib* (no en las mod*) funciona y por fin compila.
Aún así, fallará al ejecutar.
Resulta que gcc en nuestro caso saca librerías de tipo ".so" y el código de Bennu está hecho para aceptar librerías de extensión ".dylib". No sé si se trata de un mero cambio de extensión o hay algo más allá, pero el caso es que cambiando el par de sitios donde se hace dlopen (core/bgdc/c_main.c y el equivalente para la bgdrtm) y recompilando, funciona a las mil maravillas en el par de tests chorras que he hecho.
Eso sí, Benko, te toca hacer los mismo inventos que en Linux de modificar el PATH y la variable LD_LIBRARY_PATH para que se encuentren las librerías, ¿ok?.
Otra cosa es que no te incluyo las SDL y SDL_mixer porque las que tengo en mi sistema no tienen soporte para ningún formato de audio, sólo las he compilado para que exista la librería y poder enlazar los módulos contra ella. Así pues, no tendría mucho sentido que te diera unas librerías para audio que no pueden reproducir nada.... Vas a tener que encontrar tus propias librerías :)
Y bueno, finalmente, el enlace (http://www.bennugd.org/downloads/bennugd-osx-20091105.tar.bz2) a los binarios. Como dije, me voy de vacaciones, así que si falla algo, el miércoles estaré de vuelta y si puedo le robo el MAC otra tarde a mi amigo, ¿ok?.
Puff!! Exhausto. Ya puedes hacer un juego bien guapo :P
¡Sorpresa!
No funciona, o al menos no del todo. Parece que funciona cargar módulos que no dependan de las lib*, pero cuando hay que cargar uno que sí dependa de ellas (mod_mouse depende de libmouse, por ejemplo) no es capaz de encontrar la librería de la que depende (libmouse, en este caso).
Depende de si quito o no el flag "-module" obtengo una librería .dylib o una .so... Supongo que irán por ahí los tiros.
A ver si a la vuelta me habeis sorprendido y habeis averiguado la causa :)
claro, por ahi... asi que esta version de mac, es mas linux...
hay que poner algun otro define para que use .so...
bien... supongo que eso funcionara...
gracias
He buscado por ahi los binarios y no veo nada (el link que hay en el segundo post esta obsoleto). Realmente hay una version para MacOX? Recientemente me hice con un Leopard 1.5.2, y me gustaria saber si es posible compilar para Mac, y que binarios debo usar. Soy totalmente nuevo en Mac, asique agradeceria que alguien me lo explicase como si fuese un niño de 5 años. :P
La ha puesto josebita en un post sobre el tema cuando se la pedimos, porque como no estaba totalmente funcional no la habia puesto (habia que configurar algo manualmente), ahora mismo no recuerdo que hilo era. Busca por mac en el buscador.
Si, creo que es este hilo exactamente xd
De todos modos he encontrado los binarios en la pagina principal (perdon por no observar mejor antes) en la lista de ports no oficiales. Se compila a traves de la Terminal al igual que en linux?
Bueno, ese link tampoco funciona, era este:
http://dl.dropbox.com/u/3022394/bennugd_osx_bin.tar.bz2
lo descargue en su dia, pero ya no sabria encontrarlo...
Pidesela a Neodreamer, que la descargo en su dia y la probo en MAC por si josebita no aparece.
Aqui te lo explica:
http://forum.bennugd.org/index.php?topic=1129.0
Este es el link donde me he descargado los binarios. El tuyo que has puesto da un 404
http://www.bennugd.org/downloads/bennugd-osx-20100808.tar.bz2
Y gracias por tu link, lo explican todo bastante mascadito. k++
Acabo de actualizar los binarios para OSX en la página de descargas de la web a la última versión disponible hoy, por si a alguien le es útil.
Claro josebita, nos es util aunque no lo miremos :)
Karma por el curro.
Quote from: josebita on November 04, 2010, 10:44:23 PM
Acabo de actualizar los binarios para OSX en la página de descargas de la web a la última versión disponible hoy, por si a alguien le es útil.
Por cierto pon todas tus rutas en la firma, ahora mismo no se donde tienes la distribución para Mac, lo mismo le digo a linkernel.
El tamaño de la firma está limitado, ya no me caben más cosas :)
Si tienes el XCode, es que tienes ya instalado el SDK, así que eso ya está hecho.
Ahora, bájate ésto:
http://dl.dropbox.com/u/3022394/bennugd_osx_src-20101107.tar.bz2
No es más que el código oficial de Bennu con los Makefiles "tocados" para poder compilar y un pequeño detalle en el bgdi/src/main.c
==================== Instalación de dependencias ====================
También vas a necesitar las dependencias de Bennu preparadas para compilar desde autotools, para eso yo te aconsejo que te instales fink o macports.
Como yo tengo puesto macports, te lo comento con él, pero si te molara más fink dímelo y cambio las instrucciones:
* Bájate el pkg para Leopard de aquí: http://distfiles.macports.org/MacPorts/MacPorts-1.9.1-10.5-Leopard.dmg
* Una vez instalado, abre la consola y escribe:
sudo port install libsdl libsdl_mixer +no_x11 +mikmod
Eso te instalará la SDL y la SDL_mixer y todas sus dependencias, así que puede tardar un poco.
Este es el punto más delicado, porque puede que haya alguna dependencia que no se esté instalando. Además, en Snow Leopard, el compilador compilado para 64 bits por defecto, pero creo que no es el caso de Leopard, así que sigamos. De todas formas, si tienes algún problema hasta aquí, avisa.
==================== Compilación de Bennu ====================
* Cuando haya acabado, si todo ha ido bien, deberías tener todas las dependencias para compilar Bennu. Descomprime los fuentes que te he enlazado en algún directorio. En mi caso, están en ~/cvs/bennugd/osx
* Ve al directorio "core" dentro de la instalación y escribe:
./configure --prefix=/Users/joseba/cvs/bennugd_bin/ && make && make install
Evidentemente, cambia el "prefix", pero ponlo en alguna carpeta que esté vacía, porque es donde se va a instalar Bennu.
* Luego te vas al "modules" y tres cuartas partes de lo mismo:
./configure --prefix=/Users/joseba/cvs/bennugd_bin/ && make && make install
Y ya está. Ve al directorio donde hayas puesto el "prefix" y borra todos los ficheros .a y .la que haya allí porque no nos sirven. Yo diría que con eso ya tendrás una versión de Bennu funcional.
Otra cosa es el empaquetado para lanzar tu juego, pero eso va luego :)
Vale, gracias por tus explicaciones. Ahora le voy a dar caña y ojala no me da muchos problemas.
Te doy un karma ya por adelantado y otro te dare si lo consigo xd
Vale, encaramos los primeros problemas,
Le escribo
sudo port install libsdl libsdl_mixer +no_x11 +mikmod
y me dice
Warning: No index(es) found! Have you synced your source indexes?
Error: Port libsdl not found
He mirado en internet y alguien por ahi decia que habia que updatear el MacPorts. Mi problema es que no tengo internet en el Mac. Lo cierto es que lo estoy haciendo correr en un Pc. Asique tengo que estar cerrando el Mac, abriendo Windows para usar internet, cerrar Windows abrir Mac.... Se puede arreglar este problema sin internet?
¡Ah! ya pillo tu situación ;)
Sin internet, el asunto está jodido. ¿No hay ninguna otra forma de que te conectes a internet a través del mac?.
[Edito] Vale, la pregunta es estúpida, pero es lo que hay :)
Veo que hay alguna forma de compilar desde Snow Leopard para SDKs anteriores (en concreto para 10.5) pero no encuentro cómo hacerlo exactamente. ¿Alguien encuentra algo?. Lo buscaría yo mismo, pero ando con un trabajo de clase que me tiene liado...
Hombre, se me ocurre que también te puedes bajar todo el código fuente de todas las dependencias y compilarlo a mano, pero eso va a ser bastante más complicado...
De momento no. Pero bueno, ya tengo los archivos descargados y guardare en marcadores este hilo. El dia que pueda usar un Mac en condiciones lo retomare. De momento no me queda mas remedio que rendirme...
Instale el Mac en el pc para intentar programar para el iPhone, pero en mi portatil no pude hacer funcionar ningun mac superior al 1.5.2, y me encontre con que en esa version solo esta disponible uno de los iphone SDK mas primitivos que hay, para el que no hay apenas documentacion y tal.
En fin, de momento solo puedo decir... Windows rules!!! ;D
Pues nada, ya lo siento...
Como de complicado puede ser eso de descargarse todas las fuentes y compilarlas a mano?
Yo es que lo pregunto por no molestar demasiado.
Pues hombre, te deberías ir página por página en cada proyecto, bajando sus fuentes, configurándolos con los parámetros apropiados e instalando todo en un directorio común. Las dependencias son (más o menos):
libSDL
libSDL_mixer
libogg
libvorbis
(mikmod)
(smpeg)
libpng
zlib
Algunas vienen con el sistema, pero no estoy seguro de cuáles. También está la dependencia con openssl, pero esa sí que está en el sistema. Las que están entre paréntesis son opcionales.
Una vez descargado todo eso, haces
./configure --prefix="loquesea" && make && sudo make install
y a rezar.