Added documentation on how to build a completely useless SDL library. :)
authorSam Lantinga <slouken@libsdl.org>
Wed, 08 Mar 2006 08:30:17 +0000
changeset 1484 b2b476a4a73c
parent 1483 52a61c7b323b
child 1485 e507811313ee
Added documentation on how to build a completely useless SDL library. :)
Makefile.minimal
README.Porting
include/SDL_config.h
include/SDL_config.h.minimal
src/timer/dummy/SDL_systimer.c
test/.cvsignore
test/testcdrom.c
test/testfile.c
test/testtimer.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile.minimal	Wed Mar 08 08:30:17 2006 +0000
@@ -0,0 +1,38 @@
+# Makefile to build the SDL library
+
+INCLUDE = -I./include
+CFLAGS  = -g -O2 $(INCLUDE)
+AR	= ar
+RANLIB	= ranlib
+
+TARGET  = libSDL.a
+SOURCES = \
+	src/*.c \
+	src/audio/*.c \
+	src/cdrom/*.c \
+	src/cpuinfo/*.c \
+	src/events/*.c \
+	src/file/*.c \
+	src/joystick/*.c \
+	src/stdlib/*.c \
+	src/thread/*.c \
+	src/timer/*.c \
+	src/video/*.c \
+	src/audio/disk/*.c \
+	src/video/dummy/*.c \
+	src/joystick/dummy/*.c \
+	src/cdrom/dummy/*.c \
+	src/thread/generic/*.c \
+	src/timer/dummy/*.c \
+	src/loadso/dummy/*.c \
+
+OBJECTS = $(shell echo $(SOURCES) | sed -e 's,\.c,\.o,g')
+
+all: $(TARGET)
+
+$(TARGET): $(OBJECTS)
+	$(AR) crv $@ $^
+	$(RANLIB) $@
+
+clean:
+	rm -f $(TARGET) $(OBJECTS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.Porting	Wed Mar 08 08:30:17 2006 +0000
@@ -0,0 +1,56 @@
+
+* Porting To A New Platform
+
+  The first thing you have to do when porting to a new platform, is look at
+include/SDL_platform.h and create an entry there for your operating system.
+The standard format is __PLATFORM__, where PLATFORM is the name of the OS.
+Ideally SDL_platform.h will be able to auto-detect the system it's building
+on based on C preprocessor symbols.
+
+There are two basic ways of building SDL at the moment:
+
+1. The "UNIX" way:  ./configure; make; make install
+
+   If you have a GNUish system, then you might try this.  Edit configure.in,
+   take a look at the large section labelled:
+	"Set up the configuration based on the target platform!"
+   Add a section for your platform, and then re-run autogen.sh and build!
+
+2. Using an IDE:
+
+   If you're using an IDE or other non-configure build system, you'll probably
+   want to create a custom SDL_config.h for your platform.  Edit SDL_config.h,
+   add a section for your platform, and create a custom SDL_config_{platform}.h,
+   based on SDL_config.h.minimal and SDL_config.h.in
+
+   Add the top level include directory to the header search path, and then add
+   the following sources to the project:
+	src/*.c
+	src/audio/*.c
+	src/cdrom/*.c
+	src/cpuinfo/*.c
+	src/events/*.c
+	src/file/*.c
+	src/joystick/*.c
+	src/stdlib/*.c
+	src/thread/*.c
+	src/timer/*.c
+	src/video/*.c
+	src/audio/disk/*.c
+	src/video/dummy/*.c
+	src/joystick/dummy/*.c
+	src/cdrom/dummy/*.c
+	src/thread/generic/*.c
+	src/timer/dummy/*.c
+	src/loadso/dummy/*.c
+
+
+Once you have a working library without any drivers, you can go back to each
+of the major subsystems and start implementing drivers for your platform.
+
+If you have any questions, don't hesitate to ask on the SDL mailing list:
+	http://www.libsdl.org/mailing-list.php
+
+Enjoy!
+	Sam Lantinga				(slouken@libsdl.org)
+
--- a/include/SDL_config.h	Wed Mar 08 06:21:04 2006 +0000
+++ b/include/SDL_config.h	Wed Mar 08 08:30:17 2006 +0000
@@ -51,6 +51,28 @@
 typedef unsigned int uint32_t;
 typedef unsigned int size_t;
 typedef unsigned long uintptr_t;
-#endif
+
+/* Enable the disk audio driver (src/audio/disk/\*.c) */
+#define SDL_AUDIO_DRIVER_DISK	1
+
+/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */
+#define SDL_CDROM_DISABLED	1
+
+/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
+#define SDL_JOYSTICK_DISABLED	1
+
+/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
+#define SDL_LOADSO_DISABLED	1
+
+/* Enable the stub thread support (src/thread/generic/\*.c) */
+#define SDL_THREADS_DISABLED	1
+
+/* Enable the stub timer support (src/timer/dummy/\*.c) */
+#define SDL_TIMERS_DISABLED	1
+
+/* Enable the dummy video driver (src/video/dummy/\*.c) */
+#define SDL_VIDEO_DRIVER_DUMMY	1
+
+#endif /* platform config */
 
 #endif /* _SDL_config_h */
--- a/include/SDL_config.h.minimal	Wed Mar 08 06:21:04 2006 +0000
+++ b/include/SDL_config.h.minimal	Wed Mar 08 08:30:17 2006 +0000
@@ -51,6 +51,28 @@
 typedef unsigned int uint32_t;
 typedef unsigned int size_t;
 typedef unsigned long uintptr_t;
-#endif
+
+/* Enable the disk audio driver (src/audio/disk/\*.c) */
+#define SDL_AUDIO_DRIVER_DISK	1
+
+/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */
+#define SDL_CDROM_DISABLED	1
+
+/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
+#define SDL_JOYSTICK_DISABLED	1
+
+/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
+#define SDL_LOADSO_DISABLED	1
+
+/* Enable the stub thread support (src/thread/generic/\*.c) */
+#define SDL_THREADS_DISABLED	1
+
+/* Enable the stub timer support (src/timer/dummy/\*.c) */
+#define SDL_TIMERS_DISABLED	1
+
+/* Enable the dummy video driver (src/video/dummy/\*.c) */
+#define SDL_VIDEO_DRIVER_DUMMY	1
+
+#endif /* platform config */
 
 #endif /* _SDL_config_h */
--- a/src/timer/dummy/SDL_systimer.c	Wed Mar 08 06:21:04 2006 +0000
+++ b/src/timer/dummy/SDL_systimer.c	Wed Mar 08 08:30:17 2006 +0000
@@ -21,6 +21,9 @@
 */
 #include "SDL_config.h"
 
+#include "SDL_timer.h"
+#include "../SDL_timer_c.h"
+
 void SDL_StartTicks(void)
 {
 }
--- a/test/.cvsignore	Wed Mar 08 06:21:04 2006 +0000
+++ b/test/.cvsignore	Wed Mar 08 08:30:17 2006 +0000
@@ -15,10 +15,9 @@
 testbitmap
 testblitspeed
 testcdrom
-testcpuinfo
 testdyngl
-testendian
 testerror
+testfile
 testgamma
 testgl
 testhread
@@ -28,13 +27,12 @@
 testoverlay
 testoverlay2
 testpalette
+testplatform
 testsem
 testsprite
 testtimer
-testtypes
 testver
 testvidinfo
 testwin
 testwm
-threadwin
 torturethread
--- a/test/testcdrom.c	Wed Mar 08 06:21:04 2006 +0000
+++ b/test/testcdrom.c	Wed Mar 08 08:30:17 2006 +0000
@@ -2,9 +2,9 @@
 /* Test the SDL CD-ROM audio functions */
 
 #include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
 #include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
 
 #include "SDL.h"
 
--- a/test/testfile.c	Wed Mar 08 06:21:04 2006 +0000
+++ b/test/testfile.c	Wed Mar 08 08:30:17 2006 +0000
@@ -1,7 +1,7 @@
 
 /* sanity tests on SDL_rwops.c (usefull for alternative implementations of stdio rwops) */
 
-
+#include <stdlib.h>
 
 #include "SDL.h"
 #include "SDL_endian.h"
--- a/test/testtimer.c	Wed Mar 08 06:21:04 2006 +0000
+++ b/test/testtimer.c	Wed Mar 08 08:30:17 2006 +0000
@@ -37,7 +37,7 @@
 	SDL_TimerID t1, t2, t3;
 
 	if ( SDL_Init(SDL_INIT_TIMER) < 0 ) {
-		fprintf(stderr, "Couldn't load SDL: %s\n", SDL_GetError());
+		fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
 		return(1);
 	}