diff options
author | 2012-05-28 18:15:02 +0000 | |
---|---|---|
committer | 2012-05-28 18:15:02 +0000 | |
commit | 144234d9f64df0da253fe0452e09c652aa999924 (patch) | |
tree | 847dc7fe7967148a5c5cc66f5d892c286bf4f0a3 /src/osd | |
parent | 7019ac92f74ba3683d7ac8f30a925ef26cd41b15 (diff) |
SDL: Preliminary Haiku OS support [PulkoMandy]
Diffstat (limited to 'src/osd')
-rw-r--r-- | src/osd/sdl/sdl.mak | 19 | ||||
-rw-r--r-- | src/osd/sdl/sdldir.c | 2 | ||||
-rw-r--r-- | src/osd/sdl/sdlfile.c | 8 | ||||
-rw-r--r-- | src/osd/sdl/sdlmain.c | 10 | ||||
-rw-r--r-- | src/osd/sdl/sdlprefix.h | 5 | ||||
-rw-r--r-- | src/osd/sdl/sdlptty_unix.c | 2 | ||||
-rw-r--r-- | src/osd/sdl/sdlsync_ntc.c | 2 |
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); |