Date: Wed, 01 Mar 2006 10:14:31 +0000
authorSam Lantinga <slouken@libsdl.org>
Thu, 02 Mar 2006 03:24:20 +0000
changeset 1459 1e8582152d44
parent 1458 bf8db2d92be1
child 1460 d79e6b0c2c19
Date: Wed, 01 Mar 2006 10:14:31 +0000 From: "alan buckley" Subject: Re: Updating SDL for RISC OS I've attached a zip file with three diffs to get SDL to build on RISC OS. configure.in.diff and makedeps.sh.diff have been modified so that they can build the assembler file in video/riscos. You may want to double check these as I don't know a lot about unix shell programming. (I've tested them cross-compiling on cygwin). sdlsysthread.diff is the changes required to SDL_systhread.c for RISC OS. As you suspected with these changes in place you can delete the RISC OS specific threading code in thread/riscos. I've also renamed SDL_riscosASM.s to SDL_riscosASM.S, but I'm never quite sure how to rename files in CVS, so if you could to this it would be appreciated.
build-scripts/makedep.sh
configure.in
src/thread/pthread/SDL_systhread.c
src/video/riscos/SDL_riscosASM.S
src/video/riscos/SDL_riscosASM.s
--- a/build-scripts/makedep.sh	Thu Mar 02 03:18:21 2006 +0000
+++ b/build-scripts/makedep.sh	Thu Mar 02 03:24:20 2006 +0000
@@ -69,6 +69,12 @@
 
 __EOF__
         ;;
+        S) cat >>${output}.new <<__EOF__
+
+	\$(LIBTOOL)  --mode=compile \$(CC) -c $src  -o \$@
+
+__EOF__
+        ;;
         *)   echo "Unknown file extension: $ext";;
     esac
     echo "" >>${output}.new
--- a/configure.in	Thu Mar 02 03:18:21 2006 +0000
+++ b/configure.in	Thu Mar 02 03:24:20 2006 +0000
@@ -2325,6 +2325,7 @@
         if test x$enable_video = xyes; then
             AC_DEFINE(SDL_VIDEO_DRIVER_RISCOS)
             SOURCES="$SOURCES $srcdir/src/video/riscos/*.c"
+            SOURCES="$SOURCES $srcdir/src/video/riscos/*.S"
             have_video=yes
         fi
         # Set up files for the joystick library
@@ -2388,6 +2389,7 @@
 OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.cc,$(objects)/\1.lo,g'`
 OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.m,$(objects)/\1.lo,g'`
 OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'`
+OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.S,$(objects)/\1.lo,g'`
 
 SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES | sed 's,[[^ ]]*/\([[^ ]]*\)\.cc,$(objects)/\1.o,g'`
 SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.m,$(objects)/\1.o,g'`
--- a/src/thread/pthread/SDL_systhread.c	Thu Mar 02 03:18:21 2006 +0000
+++ b/src/thread/pthread/SDL_systhread.c	Thu Mar 02 03:24:20 2006 +0000
@@ -34,6 +34,13 @@
 	SIGVTALRM, SIGPROF, 0
 };
 
+#ifdef __RISCOS__
+/* RISC OS needs to know the main thread for
+ * it's timer and event processing. */
+int riscos_using_threads = 0;
+Uint32 riscos_main_thread = 0; /* Thread running events */
+#endif
+ 
 
 static void *RunThread(void *data)
 {
@@ -58,6 +65,14 @@
 		SDL_SetError("Not enough resources to create thread");
 		return(-1);
 	}
