Makefile.in
author Sam Lantinga <slouken@libsdl.org>
Thu, 02 Apr 2009 04:43:36 +0000
branchSDL-1.2
changeset 4167 a6f635e5eaa6
parent 4131 7c2589fb8d4d
child 4260 42d28f92253b
permissions -rw-r--r--
Fixed bug #611

From Tim Angus 2008-08-12 11:18:06

I'm one of the maintainers of ioquake3.org, an updated version of the
Quake 3 engine. Relatively recently, we moved ioq3 to use SDL as a
replacement for 95% of the platform specific code that was there. On the
whole it's doing a great job but unfortunately since the move we've been
getting complaints about the quality of the mouse input on the Windows
platform to the point where for many the game is unplayable. Put in
other terms, the current stable SDL 1.2 is basically not fit for purpose
if you need high quality mouse input as you do in a first person shooter.

Over the weekend I decided to pull my finger out and actually figure out
what's going on. There are basically two major problems. Firstly, when
using the "windib" driver, mouse input is gathered via the WM_MOUSEMOVE
message. Googling for this indicates that often this is known to result
in "spurious" and/or "missing" mouse movement events; this is the
primary cause of the poor mouse input. The second problem is that the
"directx" driver does not work at all in combination with OpenGL meaning
that you can't use DirectInput if your application also uses OpenGL. In
other words you're locked into using the "windib" driver and its poor
mouse input.

In order to address these problems I've done the following:

* Remove WM_MOUSEMOVE based motion event generation and replace with
calls to GetCursorPos which seems much more reliable. In order to
achieve this I've moved mouse motion out into a separate function that
is called once per DIB_PumpEvents.

