From nobody@FreeBSD.org Sun Nov 28 08:12:10 2010 Return-Path: Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A2501065696 for ; Sun, 28 Nov 2010 08:12:10 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (unknown [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 544C98FC14 for ; Sun, 28 Nov 2010 08:12:10 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id oAS8CAQ9046960 for ; Sun, 28 Nov 2010 08:12:10 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id oAS8CAFm046959; Sun, 28 Nov 2010 08:12:10 GMT (envelope-from nobody) Message-Id: <201011280812.oAS8CAFm046959@red.freebsd.org> Date: Sun, 28 Nov 2010 08:12:10 GMT From: Dominic Fandrey To: freebsd-gnats-submit@FreeBSD.org Subject: [maintainer-update] games/ioquake3 and slaves X-Send-Pr-Version: www-3.1 X-GNATS-Notify: >Number: 152637 >Category: ports >Synopsis: [maintainer-update] games/ioquake3 and slaves >Confidential: no >Severity: non-critical >Priority: low >Responsible: pav >State: closed >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Sun Nov 28 08:20:06 UTC 2010 >Closed-Date: Wed Dec 01 13:27:18 UTC 2010 >Last-Modified: Wed Dec 1 13:30:12 UTC 2010 >Originator: Dominic Fandrey >Release: RELENG_8 >Organization: private >Environment: FreeBSD mobileKamikaze.norad 8.2-PRERELEASE FreeBSD 8.2-PRERELEASE #0: Fri Nov 26 13:41:27 CET 2010 root@mobileKamikaze.norad:/usr/obj/HP6510b-8/amd64/usr/src/sys/HP6510b-8 amd64 >Description: The patch removes files, please remember to apply with "patch -E"! games/ioquake3 - Add DESKTOP_ENTRIES if the client is installed - Get rid of MD5 distinfo - Backport fix for FreeBSD/i386 with PAE kernel, provided by Nerius Landys - 7-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-i386-ports-patched/ioquake3-1.36_7.log - 7-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-amd64-ports-patched/ioquake3-1.36_7.log - 8-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-i386-ports-patched/ioquake3-1.36_7.log - 8-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-amd64-ports-patched/ioquake3-1.36_7.log games/ioquake3-devel - Update to SVN snapshot 1803, contains a number of fixes including the PAE patch by Nerius Landis - Make the port capable of being a master port - 7-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-i386-ports-patched/ioquake3-devel-1.36.s1803.log - 7-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-amd64-ports-patched/ioquake3-devel-1.36.s1803.log - 8-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-i386-ports-patched/ioquake3-devel-1.36.s1803.log - 8-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-amd64-ports-patched/ioquake3-devel-1.36.s1803.log games/openarena - Update to the latest source release - Add PAE fix - 7-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-i386-ports-patched/openarena-0.8.5_1.log - 7-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-amd64-ports-patched/openarena-0.8.5_1.log - 8-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-i386-ports-patched/openarena-0.8.5_1.log - 8-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-amd64-ports-patched/openarena-0.8.5_1.log games/openarena-oax - Update to the latest release - 7-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-i386-ports-patched/openarena-oax-B47.log - 7-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-amd64-ports-patched/openarena-oax-B47.log - 8-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-i386-ports-patched/openarena-oax-B47.log - 8-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-amd64-ports-patched/openarena-oax-B47.log games/iourbanterror - Abandon urbanterror provided source for ioquake3 source, because the project has announced a switch to a closed source licensing model - Enslave to games/ioquake3-devel - Change versioning scheme to resemble official version numbers - Bump portepoch - 7-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-i386-ports-patched/iourbanterror-4.1,1.log - 7-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/7-amd64-ports-patched/iourbanterror-4.1,1.log - 8-i386 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-i386-ports-patched/iourbanterror-4.1,1.log - 8-amd64 logs: http://www.home.hs-karlsruhe.de/~fado0001/tinderbox-logs/8-amd64-ports-patched/iourbanterror-4.1,1.log >How-To-Repeat: >Fix: Patch attached with submission follows: diff -Nur ioquake3.orig/Makefile ioquake3/Makefile --- ioquake3.orig/Makefile 2010-11-27 13:24:32.000000000 +0100 +++ ioquake3/Makefile 2010-11-27 17:32:53.000000000 +0100 @@ -7,12 +7,12 @@ PORTNAME?= ioquake3 DISTVERSION?= 1.36 -PORTREVISION?= 6 +PORTREVISION?= 7 CATEGORIES= games MASTER_SITES?= http://ioquake3.org/files/${DISTVERSION}/ MAINTAINER?= kamikaze@bsdforen.de -COMMENT?= Cleaned-up and enhaced version of Quake 3 +COMMENT?= Cleaned-up and enhanced version of Quake 3 USE_ZIP?= yes # Allow slave ports to turn off zip. @@ -31,7 +31,7 @@ MAKE_ARGS+= DEFAULT_BASEDIR="${Q3DIR}" \ DEFAULT_LIBDIR="${LIBDIR}" \ - HOMEPATH="/.${PORTNAME}" \ + HOMEPATH="${HOMEPATH}" \ VERSION="${DISTVERSION}" \ ARCH="${ARCH}" PLIST_SUB+= LIBDIR="${LIBDIR:S/${PREFIX}\///}" \ @@ -43,6 +43,7 @@ LIBDIR= ${PREFIX}/lib/${PORTNAME} BUILDDIR= ${WRKSRC}/build/release-${OPSYS:L}-${ARCH} BINSUFFIX?= +HOMEPATH?= /.${PORTNAME} Q3CLIENT?= ioquake3 Q3SERVER?= ioq3ded Q3TOOLS?= q3asm \ @@ -51,6 +52,7 @@ q3rcc Q3BASE?= baseq3 \ missionpack +Q3ICON?= ${PREFIX}/share/pixmaps/quake3.xpm Q3INSTALL?= ONLY_FOR_ARCHS= amd64 i386 @@ -61,8 +63,21 @@ .include +.if !defined(DESKTOP_ENTRIES) +.if defined(WITH_CLIENT) +DESKTOP_ENTRIES+= "${Q3CLIENT} ${DISTVERSION}" "${COMMENT}" \ + "${Q3ICON}" \ + "${Q3CLIENT}${BINSUFFIX}" "Application;Game;" false +.endif +.if defined(WITH_SMP) +DESKTOP_ENTRIES+= "${Q3CLIENT} ${DISTVERSION} SMP" "${COMMENT}" \ + "${Q3ICON}" \ + "${Q3CLIENT}-smp${BINSUFFIX}" "Application;Game;" false +.endif +.endif + .if defined(WITHOUT_CLIENT) && defined(WITHOUT_DEDICATED) && \ - defined(WITHOUT_SMP) + !defined(WITH_SMP) IGNORE= needs at least one of CLIENT, DEDICATED and SMP options .endif diff -Nur ioquake3.orig/distinfo ioquake3/distinfo --- ioquake3.orig/distinfo 2010-11-27 13:24:32.000000000 +0100 +++ ioquake3/distinfo 2010-11-27 18:37:45.000000000 +0100 @@ -1,3 +1,2 @@ -MD5 (ioquake3-1.36.zip) = 8e48a3957b3e70601d0ea0a450dc6359 SHA256 (ioquake3-1.36.zip) = 3f8fecd81f9af484b9215df4cf58bcc6a378adb6f1504b0bba169c3dbadb4c94 SIZE (ioquake3-1.36.zip) = 4583577 diff -Nur ioquake3.orig/files/patch-code-qcommon-vm_x86.c ioquake3/files/patch-code-qcommon-vm_x86.c --- ioquake3.orig/files/patch-code-qcommon-vm_x86.c 1970-01-01 01:00:00.000000000 +0100 +++ ioquake3/files/patch-code-qcommon-vm_x86.c 2010-11-27 14:03:10.000000000 +0100 @@ -0,0 +1,29 @@ +--- code/qcommon/vm_x86.c.orig 2008-08-18 01:22:06.000000000 +0200 ++++ code/qcommon/vm_x86.c 2010-11-27 14:01:33.000000000 +0100 +@@ -36,7 +36,25 @@ + + /* need this on NX enabled systems (i386 with PAE kernel or + * noexec32=on x86_64) */ +-#ifdef __linux__ ++// Rambetter's note: I'm adding the test for __FreeBSD__ in addition to the [already ++// existing] test for __linux__. Here is why. I own a 32 bit FreeBSD 8.0 server with ++// a PAE kernel. Without VM_X86_MMAP, ioq3ded segfaults shortly after starting ++// (this should come as no surprise). With VM_X86_MMAP, ioq3ded runs very smoothly. ++// So, at a very minimum, we need to set VM_X86_MMAP for FreeBSD PAE kernels. ++// Now, I also happen to own a 32 bit FreeBSD 7.1 server with just the standard kernel ++// (non-PAE). I have run ioq3ded successfully on it with and without VM_X86_MMAP for many ++// months. So, in the case of non-PAE FreeBSD, we can go either way - use VM_X86_MMAP or ++// not use it. The absolute safest fix to this problem is to only set VM_X86_MMAP on ++// PAE FreeBSD kernels (in addition to Linux); however, I don't know of a way to detect ++// the PAE kernel easily. Therefore, since using VM_X86_MMAP won't break anything on ++// non-PAE kernels [apparently], we'll just use it all the time on FreeBSD 32 bit. ++// Now, you may ask the question: Why not change the entire test for just __unix__? ++// Unfortunately I cannot say anything about this because I don't have access to every ++// other system that has __unix__ defined, so I cannot possibly test all those cases to ++// make sure things work. We'll just leave it with __linux__ and __FreeBSD__ to be safe. ++// If someone with a different flavor of UNIX running a PAE kernel has this problem too, ++// they can report the bug and we will adjust the line below accordingly. ++#if defined(__linux__) || defined(__FreeBSD__) + #define VM_X86_MMAP + #endif + diff -Nur ioquake3-devel.orig/Makefile ioquake3-devel/Makefile --- ioquake3-devel.orig/Makefile 2010-11-27 13:24:51.000000000 +0100 +++ ioquake3-devel/Makefile 2010-11-27 16:08:29.000000000 +0100 @@ -5,19 +5,19 @@ # $FreeBSD: ports/games/ioquake3-devel/Makefile,v 1.7 2010/05/22 06:09:50 miwi Exp $ # -PORTNAME= ioquake3-devel -DISTVERSION= 1.36_SVN${SVNREVISION} -PORTREVISION= 0 -MASTER_SITES= ftp://deponie.yamagi.org/freebsd/distfiles/ioquake3/ \ +PORTNAME?= ioquake3-devel +DISTVERSION?= 1.36_SVN${SVNREVISION} +PORTREVISION?= 0 +MASTER_SITES?= ftp://deponie.yamagi.org/freebsd/distfiles/ioquake3/ \ http://deponie.yamagi.org/freebsd/distfiles/ioquake3/ -MAINTAINER= kamikaze@bsdforen.de -COMMENT= Development SVN snapshots of ioquake3 +MAINTAINER?= kamikaze@bsdforen.de +COMMENT?= Development SVN snapshots of ioquake3 -PLIST= ${.CURDIR}/../ioquake3/pkg-plist -PATCHDIR= ${WRKDIR}/freebsd-patchset/ +PLIST?= ${.CURDIR}/../ioquake3/pkg-plist +PATCHDIR?= ${WRKDIR}/freebsd-patchset/ -SVNREVISION= 1784 -BINSUFFIX= -devel +SVNREVISION?= 1803 +BINSUFFIX?= -devel .include "${.CURDIR}/../ioquake3/Makefile" diff -Nur ioquake3-devel.orig/distinfo ioquake3-devel/distinfo --- ioquake3-devel.orig/distinfo 2010-11-27 13:24:51.000000000 +0100 +++ ioquake3-devel/distinfo 2010-11-27 14:14:53.000000000 +0100 @@ -1,3 +1,2 @@ -MD5 (ioquake3-devel-1.36_SVN1784.zip) = 519a106119b64bc388f1c91fd0f51b5b -SHA256 (ioquake3-devel-1.36_SVN1784.zip) = daf0c428fa119e393b2a595709e4655f61fa3d639419368475411f8e636ad905 -SIZE (ioquake3-devel-1.36_SVN1784.zip) = 4930534 +SHA256 (ioquake3-devel-1.36_SVN1803.zip) = 2d73b8f4818c7f82adc2f28308e7a6bdca7f3b5e9db0fbbfa5c34e2569a386da +SIZE (ioquake3-devel-1.36_SVN1803.zip) = 4930935 diff -Nur openarena.orig/Makefile openarena/Makefile --- openarena.orig/Makefile 2010-11-27 14:30:27.000000000 +0100 +++ openarena/Makefile 2010-11-27 19:03:14.000000000 +0100 @@ -7,10 +7,10 @@ PORTNAME= openarena PORTVERSION= 0.8.5 -DISTVERSION= 1.36_SVN1783+${PORTVERSION} -PORTREVISION= 0 +DISTVERSION= 1.36_SVN1788+${PORTVERSION} +PORTREVISION= 1 MASTER_SITES= http://files.poulsander.com/~poul19/public_files/oa/dev081/ -DISTNAME= ${PORTNAME}-engine-source-0.8.x-15 +DISTNAME= ${PORTNAME}-engine-source-0.8.x-18 MAINTAINER= kamikaze@bsdforen.de COMMENT= Quake3 total conversion based on the ioquake3 engine @@ -28,5 +28,7 @@ Q3TOOLS= Q3BASE= baseoa Q3DIR= ${DATADIR} +# No icon included with OpenArena +Q3ICON= .include "../ioquake3/Makefile" diff -Nur openarena.orig/distinfo openarena/distinfo --- openarena.orig/distinfo 2010-11-27 14:30:27.000000000 +0100 +++ openarena/distinfo 2010-11-27 14:33:21.000000000 +0100 @@ -1,3 +1,2 @@ -MD5 (openarena-engine-source-0.8.x-15.tar.bz2) = 868a6d0dca1579a0cbc05192b9cdc70d -SHA256 (openarena-engine-source-0.8.x-15.tar.bz2) = fc274de6cc4a6a880618d38267d4453fdb3125fc8587b08e6ea51dd137a88650 -SIZE (openarena-engine-source-0.8.x-15.tar.bz2) = 8080759 +SHA256 (openarena-engine-source-0.8.x-18.tar.bz2) = 77180d70af00134b3cfbc51a3c1371f99665e2f073b2ec5fdbf08f6c93ae1c24 +SIZE (openarena-engine-source-0.8.x-18.tar.bz2) = 7211834 diff -Nur openarena.orig/files/patch-Makefile openarena/files/patch-Makefile --- openarena.orig/files/patch-Makefile 2010-11-27 14:30:27.000000000 +0100 +++ openarena/files/patch-Makefile 2010-11-27 14:39:37.000000000 +0100 @@ -1,126 +1,19 @@ ---- Makefile.orig 2010-04-24 23:29:15.000000000 +0200 -+++ Makefile 2010-05-22 00:10:08.000000000 +0200 -@@ -561,45 +561,22 @@ +--- Makefile.orig 2010-07-02 21:50:49.000000000 +0200 ++++ Makefile 2010-11-27 14:39:09.000000000 +0100 +@@ -561,9 +561,16 @@ ifeq ($(PLATFORM),freebsd) -- ifneq (,$(findstring alpha,$(shell uname -m))) -- ARCH=axp -- else #default to i386 -- ARCH=i386 -- endif #alpha test + # system integration + ifndef DEFAULT_LIBDIR + DEFAULT_LIBDIR = /usr/local/lib/ioquake3 + endif - -- BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ -- -DUSE_ICON -+ # flags -+ BASE_CFLAGS = $(shell env MACHINE_ARCH=$(ARCH) make -f /dev/null -VCFLAGS) \ -+ -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ ++ + # flags + BASE_CFLAGS = $(shell env MACHINE_ARCH=$(ARCH) make -f /dev/null -VCFLAGS) \ + -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ ++ -DHOMEPATH=\\\"$(HOMEPATH)\\\" \ + -DDEFAULT_LIBDIR=\\\"$(DEFAULT_LIBDIR)\\\" \ -+ -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON + -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON CLIENT_CFLAGS = $(SDL_CFLAGS) SERVER_CFLAGS = -+ HAVE_VM_COMPILED = true - -- ifeq ($(USE_OPENAL),1) -- CLIENT_CFLAGS += -DUSE_OPENAL -- ifeq ($(USE_OPENAL_DLOPEN),1) -- CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN -- endif -- endif -- -- ifeq ($(USE_CODEC_VORBIS),1) -- CLIENT_CFLAGS += -DUSE_CODEC_VORBIS -- endif -- -- OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer -- -- ifeq ($(ARCH),axp) -- BASE_CFLAGS += -DNO_VM_COMPILED -- OPTIMIZEVM += -fexpensive-optimizations -- else -- ifeq ($(ARCH),i386) -- OPTIMIZEVM += -mtune=pentiumpro \ -- -march=pentium -pipe -falign-loops=2 -falign-jumps=2 \ -- -falign-functions=2 -funroll-loops -fstrength-reduce -- HAVE_VM_COMPILED=true -- else -- BASE_CFLAGS += -DNO_VM_COMPILED -- endif -- endif -- -- OPTIMIZE = $(OPTIMIZEVM) -ffast-math -+ OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer -ffast-math -+ OPTIMIZE = $(OPTIMIZEVM) - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC -@@ -613,17 +590,40 @@ - - CLIENT_LIBS += $(SDL_LIBS) -lGL - -+ # optional features/libraries - ifeq ($(USE_OPENAL),1) -- ifneq ($(USE_OPENAL_DLOPEN),1) -+ CLIENT_CFLAGS += -DUSE_OPENAL -+ ifeq ($(USE_OPENAL_DLOPEN),1) -+ CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN - CLIENT_LIBS += $(THREAD_LIBS) -lopenal - endif - endif - -+ ifeq ($(USE_CURL),1) -+ CLIENT_CFLAGS += -DUSE_CURL -+ ifeq ($(USE_CURL_DLOPEN),1) -+ CLIENT_CFLAGS += -DUSE_CURL_DLOPEN -+ CLIENT_LIBS += -lcurl -+ endif -+ endif -+ - ifeq ($(USE_CODEC_VORBIS),1) -- ifeq ($(PLATFORM),mingw32) -- CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a -- else -- CLIENT_LIBS += -lvorbisfile -lvorbis -logg -+ CLIENT_CFLAGS += -DUSE_CODEC_VORBIS -+ endif -+ -+ ifeq ($(USE_CODEC_VORBIS),1) -+ CLIENT_LIBS += -lvorbisfile -lvorbis -logg -+ endif -+ -+ # cross-compiling tweaks -+ ifeq ($(ARCH),i386) -+ ifeq ($(CROSS_COMPILING),1) -+ BASE_CFLAGS += -m32 -+ endif -+ endif -+ ifeq ($(ARCH),amd64) -+ ifeq ($(CROSS_COMPILING),1) -+ BASE_CFLAGS += -m64 - endif - endif - -@@ -1555,6 +1555,9 @@ - ifeq ($(ARCH),x86_64) - Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o - endif -+ ifeq ($(ARCH),amd64) -+ Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o -+ endif - ifeq ($(ARCH),ppc) - Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o - endif -@@ -1720,6 +1723,9 @@ - ifeq ($(ARCH),x86_64) - Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/ded/vm_x86_64_assembler.o - endif -+ ifeq ($(ARCH),amd64) -+ Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/ded/vm_x86_64_assembler.o -+ endif - ifeq ($(ARCH),ppc) - Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o - endif diff -Nur openarena.orig/files/patch-code-qcommon-vm_x86.c openarena/files/patch-code-qcommon-vm_x86.c --- openarena.orig/files/patch-code-qcommon-vm_x86.c 1970-01-01 01:00:00.000000000 +0100 +++ openarena/files/patch-code-qcommon-vm_x86.c 2010-11-27 14:35:46.000000000 +0100 @@ -0,0 +1,29 @@ +--- code/qcommon/vm_x86.c.orig 2008-08-18 01:22:06.000000000 +0200 ++++ code/qcommon/vm_x86.c 2010-11-27 14:01:33.000000000 +0100 +@@ -36,7 +36,25 @@ + + /* need this on NX enabled systems (i386 with PAE kernel or + * noexec32=on x86_64) */ +-#ifdef __linux__ ++// Rambetter's note: I'm adding the test for __FreeBSD__ in addition to the [already ++// existing] test for __linux__. Here is why. I own a 32 bit FreeBSD 8.0 server with ++// a PAE kernel. Without VM_X86_MMAP, ioq3ded segfaults shortly after starting ++// (this should come as no surprise). With VM_X86_MMAP, ioq3ded runs very smoothly. ++// So, at a very minimum, we need to set VM_X86_MMAP for FreeBSD PAE kernels. ++// Now, I also happen to own a 32 bit FreeBSD 7.1 server with just the standard kernel ++// (non-PAE). I have run ioq3ded successfully on it with and without VM_X86_MMAP for many ++// months. So, in the case of non-PAE FreeBSD, we can go either way - use VM_X86_MMAP or ++// not use it. The absolute safest fix to this problem is to only set VM_X86_MMAP on ++// PAE FreeBSD kernels (in addition to Linux); however, I don't know of a way to detect ++// the PAE kernel easily. Therefore, since using VM_X86_MMAP won't break anything on ++// non-PAE kernels [apparently], we'll just use it all the time on FreeBSD 32 bit. ++// Now, you may ask the question: Why not change the entire test for just __unix__? ++// Unfortunately I cannot say anything about this because I don't have access to every ++// other system that has __unix__ defined, so I cannot possibly test all those cases to ++// make sure things work. We'll just leave it with __linux__ and __FreeBSD__ to be safe. ++// If someone with a different flavor of UNIX running a PAE kernel has this problem too, ++// they can report the bug and we will adjust the line below accordingly. ++#if defined(__linux__) || defined(__FreeBSD__) + #define VM_X86_MMAP + #endif + diff -Nur openarena-oax.orig/Makefile openarena-oax/Makefile --- openarena-oax.orig/Makefile 2010-11-27 15:12:17.000000000 +0100 +++ openarena-oax/Makefile 2010-11-27 15:12:41.000000000 +0100 @@ -6,7 +6,7 @@ # PORTNAME= oax -PORTVERSION= B45 +PORTVERSION= B47 CATEGORIES= games MASTER_SITES= http://files.poulsander.com/~poul19/public_files/eliminationSource/ DISTNAME= ${PORTNAME}${PORTVERSION} diff -Nur openarena-oax.orig/distinfo openarena-oax/distinfo --- openarena-oax.orig/distinfo 2010-11-27 15:12:17.000000000 +0100 +++ openarena-oax/distinfo 2010-11-27 15:13:09.000000000 +0100 @@ -1,3 +1,2 @@ -MD5 (oaxB45.zip) = 395b29a38184100cea7dc3206979770f -SHA256 (oaxB45.zip) = 43f21a45329b549b5a0a967269e50cf89803b5e084598d7fbef726fa63e0aa14 -SIZE (oaxB45.zip) = 465245 +SHA256 (oaxB47.zip) = 16f4a199621162a09107d043b8edfc9cda70fa432c9351aaa8fd055e94048952 +SIZE (oaxB47.zip) = 468070 diff -Nur iourbanterror.orig/Makefile iourbanterror/Makefile --- iourbanterror.orig/Makefile 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/Makefile 2010-11-27 18:51:37.000000000 +0100 @@ -6,173 +6,46 @@ # PORTNAME= iourbanterror -DISTVERSION= 2007_12_20 -PORTREVISION= 8 +PORTVERSION= 4.1 +DISTVERSION= 1.36_SVN${SVNREVISION}+${PORTVERSION} +PORTREVISION= 0 +PORTEPOCH= 1 CATEGORIES= games -MASTER_SITES= http://ftp.snt.utwente.nl/pub/games/urbanterror/iourbanterror/source/complete/ -DISTNAME= ioUrbanTerrorSource_${DISTVERSION} +DISTNAME= ioquake3-devel-1.36_SVN${SVNREVISION} MAINTAINER= kamikaze@bsdforen.de COMMENT= Quake 3 engine modified for Urban Terror (based on ioquake3) RUN_DEPENDS= ${Q3DIR}/q3ut4:${PORTSDIR}/games/urbanterror-data -USE_ZIP= yes -USE_GMAKE= yes -ALL_TARGET= release -WRKSRC= ${WRKDIR}/ioUrbanTerrorClientSource - -OPTIONS= CLIENT "Build client" on \ - CELLSHADING "Enable Cell Shading effect" off \ - CURL "Enable curl support" on \ - CURL_DLOPEN "Enable dynamic loading of curl" on \ - GAMELIBS "Build game libraries (when not mandatory)" off \ - DEDICATED "Build dedicated server" on \ - MP3 "Enable MP3 support" off \ - OPENAL "Enable OpenAL (3D sound) support" off \ - OPENAL_DLOPEN "Enable dynamic loading of OpenAL" off \ - OPTIMIZED_CFLAGS "Enable compilation optimizations" on \ - SDL_AUDIO "Use SDL for audio" off \ - SDL_VIDEO "Use SDL for video" off \ - SMP "Build SMP (threaded) client" on \ - VORBIS "Enable Ogg Vorbis codec support" off - -MAKE_ENV= DEFAULT_BASEDIR="${Q3DIR}" LIBDIR="${LIBDIR}" \ - PTHREAD_LIBS="${PTHREAD_LIBS}" -PLIST_SUB= LIBDIR="${LIBDIR:S/${PREFIX}\///}" - -LIBDIR= ${PREFIX}/lib/${PORTNAME} -VM_ARCHS= amd64 i386 powerpc - -.include - -Q3DIR!= cd ${PORTSDIR}/games/quake3-data && ${MAKE} -V Q3DIR - -.if defined(WITHOUT_CLIENT) && defined(WITHOUT_DEDICATED) && \ - defined(WITHOUT_SMP) -IGNORE= needs at least one of CLIENT, DEDICATED and SMP options -.endif - -.for i in ${ARCH} -. if ${VM_ARCHS:M${i}} != "" -HAVE_VM_COMPILED= yes -. endif -.endfor +PLIST= ${.CURDIR}/pkg-plist + +# The docs belong to ioquake3 +NOPORTDOCS= yes + +Q3TOTALCONV= yes +Q3DIR= ${PREFIX}/share/quake3 +Q3ICON= ${PREFIX}/share/quake3/q3ut4/q3ut.ico +Q3CLIENT= ioUrbanTerror +Q3SERVER= ioUrTded +Q3TOOLS= +Q3BASE= q3ut4 +BINSUFFIX= +HOMEPATH= /.ioUrbanTerror -.if defined(HAVE_VM_COMPILED) -MAKE_ENV+= HAVE_VM_COMPILED=true -.endif - -.if defined(WITH_CELLSHADING) -EXTRA_PATCHES+= ${FILESDIR}/extra-patch-cellshading -.endif - -.if !defined(WITHOUT_CLIENT) || !defined(WITHOUT_SMP) -# curl -. if defined(WITH_CURL) -LIB_DEPENDS+= curl.6:${PORTSDIR}/ftp/curl -MAKE_ENV+= USE_CURL=1 -. if defined(WITH_CURL_DLOPEN) -MAKE_ENV+= USE_CURL_DLOPEN=1 -. endif -. endif -# OpenAL -. if defined(WITH_OPENAL) -USE_OPENAL= al -MAKE_ENV+= USE_OPENAL=1 -. if defined(WITH_OPENAL_DLOPEN) -MAKE_ENV+= USE_OPENAL_DLOPEN=1 -. endif -. endif -# SDL -. if defined(WITH_SDL_AUDIO) -USE_SDL= sdl -MAKE_ENV+= USE_SDL_AUDIO=1 -. endif -. if defined(WITH_SDL_VIDEO) -USE_SDL= sdl -MAKE_ENV+= USE_SDL_VIDEO=1 -. else -USE_GL= yes -USE_XORG= xxf86dga -. endif -# Vorbis -. if defined(WITH_VORBIS) -LIB_DEPENDS+= vorbis.4:${PORTSDIR}/audio/libvorbis -MAKE_ENV+= USE_CODEC_VORBIS=1 -. endif -.endif - -.if !defined(WITHOUT_CLIENT) -MAKE_ENV+= BUILD_CLIENT=1 -PLIST_SUB+= CLIENT="" -Q3BIN+= ioUrbanTerror -.else -PLIST_SUB+= CLIENT="@comment " -.endif - -.if !defined(WITHOUT_DEDICATED) -MAKE_ENV+= BUILD_SERVER=1 -PLIST_SUB+= DEDICATED="" -Q3BIN+= ioUrTded -.else -PLIST_SUB+= DEDICATED="@comment " -.endif - -.if defined(WITH_GAMELIBS) || !defined(HAVE_VM_COMPILED) -MAKE_ENV+= BUILD_GAME_SO=1 -PLIST_SUB+= GAMELIBS="" -.else -PLIST_SUB+= GAMELIBS="@comment " -.endif - -.if defined(WITH_MP3) -EXTRA_PATCHES+= ${FILESDIR}/extra-patch-mp3 -LIB_DEPENDS+= mad.2:${PORTSDIR}/audio/libmad -MAKE_ENV+= USE_CODEC_MP3=1 -.endif - -.if !defined(WITHOUT_OPTIMIZED_CFLAGS) -MAKE_ENV+= USE_OPTIMIZED_CFLAGS=1 -.endif - -.if !defined(WITHOUT_SMP) -MAKE_ENV+= BUILD_CLIENT_SMP=1 -PLIST_SUB+= SMP="" -Q3BIN+= ioUrbanTerror-smp -.else -PLIST_SUB+= SMP="@comment " -.endif +MAKE_ARGS+= BUILD_MISSIONPACK=0 \ + BUILD_STANDALONE=1 + +UTPATCHES!= echo ${.CURDIR}/files/* post-patch: -# There are new variables in the config files, so keep them in another dir. - @${REINPLACE_CMD} -E 's|/\.q3a|/.ioUrbanTerror|' \ - ${WRKSRC}/code/unix/unix_shared.c -# Fix wrong library version (use general case as only one is installed). -.if defined(WITH_CURL_DLOPEN) - @${REINPLACE_CMD} -e 's|libcurl\.so\.[[:digit:]]|libcurl.so|' \ - ${WRKSRC}/code/client/cl_curl.h -.endif - -do-install: -.for bin in ${Q3BIN} - ${INSTALL_PROGRAM} ${WRKSRC}/build/release/${bin} ${PREFIX}/bin -.endfor -.if defined(WITH_GAMELIBS) || !defined(HAVE_VM_COMPILED) -.for dir in baseq3 missionpack - ${MKDIR} ${LIBDIR}/${dir} - ${INSTALL_PROGRAM} ${WRKSRC}/build/release/${dir}/*.so ${LIBDIR}/${dir} +.for _file in ${UTPATCHES} + @${PATCH} -sd "${WRKSRC}" < ${_file} .endfor -.endif -.if !defined(NOPORTDOCS) - ${MKDIR} ${DOCSDIR} - ${INSTALL_DATA} ${WRKDIR}/ioUrbanTerror_README.txt \ - ${WRKSRC}/README ${DOCSDIR} -.endif - -post-install: - @${ECHO_CMD} - @${CAT} ${PKGMESSAGE} - @${ECHO_CMD} + @${REINPLACE_CMD} \ + -e 's/ioquake3/${Q3CLIENT}/g' \ + -e 's/ioq3ded/${Q3SERVER}/g' \ + -e 's/baseq3/${Q3BASE}/g' \ + "${WRKSRC}/Makefile" -.include +.include "../ioquake3-devel/Makefile" diff -Nur iourbanterror.orig/distinfo iourbanterror/distinfo --- iourbanterror.orig/distinfo 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/distinfo 2010-11-27 15:30:10.000000000 +0100 @@ -1,3 +1,2 @@ -MD5 (ioUrbanTerrorSource_2007_12_20.zip) = 4dbe5a03a10f23138f42b5e0dc39598b -SHA256 (ioUrbanTerrorSource_2007_12_20.zip) = 96d58662852d31fa6ab03431120328dab7f36bf60010a2cfdc1b427d6ac23ce8 -SIZE (ioUrbanTerrorSource_2007_12_20.zip) = 17284593 +SHA256 (ioquake3-devel-1.36_SVN1803.zip) = 2d73b8f4818c7f82adc2f28308e7a6bdca7f3b5e9db0fbbfa5c34e2569a386da +SIZE (ioquake3-devel-1.36_SVN1803.zip) = 4930935 diff -Nur iourbanterror.orig/files/extra-patch-cellshading iourbanterror/files/extra-patch-cellshading --- iourbanterror.orig/files/extra-patch-cellshading 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/extra-patch-cellshading 1970-01-01 01:00:00.000000000 +0100 @@ -1,933 +0,0 @@ -Index: code/renderer/tr_image.c -=================================================================== ---- code/renderer/tr_image.c (revision 933) -+++ code/renderer/tr_image.c (working copy) -@@ -34,7 +34,24 @@ - #define JPEG_INTERNALS - #include "../jpeg-6/jpeglib.h" - -+/** -+ * Headers for cell shading -+ * @author Jordi Prats Catala -+ * @author Guillermo Miranda Alamo -+ */ -+/* -+byte getImageR(byte *targa_rgba, int x, int y, int columns, int rows); -+byte getImageG(byte *targa_rgba, int x, int y, int columns, int rows); -+byte getImageB(byte *targa_rgba, int x, int y, int columns, int rows); -+byte getImageA(byte *targa_rgba, int x, int y, int columns, int rows); -+void setImageR(byte *targa_rgba, int x, int y, int columns, int rows, byte value); -+void setImageG(byte *targa_rgba, int x, int y, int columns, int rows, byte value); -+void setImageB(byte *targa_rgba, int x, int y, int columns, int rows, byte value); -+void setImageA(byte *targa_rgba, int x, int y, int columns, int rows, byte value); -+*/ -+//void kuwahara(int columns, int rows, byte *targa_rgba); - -+ - static void LoadBMP( const char *name, byte **pic, int *width, int *height ); - static void LoadTGA( const char *name, byte **pic, int *width, int *height ); - static void LoadJPG( const char *name, byte **pic, int *width, int *height ); -@@ -799,7 +816,643 @@ - return image; - } - -+/**************************** -+RGB GET/SET -+****************************/ - -+//RED -+static byte getImageR(byte *targa_rgba, int x, int y, int columns, int rows) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ if(rows<=y) -+ y=y%rows; -+ if(columns<=x) -+ x=x%columns; -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ -+ return *pixbuf; -+} -+ -+static void setImageR(byte *targa_rgba, int x, int y, int columns, int rows, byte value) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ -+ *pixbuf=value; -+} -+//GREEN -+static byte getImageG(byte *targa_rgba, int x, int y, int columns, int rows) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ if(rows<=y) -+ y=y%rows; -+ if(columns<=x) -+ x=x%columns; -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ -+ pixbuf++; -+ return *pixbuf; -+} -+ -+static void setImageG(byte *targa_rgba, int x, int y, int columns, int rows, byte value) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ pixbuf++; -+ *pixbuf=value; -+} -+//BLUE -+static byte getImageB(byte *targa_rgba, int x, int y, int columns, int rows) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ if(rows<=y) -+ y=y%rows; -+ if(columns<=x) -+ x=x%columns; -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ pixbuf+=2; -+ return *pixbuf; -+} -+ -+static void setImageB(byte *targa_rgba, int x, int y, int columns, int rows, byte value) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ pixbuf+=2; -+ *pixbuf=value; -+} -+//ALPHA -+static byte getImageA(byte *targa_rgba, int x, int y, int columns, int rows) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ pixbuf+=3; -+ return *pixbuf; -+} -+ -+static void setImageA(byte *targa_rgba, int x, int y, int columns, int rows, byte value) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4; -+ -+ pixbuf+=(x*4); -+ pixbuf+=3; -+ *pixbuf=value; -+} -+ -+//RGB -+static void getImageRGB(byte *targa_rgba, int x, int y, int columns, int rows, vec3_t rgb) -+{ -+ byte *pixbuf; -+ -+ x*=((x<0)?-1:1); -+ y*=((y<0)?-1:1); -+ //if(rows<=y) -+ y=y%rows; -+ //if(columns<=x) -+ x=x%columns; -+ //x*=((x<0)?-1:1); -+ //y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4 + x*4; -+ -+ rgb[0]=*pixbuf; -+ rgb[1]=*(pixbuf+1); -+ rgb[2]=*(pixbuf+2); -+} -+ -+static void setImageRGB(byte *targa_rgba, int x, int y, int columns, int rows, vec3_t rgb) -+{ -+ byte *pixbuf; -+ -+ //x*=((x<0)?-1:1); -+ //y*=((y<0)?-1:1); -+ -+ pixbuf = targa_rgba + y*columns*4 + (x*4); -+ -+ *pixbuf=(byte)(rgb[0]); -+ *(pixbuf+1)=(byte)(rgb[1]); -+ *(pixbuf+2)=(byte)(rgb[2]); -+} -+ -+/**************************** -+NO BRAINER'S BLUR -+****************************/ -+static void blur(int columns, int rows, byte *targa_rgba) -+{ -+ int row, column; -+ float sum; -+ -+ -+ for(row=0; row0){ -+ rMean=((float)rMean/(float)pixels); -+ gMean=((float)gMean/(float)pixels); -+ bMean=((float)bMean/(float)pixels); -+ } -+ else{ -+ return; -+ } -+ -+ for(row=0;row0){ -+ rMean=rMean/pixels; -+ gMean=gMean/pixels; -+ bMean=bMean/pixels; -+ } -+ else{ -+ return; -+ } -+ -+ -+ for(row=0;rowmax) max=value; -+ } -+ } -+ -+ mv[0]/=count; -+ mv[1]/=count; -+ mv[2]/=count; -+ mv[3]= (max-min)/3.0f; -+} -+ -+ -+static void rgb_kuwahara(int x, int y, int columns, int rows, byte *targa_rgba, vec4_t bmv) -+{ -+ vec4_t mv; -+ bmv[0]=bmv[1]=bmv[2]=bmv[3]=255; -+ -+ mean_variance(x-KWH_RADIUS, y-KWH_RADIUS, x, y, columns, rows, targa_rgba, mv); -+ if( mv[3] < bmv[3] ) -+ { -+ Vector4Copy(mv,bmv); -+ } -+ -+ mean_variance(x, y-KWH_RADIUS, x+KWH_RADIUS, y, columns, rows, targa_rgba, mv); -+ if( mv[3] < bmv[3] ) -+ { -+ Vector4Copy(mv,bmv); -+ } -+ -+ mean_variance(x, y, x+KWH_RADIUS, y+KWH_RADIUS, columns, rows, targa_rgba, mv); -+ if( mv[3] < bmv[3] ) -+ { -+ Vector4Copy(mv,bmv); -+ } -+ -+ mean_variance(x-KWH_RADIUS, y, x, y+KWH_RADIUS, columns, rows, targa_rgba, mv); -+ if( mv[3] < bmv[3] ) -+ { -+ Vector4Copy(mv,bmv); -+ } -+} -+ -+static void kuwahara(int columns, int rows, byte *targa_rgba){ -+ int row, column; -+ vec4_t rgbv; -+ -+ for(row=0;row=0) break; -+ // Sum pixels values -+ r1=getImageR(targa_rgba,column+u,row+v,columns,rows); -+ g1=getImageG(targa_rgba,column+u,row+v,columns,rows); -+ b1=getImageB(targa_rgba,column+u,row+v,columns,rows); -+ -+ r2=getImageR(targa_rgba,column-u,row-v,columns,rows); -+ g2=getImageG(targa_rgba,column-u,row-v,columns,rows); -+ b2=getImageB(targa_rgba,column-u,row-v,columns,rows); -+ -+ if ( deltaE(r,g,b,r1,g1,b1) < deltaE(r,g,b,r2,g2,b2)) -+ { -+ sumR += r1; -+ sumG += g1; -+ sumB += b1; -+ } -+ else -+ { -+ sumR += r2; -+ sumG += g2; -+ sumB += b2; -+ } -+ count++; -+ } -+ } -+ -+ r=(byte)((int)(2*sumR+r)/(int)(2*count+1)); -+ g=(byte)((int)(2*sumG+g)/(int)(2*count+1)); -+ b=(byte)((int)(2*sumB+b)/(int)(2*count+1)); -+ -+ setImageR(targa_rgba,column,row,columns,rows,r); -+ setImageG(targa_rgba,column,row,columns,rows,g); -+ setImageB(targa_rgba,column,row,columns,rows,b); -+ } -+ } -+} -+ -+ -+ - /* - ========================================================= - -@@ -1968,6 +2621,50 @@ - } else if ( !Q_stricmp( name+len-4, ".jpg" ) ) { - LoadJPG( name, pic, width, height ); - } -+ -+ switch(r_celshadalgo->integer) -+ { -+ case 1: -+ whiteTextureOne(*width,*height,*pic); -+ break; -+ case 2: -+ whiteTextureTwo(*width,*height,*pic); -+ break; -+ case 10: -+ kuwahara(*width,*height,*pic); -+ break; -+ case 11: -+ blur(*width,*height,*pic); -+ kuwahara(*width,*height,*pic); -+ break; -+ case 12: -+ kuwahara(*width,*height,*pic); -+ blur(*width,*height,*pic); -+ break; -+ case 13: -+ blur(*width,*height,*pic); -+ kuwahara(*width,*height,*pic); -+ blur(*width,*height,*pic); -+ break; -+ case 20: -+ snn(*width,*height,*pic); -+ break; -+ case 21: -+ blur(*width,*height,*pic); -+ snn(*width,*height,*pic); -+ break; -+ case 22: -+ snn(*width,*height,*pic); -+ blur(*width,*height,*pic); -+ break; -+ case 23: -+ blur(*width,*height,*pic); -+ snn(*width,*height,*pic); -+ blur(*width,*height,*pic); -+ break; -+ default: -+ break; -+ } - } - - -Index: code/renderer/tr_init.c -=================================================================== ---- code/renderer/tr_init.c (revision 933) -+++ code/renderer/tr_init.c (working copy) -@@ -111,6 +111,10 @@ - cvar_t *r_roundImagesDown; - cvar_t *r_colorMipLevels; - cvar_t *r_picmip; -+// Next one added for cell shading algorithm selection -+cvar_t *r_celshadalgo; -+//. next one for enable/disable cel bordering all together. -+cvar_t *r_celoutline; - cvar_t *r_showtris; - cvar_t *r_showsky; - cvar_t *r_shownormals; -@@ -1110,6 +1114,10 @@ - r_debugSurface = ri.Cvar_Get ("r_debugSurface", "0", CVAR_CHEAT); - r_nobind = ri.Cvar_Get ("r_nobind", "0", CVAR_CHEAT); - r_showtris = ri.Cvar_Get ("r_showtris", "0", CVAR_CHEAT); -+ // for cell shading algorithm selection -+ r_celshadalgo = ri.Cvar_Get ("r_celshadalgo", "1", CVAR_LATCH); -+ // cel outline option -+ r_celoutline = ri.Cvar_Get("r_celoutline","1", CVAR_ARCHIVE); - r_showsky = ri.Cvar_Get ("r_showsky", "0", CVAR_CHEAT); - r_shownormals = ri.Cvar_Get ("r_shownormals", "0", CVAR_CHEAT); - r_clear = ri.Cvar_Get ("r_clear", "0", CVAR_CHEAT); -Index: code/renderer/tr_local.h -=================================================================== ---- code/renderer/tr_local.h (revision 933) -+++ code/renderer/tr_local.h (working copy) -@@ -1063,6 +1063,8 @@ - extern cvar_t *r_uiFullScreen; // ui is running fullscreen - - extern cvar_t *r_logFile; // number of frames to emit GL logs -+extern cvar_t *r_celshadalgo; // Cell shading, chooses method: 0 = disabled, 1 = kuwahara, 2 = whiteTexture -+extern cvar_t *r_celoutline; //. cel outline. 1 on, 0 off. (maybe other options later) - extern cvar_t *r_showtris; // enables wireframe rendering of the world - extern cvar_t *r_showsky; // forces sky in front of all surfaces - extern cvar_t *r_shownormals; // draws wireframe normals -Index: code/renderer/tr_shade.c -=================================================================== ---- code/renderer/tr_shade.c (revision 933) -+++ code/renderer/tr_shade.c (working copy) -@@ -201,6 +201,86 @@ - } - - -+//R_DRAWCEL -+static void R_DrawCel( int numIndexes, const glIndex_t *indexes ) { -+ int primitives; -+ -+ if( -+ //. ignore the 2d projection. do i smell the HUD? -+ (backEnd.projection2D == qtrue) || -+ //. ignore general entitites that are sprites. SEE NOTE #3. -+ (backEnd.currentEntity->e.reType == RT_SPRITE) || -+ //. ignore these liquids. why? ever see liquid with tris on the surface? exactly. SEE NOTE #4. -+ (tess.shader->contentFlags & (CONTENTS_WATER | CONTENTS_LAVA | CONTENTS_SLIME | CONTENTS_FOG)) || -+ //. ignore things that are two sided, meaning mostly things that have transparency. SEE NOTE #1. -+ (tess.shader->cullType == CT_TWO_SIDED) -+ -+ ) { -+ return; -+ } -+ -+ primitives = r_primitives->integer; -+ -+ // default is to use triangles if compiled vertex arrays are present -+ if ( primitives == 0 ) { -+ if ( qglLockArraysEXT ) { -+ primitives = 2; -+ } else { -+ primitives = 1; -+ } -+ } -+ -+ //. correction for mirrors. SEE NOTE #2. -+ if(backEnd.viewParms.isMirror == qtrue) { qglCullFace (GL_FRONT); } -+ else { qglCullFace (GL_BACK); } -+ -+ qglEnable (GL_BLEND); -+ qglBlendFunc (GL_SRC_ALPHA ,GL_ONE_MINUS_SRC_ALPHA); -+ qglColor3f (0.0f,0.0f,0.0f); -+ qglLineWidth( (float) r_celoutline->integer ); -+ -+ if(primitives == 2) { -+ qglDrawElements( GL_TRIANGLES, numIndexes, GL_INDEX_TYPE, indexes ); -+ } else if(primitives == 1) { -+ R_DrawStripElements( numIndexes, indexes, qglArrayElement ); -+ } else if(primitives == 3) { -+ R_DrawStripElements( numIndexes, indexes, R_ArrayElementDiscrete ); -+ } -+ -+ //. correction for mirrors. SEE NOTE #2. -+ if(backEnd.viewParms.isMirror == qtrue) { qglCullFace (GL_BACK); } -+ else { qglCullFace (GL_FRONT); } -+ -+ qglDisable (GL_BLEND); -+ -+ return; -+ -+/* Notes -+ -+1. this is going to be a pain in the arse. it fixes things like light `beams` from being cel'd but it -+also will ignore any other shader set with no culling. this usually is everything that is translucent. -+but this is a good hack to clean up the screen untill something more selective comes along. or who knows -+group desision might actually be that this is liked. if so i take back calling it a `hack`, lol. -+ = bob. -+ -+2. mirrors display correctly because the normals of the displayed are inverted of normal space. so to -+continue to have them display correctly, we must invert them inversely from a normal inversion. -+ = bob. -+ -+3. this turns off a lot of space hogging sprite cel outlines. picture if you will five people in a small -+room all shooting rockets. each smoke puff gets a big black square around it, each explosion gets a big -+black square around it, and now nobody can see eachother because everyones screen is solid black. -+ = bob. -+ -+4. ignoring liquids means you will not get black tris lines all over the top of your liquid. i put this in -+after seeing the lava on q3dm7 and water on q3ctf2 that had black lines all over the top, making the -+liquids look solid instead of... liquid. -+ = bob. -+ -+*/ -+} -+ -+ - /* - ============================================================= - -@@ -245,6 +325,33 @@ - GL_Bind( bundle->image[ index ] ); - } - -+//DRAWCEL -+static void DrawCel (shaderCommands_t *input) { -+ -+ GL_Bind( tr.whiteImage ); -+ qglColor3f (1,1,1); -+ -+ GL_State( GLS_POLYMODE_LINE | GLS_DEPTHMASK_TRUE ); -+ -+ qglDisableClientState (GL_COLOR_ARRAY); -+ qglDisableClientState (GL_TEXTURE_COORD_ARRAY); -+ -+ qglVertexPointer (3, GL_FLOAT, 16, input->xyz); // padded for SIMD -+ -+ if (qglLockArraysEXT) { -+ qglLockArraysEXT(0, input->numVertexes); -+ GLimp_LogComment( "glLockArraysEXT\n" ); -+ } -+ -+ R_DrawCel( input->numIndexes, input->indexes ); -+ -+ if (qglUnlockArraysEXT) { -+ qglUnlockArraysEXT(); -+ GLimp_LogComment( "glUnlockArraysEXT\n" ); -+ } -+ -+} -+ - /* - ================ - DrawTris -@@ -1140,6 +1247,12 @@ - qglPolygonOffset( r_offsetFactor->value, r_offsetUnits->value ); - } - -+ //. show me cel outlines. -+ //. there has to be a better place to put this. -+ if(r_celoutline->integer > 0) { -+ DrawCel(&tess); -+ } -+ - // - // if there is only a single pass then we can enable color - // and texture arrays before we compile, otherwise we need -Index: code/renderer/tr_shader.c -=================================================================== ---- code/renderer/tr_shader.c (revision 933) -+++ code/renderer/tr_shader.c (working copy) -@@ -2744,7 +2744,17 @@ - */ - qhandle_t RE_RegisterShaderNoMip( const char *name ) { - shader_t *sh; -+ // Remember previous value -+ int old_r_celshadalgo; - -+ /* -+ * This will prevent sprites, like buttons, go through -+ * cel shading filters, like kuwahara. -+ * @author gmiranda -+ */ -+ old_r_celshadalgo = r_celshadalgo->integer; -+ r_celshadalgo->integer=0; -+ - if ( strlen( name ) >= MAX_QPATH ) { - Com_Printf( "Shader name exceeds MAX_QPATH\n" ); - return 0; -@@ -2752,6 +2762,9 @@ - - sh = R_FindShader( name, LIGHTMAP_2D, qfalse ); - -+ // Restore value -+ r_celshadalgo->integer=old_r_celshadalgo; -+ - // we want to return 0 if the shader failed to - // load for some reason, but R_FindShader should - // still keep a name allocated for it, so if diff -Nur iourbanterror.orig/files/extra-patch-mp3 iourbanterror/files/extra-patch-mp3 --- iourbanterror.orig/files/extra-patch-mp3 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/extra-patch-mp3 1970-01-01 01:00:00.000000000 +0100 @@ -1,753 +0,0 @@ -Index: code/client/snd_codec.c -=================================================================== ---- code/client/snd_codec.c (revision 917) -+++ code/client/snd_codec.c (working copy) -@@ -105,6 +105,9 @@ - #if USE_CODEC_VORBIS - S_CodecRegister(&ogg_codec); - #endif -+#if USE_CODEC_MP3 -+ S_CodecRegister(&mp3_codec); -+#endif - } - - /* -Index: code/client/snd_codec.h -=================================================================== ---- code/client/snd_codec.h (revision 917) -+++ code/client/snd_codec.h (working copy) -@@ -95,4 +95,13 @@ - int S_OGG_CodecReadStream(snd_stream_t *stream, int bytes, void *buffer); - #endif // USE_CODEC_VORBIS - -+// MP3 codec -+#ifdef USE_CODEC_MP3 -+extern snd_codec_t mp3_codec; -+void *S_MP3_CodecLoad(const char *filename, snd_info_t *info); -+snd_stream_t *S_MP3_CodecOpenStream(const char *filename); -+void S_MP3_CodecCloseStream(snd_stream_t *stream); -+int S_MP3_CodecReadStream(snd_stream_t *stream, int bytes, void *buffer); -+#endif // USE_CODEC_MP3 -+ - #endif // !_SND_CODEC_H_ -Index: code/client/snd_codec_mp3.c -=================================================================== ---- code/client/snd_codec_mp3.c (revision 0) -+++ code/client/snd_codec_mp3.c (revision 0) -@@ -0,0 +1,716 @@ -+/* -+=========================================================================== -+Copyright (C) 1999-2005 Id Software, Inc. -+Copyright (C) 2005 Stuart Dalton (badcdev@gmail.com) -+Copyright (C) 2005-2006 Joerg Dietrich -+Copyright (C) 2006 Thilo Schulz -+ -+This file is part of Quake III Arena source code. -+ -+Quake III Arena source code is free software; you can redistribute it -+and/or modify it under the terms of the GNU General Public License as -+published by the Free Software Foundation; either version 2 of the License, -+or (at your option) any later version. -+ -+Quake III Arena source code 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with Quake III Arena source code; if not, write to the Free Software -+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+=========================================================================== -+*/ -+ -+// MP3 support is enabled by this define -+#if USE_CODEC_MP3 -+ -+// includes for the Q3 sound system -+#include "client.h" -+#include "snd_codec.h" -+ -+// includes for the MP3 codec -+#include -+ -+#define MP3_SAMPLE_WIDTH 2 -+#define MP3_PCMSAMPLES_PERSLICE 32 -+ -+// buffer size used when reading through the mp3 -+#define MP3_DATA_BUFSIZ 128*1024 -+ -+// undefine this if you don't want any dithering. -+#define MP3_DITHERING -+ -+// Q3 MP3 codec -+snd_codec_t mp3_codec = -+{ -+ ".mp3", -+ S_MP3_CodecLoad, -+ S_MP3_CodecOpenStream, -+ S_MP3_CodecReadStream, -+ S_MP3_CodecCloseStream, -+ NULL -+}; -+ -+// structure used for info purposes -+struct snd_codec_mp3_info -+{ -+ byte encbuf[MP3_DATA_BUFSIZ]; // left over bytes not consumed -+ // by the decoder. -+ struct mad_stream madstream; // uses encbuf as buffer. -+ struct mad_frame madframe; // control structures for libmad. -+ struct mad_synth madsynth; -+ -+ byte *pcmbuf; // buffer for not-used samples. -+ int buflen; // length of buffer data. -+ int pcmbufsize; // amount of allocated memory for -+ // pcmbuf. This should have at least -+ // the size of a decoded mp3 frame. -+ -+ byte *dest; // copy decoded data here. -+ int destlen; // amount of already copied data. -+ int destsize; // amount of bytes we must decode. -+}; -+ -+/*************** MP3 utility functions ***************/ -+ -+/* -+================= -+S_MP3_ReadData -+================= -+*/ -+ -+// feed libmad with data -+int S_MP3_ReadData(snd_stream_t *stream, struct mad_stream *madstream, byte *encbuf, int encbufsize) -+{ -+ int retval; -+ int leftover; -+ -+ if(!stream) -+ return -1; -+ -+ leftover = madstream->bufend - madstream->next_frame; -+ if(leftover > 0) -+ memmove(encbuf, madstream->this_frame, leftover); -+ -+ -+ // Fill the buffer right to the end -+ -+ retval = FS_Read(&encbuf[leftover], encbufsize - leftover, stream->file); -+ -+ if(retval <= 0) -+ { -+ // EOF reached, that's ok. -+ return 0; -+ } -+ -+ mad_stream_buffer(madstream, encbuf, retval + leftover); -+ -+ return retval; -+} -+ -+ -+/* -+================= -+S_MP3_Scanfile -+ -+to determine the samplecount, we apparently must get *all* headers :( -+I basically used the xmms-mad plugin source to see how this stuff works. -+ -+returns a value < 0 on error. -+================= -+*/ -+ -+int S_MP3_Scanfile(snd_stream_t *stream) -+{ -+ struct mad_stream madstream; -+ struct mad_header madheader; -+ int retval; -+ int samplecount; -+ byte encbuf[MP3_DATA_BUFSIZ]; -+ -+ // error out on invalid input. -+ if(!stream) -+ return -1; -+ -+ mad_stream_init(&madstream); -+ mad_header_init(&madheader); -+ -+ while(1) -+ { -+ retval = S_MP3_ReadData(stream, &madstream, encbuf, sizeof(encbuf)); -+ if(retval < 0) -+ return -1; -+ else if(retval == 0) -+ break; -+ -+ // Start decoding the headers. -+ while(1) -+ { -+ if((retval = mad_header_decode(&madheader, &madstream)) < 0) -+ { -+ if(madstream.error == MAD_ERROR_BUFLEN) -+ { -+ // We need to read more data -+ break; -+ } -+ -+ if(!MAD_RECOVERABLE (madstream.error)) -+ { -+ // unrecoverable error... we must bail out. -+ return retval; -+ } -+ -+ mad_stream_skip(&madstream, madstream.skiplen); -+ continue; -+ } -+ -+ // we got a valid header. -+ -+ if(madheader.layer != MAD_LAYER_III) -+ { -+ // we don't support non-mp3s -+ return -1; -+ } -+ -+ if(!stream->info.samples) -+ { -+ // This here is the very first frame. Set initial values now, -+ // that we expect to stay constant throughout the whole mp3. -+ -+ stream->info.rate = madheader.samplerate; -+ stream->info.width = MP3_SAMPLE_WIDTH; -+ stream->info.channels = MAD_NCHANNELS(&madheader); -+ stream->info.samples = 0; -+ stream->info.size = 0; // same here. -+ stream->info.dataofs = 0; -+ } -+ else -+ { -+ // Check whether something changed that shouldn't. -+ -+ if(stream->info.rate != madheader.samplerate || -+ stream->info.channels != MAD_NCHANNELS(&madheader)) -+ return -1; -+ } -+ -+ // Update the counters -+ samplecount = MAD_NSBSAMPLES(&madheader) * MP3_PCMSAMPLES_PERSLICE; -+ stream->info.samples += samplecount; -+ stream->info.size += samplecount * stream->info.channels * stream->info.width; -+ } -+ } -+ -+ // Reset the file pointer so we can do the real decoding. -+ FS_Seek(stream->file, 0, FS_SEEK_SET); -+ -+ return 0; -+} -+ -+/************************ dithering functions ***************************/ -+ -+#ifdef MP3_DITHERING -+ -+// All dithering done here is taken from the GPL'ed xmms-mad plugin. -+ -+/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */ -+/* Any feedback is very welcome. For any question, comments, */ -+/* see http://www.math.keio.ac.jp/matumoto/emt.html or email */ -+/* matumoto@math.keio.ac.jp */ -+ -+/* Period parameters */ -+#define MP3_DITH_N 624 -+#define MP3_DITH_M 397 -+#define MATRIX_A 0x9908b0df /* constant vector a */ -+#define UPPER_MASK 0x80000000 /* most significant w-r bits */ -+#define LOWER_MASK 0x7fffffff /* least significant r bits */ -+ -+/* Tempering parameters */ -+#define TEMPERING_MASK_B 0x9d2c5680 -+#define TEMPERING_MASK_C 0xefc60000 -+#define TEMPERING_SHIFT_U(y) (y >> 11) -+#define TEMPERING_SHIFT_S(y) (y << 7) -+#define TEMPERING_SHIFT_T(y) (y << 15) -+#define TEMPERING_SHIFT_L(y) (y >> 18) -+ -+static unsigned long mt[MP3_DITH_N]; /* the array for the state vector */ -+static int mti=MP3_DITH_N+1; /* mti==MP3_DITH_N+1 means mt[MP3_DITH_N] is not initialized */ -+ -+/* initializing the array with a NONZERO seed */ -+void sgenrand(unsigned long seed) -+{ -+ /* setting initial seeds to mt[MP3_DITH_N] using */ -+ /* the generator Line 25 of Table 1 in */ -+ /* [KNUTH 1981, The Art of Computer Programming */ -+ /* Vol. 2 (2nd Ed.), pp102] */ -+ mt[0]= seed & 0xffffffff; -+ for (mti=1; mti= MP3_DITH_N) { /* generate MP3_DITH_N words at one time */ -+ int kk; -+ -+ if (mti == MP3_DITH_N+1) /* if sgenrand() has not been called, */ -+ sgenrand(4357); /* a default initial seed is used */ -+ -+ for (kk=0;kk> 1) ^ mag01[y & 0x1]; -+ } -+ for (;kk> 1) ^ mag01[y & 0x1]; -+ } -+ y = (mt[MP3_DITH_N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK); -+ mt[MP3_DITH_N-1] = mt[MP3_DITH_M-1] ^ (y >> 1) ^ mag01[y & 0x1]; -+ -+ mti = 0; -+ } -+ -+ y = mt[mti++]; -+ y ^= TEMPERING_SHIFT_U(y); -+ y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B; -+ y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C; -+ y ^= TEMPERING_SHIFT_L(y); -+ -+ return y; -+} -+ -+long triangular_dither_noise(int nbits) { -+ // parameter nbits : the peak-to-peak amplitude desired (in bits) -+ // use with nbits set to 2 + nber of bits to be trimmed. -+ // (because triangular is made from two uniformly distributed processes, -+ // it starts at 2 bits peak-to-peak amplitude) -+ // see The Theory of Dithered Quantization by Robert Alexander Wannamaker -+ // for complete proof of why that's optimal -+ -+ long v = (genrand()/2 - genrand()/2); // in ]-2^31, 2^31[ -+ //int signe = (v>0) ? 1 : -1; -+ long P = 1 << (32 - nbits); // the power of 2 -+ v /= P; -+ // now v in ]-2^(nbits-1), 2^(nbits-1) [ -+ -+ return v; -+} -+ -+#endif // MP3_DITHERING -+ -+/************************ decoder functions ***************************/ -+ -+/* -+================= -+S_MP3_Scale -+ -+Converts the signal to 16 bit LE-PCM data and does dithering. -+ -+- borrowed from xmms-mad plugin source. -+================= -+*/ -+ -+/* -+ * xmms-mad - mp3 plugin for xmms -+ * Copyright (C) 2001-2002 Sam Clegg -+ */ -+ -+signed int S_MP3_Scale(mad_fixed_t sample) -+{ -+ int n_bits_to_loose = MAD_F_FRACBITS + 1 - 16; -+#ifdef MP3_DITHERING -+ int dither; -+#endif -+ -+ // round -+ sample += (1L << (n_bits_to_loose - 1)); -+ -+#ifdef MP3_DITHERING -+ dither = triangular_dither_noise(n_bits_to_loose + 1); -+ sample += dither; -+#endif -+ -+ /* clip */ -+ if (sample >= MAD_F_ONE) -+ sample = MAD_F_ONE - 1; -+ else if (sample < -MAD_F_ONE) -+ sample = -MAD_F_ONE; -+ -+ /* quantize */ -+ return sample >> n_bits_to_loose; -+} -+ -+ -+ -+/* -+================= -+S_MP3_PCMCopy -+ -+Copy and convert pcm data until bytecount bytes have been written. -+return the position in pcm->samples. -+indicate the amount of actually written bytes in wrotecnt. -+================= -+*/ -+ -+int S_MP3_PCMCopy(byte *buf, struct mad_pcm *pcm, int bufofs, -+ int sampleofs, int bytecount, int *wrotecnt) -+{ -+ int written = 0; -+ signed int sample; -+ int framesize = pcm->channels * MP3_SAMPLE_WIDTH; -+ -+ // add new pcm data. -+ while(written < bytecount && sampleofs < pcm->length) -+ { -+ sample = S_MP3_Scale(pcm->samples[0][sampleofs]); -+ -+#ifdef Q3_BIG_ENDIAN -+ // output to 16 bit big endian PCM -+ buf[bufofs++] = (sample >> 8) & 0xff; -+ buf[bufofs++] = sample & 0xff; -+#else -+ // output to 16 bit little endian PCM -+ buf[bufofs++] = sample & 0xff; -+ buf[bufofs++] = (sample >> 8) & 0xff; -+#endif -+ -+ if(pcm->channels == 2) -+ { -+ sample = S_MP3_Scale(pcm->samples[1][sampleofs]); -+ -+#ifdef Q3_BIG_ENDIAN -+ buf[bufofs++] = (sample >> 8) & 0xff; -+ buf[bufofs++] = sample & 0xff; -+#else -+ buf[bufofs++] = sample & 0xff; -+ buf[bufofs++] = (sample >> 8) & 0xff; -+#endif -+ } -+ -+ sampleofs++; -+ written += framesize; -+ } -+ -+ if(wrotecnt) -+ *wrotecnt = written; -+ -+ return sampleofs; -+} -+ -+ -+/* -+================= -+S_MP3_Decode -+================= -+*/ -+ -+// gets executed for every decoded frame. -+int S_MP3_Decode(snd_stream_t *stream) -+{ -+ struct snd_codec_mp3_info *mp3info; -+ struct mad_stream *madstream; -+ struct mad_frame *madframe; -+ struct mad_synth *madsynth; -+ struct mad_pcm *pcm; -+ int cursize; -+ int samplecount; -+ int needcount; -+ int wrote; -+ int retval; -+ -+ if(!stream) -+ return -1; -+ -+ mp3info = stream->ptr; -+ madstream = &mp3info->madstream; -+ madframe = &mp3info->madframe; -+ -+ if(mad_frame_decode(madframe, madstream)) -+ { -+ if(madstream->error == MAD_ERROR_BUFLEN) -+ { -+ // we need more data. Read another chunk. -+ retval = S_MP3_ReadData(stream, madstream, mp3info->encbuf, sizeof(mp3info->encbuf)); -+ -+ // call myself again now that buffer is full. -+ if(retval > 0) -+ retval = S_MP3_Decode(stream); -+ } -+ else if(MAD_RECOVERABLE(madstream->error)) -+ { -+ mad_stream_skip(madstream, madstream->skiplen); -+ return S_MP3_Decode(stream); -+ } -+ else -+ retval = -1; -+ -+ return retval; -+ } -+ -+ // check whether this really is an mp3 -+ if(madframe->header.layer != MAD_LAYER_III) -+ return -1; -+ -+ // generate pcm data -+ madsynth = &mp3info->madsynth; -+ mad_synth_frame(madsynth, madframe); -+ -+ pcm = &madsynth->pcm; -+ -+ // perform a few checks to see whether something changed that shouldn't. -+ -+ if(stream->info.rate != pcm->samplerate || -+ stream->info.channels != pcm->channels) -+ { -+ return -1; -+ } -+ // see whether we have got enough data now. -+ cursize = pcm->length * pcm->channels * stream->info.width; -+ needcount = mp3info->destsize - mp3info->destlen; -+ -+ // Copy exactly as many samples as required. -+ samplecount = S_MP3_PCMCopy(mp3info->dest, pcm, -+ mp3info->destlen, 0, needcount, &wrote); -+ mp3info->destlen += wrote; -+ -+ if(samplecount < pcm->length) -+ { -+ // Not all samples got copied. Copy the rest into the pcm buffer. -+ samplecount = S_MP3_PCMCopy(mp3info->pcmbuf, pcm, -+ mp3info->buflen, -+ samplecount, -+ mp3info->pcmbufsize - mp3info->buflen, -+ &wrote); -+ mp3info->buflen += wrote; -+ -+ -+ if(samplecount < pcm->length) -+ { -+ // The pcm buffer was not large enough. Make it bigger. -+ byte *newbuf = Z_Malloc(cursize); -+ -+ if(mp3info->pcmbuf) -+ { -+ memcpy(newbuf, mp3info->pcmbuf, mp3info->buflen); -+ Z_Free(mp3info->pcmbuf); -+ } -+ -+ mp3info->pcmbuf = newbuf; -+ mp3info->pcmbufsize = cursize; -+ -+ samplecount = S_MP3_PCMCopy(mp3info->pcmbuf, pcm, -+ mp3info->buflen, -+ samplecount, -+ mp3info->pcmbufsize - mp3info->buflen, -+ &wrote); -+ mp3info->buflen += wrote; -+ } -+ -+ // we're definitely done. -+ retval = 0; -+ } -+ else if(mp3info->destlen >= mp3info->destsize) -+ retval = 0; -+ else -+ retval = 1; -+ -+ return retval; -+} -+ -+/*************** Callback functions for quake3 ***************/ -+ -+/* -+================= -+S_MP3_CodecOpenStream -+================= -+*/ -+ -+snd_stream_t *S_MP3_CodecOpenStream(const char *filename) -+{ -+ snd_stream_t *stream; -+ struct snd_codec_mp3_info *mp3info; -+ -+ // Open the stream -+ stream = S_CodecUtilOpen(filename, &mp3_codec); -+ if(!stream || stream->length <= 0) -+ return NULL; -+ -+ // We have to scan through the MP3 to determine the important mp3 info. -+ if(S_MP3_Scanfile(stream) < 0) -+ { -+ // scanning didn't work out... -+ S_CodecUtilClose(stream); -+ return NULL; -+ } -+ -+ // Initialize the mp3 info structure we need for streaming -+ mp3info = Z_Malloc(sizeof(*mp3info)); -+ if(!mp3info) -+ { -+ S_CodecUtilClose(stream); -+ return NULL; -+ } -+ -+ stream->ptr = mp3info; -+ -+ // initialize the libmad control structures. -+ mad_stream_init(&mp3info->madstream); -+ mad_frame_init(&mp3info->madframe); -+ mad_synth_init(&mp3info->madsynth); -+ -+ if(S_MP3_ReadData(stream, &mp3info->madstream, mp3info->encbuf, sizeof(mp3info->encbuf)) <= 0) -+ { -+ // we didnt read anything, that's bad. -+ S_MP3_CodecCloseStream(stream); -+ return NULL; -+ } -+ -+ return stream; -+} -+ -+/* -+================= -+S_MP3_CodecCloseStream -+================= -+*/ -+ -+// free all memory we allocated. -+void S_MP3_CodecCloseStream(snd_stream_t *stream) -+{ -+ struct snd_codec_mp3_info *mp3info; -+ -+ if(!stream) -+ return; -+ -+ // free all data in our mp3info tree -+ -+ if(stream->ptr) -+ { -+ mp3info = stream->ptr; -+ -+ if(mp3info->pcmbuf) -+ Z_Free(mp3info->pcmbuf); -+ -+ mad_synth_finish(&mp3info->madsynth); -+ mad_frame_finish(&mp3info->madframe); -+ mad_stream_finish(&mp3info->madstream); -+ -+ Z_Free(stream->ptr); -+ } -+ -+ S_CodecUtilClose(stream); -+} -+ -+/* -+================= -+S_MP3_CodecReadStream -+================= -+*/ -+int S_MP3_CodecReadStream(snd_stream_t *stream, int bytes, void *buffer) -+{ -+ struct snd_codec_mp3_info *mp3info; -+ int retval; -+ -+ if(!stream) -+ return -1; -+ -+ mp3info = stream->ptr; -+ -+ // Make sure we get complete frames all the way through. -+ bytes -= bytes % (stream->info.channels * stream->info.width); -+ -+ if(mp3info->buflen) -+ { -+ if(bytes < mp3info->buflen) -+ { -+ // we still have enough bytes in our decoded pcm buffer -+ memcpy(buffer, mp3info->pcmbuf, bytes); -+ -+ // remove the portion from our buffer. -+ mp3info->buflen -= bytes; -+ memmove(mp3info->pcmbuf, &mp3info->pcmbuf[bytes], mp3info->buflen); -+ return bytes; -+ } -+ else -+ { -+ // copy over the samples we already have. -+ memcpy(buffer, mp3info->pcmbuf, mp3info->buflen); -+ mp3info->destlen = mp3info->buflen; -+ mp3info->buflen = 0; -+ } -+ } -+ else -+ mp3info->destlen = 0; -+ -+ mp3info->dest = buffer; -+ mp3info->destsize = bytes; -+ -+ do -+ { -+ retval = S_MP3_Decode(stream); -+ } while(retval > 0); -+ -+ // if there was an error return nothing. -+ if(retval < 0) -+ return 0; -+ -+ return mp3info->destlen; -+} -+ -+/* -+===================================================================== -+S_MP3_CodecLoad -+ -+We handle S_MP3_CodecLoad as a special case of the streaming functions -+where we read the whole stream at once. -+====================================================================== -+*/ -+void *S_MP3_CodecLoad(const char *filename, snd_info_t *info) -+{ -+ snd_stream_t *stream; -+ byte *pcmbuffer; -+ -+ // check if input is valid -+ if(!filename) -+ return NULL; -+ -+ stream = S_MP3_CodecOpenStream(filename); -+ -+ if(!stream) -+ return NULL; -+ -+ // copy over the info -+ info->rate = stream->info.rate; -+ info->width = stream->info.width; -+ info->channels = stream->info.channels; -+ info->samples = stream->info.samples; -+ info->dataofs = stream->info.dataofs; -+ -+ // allocate enough buffer for all pcm data -+ pcmbuffer = Z_Malloc(stream->info.size); -+ if(!pcmbuffer) -+ { -+ S_MP3_CodecCloseStream(stream); -+ return NULL; -+ } -+ -+ info->size = S_MP3_CodecReadStream(stream, stream->info.size, pcmbuffer); -+ -+ if(info->size <= 0) -+ { -+ // we didn't read anything at all. darn. -+ Z_Free(pcmbuffer); -+ pcmbuffer = NULL; -+ } -+ -+ S_MP3_CodecCloseStream(stream); -+ -+ return pcmbuffer; -+} -+ -+#endif // USE_CODEC_MP3 diff -Nur iourbanterror.orig/files/patch-Makefile iourbanterror/files/patch-Makefile --- iourbanterror.orig/files/patch-Makefile 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-Makefile 1970-01-01 01:00:00.000000000 +0100 @@ -1,432 +0,0 @@ ---- Makefile.orig 2007-12-16 18:09:18.000000000 -0300 -+++ Makefile 2008-02-28 11:39:45.000000000 -0300 -@@ -27,16 +27,22 @@ - endif - endif - --BUILD_CLIENT =1 --BUILD_CLIENT_SMP =0 --BUILD_SERVER =0 --BUILD_GAME_SO =0 --BUILD_GAME_QVM =0 --OPTIMIZE =1 --USE_SDL =1 --USE_OPENAL =0 --USE_CURL =1 --USE_CODEC_VORBIS =0 -+BUILD_CLIENT?=0 -+BUILD_CLIENT_SMP?=0 -+BUILD_GAME_QVM?=0 -+BUILD_GAME_SO?=0 -+BUILD_SERVER?=0 -+HAVE_VM_COMPILED?=false -+USE_CODEC_MP3?=0 -+USE_CODEC_VORBIS?=0 -+USE_CURL?=0 -+USE_CURL_DLOPEN?=0 -+USE_LOCAL_HEADERS?=0 -+USE_OPENAL?=0 -+USE_OPENAL_DLOPEN?=0 -+USE_OPTIMIZED_CFLAGS?=0 -+USE_SDL_AUDIO?=0 -+USE_SDL_VIDEO?=0 - - ifeq ($(V),1) - echo_cmd=@: -@@ -106,38 +112,10 @@ - USE_SDL=1 - endif - --ifndef USE_OPENAL --USE_OPENAL=1 --endif -- --ifndef USE_OPENAL_DLOPEN --USE_OPENAL_DLOPEN=0 --endif -- --ifndef USE_CURL --USE_CURL=1 --endif -- --ifndef USE_CURL_DLOPEN -- ifeq ($(PLATFORM),mingw32) -- USE_CURL_DLOPEN=0 -- else -- USE_CURL_DLOPEN=1 -- endif --endif -- --ifndef USE_CODEC_VORBIS --USE_CODEC_VORBIS=0 --endif -- --ifndef USE_LOCAL_HEADERS --USE_LOCAL_HEADERS=1 --endif -- - ############################################################################# - --BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH) --BR=$(BUILD_DIR)/release-$(PLATFORM)-$(ARCH) -+BD=$(BUILD_DIR)/debug -+BR=$(BUILD_DIR)/release - CDIR=$(MOUNT_DIR)/client - SDIR=$(MOUNT_DIR)/server - RDIR=$(MOUNT_DIR)/renderer -@@ -221,6 +199,10 @@ - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - endif - -+ ifeq ($(USE_CODEC_MP3),1) -+ BASE_CFLAGS += -DUSE_CODEC_MP3=1 -+ endif -+ - ifeq ($(USE_SDL),1) - BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 $(shell sdl-config --cflags) - else -@@ -385,6 +367,11 @@ - endif - endif - -+ ifeq ($(USE_CODEC_MP3),1) -+ BASE_CFLAGS += -DUSE_CODEC_MP3=1 -+ CLIENT_LDFLAGS += -lmad -+ endif -+ - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg -@@ -476,6 +463,10 @@ - endif - endif - -+ ifeq ($(USE_CODEC_MP3),1) -+ CLIENT_LDFLAGS += -lmad -+ endif -+ - ifeq ($(USE_CODEC_VORBIS),1) - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif -@@ -497,17 +488,10 @@ - - ifeq ($(PLATFORM),freebsd) - -- ifneq (,$(findstring alpha,$(shell uname -m))) -- ARCH=axp -- else #default to i386 -- ARCH=i386 -- endif #alpha test -- -- -- BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ -- -I/usr/X11R6/include -+ BASE_CFLAGS = -DARCH='\"$(ARCH)\"' -DLIBDIR='\"$(LIBDIR)\"' -I$(LOCALBASE)/include -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes - - DEBUG_CFLAGS=$(BASE_CFLAGS) -g -+ RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -pipe - - ifeq ($(USE_OPENAL),1) - BASE_CFLAGS += -DUSE_OPENAL=1 -@@ -516,49 +500,80 @@ - endif - endif - -+ ifeq ($(USE_CURL),1) -+ BASE_CFLAGS += -DUSE_CURL=1 -+ ifneq ($(USE_CURL_DLOPEN),1) -+ CLIENT_LDFLAGS += -lcurl -+ else -+ BASE_CFLAGS += -DUSE_CURL_DLOPEN=1 -+ endif -+ endif -+ - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - endif - -- ifeq ($(USE_SDL),1) -- BASE_CFLAGS += $(shell sdl-config --cflags) -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 -+ ifeq ($(USE_SDL_AUDIO),1) -+ BASE_CFLAGS += $(shell $(SDL_CONFIG) --cflags) -+ else -+ ifeq ($(USE_SDL_VIDEO),1) -+ BASE_CFLAGS += $(shell $(SDL_CONFIG) --cflags) -+ endif - endif - -- ifeq ($(ARCH),axp) -- BASE_CFLAGS += -DNO_VM_COMPILED -- RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -ffast-math -funroll-loops \ -- -fomit-frame-pointer -fexpensive-optimizations -- else -- ifeq ($(ARCH),i386) -- RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -mtune=pentiumpro \ -- -march=pentium -fomit-frame-pointer -pipe -ffast-math \ -- -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ -- -funroll-loops -fstrength-reduce -- HAVE_VM_COMPILED=true -- else -- BASE_CFLAGS += -DNO_VM_COMPILED -+ ifeq ($(USE_SDL_AUDIO),1) -+ BASE_CFLAGS += -DUSE_SDL_SOUND=1 - endif -+ -+ ifeq ($(USE_SDL_VIDEO),1) -+ BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -+ endif -+ -+ ifeq ($(USE_OPTIMIZED_CFLAGS),1) -+ RELEASE_CFLAGS+=-O3 -ffast-math -funroll-loops -fomit-frame-pointer \ -+ -fexpensive-optimizations -+ ifeq ($(ARCH),i386) -+ RELEASE_CFLAGS+=-falign-loops=2 -falign-jumps=2 -falign-functions=2 \ -+ -fstrength-reduce -+ endif -+ endif -+ -+ ifneq ($(HAVE_VM_COMPILED),true) -+ BASE_CFLAGS += -DNO_VM_COMPILED - endif - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - -- THREAD_LDFLAGS=-lpthread -+ THREAD_LDFLAGS=$(PTHREAD_LIBS) - # don't need -ldl (FreeBSD) - LDFLAGS=-lm - -- CLIENT_LDFLAGS = -+ CLIENT_LDFLAGS = -L$(LOCALBASE)/lib - -- ifeq ($(USE_SDL),1) -- CLIENT_LDFLAGS += $(shell sdl-config --libs) -+ ifeq ($(USE_SDL_AUDIO),1) -+ CLIENT_LDFLAGS += $(shell $(SDL_CONFIG) --libs) - else -- CLIENT_LDFLAGS += -L/usr/X11R6/$(LIB) -lGL -lX11 -lXext -lXxf86dga -lXxf86vm -+ ifeq ($(USE_SDL_VIDEO),1) -+ CLIENT_LDFLAGS += $(shell $(SDL_CONFIG) --libs) -+ endif -+ endif -+ -+ ifneq ($(USE_SDL_VIDEO),1) -+ CLIENT_LDFLAGS += -L$(LOCALBASE)/lib -lGL -lX11 -lXext -lXxf86dga -lXxf86vm - endif - - ifeq ($(USE_OPENAL),1) -+ CLIENT_LDFLAGS += $(THREAD_LDFLAGS) - ifneq ($(USE_OPENAL_DLOPEN),1) -- CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lopenal -+ CLIENT_LDFLAGS += -lopenal -+ endif -+ endif -+ -+ ifeq ($(USE_CURL),1) -+ ifneq ($(USE_CURL_DLOPEN),1) -+ CLIENT_LDFLAGS += -lcurl - endif - endif - -@@ -566,7 +581,6 @@ - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif - -- - else # ifeq freebsd - - ############################################################################# -@@ -717,24 +731,25 @@ - TARGETS = - - ifneq ($(BUILD_SERVER),0) -- TARGETS += $(B)/ioUrTded.$(ARCH)$(BINEXT) -+ TARGETS += $(B)/ioUrTded$(BINEXT) - endif - - ifneq ($(BUILD_CLIENT),0) -- TARGETS += $(B)/ioUrbanTerror.$(ARCH)$(BINEXT) -- ifneq ($(BUILD_CLIENT_SMP),0) -- TARGETS += $(B)/ioUrbanTerror-smp.$(ARCH)$(BINEXT) -- endif -+ TARGETS += $(B)/ioUrbanTerror$(BINEXT) -+endif -+ -+ifneq ($(BUILD_CLIENT_SMP),0) -+ TARGETS += $(B)/ioUrbanTerror-smp$(BINEXT) - endif - - ifneq ($(BUILD_GAME_SO),0) - TARGETS += \ -- $(B)/baseq3/cgame$(ARCH).$(SHLIBEXT) \ -- $(B)/baseq3/qagame$(ARCH).$(SHLIBEXT) \ -- $(B)/baseq3/ui$(ARCH).$(SHLIBEXT) \ -- $(B)/missionpack/cgame$(ARCH).$(SHLIBEXT) \ -- $(B)/missionpack/qagame$(ARCH).$(SHLIBEXT) \ -- $(B)/missionpack/ui$(ARCH).$(SHLIBEXT) -+ $(B)/baseq3/cgame.$(SHLIBEXT) \ -+ $(B)/baseq3/qagame.$(SHLIBEXT) \ -+ $(B)/baseq3/ui.$(SHLIBEXT) \ -+ $(B)/missionpack/cgame.$(SHLIBEXT) \ -+ $(B)/missionpack/qagame.$(SHLIBEXT) \ -+ $(B)/missionpack/ui.$(SHLIBEXT) - endif - - ifneq ($(BUILD_GAME_QVM),0) -@@ -824,10 +839,10 @@ - all: debug release - - debug: -- @$(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(DEBUG_CFLAGS)" V=$(V) -+ @$(MAKE) targets B=$(BD) CFLAGS+="$(CFLAGS) $(DEBUG_CFLAGS)" V=$(V) - - release: -- @$(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS)" V=$(V) -+ @$(MAKE) targets B=$(BR) CFLAGS+="$(CFLAGS) $(RELEASE_CFLAGS)" V=$(V) - - # Create the build directories and tools, print out - # an informational message, then start building -@@ -880,7 +895,7 @@ - Q3LCC=$(TOOLSDIR)/q3lcc$(BINEXT) - Q3ASM=$(TOOLSDIR)/q3asm$(BINEXT) - --ifeq ($(CROSS_COMPILING),1) -+ifeq ($(BUILD_GAME_QVM),0) - tools: - @echo QVM tools not built when cross-compiling - else -@@ -943,8 +958,13 @@ - $(B)/client/snd_main.o \ - $(B)/client/snd_codec.o \ - $(B)/client/snd_codec_wav.o \ -- $(B)/client/snd_codec_ogg.o \ -- \ -+ $(B)/client/snd_codec_ogg.o -+ -+ifeq ($(USE_CODEC_MP3),1) -+ Q3OBJ += $(B)/client/snd_codec_mp3.o -+endif -+ -+Q3OBJ += \ - $(B)/client/qal.o \ - $(B)/client/snd_openal.o \ - \ -@@ -1078,9 +1098,15 @@ - ifeq ($(ARCH),x86) - Q3OBJ += $(B)/client/vm_x86.o - endif -+ ifeq ($(ARCH),amd64) -+ Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o -+ endif - ifeq ($(ARCH),x86_64) - Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o - endif -+ ifeq ($(ARCH),powerpc) -+ Q3OBJ += $(B)/client/vm_ppc.o -+ endif - ifeq ($(ARCH),ppc) - Q3OBJ += $(B)/client/vm_ppc.o - endif -@@ -1113,7 +1139,7 @@ - - ifeq ($(USE_SDL),1) - ifneq ($(PLATFORM),darwin) -- BUILD_CLIENT_SMP = 0 -+ #BUILD_CLIENT_SMP = 0 - endif - endif - -@@ -1126,12 +1152,12 @@ - $(B)/clientsmp/sdl_glimp.o - endif - --$(B)/ioUrbanTerror.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN) -+$(B)/ioUrbanTerror$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN) - $(echo_cmd) "LD $@" - $(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) \ - $(LDFLAGS) $(LIBSDLMAIN) - --$(B)/ioUrbanTerror-smp.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN) -+$(B)/ioUrbanTerror-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN) - $(echo_cmd) "LD $@" - $(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \ - $(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN) -@@ -1240,15 +1266,21 @@ - ifeq ($(ARCH),x86) - Q3DOBJ += $(B)/ded/vm_x86.o - endif -+ ifeq ($(ARCH),amd64) -+ Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o -+ endif - ifeq ($(ARCH),x86_64) - Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o - endif -+ ifeq ($(ARCH),powerpc) -+ Q3DOBJ += $(B)/ded/vm_ppc.o -+ endif - ifeq ($(ARCH),ppc) - Q3DOBJ += $(B)/ded/vm_ppc.o - endif - endif - --$(B)/ioUrTded.$(ARCH)$(BINEXT): $(Q3DOBJ) -+$(B)/ioUrTded$(BINEXT): $(Q3DOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) -o $@ $(Q3DOBJ) $(LDFLAGS) - -@@ -1287,7 +1319,7 @@ - Q3CGOBJ = $(Q3CGOBJ_) $(B)/baseq3/cgame/cg_syscalls.o - Q3CGVMOBJ = $(Q3CGOBJ_:%.o=%.asm) $(B)/baseq3/game/bg_lib.asm - --$(B)/baseq3/cgame$(ARCH).$(SHLIBEXT) : $(Q3CGOBJ) -+$(B)/baseq3/cgame.$(SHLIBEXT) : $(Q3CGOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) - -@@ -1330,7 +1362,7 @@ - MPCGOBJ = $(MPCGOBJ_) $(B)/missionpack/cgame/cg_syscalls.o - MPCGVMOBJ = $(MPCGOBJ_:%.o=%.asm) $(B)/missionpack/game/bg_lib.asm - --$(B)/missionpack/cgame$(ARCH).$(SHLIBEXT) : $(MPCGOBJ) -+$(B)/missionpack/cgame.$(SHLIBEXT) : $(MPCGOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ) - -@@ -1382,7 +1414,7 @@ - Q3GOBJ = $(Q3GOBJ_) $(B)/baseq3/game/g_syscalls.o - Q3GVMOBJ = $(Q3GOBJ_:%.o=%.asm) $(B)/baseq3/game/bg_lib.asm - --$(B)/baseq3/qagame$(ARCH).$(SHLIBEXT) : $(Q3GOBJ) -+$(B)/baseq3/qagame.$(SHLIBEXT) : $(Q3GOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) - -@@ -1432,7 +1464,7 @@ - MPGOBJ = $(MPGOBJ_) $(B)/missionpack/game/g_syscalls.o - MPGVMOBJ = $(MPGOBJ_:%.o=%.asm) $(B)/missionpack/game/bg_lib.asm - --$(B)/missionpack/qagame$(ARCH).$(SHLIBEXT) : $(MPGOBJ) -+$(B)/missionpack/qagame.$(SHLIBEXT) : $(MPGOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ) - -@@ -1494,7 +1526,7 @@ - Q3UIOBJ = $(Q3UIOBJ_) $(B)/missionpack/ui/ui_syscalls.o - Q3UIVMOBJ = $(Q3UIOBJ_:%.o=%.asm) $(B)/baseq3/game/bg_lib.asm - --$(B)/baseq3/ui$(ARCH).$(SHLIBEXT) : $(Q3UIOBJ) -+$(B)/baseq3/ui.$(SHLIBEXT) : $(Q3UIOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) - -@@ -1521,7 +1553,7 @@ - MPUIOBJ = $(MPUIOBJ_) $(B)/missionpack/ui/ui_syscalls.o - MPUIVMOBJ = $(MPUIOBJ_:%.o=%.asm) $(B)/baseq3/game/bg_lib.asm - --$(B)/missionpack/ui$(ARCH).$(SHLIBEXT) : $(MPUIOBJ) -+$(B)/missionpack/ui.$(SHLIBEXT) : $(MPUIOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ) - diff -Nur iourbanterror.orig/files/patch-code-qcommon-q_shared.h iourbanterror/files/patch-code-qcommon-q_shared.h --- iourbanterror.orig/files/patch-code-qcommon-q_shared.h 1970-01-01 01:00:00.000000000 +0100 +++ iourbanterror/files/patch-code-qcommon-q_shared.h 2010-11-27 18:49:09.000000000 +0100 @@ -0,0 +1,19 @@ +--- code/qcommon/q_shared.h.orig 2010-08-29 19:32:54.537567000 +0200 ++++ code/qcommon/q_shared.h 2010-11-27 16:55:16.000000000 +0100 +@@ -27,11 +27,11 @@ + // A user mod should never modify this file + + #ifdef STANDALONE +- #define PRODUCT_NAME "iofoo3" +- #define BASEGAME "foobar" +- #define CLIENT_WINDOW_TITLE "changeme" +- #define CLIENT_WINDOW_MIN_TITLE "changeme2" +- #define GAMENAME_FOR_MASTER "iofoo3" // must NOT contain whitespaces ++ #define PRODUCT_NAME "ioq3+UT" ++ #define BASEGAME "q3ut4" ++ #define CLIENT_WINDOW_TITLE "ioUrbanTerror" ++ #define CLIENT_WINDOW_MIN_TITLE "ioUT" ++ #define GAMENAME_FOR_MASTER "Quake3Arena" // must NOT contain whitespaces + #else + #define PRODUCT_NAME "ioq3" + #define BASEGAME "baseq3" diff -Nur iourbanterror.orig/files/patch-code__qcommon__common.c iourbanterror/files/patch-code__qcommon__common.c --- iourbanterror.orig/files/patch-code__qcommon__common.c 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-code__qcommon__common.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ ---- ./code/qcommon/common.c.orig Wed Apr 26 08:27:12 2006 -+++ ./code/qcommon/common.c Sun Jun 11 17:26:26 2006 -@@ -25,6 +25,7 @@ - #include "qcommon.h" - #include - #ifndef _WIN32 -+#include - #include - #include // umask - #else diff -Nur iourbanterror.orig/files/patch-code__qcommon__q_platform.h iourbanterror/files/patch-code__qcommon__q_platform.h --- iourbanterror.orig/files/patch-code__qcommon__q_platform.h 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-code__qcommon__q_platform.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,15 +0,0 @@ ---- ./code/qcommon/q_platform.h.orig Tue Dec 27 16:46:01 2005 -+++ ./code/qcommon/q_platform.h Sun Jun 11 17:26:26 2006 -@@ -176,11 +176,7 @@ - #define ID_INLINE inline - #define PATH_SEP '/' - --#ifdef __i386__ --#define ARCH_STRING "i386" --#elif defined __axp__ --#define ARCH_STRING "alpha" --#endif -+#define ARCH_STRING ARCH - - #if BYTE_ORDER == BIG_ENDIAN - #define Q3_BIG_ENDIAN diff -Nur iourbanterror.orig/files/patch-code__qcommon__vm_x86.c iourbanterror/files/patch-code__qcommon__vm_x86.c --- iourbanterror.orig/files/patch-code__qcommon__vm_x86.c 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-code__qcommon__vm_x86.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ ---- ./code/qcommon/vm_x86.c.orig 2007-10-09 02:47:22.000000000 -0300 -+++ ./code/qcommon/vm_x86.c 2008-03-04 10:45:08.000000000 -0300 -@@ -36,7 +36,7 @@ - - /* need this on NX enabled systems (i386 with PAE kernel or - * noexec32=on x86_64) */ --#ifdef __linux__ -+#ifdef __unix__ - #define VM_X86_MMAP - #endif - -@@ -1081,7 +1081,7 @@ - // copy to an exact size buffer on the hunk - vm->codeLength = compiledOfs; - #ifdef VM_X86_MMAP -- vm->codeBase = mmap(NULL, compiledOfs, PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0); -+ vm->codeBase = mmap(NULL, compiledOfs, PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0); - if(vm->codeBase == (void*)-1) - Com_Error(ERR_DROP, "VM_CompileX86: can't mmap memory"); - #elif _WIN32 diff -Nur iourbanterror.orig/files/patch-code__qcommon__vm_x86_64.c iourbanterror/files/patch-code__qcommon__vm_x86_64.c --- iourbanterror.orig/files/patch-code__qcommon__vm_x86_64.c 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-code__qcommon__vm_x86_64.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ ---- ./code/qcommon/vm_x86_64.c.orig 2007-10-09 02:47:22.000000000 -0300 -+++ ./code/qcommon/vm_x86_64.c 2008-03-04 10:45:08.000000000 -0300 -@@ -246,7 +246,7 @@ - #else - #define JMPIARG \ - emit("movq $%lu, %%rax", vm->codeBase+vm->instructionPointers[iarg]); \ -- emit("jmpq *%rax"); -+ emit("jmpq *%%rax"); - #endif - - // integer compare and jump -@@ -534,7 +534,7 @@ - { - compiledOfs = assembler_get_code_size(); - vm->codeLength = compiledOfs; -- vm->codeBase = mmap(NULL, compiledOfs, PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0); -+ vm->codeBase = mmap(NULL, compiledOfs, PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0); - if(vm->codeBase == (void*)-1) - Com_Error(ERR_DROP, "VM_CompileX86: can't mmap memory"); - diff -Nur iourbanterror.orig/files/patch-code__unix__linux_glimp.c iourbanterror/files/patch-code__unix__linux_glimp.c --- iourbanterror.orig/files/patch-code__unix__linux_glimp.c 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-code__unix__linux_glimp.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ ---- ./code/unix/linux_glimp.c.orig Sun Apr 30 11:32:56 2006 -+++ ./code/unix/linux_glimp.c Sun Jun 11 17:26:26 2006 -@@ -631,8 +631,14 @@ - - dx = ((int)event.xmotion.x - mwx); - dy = ((int)event.xmotion.y - mwy); -- mx += dx; -- my += dy; -+ if (abs(dx) > 1) -+ mx += dx * 2; -+ else -+ mx += dx; -+ if (abs(dy) > 1) -+ my += dy * 2; -+ else -+ my += dy; - - mwx = event.xmotion.x; - mwy = event.xmotion.y; diff -Nur iourbanterror.orig/files/patch-code__unix__unix_main.c iourbanterror/files/patch-code__unix__unix_main.c --- iourbanterror.orig/files/patch-code__unix__unix_main.c 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/files/patch-code__unix__unix_main.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,31 +0,0 @@ ---- ./code/unix/unix_main.c.orig Sun Feb 26 18:22:12 2006 -+++ ./code/unix/unix_main.c Sun Jun 11 17:26:26 2006 -@@ -774,6 +774,7 @@ - char curpath[MAX_OSPATH]; - char fname[MAX_OSPATH]; - char *basepath; -+ char *libpath; - char *homepath; - char *pwdpath; - char *cdpath; -@@ -789,14 +790,19 @@ - // TODO: use fs_searchpaths from files.c - pwdpath = Sys_Cwd(); - basepath = Cvar_VariableString( "fs_basepath" ); -+ libpath = LIBDIR; - homepath = Cvar_VariableString( "fs_homepath" ); - cdpath = Cvar_VariableString( "fs_cdpath" ); - gamedir = Cvar_VariableString( "fs_game" ); - -- libHandle = try_dlopen(pwdpath, gamedir, fname, fqpath); -+ if(!libHandle && homepath) -+ libHandle = try_dlopen(pwdpath, gamedir, fname, fqpath); - - if(!libHandle && homepath) - libHandle = try_dlopen(homepath, gamedir, fname, fqpath); -+ -+ if(!libHandle && basepath) -+ libHandle = try_dlopen(libpath, gamedir, fname, fqpath); - - if(!libHandle && basepath) - libHandle = try_dlopen(basepath, gamedir, fname, fqpath); diff -Nur iourbanterror.orig/files/patch-code_client_snd_openal.c iourbanterror/files/patch-code_client_snd_openal.c --- iourbanterror.orig/files/patch-code_client_snd_openal.c 2010-11-27 15:21:18.000000000 +0100 +++ iourbanterror/files/patch-code_client_snd_openal.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ ---- code/client/snd_openal.c.orig 2009-12-26 18:12:52.000000000 +0100 -+++ code/client/snd_openal.c 2009-12-26 18:13:00.000000000 +0100 -@@ -1676,7 +1676,7 @@ - #elif defined(MACOS_X) - #define ALDRIVER_DEFAULT "/System/Library/Frameworks/OpenAL.framework/OpenAL" - #else --#define ALDRIVER_DEFAULT "libopenal.so.0" -+#define ALDRIVER_DEFAULT "libopenal.so" - #endif - - /* diff -Nur iourbanterror.orig/pkg-descr iourbanterror/pkg-descr --- iourbanterror.orig/pkg-descr 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/pkg-descr 2010-11-27 18:14:05.000000000 +0100 @@ -6,7 +6,7 @@ strafe jump, which combined with wall jumping can lead to very quick movement and nice jumps. Urban Terror has 7 game modes, 25 maps and 15 weapons. -This port installs the modified ioquake3 engine for Urban Terror called +This port installs a modified ioquake3 engine for Urban Terror called ioUrbanTerror, and depends on the data, resulting in a playable game. -WWW: http://ftp.snt.utwente.nl/pub/games/urbanterror/iourbanterror/source/ +WWW: http://www.urbanterror.info/ diff -Nur iourbanterror.orig/pkg-message iourbanterror/pkg-message --- iourbanterror.orig/pkg-message 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/pkg-message 2010-11-27 18:30:22.000000000 +0100 @@ -1,17 +1,8 @@ ============================================================================== -If you have sound problems with SDL try setting the variable "s_sdlSpeed" to -"44100". It will be saved to the configuration file. - -If you have sound problems with OpenAL recompile without it. Also the OPENAL -option causes the program to omit restoring gamma and mouse sensivity after -exitting. - -The configuration files are saved to ~/.ioUrbanTerror instead of ~/.q3a -because they have additional variables which would be removed if other engines -overwrite them. But you can safely copy the original directory to the new one -for the first time. - -If you enabled CELLSHADING, check files/extra-patch-cellshading for variables. +Note, that the port was switched over to use the original ioquake project +source code instead of code provided by the UrbanTerror project. The +UrbanTerror project is switching to a closed source licensing model: + http://www.urbanterror.info/news/texts/285/ ============================================================================== diff -Nur iourbanterror.orig/pkg-plist iourbanterror/pkg-plist --- iourbanterror.orig/pkg-plist 2010-11-27 15:21:17.000000000 +0100 +++ iourbanterror/pkg-plist 2010-11-27 18:32:50.000000000 +0100 @@ -1,15 +1,8 @@ %%DEDICATED%%bin/ioUrTded %%CLIENT%%bin/ioUrbanTerror %%SMP%%bin/ioUrbanTerror-smp -%%GAMELIBS%%%%LIBDIR%%/baseq3/cgame.so -%%GAMELIBS%%%%LIBDIR%%/baseq3/qagame.so -%%GAMELIBS%%%%LIBDIR%%/baseq3/ui.so -%%GAMELIBS%%%%LIBDIR%%/missionpack/cgame.so -%%GAMELIBS%%%%LIBDIR%%/missionpack/qagame.so -%%GAMELIBS%%%%LIBDIR%%/missionpack/ui.so -%%PORTDOCS%%%%DOCSDIR%%/README -%%PORTDOCS%%%%DOCSDIR%%/ioUrbanTerror_README.txt -%%GAMELIBS%%@dirrm %%LIBDIR%%/missionpack -%%GAMELIBS%%@dirrm %%LIBDIR%%/baseq3 +%%GAMELIBS%%%%LIBDIR%%/q3ut4/cgameamd64.so +%%GAMELIBS%%%%LIBDIR%%/q3ut4/qagameamd64.so +%%GAMELIBS%%%%LIBDIR%%/q3ut4/uiamd64.so +%%GAMELIBS%%@dirrm %%LIBDIR%%/q3ut4 %%GAMELIBS%%@dirrm %%LIBDIR%% -%%PORTDOCS%%@dirrm %%DOCSDIR%% >Release-Note: >Audit-Trail: From: Dominic Fandrey To: bug-followup@FreeBSD.org, kamikaze@bsdforen.de Cc: Subject: Re: ports/152637: [maintainer-update] games/ioquake3 and slaves Date: Sun, 28 Nov 2010 22:02:01 +0100 Just to give credit where it's due, the DESKTOP_ENTRIES where originally submitted to me by Warren Block. Responsible-Changed-From-To: freebsd-ports-bugs->pav Responsible-Changed-By: pav Responsible-Changed-When: Wed Dec 1 12:56:28 UTC 2010 Responsible-Changed-Why: Take http://www.freebsd.org/cgi/query-pr.cgi?pr=152637 State-Changed-From-To: open->closed State-Changed-By: pav State-Changed-When: Wed Dec 1 13:02:27 UTC 2010 State-Changed-Why: Committed, thanks! http://www.freebsd.org/cgi/query-pr.cgi?pr=152637 From: dfilter@FreeBSD.ORG (dfilter service) To: bug-followup@FreeBSD.org Cc: Subject: Re: ports/152637: commit references a PR Date: Wed, 1 Dec 2010 13:27:14 +0000 (UTC) pav 2010-12-01 13:27:08 UTC FreeBSD ports repository Modified files: games/ioquake3 Makefile distinfo games/ioquake3-devel Makefile distinfo games/iourbanterror Makefile distinfo pkg-descr pkg-message pkg-plist games/openarena Makefile distinfo games/openarena/files patch-Makefile games/openarena-oax Makefile distinfo Added files: games/ioquake3/files patch-code-qcommon-vm_x86.c games/iourbanterror/files patch-code-qcommon-q_shared.h games/openarena/files patch-code-qcommon-vm_x86.c Removed files: games/iourbanterror/files extra-patch-cellshading extra-patch-mp3 patch-Makefile patch-code__qcommon__common.c patch-code__qcommon__q_platform.h patch-code__qcommon__vm_x86.c patch-code__qcommon__vm_x86_64.c patch-code__unix__linux_glimp.c patch-code__unix__unix_main.c patch-code_client_snd_openal.c Log: games/ioquake3 - Add DESKTOP_ENTRIES if the client is installed - Get rid of MD5 distinfo - Backport fix for FreeBSD/i386 with PAE kernel, provided by Nerius Landys games/ioquake3-devel - Update to SVN snapshot 1803, contains a number of fixes including the PAE patch by Nerius Landis - Make the port capable of being a master port games/openarena - Update to the latest source release - Add PAE fix games/openarena-oax - Update to the latest release games/iourbanterror - Abandon urbanterror provided source for ioquake3 source, because the project has announced a switch to a closed source licensing model - Enslave to games/ioquake3-devel - Change versioning scheme to resemble official version numbers - Bump portepoch PR: ports/152637 Submitted by: Dominic Fandrey (maintainer) Revision Changes Path 1.8 +10 -10 ports/games/ioquake3-devel/Makefile 1.8 +2 -3 ports/games/ioquake3-devel/distinfo 1.25 +19 -4 ports/games/ioquake3/Makefile 1.6 +0 -1 ports/games/ioquake3/distinfo 1.1 +29 -0 ports/games/ioquake3/files/patch-code-qcommon-vm_x86.c (new) 1.23 +31 -158 ports/games/iourbanterror/Makefile 1.7 +2 -3 ports/games/iourbanterror/distinfo 1.2 +0 -933 ports/games/iourbanterror/files/extra-patch-cellshading (dead) 1.2 +0 -753 ports/games/iourbanterror/files/extra-patch-mp3 (dead) 1.11 +0 -432 ports/games/iourbanterror/files/patch-Makefile (dead) 1.1 +19 -0 ports/games/iourbanterror/files/patch-code-qcommon-q_shared.h (new) 1.3 +0 -10 ports/games/iourbanterror/files/patch-code__qcommon__common.c (dead) 1.3 +0 -15 ports/games/iourbanterror/files/patch-code__qcommon__q_platform.h (dead) 1.2 +0 -20 ports/games/iourbanterror/files/patch-code__qcommon__vm_x86.c (dead) 1.3 +0 -20 ports/games/iourbanterror/files/patch-code__qcommon__vm_x86_64.c (dead) 1.3 +0 -19 ports/games/iourbanterror/files/patch-code__unix__linux_glimp.c (dead) 1.3 +0 -31 ports/games/iourbanterror/files/patch-code__unix__unix_main.c (dead) 1.2 +0 -11 ports/games/iourbanterror/files/patch-code_client_snd_openal.c (dead) 1.4 +2 -2 ports/games/iourbanterror/pkg-descr 1.5 +4 -13 ports/games/iourbanterror/pkg-message 1.4 +4 -11 ports/games/iourbanterror/pkg-plist 1.3 +1 -1 ports/games/openarena-oax/Makefile 1.2 +2 -3 ports/games/openarena-oax/distinfo 1.11 +5 -3 ports/games/openarena/Makefile 1.3 +2 -3 ports/games/openarena/distinfo 1.4 +9 -116 ports/games/openarena/files/patch-Makefile 1.1 +29 -0 ports/games/openarena/files/patch-code-qcommon-vm_x86.c (new) _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org" >Unformatted: