Date: Sun, 26 Feb 2006 11:25:09 +0900
authorSam Lantinga <slouken@libsdl.org>
Sun, 26 Feb 2006 04:54:01 +0000
changeset 1438 1f4f09641645
parent 1437 f1781c15934c
child 1439 4d3bb026cd16
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 <mme_api.h> specified in #include directive. (noinclfilef) #include <mme_api.h> -^ 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
src/cdrom/osf/SDL_syscdrom.c
src/video/x11/SDL_x11dyn.h
src/video/x11/SDL_x11sym.h
--- a/configure.in	Sun Feb 26 04:48:24 2006 +0000
+++ b/configure.in	Sun Feb 26 04:54:01 2006 +0000
@@ -397,6 +397,44 @@
     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 <mme_api.h>
+        ],[
+          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 @@
             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_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 @@
         CheckAltivec
         CheckOSS
         CheckDMEDIA
+        CheckMME
         CheckALSA
         CheckARTSC
         CheckESD
@@ -1945,12 +1992,6 @@
                 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
--- a/src/cdrom/osf/SDL_syscdrom.c	Sun Feb 26 04:48:24 2006 +0000
+++ b/src/cdrom/osf/SDL_syscdrom.c	Sun Feb 26 04:54:01 2006 +0000
@@ -173,7 +173,7 @@
     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;
--- a/src/video/x11/SDL_x11dyn.h	Sun Feb 26 04:48:24 2006 +0000
+++ b/src/video/x11/SDL_x11dyn.h	Sun Feb 26 04:54:01 2006 +0000
@@ -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 @@
 #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
--- a/src/video/x11/SDL_x11sym.h	Sun Feb 26 04:48:24 2006 +0000
+++ b/src/video/x11/SDL_x11sym.h	Sun Feb 26 04:54:01 2006 +0000
@@ -140,7 +140,7 @@
  * 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