* Remove the restriction on the "directx" driver being inoperable in
combination with OpenGL. There is a bug for this issues that I've
hijacked to a certain extent
(http://bugzilla.libsdl.org/show_bug.cgi?id=265). I'm the first to admit
I don't really understand why this restriction is there in the first
place. The commit message for the bug fix that introduced this
restriction (r581) isn't very elaborate and I couldn't see any other bug
tracking the issue. If anyone has more information on the bug that was
avoided by r581 it would be helpful as I/someone could then look into
addressing the problem without disabling the "directx" driver.

* I've also removed the restriction on not being allowed to use
DirectInput in windowed mode. I couldn't see any reason for this, at
least not from our perspective. I have my suspicions that it'll be
something like matching up the cursor with the mouse coordinates...

* I bumped up the DirectInput API used to version 7 in order to get
access to mouse buttons 4-7. I've had to inject a little bit of the DX7
headers into SDL there as the MinGW ones aren't up to date in this respect.
     1 # Makefile to build and install the SDL library
     2 
     3 top_builddir = .
     4 srcdir  = @srcdir@
     5 objects = build
     6 depend	= build-deps
     7 prefix = @prefix@
     8 exec_prefix = @exec_prefix@
     9 bindir	= @bindir@
    10 libdir  = @libdir@
    11 includedir = @includedir@
    12 datarootdir = @datarootdir@
    13 datadir	= @datadir@
    14 mandir	= @mandir@
    15 auxdir	= @ac_aux_dir@
    16 distpath = $(srcdir)/..
    17 distdir = SDL-@SDL_VERSION@
    18 distfile = $(distdir).tar.gz
    19 
    20 @SET_MAKE@
    21 SHELL	= @SHELL@
    22 CC      = @CC@
    23 INCLUDE = @INCLUDE@
    24 CFLAGS  = @BUILD_CFLAGS@
    25 EXTRA_CFLAGS = @EXTRA_CFLAGS@
    26 LDFLAGS = @BUILD_LDFLAGS@
    27 EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
    28 LIBTOOL = @LIBTOOL@
    29 INSTALL = @INSTALL@
    30 NASM	= @NASM@ @NASMFLAGS@
    31 AR	= @AR@
    32 RANLIB	= @RANLIB@
    33 WINDRES	= @WINDRES@
    34 
    35 TARGET  = libSDL.la
    36 SOURCES = @SOURCES@
    37 OBJECTS = @OBJECTS@
    38 
    39 SDLMAIN_TARGET = libSDLmain.a
    40 SDLMAIN_SOURCES = @SDLMAIN_SOURCES@
    41 SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
    42 
    43 DIST = acinclude.m4 autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS CWprojects.sea.bin docs docs.html include INSTALL Makefile.dc Makefile.minimal Makefile.in MPWmake.sea.bin README* sdl-config.in sdl.m4 sdl.pc.in SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualCE.zip VisualC.html VisualC.zip Watcom-OS2.zip Watcom-Win32.zip symbian.zip WhatsNew Xcode.tar.gz
    44 
    45 HDRS = SDL.h SDL_active.h SDL_audio.h SDL_byteorder.h SDL_cdrom.h SDL_cpuinfo.h SDL_endian.h SDL_error.h SDL_events.h SDL_getenv.h SDL_joystick.h SDL_keyboard.h SDL_keysym.h SDL_loadso.h SDL_main.h SDL_mouse.h SDL_mutex.h SDL_name.h SDL_opengl.h SDL_platform.h SDL_quit.h SDL_rwops.h SDL_stdinc.h SDL_syswm.h SDL_thread.h SDL_timer.h SDL_types.h SDL_version.h SDL_video.h begin_code.h close_code.h
    46 
    47 LT_AGE      = @LT_AGE@
    48 LT_CURRENT  = @LT_CURRENT@
    49 LT_RELEASE  = @LT_RELEASE@
    50 LT_REVISION = @LT_REVISION@
    51 LT_LDFLAGS  = -no-undefined -rpath $(DESTDIR)$(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
    52 
    53 all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET)
    54 
    55 $(srcdir)/configure: $(srcdir)/configure.in
    56 	@echo "Warning, configure.in is out of date"
    57 	#(cd $(srcdir) && sh autogen.sh && sh configure)
    58 	@sleep 3
    59 
    60 Makefile: $(srcdir)/Makefile.in
    61 	$(SHELL) config.status $@
    62 
    63 $(objects):
    64 	$(SHELL) $(auxdir)/mkinstalldirs $@
    65 
    66 .PHONY: all depend install install-bin install-hdrs install-lib install-data install-man uninstall uninstall-bin uninstall-hdrs uninstall-lib uninstall-data uninstall-man clean distclean dist
    67 depend:
    68 	@SOURCES="$(SOURCES)" INCLUDE="$(INCLUDE)" output="$(depend)" \
    69 	$(SHELL) $(auxdir)/makedep.sh
    70 	@for src in $(SDLMAIN_SOURCES); do \
    71 	    obj=`echo $$src | sed -e 's|.*/||' -e 's|\.[^\.]*$$|.o|'`; \
    72 	    echo "\$$(objects)/$$obj: $$src" >>$(depend); \
    73 	    echo "	\$$(CC) \$$(CFLAGS) \$$(EXTRA_CFLAGS) -c $$src -o \$$@" >>$(depend); \
    74 	done
    75 
    76 include $(depend)
    77 
    78 $(objects)/$(TARGET): $(OBJECTS)
    79 	$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
    80 
    81 $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
    82 	$(AR) cru $@ $(SDLMAIN_OBJECTS)
    83 	$(RANLIB) $@
    84 
    85 install: all install-bin install-hdrs install-lib install-data install-man
    86 install-bin:
    87 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(bindir)
    88 	$(INSTALL) -m 755 sdl-config $(DESTDIR)$(bindir)/sdl-config
    89 install-hdrs:
    90 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(includedir)/SDL
    91 	for file in $(HDRS); do \
    92 	    $(INSTALL) -m 644 $(srcdir)/include/$$file $(DESTDIR)$(includedir)/SDL/$$file; \
    93 	done
    94 	$(INSTALL) -m 644 include/SDL_config.h $(DESTDIR)$(includedir)/SDL/SDL_config.h
    95 install-lib: $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET)
    96 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)
    97 	$(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(TARGET) $(DESTDIR)$(libdir)/$(TARGET)
    98 	$(INSTALL) -m 644 $(objects)/$(SDLMAIN_TARGET) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
    99 	$(RANLIB) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
   100 install-data:
   101 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(datadir)/aclocal
   102 	$(INSTALL) -m 644 $(srcdir)/sdl.m4 $(DESTDIR)$(datadir)/aclocal/sdl.m4
   103 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig
   104 	$(INSTALL) -m 644 sdl.pc $(DESTDIR)$(libdir)/pkgconfig
   105 install-man:
   106 	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(mandir)/man3
   107 	for src in $(srcdir)/docs/man3/*.3; do \
   108 	    file=`echo $$src | sed -e 's|^.*/||'`; \
   109 	    $(INSTALL) -m 644 $$src $(DESTDIR)$(mandir)/man3/$$file; \
   110 	done
   111 
   112 uninstall: uninstall-bin uninstall-hdrs uninstall-lib uninstall-data uninstall-man
   113 uninstall-bin:
   114 	rm -f $(DESTDIR)$(bindir)/sdl-config
   115 uninstall-hdrs:
   116 	for file in $(HDRS); do \
   117 	    rm -f $(DESTDIR)$(includedir)/SDL/$$file; \
   118 	done
   119 	rm -f $(DESTDIR)$(includedir)/SDL/SDL_config.h
   120 	-rmdir $(DESTDIR)$(includedir)/SDL
   121 uninstall-lib:
   122 	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(TARGET)
   123 	rm -f $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
   124 uninstall-data:
   125 	rm -f $(DESTDIR)$(datadir)/aclocal/sdl.m4
   126 uninstall-man:
   127 	for src in $(srcdir)/docs/man3/*.3; do \
   128 	    file=`echo $$src | sed -e 's|^.*/||'`; \
   129 	    rm -f $(DESTDIR)$(mandir)/man3/$$file; \
   130 	done
   131 
   132 clean:
   133 	rm -rf $(objects)
   134 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
   135 
   136 distclean: clean
   137 	rm -f Makefile include/SDL_config.h sdl-config
   138 	rm -f SDL.qpg
   139 	rm -f config.status config.cache config.log libtool $(depend)
   140 	rm -rf $(srcdir)/autom4te*
   141 	rm -rf $(srcdir)/test/autom4te*
   142 	find $(srcdir) \( \
   143 	    -name '*~' -o \
   144 	    -name '*.bak' -o \
   145 	    -name '*.old' -o \
   146 	    -name '*.rej' -o \
   147 	    -name '*.orig' -o \
   148 	    -name '.#*' \) \
   149 	    -exec rm -f {} \;
   150 	cp $(srcdir)/include/SDL_config.h.default $(srcdir)/include/SDL_config.h
   151 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
   152 
   153 dist $(distfile):
   154 	$(SHELL) $(auxdir)/mkinstalldirs $(distdir)
   155 	tar cf - $(DIST) | (cd $(distdir); tar xf -)
   156 	cp $(distdir)/include/SDL_config.h.default $(distdir)/include/SDL_config.h
   157 	rm -rf `find $(distdir) -name .svn`
   158 	rm -rf $(distdir)/test/autom4te*
   159 	find $(distdir) \( \
   160 	    -name '*~' -o \
   161 	    -name '*.bak' -o \
   162 	    -name '*.old' -o \
   163 	    -name '*.rej' -o \
   164 	    -name '*.orig' -o \
   165 	    -name '.#*' \) \
   166 	    -exec rm -f {} \;
   167 	if test -f $(distdir)/test/Makefile; then (cd $(distdir)/test && make distclean); fi
   168 	tar cvf - $(distdir) | gzip --best >$(distfile)
   169 	rm -rf $(distdir)
   170 
   171 rpm: $(distfile)
   172 	rpmbuild -ta $?
   173 
   174 # Create a SVN snapshot that people can run update on
   175 snapshot:
   176 	svn co http://svn.libsdl.org/branches/SDL-1.2
   177 	(cd SDL-1.2 && ./autogen.sh && rm -rf autom4te.cache)
   178 	cp SDL-1.2/include/SDL_config.h.default SDL-1.2/include/SDL_config.h
   179 	tar zcf $(HOME)/SDL-1.2.tar.gz SDL-1.2
   180 	rm -f $(HOME)/SDL-1.2.zip
   181 	zip -r $(HOME)/SDL-1.2.zip SDL-1.2
   182 	rm -rf SDL-1.2