Commit 910c3af8 authored by Sam Lantinga's avatar Sam Lantinga

Date: Fri, 6 Mar 2009 12:41:17 -0800

From: scott mc
Subject: Re: [SDL] patch for building on haiku

Ok. I've combined the various Haiku patches for the SDL-1.2 branch
into one .diff file

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%403560
parent c413a1c5
...@@ -40,7 +40,7 @@ AC_SUBST(LT_REVISION) ...@@ -40,7 +40,7 @@ AC_SUBST(LT_REVISION)
AC_SUBST(LT_AGE) AC_SUBST(LT_AGE)
dnl Detect the canonical build and host environments dnl Detect the canonical build and host environments
AC_CONFIG_AUX_DIRS($srcdir/build-scripts) AC_CONFIG_AUX_DIR([build-scripts])
AC_CANONICAL_HOST AC_CANONICAL_HOST
AC_C_BIGENDIAN AC_C_BIGENDIAN
if test x$ac_cv_c_bigendian = xyes; then if test x$ac_cv_c_bigendian = xyes; then
...@@ -2493,7 +2493,7 @@ case "$host" in ...@@ -2493,7 +2493,7 @@ case "$host" in
SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main -D_WIN32_WCE=0x420" SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main -D_WIN32_WCE=0x420"
SDL_LIBS="-lSDLmain $SDL_LIBS" SDL_LIBS="-lSDLmain $SDL_LIBS"
;; ;;
*-*-beos*) *-*-beos* | *-*-haiku*)
ARCH=beos ARCH=beos
ac_default_prefix=/boot/develop/tools/gnupro ac_default_prefix=/boot/develop/tools/gnupro
CheckDummyVideo CheckDummyVideo
...@@ -2536,8 +2536,16 @@ case "$host" in ...@@ -2536,8 +2536,16 @@ case "$host" in
fi fi
# Set up files for the shared object loading library # Set up files for the shared object loading library
if test x$enable_loadso = xyes; then if test x$enable_loadso = xyes; then
case "$host" in
*-*-beos*)
AC_DEFINE(SDL_LOADSO_BEOS) AC_DEFINE(SDL_LOADSO_BEOS)
SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c" SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c"
;;
*-*-haiku*)
AC_DEFINE(SDL_LOADSO_DLOPEN)
SOURCES="$SOURCES $srcdir/src/loadso/dlopen/*.c"
;;
esac
have_loadso=yes have_loadso=yes
fi fi
# The BeOS platform requires special setup. # The BeOS platform requires special setup.
......
...@@ -33,6 +33,10 @@ ...@@ -33,6 +33,10 @@
#undef __BEOS__ #undef __BEOS__
#define __BEOS__ 1 #define __BEOS__ 1
#endif #endif
#if defined(__HAIKU__)
#undef __HAIKU__
#define __HAIKU__ 1
#endif
#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) #if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)
#undef __BSDI__ #undef __BSDI__
#define __BSDI__ 1 #define __BSDI__ 1
...@@ -45,6 +49,10 @@ ...@@ -45,6 +49,10 @@
#undef __FREEBSD__ #undef __FREEBSD__
#define __FREEBSD__ 1 #define __FREEBSD__ 1
#endif #endif
#if defined(__HAIKU__)
#undef __HAIKU__
#define __HAIKU__ 1
#endif
#if defined(hpux) || defined(__hpux) || defined(__hpux__) #if defined(hpux) || defined(__hpux) || defined(__hpux__)
#undef __HPUX__ #undef __HPUX__
#define __HPUX__ 1 #define __HPUX__ 1
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
/* Some compilers use a special export keyword */ /* Some compilers use a special export keyword */
#ifndef DECLSPEC #ifndef DECLSPEC
# if defined(__BEOS__) # if defined(__BEOS__) || defined(__HAIKU__)
# if defined(__GNUC__) # if defined(__GNUC__)
# define DECLSPEC __declspec(dllexport) # define DECLSPEC __declspec(dllexport)
# else # else
......
...@@ -57,7 +57,7 @@ static void BE_UnlockHWSurface(_THIS, SDL_Surface *surface); ...@@ -57,7 +57,7 @@ static void BE_UnlockHWSurface(_THIS, SDL_Surface *surface);
static void BE_FreeHWSurface(_THIS, SDL_Surface *surface); static void BE_FreeHWSurface(_THIS, SDL_Surface *surface);
static int BE_ToggleFullScreen(_THIS, int fullscreen); static int BE_ToggleFullScreen(_THIS, int fullscreen);
static SDL_Overlay *BE_CreateYUVOverlay(_THIS, int width, int height, Uint32 format, SDL_Surface *display); SDL_Overlay *BE_CreateYUVOverlay(_THIS, int width, int height, Uint32 format, SDL_Surface *display);
/* OpenGL functions */ /* OpenGL functions */
#if SDL_VIDEO_OPENGL #if SDL_VIDEO_OPENGL
...@@ -637,8 +637,12 @@ int BE_GL_LoadLibrary(_THIS, const char *path) ...@@ -637,8 +637,12 @@ int BE_GL_LoadLibrary(_THIS, const char *path)
int32 cookie = 0; int32 cookie = 0;
while (get_next_image_info(0,&cookie,&info) == B_OK) { while (get_next_image_info(0,&cookie,&info) == B_OK) {
void *location = NULL; void *location = NULL;
if (get_image_symbol((image_id)cookie,"glBegin",B_SYMBOL_TYPE_ANY,&location) == B_OK) { #ifdef __HAIKU__
_this->gl_config.dll_handle = (void*)cookie; if (get_image_symbol(info.id,"glBegin",B_SYMBOL_TYPE_ANY,&location) == B_OK) { // This is how it actually works in Haiku
#else
if (get_image_symbol((image_id)cookie,"glBegin",B_SYMBOL_TYPE_ANY,&location) == B_OK) { // I don't know if that *did* work in BeOS
#endif
_this->gl_config.dll_handle = (void*)info.id;
_this->gl_config.driver_loaded = 1; _this->gl_config.driver_loaded = 1;
SDL_strlcpy(_this->gl_config.driver_path, "libGL.so", SDL_arraysize(_this->gl_config.driver_path)); SDL_strlcpy(_this->gl_config.driver_path, "libGL.so", SDL_arraysize(_this->gl_config.driver_path));
} }
......
...@@ -94,7 +94,7 @@ BBitmap * BE_GetOverlayBitmap(BRect bounds, color_space cs) { ...@@ -94,7 +94,7 @@ BBitmap * BE_GetOverlayBitmap(BRect bounds, color_space cs) {
// See <GraphicsDefs.h> [btw: Cb=U, Cr=V] // See <GraphicsDefs.h> [btw: Cb=U, Cr=V]
// See also http://www.fourcc.org/indexyuv.htm // See also http://www.fourcc.org/indexyuv.htm
enum color_space convert_color_space(Uint32 format) { color_space convert_color_space(Uint32 format) {
switch (format) { switch (format) {
case SDL_YV12_OVERLAY: case SDL_YV12_OVERLAY:
return B_YUV9; return B_YUV9;
......
...@@ -62,7 +62,7 @@ struct private_yuvhwdata ...@@ -62,7 +62,7 @@ struct private_yuvhwdata
}; };
extern BBitmap * BE_GetOverlayBitmap(BRect bounds, color_space cs); extern BBitmap * BE_GetOverlayBitmap(BRect bounds, color_space cs);
extern SDL_Overlay* BE_CreateYUVOverlay(_THIS, int width, int height, Uint32 format, SDL_Surface* display); SDL_Overlay* BE_CreateYUVOverlay(_THIS, int width, int height, Uint32 format, SDL_Surface* display);
extern int BE_LockYUVOverlay(_THIS, SDL_Overlay* overlay); extern int BE_LockYUVOverlay(_THIS, SDL_Overlay* overlay);
extern void BE_UnlockYUVOverlay(_THIS, SDL_Overlay* overlay); extern void BE_UnlockYUVOverlay(_THIS, SDL_Overlay* overlay);
extern int BE_DisplayYUVOverlay(_THIS, SDL_Overlay* overlay, SDL_Rect* src, SDL_Rect* dst); extern int BE_DisplayYUVOverlay(_THIS, SDL_Overlay* overlay, SDL_Rect* src, SDL_Rect* dst);
......
...@@ -20,7 +20,7 @@ case "$host" in ...@@ -20,7 +20,7 @@ case "$host" in
MATHLIB="" MATHLIB=""
SYS_GL_LIBS="-lopengl32" SYS_GL_LIBS="-lopengl32"
;; ;;
*-*-beos*) *-*-beos* | *-*-haiku*)
EXE="" EXE=""
MATHLIB="" MATHLIB=""
SYS_GL_LIBS="-lGL" SYS_GL_LIBS="-lGL"
......
...@@ -162,6 +162,8 @@ int main(int argc, char *argv[]) ...@@ -162,6 +162,8 @@ int main(int argc, char *argv[])
"Dreamcast" "Dreamcast"
#elif __FREEBSD__ #elif __FREEBSD__
"FreeBSD" "FreeBSD"
#elif __HAIKU__
"Haiku"
#elif __HPUX__ #elif __HPUX__
"HP-UX" "HP-UX"
#elif __IRIX__ #elif __IRIX__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment