From 53cc50e00e88d88ed2a130029413792d768bb963 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 26 Feb 2006 04:54:01 +0000 Subject: [PATCH] Date: Sun, 26 Feb 2006 11:25:09 +0900 From: Hayashi Naoyuki Subject: Re: [SDL] CVS stable again, please update SDL ports Some problems are caused on Tru64 UNIX. If applying SDL12-osf1.path, these problems are fixed. 1. configure-script say "recursive mutexes... no" and "pthread semaphores... no". checking for pthreads... yes checking for recursive mutexes... no checking for pthread semaphores... no This is because it compiled without pthread_cflags and pthread_lib when checking recursive mutexes and pthread semaphores. 2. Compiling src/audio/mme/SDL_mmeaudio.c fails. cc: Severe: ./src/audio/mme/SDL_mmeaudio.c, line 25: Cannot find file specified in #include directive. (noinclfilef) #include -^ This is because BUILD_CFLAGS is wrong. 3. Compiling src/cdrom/osf/SDL_syscdrom.c fails. cc: Warning: ./src/cdrom/osf/SDL_syscdrom.c, line 176: Too few actual parameters in the invocation of the macro "SDL_stack_alloc". (toofewactuals) cdpath = SDL_stack_alloc(len); ------------------------------------^ cc: Error: ./src/cdrom/osf/SDL_syscdrom.c, line 176: Invalid expression. (badexpr) cdpath = SDL_stack_alloc(len); -----------------^ SDL_stack_alloc is defined in include/SDL_stdinc.h. #define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*count) 4. Linking fails if running configure with --enable-x11-shared=yes. /usr/ccs/bin/ld: Warning: Unresolved: p_XData32 5. Compiling src/video/x11/SDL_x11dyn.c fails if running configure with --enable-x11-shared=no. cc: Error: ./src/video/x11/SDL_x11sym.h, line 149: In this statement, "_SmtBufferOverflow" is not declared. (undeclared) SDL_X11_SYM(1,void,_SmtBufferOverflow,(Display *dpy,register smtDisplayPtr)) ^ cc: Error: ./src/video/x11/SDL_x11sym.h, line 150: In this statement, "_SmtBufferOverflow" is not declared. (undeclared) SDL_X11_SYM(1,void,_SmtBufferOverflow,(Display *dpy,register smtDisplayPtr)) ^ cc: Error: ./src/video/x11/SDL_x11sym.h, line 150: In this statement, "_SmtIpError" is not declared. (undeclared) SDL_X11_SYM(1,void,_SmtIpError,(Display *dpy,register smtDisplayPtr, int)) ^ --- configure.in | 53 ++++++++++++++++++++++++++++++++---- src/cdrom/osf/SDL_syscdrom.c | 2 +- src/video/x11/SDL_x11dyn.h | 11 +++++++- src/video/x11/SDL_x11sym.h | 2 +- 4 files changed, 59 insertions(+), 9 deletions(-) diff --git a/configure.in b/configure.in index fc399886f..6765be4c0 100644 --- a/configure.in +++ b/configure.in @@ -397,6 +397,44 @@ CheckDMEDIA() fi } +dnl Check whether we want to use Tru64 UNIX native audio or not +CheckMME() +{ + dnl Make sure we are running on an Tru64 UNIX + case $ARCH in + osf) + ;; + *) + return + ;; + esac + if test x$enable_audio = xyes; then + AC_MSG_CHECKING(for MME audio support) + MME_CFLAGS="-I/usr/include/mme" + MME_LIBS="-lmme" + have_mme=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $MME_CFLAGS" + AC_TRY_COMPILE([ + #include + ],[ + HWAVEOUT sound; + ],[ + have_mme=yes + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT($have_mme) + # Set up files for the audio library + if test x$have_mme = xyes; then + AC_DEFINE(SDL_AUDIO_DRIVER_MMEAUDIO) + SOURCES="$SOURCES $srcdir/src/audio/mme/*.c" + BUILD_CFLAGS="$BUILD_CFLAGS $MME_CFLAGS" + BUILD_LDFLAGS="$BUILD_LDFLAGS $MME_LIBS" + have_audio=yes + fi + fi +} + dnl Find the ESD includes and libraries CheckESD() { @@ -1555,6 +1593,11 @@ AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [default=yes]]), SDL_CFLAGS="$SDL_CFLAGS $pthread_cflags" SDL_LIBS="$SDL_LIBS $pthread_lib" + # Save the original compiler flags and libraries + ac_save_cflags="$CFLAGS"; ac_save_libs="$LIBS" + # Add the pthread compiler flags and libraries + CFLAGS="$CFLAGS $pthread_cflags"; LIBS="$LIBS $pthread_lib" + # Check to see if recursive mutexes are available AC_MSG_CHECKING(for recursive mutexes) has_recursive_mutexes=no @@ -1596,6 +1639,9 @@ AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [default=yes]]), AC_MSG_RESULT($have_pthread_sem) fi + # Restore the compiler flags and libraries + CFLAGS="$ac_save_cflags"; LIBS="$ac_save_libs" + # Basic thread creation functions SOURCES="$SOURCES $srcdir/src/thread/pthread/SDL_systhread.c" @@ -1903,6 +1949,7 @@ case "$target" in CheckAltivec CheckOSS CheckDMEDIA + CheckMME CheckALSA CheckARTSC CheckESD @@ -1945,12 +1992,6 @@ case "$target" in SOURCES="$SOURCES $srcdir/src/audio/paudio/*.c" have_audio=yes ;; - osf) - AC_DEFINE(SDL_AUDIO_DRIVER_MMEAUDIO) - SOURCES="$SOURCES $srcdir/src/audio/mme/*.c" - BUILD_LDFLAGS="$BUILD_LDFLAGS -lmme" - have_audio=yes - ;; esac fi # Set up files for the joystick library diff --git a/src/cdrom/osf/SDL_syscdrom.c b/src/cdrom/osf/SDL_syscdrom.c index f05c103f7..9a4f5e380 100644 --- a/src/cdrom/osf/SDL_syscdrom.c +++ b/src/cdrom/osf/SDL_syscdrom.c @@ -173,7 +173,7 @@ int SDL_SYS_CDInit(void) if ( SDLcdrom != NULL ) { char *cdpath, *delim; size_t len = SDL_strlen(SDLcdrom)+1; - cdpath = SDL_stack_alloc(len); + cdpath = SDL_stack_alloc(char, len); if ( cdpath != NULL ) { SDL_strlcpy(cdpath, SDLcdrom, len); SDLcdrom = cdpath; diff --git a/src/video/x11/SDL_x11dyn.h b/src/video/x11/SDL_x11dyn.h index 1aa4092c6..f3c975e5c 100644 --- a/src/video/x11/SDL_x11dyn.h +++ b/src/video/x11/SDL_x11dyn.h @@ -50,6 +50,15 @@ extern "C" { #endif +#ifdef __osf__ +extern int _XData32(Display *,register long *,unsigned); +extern void _XRead32(Display *,register long *,long); +extern void _SmtBufferOverflow(Display *,register smtDisplayPtr); +extern void _SmtIpError(Display *,register smtDisplayPtr, int); +extern int ipAllocateData(ChannelPtr, IPCard, IPDataPtr *); +extern int ipUnallocateAndSendData(ChannelPtr, IPCard); +#endif + /* evil function signatures... */ typedef Bool (*SDL_X11_XESetWireToEventRetType)(Display*,XEvent*,xEvent*); typedef int (*SDL_X11_XSynchronizeRetType)(Display*); @@ -72,7 +81,7 @@ typedef int (*SDL_X11_XSetExtensionErrorHandlerType)(Display *,char *,char *); #define XFree pXFree #define _XData32 p_XData32 -#if defined(__osf__) && defined(SDL_VIDEO_DRIVER_X11_DYNAMIC) +#if defined(__osf__) #define _SmtBufferOverflow p_SmtBufferOverflow #define _SmtIpError p_SmtIpError #define ipAllocateData pipAllocateData diff --git a/src/video/x11/SDL_x11sym.h b/src/video/x11/SDL_x11sym.h index a2de5e53f..cf031cfa2 100644 --- a/src/video/x11/SDL_x11sym.h +++ b/src/video/x11/SDL_x11sym.h @@ -140,7 +140,7 @@ SDL_X11_SYM(1,unsigned long,_XSetLastRequestRead,(Display*,xGenericReply*)) * These don't exist in 32-bit versions and are removed by Xlib macros, but * 64+ bit systems will use them. */ -#if defined(LONG64) && !defined(__osf__) +#if defined(LONG64) SDL_X11_SYM(1,int,_XData32,(Display *dpy,register long *data,unsigned len)) SDL_X11_SYM(1,void,_XRead32,(Display *dpy,register long *data,long len)) #endif