Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
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.
Loading branch information
@@ -1280,12 +1280,11 @@ CheckPTHREAD()
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
;;
*)
@@ -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
@@ -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
// //////////////////////////////////////////////
// Mixing for 16 bit signed buffers
// //////////////////////////////////////////////
/*
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
***********************************************/
#if defined(i386) && defined(__GNUC__) && defined(USE_ASMBLIT)
void SDL_MixAudio_MMX_S16 (char * dst,char * src,unsigned int size,int volume)
@@ -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)
@@ -22,9 +22,10 @@
/* Functions for system-level CD-ROM audio control */
// #define DEBUG_CDROM 1
/* #define DEBUG_CDROM 1 */
#include < sys/types.h>
#include < dirent.h>
#include < sys/stat.h>
#include < fcntl.h>
#include < io/cam/cdrom.h>
@@ -141,11 +142,22 @@ static void AddDrive(char *drive, struct stat *stbuf)
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 @@ int SDL_SYS_CDInit(void)
}
}
/* 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/%s c" , &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");
Toggle all file notes