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.
slouken@1362
     1
# Makefile to build and install the SDL library
slouken@1362
     2
slouken@1362
     3
top_builddir = .
slouken@1362
     4
srcdir  = @srcdir@
slouken@1362
     5
objects = build
slouken@1362
     6
depend	= build-deps
slouken@1362
     7
prefix = @prefix@
slouken@1362
     8
exec_prefix = @exec_prefix@
slouken@4019
     9
bindir	= @bindir@
slouken@4019
    10
libdir  = @libdir@
slouken@4019
    11
includedir = @includedir@
slouken@4019
    12
datarootdir = @datarootdir@
slouken@4019
    13
datadir	= @datadir@
slouken@4019
    14
mandir	= @mandir@
slouken@1391
    15
auxdir	= @ac_aux_dir@
slouken@1362
    16
distpath = $(srcdir)/..
slouken@1362
    17
distdir = SDL-@SDL_VERSION@
slouken@1362
    18
distfile = $(distdir).tar.gz
slouken@1362
    19
slouken@1380
    20
@SET_MAKE@
slouken@1362
    21
SHELL	= @SHELL@
slouken@1362
    22
CC      = @CC@
slouken@1362
    23
INCLUDE = @INCLUDE@
slouken@1362
    24
CFLAGS  = @BUILD_CFLAGS@
slouken@1521
    25
EXTRA_CFLAGS = @EXTRA_CFLAGS@
slouken@1393
    26
LDFLAGS = @BUILD_LDFLAGS@
slouken@1521
    27
EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
slouken@1362
    28
LIBTOOL = @LIBTOOL@
slouken@1362
    29
INSTALL = @INSTALL@
slouken@1362
    30
NASM	= @NASM@ @NASMFLAGS@
slouken@1419
    31
AR	= @AR@
slouken@1419
    32
RANLIB	= @RANLIB@
slouken@4078
    33
WINDRES	= @WINDRES@
slouken@1362
    34
slouken@1362
    35
TARGET  = libSDL.la
slouken@1362
    36
SOURCES = @SOURCES@
slouken@1362
    37
OBJECTS = @OBJECTS@
slouken@1362
    38
slouken@1397
    39
SDLMAIN_TARGET = libSDLmain.a
slouken@1397
    40
SDLMAIN_SOURCES = @SDLMAIN_SOURCES@
slouken@1397
    41
SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
slouken@1397
    42
slouken@4126
    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
slouken@1362
    44
slouken@3961
    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
slouken@3961
    46
slouken@1362
    47
LT_AGE      = @LT_AGE@
slouken@1362
    48
LT_CURRENT  = @LT_CURRENT@
slouken@1362
    49
LT_RELEASE  = @LT_RELEASE@
slouken@1362
    50
LT_REVISION = @LT_REVISION@
slouken@4019
    51
LT_LDFLAGS  = -no-undefined -rpath $(DESTDIR)$(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
slouken@1362
    52
slouken@1622
    53
all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET)
slouken@1622
    54
slouken@1622
    55
$(srcdir)/configure: $(srcdir)/configure.in
slouken@1622
    56
	@echo "Warning, configure.in is out of date"
slouken@1622
    57
	#(cd $(srcdir) && sh autogen.sh && sh configure)
slouken@1623
    58
	@sleep 3
slouken@1362
    59
slouken@1362
    60
Makefile: $(srcdir)/Makefile.in
slouken@1362
    61
	$(SHELL) config.status $@
slouken@1362
    62
slouken@1362
    63
$(objects):
slouken@1391
    64
	$(SHELL) $(auxdir)/mkinstalldirs $@
slouken@1362
    65
slouken@1362
    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
slouken@1362
    67
depend:
slouken@1634
    68
	@SOURCES="$(SOURCES)" INCLUDE="$(INCLUDE)" output="$(depend)" \
slouken@1391
    69
	$(SHELL) $(auxdir)/makedep.sh
slouken@1419
    70
	@for src in $(SDLMAIN_SOURCES); do \
