domingo, agosto 12, 2018

Compilar SDL 1.2.15 en macOS X 10.13 (High Sierra)

Simple DirectMedia Layer es una librería multiplataforma que permite control de video, dispositivos de entrada y sonido. La versión actual de es la 2.x, siendo la 1.2.x una versión histórica y fuera de soporte. Sin embargo, aunque no se desarrolle, todavía hay programas, como Caprice 32 el emulador de Amstrad CPC que lo necesita para ejecutarse.

Esta librería necesita dos pequeñas modificaciones para que compile sin problemas en la última versión de macOS X, ya que no compila de serie:

diff -ru SDL-1.2.15/src/video/quartz/SDL_QuartzVideo.h SDL-1.2.15.macosx/src/video/quartz/SDL_QuartzVideo.h
--- SDL-1.2.15/src/video/quartz/SDL_QuartzVideo.h 2012-01-19 07:30:06.000000000 +0100
+++ SDL-1.2.15.macosx/src/video/quartz/SDL_QuartzVideo.h 2018-07-22 23:36:18.000000000 +0200
@@ -91,7 +91,9 @@
     CGDirectDisplayID  display;            /* 0 == main display (only support single display) */
     const void         *mode;              /* current mode of the display */
     const void         *save_mode;         /* original mode of the display */
+#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070)
     CGDirectPaletteRef palette;            /* palette of an 8-bit display */
+#endif
     NSOpenGLContext    *gl_context;        /* OpenGL rendering context */
     NSGraphicsContext  *nsgfx_context;     /* Cocoa graphics context */
     Uint32             width, height, bpp; /* frequently used data about the display */
diff -ru SDL-1.2.15/src/video/x11/SDL_x11sym.h SDL-1.2.15.macosx/src/video/x11/SDL_x11sym.h
--- SDL-1.2.15/src/video/x11/SDL_x11sym.h 2012-01-19 07:30:06.000000000 +0100
+++ SDL-1.2.15.macosx/src/video/x11/SDL_x11sym.h 2018-07-22 23:41:47.000000000 +0200
@@ -165,7 +165,7 @@
  */
 #ifdef LONG64
 SDL_X11_MODULE(IO_32BIT)
-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
 SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
 #endif

Para compilar hay que especificar el path de las librerías de X11, de la siguiente manera:

env CFLAGS="-I/usr/X11/include" LDFLAGS="-L/usr/X11/lib" ./configure --prefix=/usr/local
make
# Como administrador
make install

No hay comentarios: