Makefile.dc
author Sam Lantinga <slouken@libsdl.org>
Sat, 28 Jun 2003 17:27:33 +0000
changeset 638 b0108e9dea53
parent 509 dad72daf44b3
child 1461 11134dc42da8
permissions -rw-r--r--
Date: Sun, 11 May 2003 19:59:06 +0300 From: Pasi K?rkk?inen Subject: [PATCH] fix SDL OpenGL segfault with DRI/Mesa drivers and Glew Hello! The attached patch fixes a bug in SDL which causes SDL to crash in X11_GL_Shutdown() if you are using DRI/Mesa drivers AND glew (http://glew.sf.net). The bug is caused by a namespace collision affecting dlsym() to fetch wrong pointer for glXReleaseBuffersMESA() (uninitialized pointer from glew because the extension is NOT supported by the driver) and then SDL calling it in X11_GL_Shutdown(). SDL should check if the glXReleaseBuffersMESA() is really supported by the driver (from the extensions string) before calling it. Attached patch adds extension string parsing to check if glXReleaseBuffersMESA() is really supported (and this way prevents the segfault). Availability of the extensions should be _always_ checked from the extensions string rather than using dlsym()! Please add it to the next version of SDL. Thanks to gltron and author of glew to help fixing this.

#GL=1

CC = sh-elf-gcc -ml -m4-single-only
AR = sh-elf-ar
KOS_BASE=/prog/kos-1.1.7
INCS = -I$(KOS_BASE)/libc/include -I$(KOS_BASE)/include -I$(KOS_BASE)/kernel/arch/dreamcast/include
DEFS =-DNO_SIGNAL_H -DENABLE_DC

ifdef GL
DEFS += -DHAVE_OPENGL
TARGET = libSDL_gl.a
else
TARGET = libSDL.a
endif

OPTFLAGS=-O2 -fomit-frame-pointer
CFLAGS=-D_arch_dreamcast $(DEFS) $(INCS) -Iinclude -Isrc -Isrc/audio -Isrc/cdrom -Isrc/endian -Isrc/events -Isrc/joystick -Isrc/thread/dc -Isrc/thread -Isrc/timer -Isrc/video $(OPTFLAGS)

SRCS = \
	src/audio/dc/SDL_dcaudio.c \
	src/audio/dc/aica.c \
	src/audio/SDL_audio.c \
	src/audio/SDL_audiocvt.c \
	src/audio/SDL_audiodev.c \
	src/audio/SDL_audiomem.c \
	src/audio/SDL_mixer.c \
	src/audio/SDL_wave.c \
	src/cdrom/dc/SDL_syscdrom.c \
	src/cdrom/SDL_cdrom.c \
	src/endian/SDL_endian.c \
	src/events/SDL_active.c \
	src/events/SDL_events.c \
	src/events/SDL_expose.c \
	src/events/SDL_keyboard.c \
	src/events/SDL_mouse.c \
	src/events/SDL_quit.c \
	src/events/SDL_resize.c \
	src/file/SDL_rwops.c \
	src/joystick/dc/SDL_sysjoystick.c \
	src/joystick/SDL_joystick.c \
	src/SDL.c \
	src/SDL_error.c \
	src/SDL_fatal.c \
	src/SDL_getenv.c \
	src/SDL_loadso.c \
	src/thread/dc/SDL_syscond.c \
	src/thread/dc/SDL_sysmutex.c \
	src/thread/dc/SDL_syssem.c \
	src/thread/dc/SDL_systhread.c \
	src/thread/SDL_thread.c \
	src/timer/dc/SDL_systimer.c \
	src/timer/SDL_timer.c \
	src/video/dc/SDL_dcevents.c \
	src/video/dc/SDL_dcvideo.c \
	src/video/SDL_blit.c \
	src/video/SDL_blit_0.c \
	src/video/SDL_blit_1.c \
	src/video/SDL_blit_A.c \
	src/video/SDL_blit_N.c \
	src/video/SDL_bmp.c \
	src/video/SDL_cursor.c \
	src/video/SDL_gamma.c \
	src/video/SDL_pixels.c \
	src/video/SDL_RLEaccel.c \
	src/video/SDL_stretch.c \
	src/video/SDL_surface.c \
	src/video/SDL_video.c \
	src/video/SDL_yuv.c \
	src/video/SDL_yuv_sw.c \

OBJS = $(SRCS:.c=.o)

TEST = \
	test/checkkeys.c \
	test/graywin.c \
	test/loopwave.c \
	test/testalpha.c \
	test/testbitmap.c \
	test/testcdrom.c \
	test/testerror.c \
	test/testgamma.c \
	test/testgl.c \
	test/testhread.c \
	test/testjoystick.c \
	test/testkeys.c \
	test/testlock.c \
	test/testoverlay.c \
	test/testpalette.c \
	test/testsem.c \
	test/testsprite.c \
	test/testtimer.c \
	test/testtypes.c \
	test/testver.c \
	test/testvidinfo.c \
	test/testwin.c \
	test/testwm.c \
	test/threadwin.c \
	test/torturethread.c \

clean:
	rm $(OBJS)

$(TARGET) : $(OBJS)
	$(AR) rcs $(TARGET) $(OBJS)