summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2012-05-28 18:15:02 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2012-05-28 18:15:02 +0000
commit144234d9f64df0da253fe0452e09c652aa999924 (patch)
tree847dc7fe7967148a5c5cc66f5d892c286bf4f0a3 /src/osd
parent7019ac92f74ba3683d7ac8f30a925ef26cd41b15 (diff)
SDL: Preliminary Haiku OS support [PulkoMandy]
Diffstat (limited to 'src/osd')
-rw-r--r--src/osd/sdl/sdl.mak19
-rw-r--r--src/osd/sdl/sdldir.c2
-rw-r--r--src/osd/sdl/sdlfile.c8
-rw-r--r--src/osd/sdl/sdlmain.c10
-rw-r--r--src/osd/sdl/sdlprefix.h5
-rw-r--r--src/osd/sdl/sdlptty_unix.c2
-rw-r--r--src/osd/sdl/sdlsync_ntc.c2
7 files changed, 38 insertions, 10 deletions
diff --git a/src/osd/sdl/sdl.mak b/src/osd/sdl/sdl.mak
index 97ef1f7cfee..d95aa32ae2c 100644
--- a/src/osd/sdl/sdl.mak
+++ b/src/osd/sdl/sdl.mak
@@ -189,6 +189,13 @@ DEFS += -DNO_AFFINITY_NP -UHAVE_VSNPRINTF -DNO_vsnprintf
SYNC_IMPLEMENTATION = tc
endif
+ifeq ($(TARGETOS),haiku)
+BASE_TARGETOS = unix
+SYNC_IMPLEMENTATION = ntc
+NO_X11 = 1
+LIBS += -lnetwork -lbsd
+endif
+
ifeq ($(TARGETOS),macosx)
BASE_TARGETOS = unix
DEFS += -DSDLMAME_UNIX -DSDLMAME_MACOSX -DSDLMAME_DARWIN
@@ -377,7 +384,8 @@ endif
INCPATH += `$(SDL_CONFIG) --cflags | sed -e 's:/SDL[2]*::' -e 's:\(-D[^ ]*\)::g'`
CCOMFLAGS += `$(SDL_CONFIG) --cflags | sed -e 's:/SDL[2]*::' -e 's:\(-I[^ ]*\)::g'`
-LIBS += -lm `$(SDL_CONFIG) --libs`
+
+LIBS += `$(SDL_CONFIG) --libs`
ifeq ($(SDL_LIBVER),sdl2)
ifdef SDL_INSTALL_ROOT
@@ -390,9 +398,14 @@ INCPATH += `pkg-config --cflags fontconfig`
LIBS += `pkg-config --libs fontconfig`
ifeq ($(SDL_LIBVER),sdl2)
-LIBS += -lSDL2_ttf -lutil
+LIBS += -lSDL2_ttf
else
-LIBS += -lSDL_ttf -lutil
+LIBS += -lSDL_ttf
+endif
+
+# libs that Haiku doesn't want but are mandatory on *IX
+ifneq ($(TARGETOS),haiku)
+LIBS += -lm -lutil
endif
endif # not Mac OS X
diff --git a/src/osd/sdl/sdldir.c b/src/osd/sdl/sdldir.c
index b27711f0338..b107db36767 100644
--- a/src/osd/sdl/sdldir.c
+++ b/src/osd/sdl/sdldir.c
@@ -43,7 +43,7 @@
#define INVPATHSEPCH '\\'
#endif
-#if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2)
+#if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2) || defined(SDLMAME_HAIKU)
typedef struct dirent sdl_dirent;
typedef struct stat sdl_stat;
#define sdl_readdir readdir
diff --git a/src/osd/sdl/sdlfile.c b/src/osd/sdl/sdlfile.c
index f001e4737d5..652b14e023c 100644
--- a/src/osd/sdl/sdlfile.c
+++ b/src/osd/sdl/sdlfile.c
@@ -103,7 +103,7 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
UINT32 access;
const char *src;
char *dst;
- #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2)
+ #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2) || defined(SDLMAME_HAIKU)
struct stat st;
#else
struct stat64 st;
@@ -203,7 +203,7 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
#endif
// attempt to open the file
- #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2)
+ #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2) || defined(SDLMAME_HAIKU)
(*file)->handle = open(tmpstr, access, 0666);
#else
(*file)->handle = open64(tmpstr, access, 0666);
@@ -226,7 +226,7 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
// attempt to reopen the file
if (error == NO_ERROR)
{
- #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2)
+ #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2) || defined(SDLMAME_HAIKU)
(*file)->handle = open(tmpstr, access, 0666);
#else
(*file)->handle = open64(tmpstr, access, 0666);
@@ -246,7 +246,7 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
}
// get the file size
- #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2)
+ #if defined(SDLMAME_DARWIN) || defined(SDLMAME_WIN32) || defined(SDLMAME_NO64BITIO) || defined(SDLMAME_BSD) || defined(SDLMAME_OS2) || defined(SDLMAME_HAIKU)
fstat((*file)->handle, &st);
#else
fstat64((*file)->handle, &st);
diff --git a/src/osd/sdl/sdlmain.c b/src/osd/sdl/sdlmain.c
index 1ebad69f74a..5b4bebcd893 100644
--- a/src/osd/sdl/sdlmain.c
+++ b/src/osd/sdl/sdlmain.c
@@ -17,8 +17,10 @@
#else
#include <SDL/SDL_ttf.h>
#endif
+#ifndef SDLMAME_HAIKU
#include <fontconfig/fontconfig.h>
#endif
+#endif
#ifdef SDLMAME_MACOSX
#include <Carbon/Carbon.h>
#endif
@@ -315,7 +317,7 @@ int main(int argc, char *argv[])
setvbuf(stderr, (char *) NULL, _IONBF, 0);
#ifdef SDLMAME_UNIX
- #ifndef SDLMAME_MACOSX
+ #if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU))
if (TTF_Init() == -1)
{
printf("SDL_ttf failed: %s\n", TTF_GetError());
@@ -365,7 +367,7 @@ int main(int argc, char *argv[])
//SDL_Quit();
#ifdef SDLMAME_UNIX
- #ifndef SDLMAME_MACOSX
+ #if (!defined(SDLMAME_MACOSX)) && (!defined(SDLMAME_HAIKU))
TTF_Quit();
FcFini();
#endif
@@ -877,6 +879,7 @@ static bool BDF_Check_Magic(astring name)
return false;
}
+#ifndef SDLMAME_HAIKU
static TTF_Font *search_font_config(astring name, bool bold, bool italic, bool underline, bool &bakedstyles)
{
TTF_Font *font = (TTF_Font *)NULL;
@@ -984,6 +987,7 @@ static TTF_Font *search_font_config(astring name, bool bold, bool italic, bool u
FcFontSetDestroy(fontset);
return font;
}
+#endif
//-------------------------------------------------
// font_open - attempt to "open" a handle to the
@@ -1028,10 +1032,12 @@ osd_font sdl_osd_interface::font_open(const char *_name, int &height)
}
// if that didn't work, crank up the FontConfig database
+#ifndef SDLMAME_HAIKU
if (!font)
{
font = search_font_config(name, bold, italic, underline, bakedstyles);
}
+#endif
if (!font)
{
diff --git a/src/osd/sdl/sdlprefix.h b/src/osd/sdl/sdlprefix.h
index d917b0657a0..e43b0a44b03 100644
--- a/src/osd/sdl/sdlprefix.h
+++ b/src/osd/sdl/sdlprefix.h
@@ -59,6 +59,11 @@
#define SDLMAME_BSD 1
#endif
+#if defined(__HAIKU__)
+#define SDLMAME_HAIKU 1
+#define SDLMAME_NO64BITIO 1
+#endif
+
// fix for Ubuntu 8.10
#ifdef _FORTIFY_SOURCE
#undef _FORTIFY_SOURCE
diff --git a/src/osd/sdl/sdlptty_unix.c b/src/osd/sdl/sdlptty_unix.c
index 778f1aefc0c..79b8f6695b0 100644
--- a/src/osd/sdl/sdlptty_unix.c
+++ b/src/osd/sdl/sdlptty_unix.c
@@ -24,6 +24,8 @@
# include <util.h>
#elif defined(SDLMAME_LINUX)
# include <pty.h>
+#elif defined(SDLMAME_HAIKU)
+# include <bsd/pty.h>
#endif
#include "sdlfile.h"
diff --git a/src/osd/sdl/sdlsync_ntc.c b/src/osd/sdl/sdlsync_ntc.c
index 2126b8f0d18..b7d3c2fa994 100644
--- a/src/osd/sdl/sdlsync_ntc.c
+++ b/src/osd/sdl/sdlsync_ntc.c
@@ -470,7 +470,9 @@ osd_thread *osd_thread_create(osd_thread_callback callback, void *cbparam)
thread = (osd_thread *)calloc(1, sizeof(osd_thread));
pthread_attr_init(&attr);
+#ifndef SDLMAME_HAIKU
pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+#endif
if ( pthread_create(&thread->thread, &attr, callback, cbparam) != 0 )
{
free(thread);