+
+#ifdef __RISCOS__
+	if (riscos_using_threads == 0) {
+		riscos_using_threads = 1;
+		riscos_main_thread = SDL_ThreadID();
+	}
+#endif
+
 	return(0);
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/video/riscos/SDL_riscosASM.S	Thu Mar 02 03:24:20 2006 +0000
@@ -0,0 +1,116 @@
+;
+;    SDL - Simple DirectMedia Layer
+;    Copyright (C) 1997-2004 Sam Lantinga
+;
+;    This library is free software; you can redistribute it and/or
+;    modify it under the terms of the GNU Library General Public
+;    License as published by the Free Software Foundation; either
+;    version 2 of the License, or (at your option) any later version.
+;
+;    This library is distributed in the hope that it will be useful,
+;    but WITHOUT ANY WARRANTY; without even the implied warranty of
+;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;    Library General Public License for more details.
+;
+;    You should have received a copy of the GNU Library General Public
+;    License along with this library; if not, write to the Free
+;    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+;
+;    Sam Lantinga
+;    slouken@libsdl.org
+;
+; Assembler routines for RISC OS display
+;
+
+	AREA |C$$CODE|
+
+	EXPORT |RISCOS_Put32|
+
+; Display 32bpp to 32bpp, 1:1
+;
+; Code provided by Adrain Lees
+;
+; entry a1 -> destination
+;       a2 =  dest width in pixels
+;       a3 =  dest line length in bytes
+;       a4 =  dest height in scanlines
+;       arg5 -> source
+;       arg6 =  byte offset from end of source line to start of next
+
+Arg5    *       10*4
+Arg6    *       Arg5+4
+
+RISCOS_Put32    ROUT
+                STMFD   sp!,{a2,v1-v6,sl,fp,lr}
+                LDR     ip,[sp,#Arg5]
+                MOV     lr,a1
+                B       ucp64lp
+
+00              ;tail strip of 1-15 pixels
+
+                LDR     v1,[ip],#4
+01              SUBS    a2,a2,#1
+                STR     v1,[lr],#4
+                LDRHI   v1,[ip],#4
+                BHI     %01
+                B       %02
+
+ucp64end        ADDS    a2,a2,#16
+                BNE     %00
+
+02              SUBS    a4,a4,#1                ;height--
+                LDRHI   v1,[sp,#Arg6]
+                LDRHI   a2,[sp]                 ;reload width
+                BLS     %03
+
+                ;move to start of next scanline
+
+                ADD     lr,a1,a3
+                ADD     a1,a1,a3
+                ADD     ip,ip,v1
+
+ucp64lp         SUBS    a2,a2,#16
+                BLO     ucp64end
+
+                PLD     [ip,#64]
+
+                LDR     v1,[ip],#4
+                LDR     v2,[ip],#4
+                LDR     v3,[ip],#4
+                LDR     v4,[ip],#4
+                LDR     v5,[ip],#4
+                LDR     v6,[ip],#4
+                LDR     sl,[ip],#4
+                LDR     fp,[ip],#4
+                STR     v1,[lr],#4
+                STR     v2,[lr],#4
+                STR     v3,[lr],#4
+                STR     v4,[lr],#4
+                STR     v5,[lr],#4
+                STR     v6,[lr],#4
+                STR     sl,[lr],#4
+                STR     fp,[lr],#4
+
+                PLD     [ip,#64]
+
+                LDR     v1,[ip],#4
+                LDR     v2,[ip],#4
+                LDR     v3,[ip],#4
+                LDR     v4,[ip],#4
+                LDR     v5,[ip],#4
+                LDR     v6,[ip],#4
+                LDR     sl,[ip],#4
+                LDR     fp,[ip],#4
+                STR     v1,[lr],#4
+                STR     v2,[lr],#4
+                STR     v3,[lr],#4
+                STR     v4,[lr],#4
+                STR     v5,[lr],#4
+                STR     v6,[lr],#4
+                STR     sl,[lr],#4
+                STR     fp,[lr],#4
+
+                B       ucp64lp
+
+03              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
+
--- a/src/video/riscos/SDL_riscosASM.s	Thu Mar 02 03:18:21 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-;
-;    SDL - Simple DirectMedia Layer
-;    Copyright (C) 1997-2004 Sam Lantinga
-;
-;    This library is free software; you can redistribute it and/or
-;    modify it under the terms of the GNU Library General Public
-;    License as published by the Free Software Foundation; either
-;    version 2 of the License, or (at your option) any later version.
-;
-;    This library is distributed in the hope that it will be useful,
-;    but WITHOUT ANY WARRANTY; without even the implied warranty of
-;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;    Library General Public License for more details.
-;
-;    You should have received a copy of the GNU Library General Public
-;    License along with this library; if not, write to the Free
-;    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-;
-;    Sam Lantinga
-;    slouken@libsdl.org
-;
-; Assembler routines for RISC OS display
-;
-
-	AREA |C$$CODE|
-
-	EXPORT |RISCOS_Put32|
-
-; Display 32bpp to 32bpp, 1:1
-;
-; Code provided by Adrain Lees
-;
-; entry a1 -> destination
-;       a2 =  dest width in pixels
-;       a3 =  dest line length in bytes
-;       a4 =  dest height in scanlines
-;       arg5 -> source
-;       arg6 =  byte offset from end of source line to start of next
-
-Arg5    *       10*4
-Arg6    *       Arg5+4
-
-RISCOS_Put32    ROUT
-                STMFD   sp!,{a2,v1-v6,sl,fp,lr}
-                LDR     ip,[sp,#Arg5]
-                MOV     lr,a1
-                B       ucp64lp
-
-00              ;tail strip of 1-15 pixels
-
-                LDR     v1,[ip],#4
-01              SUBS    a2,a2,#1
-                STR     v1,[lr],#4
-                LDRHI   v1,[ip],#4
-                BHI     %01
-                B       %02
-
-ucp64end        ADDS    a2,a2,#16
-                BNE     %00
-
-02              SUBS    a4,a4,#1                ;height--
-                LDRHI   v1,[sp,#Arg6]
-                LDRHI   a2,[sp]                 ;reload width
-                BLS     %03
-
-                ;move to start of next scanline
-
-                ADD     lr,a1,a3
-                ADD     a1,a1,a3
-                ADD     ip,ip,v1
-
-ucp64lp         SUBS    a2,a2,#16
-                BLO     ucp64end
-
-                PLD     [ip,#64]
-
-                LDR     v1,[ip],#4
-                LDR     v2,[ip],#4
-                LDR     v3,[ip],#4
-                LDR     v4,[ip],#4
-                LDR     v5,[ip],#4
-                LDR     v6,[ip],#4
-                LDR     sl,[ip],#4
-                LDR     fp,[ip],#4
-                STR     v1,[lr],#4
-                STR     v2,[lr],#4
-                STR     v3,[lr],#4
-                STR     v4,[lr],#4
-                STR     v5,[lr],#4
-                STR     v6,[lr],#4
-                STR     sl,[lr],#4
-                STR     fp,[lr],#4
-
-                PLD     [ip,#64]
-
-                LDR     v1,[ip],#4
-                LDR     v2,[ip],#4
-                LDR     v3,[ip],#4
-                LDR     v4,[ip],#4
-                LDR     v5,[ip],#4
-                LDR     v6,[ip],#4
-                LDR     sl,[ip],#4
-                LDR     fp,[ip],#4
-                STR     v1,[lr],#4
-                STR     v2,[lr],#4
-                STR     v3,[lr],#4
-                STR     v4,[lr],#4
-                STR     v5,[lr],#4
-                STR     v6,[lr],#4
-                STR     sl,[lr],#4
-                STR     fp,[lr],#4
-
-                B       ucp64lp
-
-03              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
-