# HG changeset patch # User Sam Lantinga # Date 1104642321 0 # Node ID e3b3130f3af87e9082e885b92036fcb45ae10706 # Parent 012af0b7e8e69e6f363cd9aa1d7223df32624938 Date: Fri, 31 Dec 2004 04:14:09 +0900 From: Hayashi Naoyuki Subject: SDL patch for Tru64 UNIX 4.0X SDL-1.2.8 support only Tru64 5.X. This patch is for Tru64 UNIX 4.X.(tested on Tru64 UNIX 4.0G and 5.1B) SDL-1.2.8/configure.in: ld doesn't accept -pthread option. cc -pthread has same effect as -D_REENTRANT when compiling, and has same effect as -lpthread -lexc when linking. SDL-1.2.8/include/begin_code.h: Old Compaq C Compiler accept not inline but __inline. SDL-1.2.8/src/audio/SDL_mixer_MMX.c: SDL-1.2.8/src/audio/SDL_mixer_MMX.h: Old Compaq C Compiler doesn't accept //. SDL-1.2.8/src/cdrom/osf/SDL_syscdrom.c: When becoming Tru64 v5.0 from Tru64 v4.0, the arrangement of the cd-rom device was changed. diff -r 012af0b7e8e6 -r e3b3130f3af8 configure.in --- a/configure.in Mon Dec 27 20:03:53 2004 +0000 +++ b/configure.in Sun Jan 02 05:05:21 2005 +0000 @@ -1280,12 +1280,11 @@ pthread_lib="" ;; *-*-osf*) + pthread_cflags="-D_REENTRANT" if test x$ac_cv_prog_gcc = xyes; then - pthread_cflags="-D_REENTRANT" pthread_lib="-lpthread -lrt" else - pthread_cflags="-pthread" - pthread_lib="-lpthread -lrt" + pthread_lib="-lpthread -lexc -lrt" fi ;; *) diff -r 012af0b7e8e6 -r e3b3130f3af8 include/begin_code.h --- a/include/begin_code.h Mon Dec 27 20:03:53 2004 +0000 +++ b/include/begin_code.h Sun Jan 02 05:05:21 2005 +0000 @@ -102,7 +102,8 @@ /* Add any special compiler-specific cases here */ #if defined(_MSC_VER) || defined(__BORLANDC__) || \ defined(__DMC__) || defined(__SC__) || \ - defined(__WATCOMC__) || defined(__LCC__) + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) #ifndef __inline__ #define __inline__ __inline #endif diff -r 012af0b7e8e6 -r e3b3130f3af8 src/audio/SDL_mixer_MMX.c --- a/src/audio/SDL_mixer_MMX.c Mon Dec 27 20:03:53 2004 +0000 +++ b/src/audio/SDL_mixer_MMX.c Sun Jan 02 05:05:21 2005 +0000 @@ -1,14 +1,16 @@ -// MMX assembler version of SDL_MixAudio for signed little endian 16 bit samples and signed 8 bit samples -// Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr) -// This code is licensed under the LGPL (see COPYING for details) -// -// Assumes buffer size in bytes is a multiple of 16 -// Assumes SDL_MIX_MAXVOLUME = 128 +/* + MMX assembler version of SDL_MixAudio for signed little endian 16 bit samples and signed 8 bit samples + Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr) + This code is licensed under the LGPL (see COPYING for details) + + Assumes buffer size in bytes is a multiple of 16 + Assumes SDL_MIX_MAXVOLUME = 128 +*/ -//////////////////////////////////////////////// -// Mixing for 16 bit signed buffers -//////////////////////////////////////////////// +/*********************************************** +* Mixing for 16 bit signed buffers +***********************************************/ #if defined(i386) && defined(__GNUC__) && defined(USE_ASMBLIT) void SDL_MixAudio_MMX_S16(char* dst,char* src,unsigned int size,int volume) diff -r 012af0b7e8e6 -r e3b3130f3af8 src/audio/SDL_mixer_MMX.h --- a/src/audio/SDL_mixer_MMX.h Mon Dec 27 20:03:53 2004 +0000 +++ b/src/audio/SDL_mixer_MMX.h Sun Jan 02 05:05:21 2005 +0000 @@ -1,9 +1,11 @@ -// headers for MMX assembler version of SDL_MixAudio -// Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr) -// This code is licensed under the LGPL (see COPYING for details) -// -// Assumes buffer size in bytes is a multiple of 16 -// Assumes SDL_MIX_MAXVOLUME = 128 +/* + headers for MMX assembler version of SDL_MixAudio + Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr) + This code is licensed under the LGPL (see COPYING for details) + + Assumes buffer size in bytes is a multiple of 16 + Assumes SDL_MIX_MAXVOLUME = 128 +*/ #if defined(i386) && defined(__GNUC__) && defined(USE_ASMBLIT) diff -r 012af0b7e8e6 -r e3b3130f3af8 src/cdrom/osf/SDL_syscdrom.c --- a/src/cdrom/osf/SDL_syscdrom.c Mon Dec 27 20:03:53 2004 +0000 +++ b/src/cdrom/osf/SDL_syscdrom.c Sun Jan 02 05:05:21 2005 +0000 @@ -22,9 +22,10 @@ /* Functions for system-level CD-ROM audio control */ -//#define DEBUG_CDROM 1 +/* #define DEBUG_CDROM 1 */ #include +#include #include #include #include @@ -141,11 +142,22 @@ int SDL_SYS_CDInit(void) { - /* checklist: /dev/rdisk/cdrom?c + /* checklist: + * + * Tru64 5.X (/dev/rdisk/cdrom?c) + * dir: /dev/rdisk, name: cdrom + * + * Digital UNIX 4.0X (/dev/rrz?c) + * dir: /dev, name: rrz * */ - static char *checklist[] = { - "?0 rdisk/cdrom?",NULL}; + struct { + char *dir; + char *name; + } checklist[] = { + {"/dev/rdisk", "cdrom"}, + {"/dev", "rrz"}, + {NULL, NULL}}; char drive[32]; char *SDLcdrom; int i, j, exists; @@ -195,37 +207,32 @@ } } /* Scan the system for CD-ROM drives */ - for ( i=0; checklist[i]; ++i ) { - if ( checklist[i][0] == '?' ) { - char *insert; - exists = 1; - for ( j=checklist[i][1]; exists; ++j ) { - sprintf(drive, "/dev/%sc", &checklist[i][3]); - insert = strchr(drive, '?'); - if ( insert != NULL ) { - *insert = j; - } - switch (CheckDrive(drive, &stbuf)) { - /* Drive exists and is a CD-ROM */ - case 1: - AddDrive(drive, &stbuf); - break; - /* Drive exists, but isn't a CD-ROM */ - case 0: - break; - /* Drive doesn't exist */ - case -1: - exists = 0; - break; - } - } + for ( i = 0; checklist[i].dir; ++i) { + DIR *devdir; + struct dirent *devent; + int name_len; + + devdir = opendir(checklist[i].dir); + if (devdir) { + name_len = strlen(checklist[i].name); + while (devent = readdir(devdir)) + if (memcmp(checklist[i].name, devent->d_name, name_len) == 0) + if (devent->d_name[devent->d_namlen-1] == 'c') { + sprintf(drive, "%s/%s", checklist[i].dir, devent->d_name); +#ifdef DEBUG_CDROM + fprintf(stderr, "Try to add drive: %s\n", drive); +#endif + if ( CheckDrive(drive, &stbuf) > 0 ) + AddDrive(drive, &stbuf); + } + closedir(devdir); } else { - sprintf(drive, "/dev/%s", checklist[i]); - if ( CheckDrive(drive, &stbuf) > 0 ) { - AddDrive(drive, &stbuf); - } +#ifdef DEBUG_CDROM + fprintf(stderr, "cannot open dir: %s\n", checklist[i].dir); +#endif } } + /* SDLcdrom=malloc(sizeof(char) * 32); strcpy(SDLcdrom,"/dev/rdisk/cdrom0c");