slouken@1397
    71
	    obj=`echo $$src | sed -e 's|.*/||' -e 's|\.[^\.]*$$|.o|'`; \
slouken@1634
    72
	    echo "\$$(objects)/$$obj: $$src" >>$(depend); \
slouken@1522
    73
	    echo "	\$$(CC) \$$(CFLAGS) \$$(EXTRA_CFLAGS) -c $$src -o \$$@" >>$(depend); \
slouken@1397
    74
	done
slouken@1362
    75
slouken@1362
    76
include $(depend)
slouken@1362
    77
slouken@1362
    78
$(objects)/$(TARGET): $(OBJECTS)
slouken@1521
    79
	$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
slouken@1362
    80
slouken@1397
    81
$(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
slouken@1419
    82
	$(AR) cru $@ $(SDLMAIN_OBJECTS)
slouken@1419
    83
	$(RANLIB) $@
slouken@1397
    84
slouken@1764
    85
install: all install-bin install-hdrs install-lib install-data install-man
slouken@1362
    86
install-bin:
slouken@4019
    87
	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(bindir)
slouken@4019
    88
	$(INSTALL) -m 755 sdl-config $(DESTDIR)$(bindir)/sdl-config
slouken@1362
    89
install-hdrs:
slouken@4019
    90
	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(includedir)/SDL
slouken@3961
    91
	for file in $(HDRS); do \
slouken@4019
    92
	    $(INSTALL) -m 644 $(srcdir)/include/$$file $(DESTDIR)$(includedir)/SDL/$$file; \
slouken@1362
    93
	done
slouken@4019
    94
	$(INSTALL) -m 644 include/SDL_config.h $(DESTDIR)$(includedir)/SDL/SDL_config.h
slouken@4006
    95
install-lib: $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET)
slouken@4019
    96
	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)
slouken@4019
    97
	$(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(TARGET) $(DESTDIR)$(libdir)/$(TARGET)
slouken@4019
    98
	$(INSTALL) -m 644 $(objects)/$(SDLMAIN_TARGET) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
slouken@4019
    99
	$(RANLIB) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
slouken@1362
   100
install-data:
slouken@4019
   101
	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(datadir)/aclocal
slouken@4019
   102
	$(INSTALL) -m 644 $(srcdir)/sdl.m4 $(DESTDIR)$(datadir)/aclocal/sdl.m4
slouken@4019
   103
	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig
slouken@4019
   104
	$(INSTALL) -m 644 sdl.pc $(DESTDIR)$(libdir)/pkgconfig
slouken@1362
   105
install-man:
slouken@4019
   106
	$(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(mandir)/man3
slouken@1362
   107
	for src in $(srcdir)/docs/man3/*.3; do \
slouken@1362
   108
	    file=`echo $$src | sed -e 's|^.*/||'`; \
slouken@4019
   109
	    $(INSTALL) -m 644 $$src $(DESTDIR)$(mandir)/man3/$$file; \
slouken@1362
   110
	done
slouken@1362
   111
slouken@1603
   112
uninstall: uninstall-bin uninstall-hdrs uninstall-lib uninstall-data uninstall-man
slouken@1362
   113
uninstall-bin:
slouken@4019
   114
	rm -f $(DESTDIR)$(bindir)/sdl-config
slouken@1362
   115
uninstall-hdrs:
slouken@3961
   116
	for file in $(HDRS); do \
slouken@4019
   117
	    rm -f $(DESTDIR)$(includedir)/SDL/$$file; \
slouken@1362
   118
	done
slouken@4019
   119
	rm -f $(DESTDIR)$(includedir)/SDL/SDL_config.h
slouken@4019
   120
	-rmdir $(DESTDIR)$(includedir)/SDL
slouken@1362
   121
uninstall-lib:
slouken@4019
   122
	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(TARGET)
slouken@4019
   123
	rm -f $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET)
slouken@1362
   124
uninstall-data:
slouken@4019
   125
	rm -f $(DESTDIR)$(datadir)/aclocal/sdl.m4
slouken@1362
   126
uninstall-man:
slouken@1362
   127
	for src in $(srcdir)/docs/man3/*.3; do \
slouken@1362
   128
	    file=`echo $$src | sed -e 's|^.*/||'`; \
slouken@4019
   129
	    rm -f $(DESTDIR)$(mandir)/man3/$$file; \
slouken@1362
   130
	done
slouken@1362
   131
slouken@1362
   132
clean:
slouken@1362
   133
	rm -rf $(objects)
slouken@1380
   134
	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
slouken@1362
   135
slouken@1362
   136
distclean: clean
slouken@1362
   137
	rm -f Makefile include/SDL_config.h sdl-config
slouken@1362
   138
	rm -f SDL.qpg
slouken@1362
   139
	rm -f config.status config.cache config.log libtool $(depend)
slouken@1362
   140
	rm -rf $(srcdir)/autom4te*
slouken@4131
   141
	rm -rf $(srcdir)/test/autom4te*
slouken@1603
   142
	find $(srcdir) \( \
slouken@1603
   143
	    -name '*~' -o \
slouken@1603
   144
	    -name '*.bak' -o \
slouken@1603
   145
	    -name '*.old' -o \
slouken@1603
   146
	    -name '*.rej' -o \
slouken@1603
   147
	    -name '*.orig' -o \
slouken@1603
   148
	    -name '.#*' \) \
slouken@1362
   149
	    -exec rm -f {} \;
slouken@1603
   150
	cp $(srcdir)/include/SDL_config.h.default $(srcdir)/include/SDL_config.h
slouken@1380
   151
	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
slouken@1362
   152
slouken@1362
   153
dist $(distfile):
slouken@1391
   154
	$(SHELL) $(auxdir)/mkinstalldirs $(distdir)
slouken@1362
   155
	tar cf - $(DIST) | (cd $(distdir); tar xf -)
slouken@1603
   156
	cp $(distdir)/include/SDL_config.h.default $(distdir)/include/SDL_config.h
slouken@1651
   157
	rm -rf `find $(distdir) -name .svn`
slouken@4131
   158
	rm -rf $(distdir)/test/autom4te*
slouken@1846
   159
	find $(distdir) \( \
slouken@1845
   160
	    -name '*~' -o \
slouken@1845
   161
	    -name '*.bak' -o \
slouken@1845
   162
	    -name '*.old' -o \
slouken@1845
   163
	    -name '*.rej' -o \
slouken@1845
   164
	    -name '*.orig' -o \
slouken@1845
   165
	    -name '.#*' \) \
slouken@1845
   166
	    -exec rm -f {} \;
slouken@1848
   167
	if test -f $(distdir)/test/Makefile; then (cd $(distdir)/test && make distclean); fi
slouken@1362
   168
	tar cvf - $(distdir) | gzip --best >$(distfile)
slouken@1362
   169
	rm -rf $(distdir)
slouken@1362
   170
slouken@1362
   171
rpm: $(distfile)
slouken@1362
   172
	rpmbuild -ta $?
slouken@1424
   173
slouken@1651
   174
# Create a SVN snapshot that people can run update on
slouken@1424
   175
snapshot:
slouken@3906
   176
	svn co http://svn.libsdl.org/branches/SDL-1.2
slouken@3848
   177
	(cd SDL-1.2 && ./autogen.sh && rm -rf autom4te.cache)
slouken@3848
   178
	cp SDL-1.2/include/SDL_config.h.default SDL-1.2/include/SDL_config.h
slouken@1448
   179
	tar zcf $(HOME)/SDL-1.2.tar.gz SDL-1.2
slouken@1451
   180
	rm -f $(HOME)/SDL-1.2.zip
slouken@1448
   181
	zip -r $(HOME)/SDL-1.2.zip SDL-1.2
slouken@1424
   182
	rm -rf SDL-1.2