aboutsummaryrefslogtreecommitdiff
path: root/games
diff options
context:
space:
mode:
authorAlejandro Pulver <alepulver@FreeBSD.org>2006-06-07 22:42:16 +0000
committerAlejandro Pulver <alepulver@FreeBSD.org>2006-06-07 22:42:16 +0000
commite9a83999f917772139c84e0bd57de6be33d8260c (patch)
treedd1969299db0b14f26e8eaf298721d88cae12e15 /games
parent64d74e1caf8719342b6d75201511f1881656c8d4 (diff)
downloadports-e9a83999f917772139c84e0bd57de6be33d8260c.tar.gz
ports-e9a83999f917772139c84e0bd57de6be33d8260c.zip
This project, icculus.org/quake3 (sometimes referred to ioquake3, or ioq3 for
short) aims to build upon id Software's Quake 3 source code release. The source code was released on August 20, 2005 under the GPL. Since then, we have been cleaning up, fixing bugs, and adding features. Our permanent goal is to create the open source Quake 3 distribution upon which people base their games and projects. We also seek to have the perfect version of the engine for playing Quake 3: Arena, Team Arena, and all popular mods. This distribution of the engine has been ported to many new platforms and has had a slew of new features added, along with massive bug extermination. WWW: http://icculus.org/quake3/
Notes
Notes: svn path=/head/; revision=164768
Diffstat (limited to 'games')
-rw-r--r--games/Makefile1
-rw-r--r--games/ioquake3/Makefile158
-rw-r--r--games/ioquake3/distinfo3
-rw-r--r--games/ioquake3/files/extra-patch-code__unix__unix_shared.c24
-rw-r--r--games/ioquake3/files/patch-Makefile316
-rw-r--r--games/ioquake3/files/patch-code__botlib__be_interface.c11
-rw-r--r--games/ioquake3/files/patch-code__qcommon__common.c10
-rw-r--r--games/ioquake3/files/patch-code__qcommon__q_platform.h15
-rw-r--r--games/ioquake3/files/patch-code__unix__linux_glimp.c19
-rw-r--r--games/ioquake3/files/patch-code__unix__unix_main.c31
-rw-r--r--games/ioquake3/pkg-descr11
-rw-r--r--games/ioquake3/pkg-plist12
-rw-r--r--games/iourbanterror/Makefile158
-rw-r--r--games/iourbanterror/distinfo3
-rw-r--r--games/iourbanterror/files/extra-patch-code__unix__unix_shared.c24
-rw-r--r--games/iourbanterror/files/patch-Makefile316
-rw-r--r--games/iourbanterror/files/patch-code__botlib__be_interface.c11
-rw-r--r--games/iourbanterror/files/patch-code__qcommon__common.c10
-rw-r--r--games/iourbanterror/files/patch-code__qcommon__q_platform.h15
-rw-r--r--games/iourbanterror/files/patch-code__unix__linux_glimp.c19
-rw-r--r--games/iourbanterror/files/patch-code__unix__unix_main.c31
-rw-r--r--games/iourbanterror/pkg-descr11
-rw-r--r--games/iourbanterror/pkg-plist12
23 files changed, 1221 insertions, 0 deletions
diff --git a/games/Makefile b/games/Makefile
index ef06f09c59fb..67c73d4a2372 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -315,6 +315,7 @@
SUBDIR += imaze
SUBDIR += inform
SUBDIR += interlogic
+ SUBDIR += ioquake3
SUBDIR += ishido
SUBDIR += ivan
SUBDIR += jchessboard
diff --git a/games/ioquake3/Makefile b/games/ioquake3/Makefile
new file mode 100644
index 000000000000..a89be3f852a7
--- /dev/null
+++ b/games/ioquake3/Makefile
@@ -0,0 +1,158 @@
+# New ports collection makefile for: ioquake3
+# Date created: 3 Jun 2006
+# Whom: alepulver
+#
+# $FreeBSD$
+#
+
+PORTNAME= ioquake3
+PORTVERSION= 1.33
+CATEGORIES= games
+MASTER_SITES= ${MASTER_SITE_LOCAL}
+MASTER_SITE_SUBDIR= alepulver
+
+MAINTAINER= alepulver@FreeBSD.org
+COMMENT= Cleaned-up and enhaced version of Quake 3
+
+USE_BZIP2= yes
+USE_GCC= 3.2+
+USE_GMAKE= yes
+WRKSRC= ${WRKDIR}/quake3
+
+OPTIONS= CLIENT "Build client" on \
+ GAMELIBS "Build game libraries (when not mandatory)" off \
+ DEDICATED "Build dedicated server" on \
+ 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}
+SVN_REV= 777
+VM_ARCHS= amd64 i386 powerpc
+
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 500000
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-code__unix__unix_shared.c
+.endif
+
+.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
+
+.if defined(HAVE_VM_COMPILED)
+MAKE_ENV+= HAVE_VM_COMPILED=true
+.endif
+
+.if !defined(WITHOUT_CLIENT) || !defined(WITHOUT_SMP)
+# OpenAL
+. if defined(WITH_OPENAL)
+LIB_DEPENDS+= openal.0:${PORTSDIR}/audio/openal
+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
+. endif
+# Vorbis
+. if defined(WITH_VORBIS)
+LIB_DEPENDS+= vorbis.3:${PORTSDIR}/audio/libvorbis
+MAKE_ENV+= USE_CODEC_VORBIS=1
+. endif
+.endif
+
+.if !defined(WITHOUT_CLIENT)
+MAKE_ENV+= BUILD_CLIENT=1
+PLIST_SUB+= CLIENT=""
+Q3BIN+= ioquake3
+.else
+PLIST_SUB+= CLIENT="@comment "
+.endif
+
+.if !defined(WITHOUT_DEDICATED)
+MAKE_ENV+= BUILD_SERVER=1
+PLIST_SUB+= DEDICATED=""
+Q3BIN+= ioq3ded
+.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(WITHOUT_OPTIMIZED_CFLAGS)
+MAKE_ENV+= USE_OPTIMIZED_CFLAGS=1
+.endif
+
+.if !defined(WITHOUT_SMP)
+MAKE_ENV+= BUILD_CLIENT_SMP=1
+PLIST_SUB+= SMP=""
+Q3BIN+= ioquake3-smp
+.else
+PLIST_SUB+= SMP="@comment "
+.endif
+
+.if ${OSVERSION} < 500000
+post-patch:
+ @${REINPLACE_CMD} -e 's|stdint\.h|inttypes.h|' \
+ ${BUILD_WRKSRC}/code/qcommon/q_shared.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}
+.endfor
+.endif
+
+post-install:
+.if defined(WITH_SDL_AUDIO) || defined(WITH_OPENAL)
+ @${ECHO_CMD}
+ @${ECHO_CMD} "WARNING: if you have sound problems try recompiling without SDL_AUDIO and OPENAL options." | ${FMT}
+ @${ECHO_CMD}
+.endif
+
+maint-gen-distfile:
+ @if [ -f ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} ]; then \
+ ${ECHO_CMD} "ERROR: the distfile already exists."; \
+ ${FALSE}; \
+ fi
+ svn export -r${SVN_REV} svn://svn.icculus.org/quake3/trunk quake3
+ ${TAR} jcf ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} quake3
+ ${RM} -rf quake3
+
+.include "${.CURDIR}/../quake3-data/Makefile.include"
+.include <bsd.port.post.mk>
diff --git a/games/ioquake3/distinfo b/games/ioquake3/distinfo
new file mode 100644
index 000000000000..17bc6407080a
--- /dev/null
+++ b/games/ioquake3/distinfo
@@ -0,0 +1,3 @@
+MD5 (ioquake3-1.33.tar.bz2) = 0eaf6eb252e6b56d1195faf2d898c533
+SHA256 (ioquake3-1.33.tar.bz2) = 9e9b7f4d7b39eb82c8b1de9dc0ce62d0eed4d676d21e1adfb4930832c5123abb
+SIZE (ioquake3-1.33.tar.bz2) = 2421997
diff --git a/games/ioquake3/files/extra-patch-code__unix__unix_shared.c b/games/ioquake3/files/extra-patch-code__unix__unix_shared.c
new file mode 100644
index 000000000000..a0860384c25c
--- /dev/null
+++ b/games/ioquake3/files/extra-patch-code__unix__unix_shared.c
@@ -0,0 +1,24 @@
+--- ./code/unix/unix_shared.c.orig Fri Nov 4 19:32:00 2005
++++ ./code/unix/unix_shared.c Wed Jun 7 16:52:01 2006
+@@ -20,6 +20,7 @@
+ ===========================================================================
+ */
+ #include <sys/types.h>
++#include <sys/sysctl.h>
+ #include <sys/stat.h>
+ #include <errno.h>
+ #include <stdio.h>
+@@ -430,6 +431,12 @@
+ // sysconf() in libc, POSIX.1 compliant
+ unsigned int Sys_ProcessorCount(void)
+ {
+- return sysconf(_SC_NPROCESSORS_ONLN);
++ int mib[2], value, len;
++
++ mib[0] = CTL_HW;
++ mib[1] = HW_NCPU;
++ len = sizeof(value);
++ sysctl(mib, 2, &value, &len, NULL, 0);
++ return (value);
+ }
+ #endif
diff --git a/games/ioquake3/files/patch-Makefile b/games/ioquake3/files/patch-Makefile
new file mode 100644
index 000000000000..4830ebf93000
--- /dev/null
+++ b/games/ioquake3/files/patch-Makefile
@@ -0,0 +1,316 @@
+--- ./Makefile.orig Sat Apr 29 16:54:54 2006
++++ ./Makefile Wed Jun 7 19:34:25 2006
+@@ -26,11 +26,19 @@
+ endif
+ endif
+
+-BUILD_CLIENT =
+-BUILD_CLIENT_SMP =
+-BUILD_SERVER =
+-BUILD_GAME_SO =
+-BUILD_GAME_QVM =
++BUILD_CLIENT?=0
++BUILD_CLIENT_SMP?=0
++BUILD_GAME_QVM?=0
++BUILD_GAME_SO?=0
++BUILD_SERVER?=0
++HAVE_VM_COMPILED?=false
++USE_CODEC_VORBIS?=0
++USE_LOCAL_HEADERS?=0
++USE_OPENAL?=0
++USE_OPENAL_DLOPEN?=0
++USE_OPTIMIZED_CFLAGS?=0
++USE_SDL_AUDIO?=0
++USE_SDL_VIDEO?=0
+
+ #############################################################################
+ #
+@@ -88,30 +96,10 @@
+ endif
+ export USE_CCACHE
+
+-ifndef USE_SDL
+-USE_SDL=1
+-endif
+-
+-ifndef USE_OPENAL
+-USE_OPENAL=1
+-endif
+-
+-ifndef USE_OPENAL_DLOPEN
+-USE_OPENAL_DLOPEN=0
+-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)
++BR=$(BUILD_DIR)/release
+ CDIR=$(MOUNT_DIR)/client
+ SDIR=$(MOUNT_DIR)/server
+ RDIR=$(MOUNT_DIR)/renderer
+@@ -407,18 +395,12 @@
+
+ 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
++ BASE_CFLAGS = -DARCH='\"$(ARCH)\"' -DLIBDIR='\"$(LIBDIR)\"' -I$(LOCALBASE)/include -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
+
+- GL_CFLAGS = -I/usr/X11R6/include
++ GL_CFLAGS = -I$(X11BASE)/include
+
+ DEBUG_CFLAGS=$(BASE_CFLAGS) -g
++ RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -pipe
+
+ ifeq ($(USE_OPENAL),1)
+ BASE_CFLAGS += -DUSE_OPENAL=1
+@@ -431,46 +413,61 @@
+ BASE_CFLAGS += -DUSE_CODEC_VORBIS=1
+ endif
+
+- ifeq ($(USE_SDL),1)
+- BASE_CFLAGS += $(shell sdl11-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)
+- CC=gcc
+- BASE_CFLAGS += -DNO_VM_COMPILED
+- RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -ffast-math -funroll-loops \
+- -fomit-frame-pointer -fexpensive-optimizations
+- else
+- ifeq ($(ARCH),i386)
+- CC=gcc
+- 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
+- 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
++ LDFLAGS+=-lm
+
+- CLIENT_LDFLAGS =
++ CLIENT_LDFLAGS = -L$(LOCALBASE)/lib
+
+- ifeq ($(USE_SDL),1)
+- CLIENT_LDFLAGS += $(shell sdl11-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$(X11BASE)/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
+
+@@ -632,24 +629,24 @@
+ TARGETS =
+
+ ifneq ($(BUILD_SERVER),0)
+- TARGETS += $(B)/ioq3ded.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioq3ded$(BINEXT)
+ endif
+
+ ifneq ($(BUILD_CLIENT),0)
+- TARGETS += $(B)/ioquake3.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioquake3$(BINEXT)
+ ifneq ($(BUILD_CLIENT_SMP),0)
+- TARGETS += $(B)/ioquake3-smp.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioquake3-smp$(BINEXT)
+ endif
+ 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)
+@@ -707,11 +704,11 @@
+ $(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(DEBUG_CFLAGS) $(DEPEND_CFLAGS)"
+
+ build_release: B=$(BR)
+-build_release: makedirs tools
++build_release: makedirs
+ $(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS) $(DEPEND_CFLAGS)"
+
+ #Build both debug and release builds
+-all:build_debug build_release
++all:build_release
+
+ targets: $(TARGETS)
+
+@@ -919,11 +916,11 @@
+ $(B)/client/ftola.o \
+ $(B)/client/snapvectora.o
+ endif
+-ifeq ($(ARCH),x86_64)
++ifeq ($(ARCH),amd64)
+ Q3OBJ += $(B)/client/vm_x86_64.o
+ endif
+
+-ifeq ($(ARCH),ppc)
++ifeq ($(ARCH),powerpc)
+ ifneq ($(VM_PPC),)
+ Q3OBJ += $(B)/client/$(VM_PPC).o
+ endif
+@@ -971,10 +968,10 @@
+ $(B)/client/sdl_glimp_smp.o
+ endif
+
+-$(B)/ioquake3.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
++$(B)/ioquake3$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
+ $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+
+-$(B)/ioquake3-smp.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
++$(B)/ioquake3-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
+ $(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \
+ $(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+
+@@ -1253,17 +1250,17 @@
+ $(B)/ded/snapvectora.o $(B)/ded/matha.o
+ endif
+
+-ifeq ($(ARCH),x86_64)
++ifeq ($(ARCH),amd64)
+ Q3DOBJ += $(B)/ded/vm_x86_64.o
+ endif
+
+-ifeq ($(ARCH),ppc)
++ifeq ($(ARCH),powerpc)
+ ifneq ($(VM_PPC),)
+ Q3DOBJ += $(B)/ded/$(VM_PPC).o
+ endif
+ endif
+
+-$(B)/ioq3ded.$(ARCH)$(BINEXT): $(Q3DOBJ)
++$(B)/ioq3ded$(BINEXT): $(Q3DOBJ)
+ $(CC) -o $@ $(Q3DOBJ) $(LDFLAGS)
+
+ $(B)/ded/sv_bot.o : $(SDIR)/sv_bot.c; $(DO_DED_CC)
+@@ -1377,7 +1374,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
+
+ $(B)/baseq3/vm/cgame.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm
+@@ -1418,7 +1415,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ)
+
+ $(B)/missionpack/vm/cgame.qvm: $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm
+@@ -1468,7 +1465,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
+
+ $(B)/baseq3/vm/qagame.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm
+@@ -1516,7 +1513,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ)
+
+ $(B)/missionpack/vm/qagame.qvm: $(MPGVMOBJ) $(GDIR)/g_syscalls.asm
+@@ -1576,7 +1573,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)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
+
+ $(B)/baseq3/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm
+@@ -1601,7 +1598,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)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ)
+
+ $(B)/missionpack/vm/ui.qvm: $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm
diff --git a/games/ioquake3/files/patch-code__botlib__be_interface.c b/games/ioquake3/files/patch-code__botlib__be_interface.c
new file mode 100644
index 000000000000..dd57f36a808f
--- /dev/null
+++ b/games/ioquake3/files/patch-code__botlib__be_interface.c
@@ -0,0 +1,11 @@
+--- ./code/botlib/be_interface.c.orig Wed Apr 26 10:36:58 2006
++++ ./code/botlib/be_interface.c Wed Jun 7 19:34:25 2006
+@@ -155,7 +155,7 @@
+ } else {
+ Com_sprintf(logfilename, sizeof(logfilename), "botlib.log");
+ }
+- Log_Open(logfilename);
++ Log_Open("/dev/null");
+ //
+ botimport.Print(PRT_MESSAGE, "------- BotLib Initialization -------\n");
+ //
diff --git a/games/ioquake3/files/patch-code__qcommon__common.c b/games/ioquake3/files/patch-code__qcommon__common.c
new file mode 100644
index 000000000000..c1fdcacdd58a
--- /dev/null
+++ b/games/ioquake3/files/patch-code__qcommon__common.c
@@ -0,0 +1,10 @@
+--- ./code/qcommon/common.c.orig Wed Apr 26 08:27:12 2006
++++ ./code/qcommon/common.c Wed Jun 7 19:34:25 2006
+@@ -25,6 +25,7 @@
+ #include "qcommon.h"
+ #include <setjmp.h>
+ #ifndef _WIN32
++#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <sys/stat.h> // umask
+ #else
diff --git a/games/ioquake3/files/patch-code__qcommon__q_platform.h b/games/ioquake3/files/patch-code__qcommon__q_platform.h
new file mode 100644
index 000000000000..c65c0b6f3705
--- /dev/null
+++ b/games/ioquake3/files/patch-code__qcommon__q_platform.h
@@ -0,0 +1,15 @@
+--- ./code/qcommon/q_platform.h.orig Tue Dec 27 16:46:01 2005
++++ ./code/qcommon/q_platform.h Wed Jun 7 19:35:23 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 --git a/games/ioquake3/files/patch-code__unix__linux_glimp.c b/games/ioquake3/files/patch-code__unix__linux_glimp.c
new file mode 100644
index 000000000000..987afc280e72
--- /dev/null
+++ b/games/ioquake3/files/patch-code__unix__linux_glimp.c
@@ -0,0 +1,19 @@
+--- ./code/unix/linux_glimp.c.orig Sun Apr 30 11:32:56 2006
++++ ./code/unix/linux_glimp.c Wed Jun 7 19:34:25 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 --git a/games/ioquake3/files/patch-code__unix__unix_main.c b/games/ioquake3/files/patch-code__unix__unix_main.c
new file mode 100644
index 000000000000..cd61c56a765f
--- /dev/null
+++ b/games/ioquake3/files/patch-code__unix__unix_main.c
@@ -0,0 +1,31 @@
+--- ./code/unix/unix_main.c.orig Sun Feb 26 18:22:12 2006
++++ ./code/unix/unix_main.c Wed Jun 7 19:34:25 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 --git a/games/ioquake3/pkg-descr b/games/ioquake3/pkg-descr
new file mode 100644
index 000000000000..6bb3f4006f49
--- /dev/null
+++ b/games/ioquake3/pkg-descr
@@ -0,0 +1,11 @@
+This project, icculus.org/quake3 (sometimes referred to ioquake3, or ioq3 for
+short) aims to build upon id Software's Quake 3 source code release. The
+source code was released on August 20, 2005 under the GPL. Since then, we have
+been cleaning up, fixing bugs, and adding features. Our permanent goal is to
+create the open source Quake 3 distribution upon which people base their games
+and projects. We also seek to have the perfect version of the engine for
+playing Quake 3: Arena, Team Arena, and all popular mods. This distribution of
+the engine has been ported to many new platforms and has had a slew of new
+features added, along with massive bug extermination.
+
+WWW: http://icculus.org/quake3/
diff --git a/games/ioquake3/pkg-plist b/games/ioquake3/pkg-plist
new file mode 100644
index 000000000000..a2fb5a77eb6c
--- /dev/null
+++ b/games/ioquake3/pkg-plist
@@ -0,0 +1,12 @@
+%%DEDICATED%%bin/ioq3ded
+%%CLIENT%%bin/ioquake3
+%%SMP%%bin/ioquake3-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
+%%GAMELIBS%%@dirrm %%LIBDIR%%/missionpack
+%%GAMELIBS%%@dirrm %%LIBDIR%%/baseq3
+%%GAMELIBS%%@dirrm %%LIBDIR%%
diff --git a/games/iourbanterror/Makefile b/games/iourbanterror/Makefile
new file mode 100644
index 000000000000..a89be3f852a7
--- /dev/null
+++ b/games/iourbanterror/Makefile
@@ -0,0 +1,158 @@
+# New ports collection makefile for: ioquake3
+# Date created: 3 Jun 2006
+# Whom: alepulver
+#
+# $FreeBSD$
+#
+
+PORTNAME= ioquake3
+PORTVERSION= 1.33
+CATEGORIES= games
+MASTER_SITES= ${MASTER_SITE_LOCAL}
+MASTER_SITE_SUBDIR= alepulver
+
+MAINTAINER= alepulver@FreeBSD.org
+COMMENT= Cleaned-up and enhaced version of Quake 3
+
+USE_BZIP2= yes
+USE_GCC= 3.2+
+USE_GMAKE= yes
+WRKSRC= ${WRKDIR}/quake3
+
+OPTIONS= CLIENT "Build client" on \
+ GAMELIBS "Build game libraries (when not mandatory)" off \
+ DEDICATED "Build dedicated server" on \
+ 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}
+SVN_REV= 777
+VM_ARCHS= amd64 i386 powerpc
+
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 500000
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-code__unix__unix_shared.c
+.endif
+
+.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
+
+.if defined(HAVE_VM_COMPILED)
+MAKE_ENV+= HAVE_VM_COMPILED=true
+.endif
+
+.if !defined(WITHOUT_CLIENT) || !defined(WITHOUT_SMP)
+# OpenAL
+. if defined(WITH_OPENAL)
+LIB_DEPENDS+= openal.0:${PORTSDIR}/audio/openal
+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
+. endif
+# Vorbis
+. if defined(WITH_VORBIS)
+LIB_DEPENDS+= vorbis.3:${PORTSDIR}/audio/libvorbis
+MAKE_ENV+= USE_CODEC_VORBIS=1
+. endif
+.endif
+
+.if !defined(WITHOUT_CLIENT)
+MAKE_ENV+= BUILD_CLIENT=1
+PLIST_SUB+= CLIENT=""
+Q3BIN+= ioquake3
+.else
+PLIST_SUB+= CLIENT="@comment "
+.endif
+
+.if !defined(WITHOUT_DEDICATED)
+MAKE_ENV+= BUILD_SERVER=1
+PLIST_SUB+= DEDICATED=""
+Q3BIN+= ioq3ded
+.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(WITHOUT_OPTIMIZED_CFLAGS)
+MAKE_ENV+= USE_OPTIMIZED_CFLAGS=1
+.endif
+
+.if !defined(WITHOUT_SMP)
+MAKE_ENV+= BUILD_CLIENT_SMP=1
+PLIST_SUB+= SMP=""
+Q3BIN+= ioquake3-smp
+.else
+PLIST_SUB+= SMP="@comment "
+.endif
+
+.if ${OSVERSION} < 500000
+post-patch:
+ @${REINPLACE_CMD} -e 's|stdint\.h|inttypes.h|' \
+ ${BUILD_WRKSRC}/code/qcommon/q_shared.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}
+.endfor
+.endif
+
+post-install:
+.if defined(WITH_SDL_AUDIO) || defined(WITH_OPENAL)
+ @${ECHO_CMD}
+ @${ECHO_CMD} "WARNING: if you have sound problems try recompiling without SDL_AUDIO and OPENAL options." | ${FMT}
+ @${ECHO_CMD}
+.endif
+
+maint-gen-distfile:
+ @if [ -f ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} ]; then \
+ ${ECHO_CMD} "ERROR: the distfile already exists."; \
+ ${FALSE}; \
+ fi
+ svn export -r${SVN_REV} svn://svn.icculus.org/quake3/trunk quake3
+ ${TAR} jcf ${DISTDIR}/${DISTNAME}${EXTRACT_SUFX} quake3
+ ${RM} -rf quake3
+
+.include "${.CURDIR}/../quake3-data/Makefile.include"
+.include <bsd.port.post.mk>
diff --git a/games/iourbanterror/distinfo b/games/iourbanterror/distinfo
new file mode 100644
index 000000000000..17bc6407080a
--- /dev/null
+++ b/games/iourbanterror/distinfo
@@ -0,0 +1,3 @@
+MD5 (ioquake3-1.33.tar.bz2) = 0eaf6eb252e6b56d1195faf2d898c533
+SHA256 (ioquake3-1.33.tar.bz2) = 9e9b7f4d7b39eb82c8b1de9dc0ce62d0eed4d676d21e1adfb4930832c5123abb
+SIZE (ioquake3-1.33.tar.bz2) = 2421997
diff --git a/games/iourbanterror/files/extra-patch-code__unix__unix_shared.c b/games/iourbanterror/files/extra-patch-code__unix__unix_shared.c
new file mode 100644
index 000000000000..a0860384c25c
--- /dev/null
+++ b/games/iourbanterror/files/extra-patch-code__unix__unix_shared.c
@@ -0,0 +1,24 @@
+--- ./code/unix/unix_shared.c.orig Fri Nov 4 19:32:00 2005
++++ ./code/unix/unix_shared.c Wed Jun 7 16:52:01 2006
+@@ -20,6 +20,7 @@
+ ===========================================================================
+ */
+ #include <sys/types.h>
++#include <sys/sysctl.h>
+ #include <sys/stat.h>
+ #include <errno.h>
+ #include <stdio.h>
+@@ -430,6 +431,12 @@
+ // sysconf() in libc, POSIX.1 compliant
+ unsigned int Sys_ProcessorCount(void)
+ {
+- return sysconf(_SC_NPROCESSORS_ONLN);
++ int mib[2], value, len;
++
++ mib[0] = CTL_HW;
++ mib[1] = HW_NCPU;
++ len = sizeof(value);
++ sysctl(mib, 2, &value, &len, NULL, 0);
++ return (value);
+ }
+ #endif
diff --git a/games/iourbanterror/files/patch-Makefile b/games/iourbanterror/files/patch-Makefile
new file mode 100644
index 000000000000..4830ebf93000
--- /dev/null
+++ b/games/iourbanterror/files/patch-Makefile
@@ -0,0 +1,316 @@
+--- ./Makefile.orig Sat Apr 29 16:54:54 2006
++++ ./Makefile Wed Jun 7 19:34:25 2006
+@@ -26,11 +26,19 @@
+ endif
+ endif
+
+-BUILD_CLIENT =
+-BUILD_CLIENT_SMP =
+-BUILD_SERVER =
+-BUILD_GAME_SO =
+-BUILD_GAME_QVM =
++BUILD_CLIENT?=0
++BUILD_CLIENT_SMP?=0
++BUILD_GAME_QVM?=0
++BUILD_GAME_SO?=0
++BUILD_SERVER?=0
++HAVE_VM_COMPILED?=false
++USE_CODEC_VORBIS?=0
++USE_LOCAL_HEADERS?=0
++USE_OPENAL?=0
++USE_OPENAL_DLOPEN?=0
++USE_OPTIMIZED_CFLAGS?=0
++USE_SDL_AUDIO?=0
++USE_SDL_VIDEO?=0
+
+ #############################################################################
+ #
+@@ -88,30 +96,10 @@
+ endif
+ export USE_CCACHE
+
+-ifndef USE_SDL
+-USE_SDL=1
+-endif
+-
+-ifndef USE_OPENAL
+-USE_OPENAL=1
+-endif
+-
+-ifndef USE_OPENAL_DLOPEN
+-USE_OPENAL_DLOPEN=0
+-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)
++BR=$(BUILD_DIR)/release
+ CDIR=$(MOUNT_DIR)/client
+ SDIR=$(MOUNT_DIR)/server
+ RDIR=$(MOUNT_DIR)/renderer
+@@ -407,18 +395,12 @@
+
+ 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
++ BASE_CFLAGS = -DARCH='\"$(ARCH)\"' -DLIBDIR='\"$(LIBDIR)\"' -I$(LOCALBASE)/include -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
+
+- GL_CFLAGS = -I/usr/X11R6/include
++ GL_CFLAGS = -I$(X11BASE)/include
+
+ DEBUG_CFLAGS=$(BASE_CFLAGS) -g
++ RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -pipe
+
+ ifeq ($(USE_OPENAL),1)
+ BASE_CFLAGS += -DUSE_OPENAL=1
+@@ -431,46 +413,61 @@
+ BASE_CFLAGS += -DUSE_CODEC_VORBIS=1
+ endif
+
+- ifeq ($(USE_SDL),1)
+- BASE_CFLAGS += $(shell sdl11-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)
+- CC=gcc
+- BASE_CFLAGS += -DNO_VM_COMPILED
+- RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -ffast-math -funroll-loops \
+- -fomit-frame-pointer -fexpensive-optimizations
+- else
+- ifeq ($(ARCH),i386)
+- CC=gcc
+- 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
+- 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
++ LDFLAGS+=-lm
+
+- CLIENT_LDFLAGS =
++ CLIENT_LDFLAGS = -L$(LOCALBASE)/lib
+
+- ifeq ($(USE_SDL),1)
+- CLIENT_LDFLAGS += $(shell sdl11-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$(X11BASE)/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
+
+@@ -632,24 +629,24 @@
+ TARGETS =
+
+ ifneq ($(BUILD_SERVER),0)
+- TARGETS += $(B)/ioq3ded.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioq3ded$(BINEXT)
+ endif
+
+ ifneq ($(BUILD_CLIENT),0)
+- TARGETS += $(B)/ioquake3.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioquake3$(BINEXT)
+ ifneq ($(BUILD_CLIENT_SMP),0)
+- TARGETS += $(B)/ioquake3-smp.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioquake3-smp$(BINEXT)
+ endif
+ 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)
+@@ -707,11 +704,11 @@
+ $(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(DEBUG_CFLAGS) $(DEPEND_CFLAGS)"
+
+ build_release: B=$(BR)
+-build_release: makedirs tools
++build_release: makedirs
+ $(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS) $(DEPEND_CFLAGS)"
+
+ #Build both debug and release builds
+-all:build_debug build_release
++all:build_release
+
+ targets: $(TARGETS)
+
+@@ -919,11 +916,11 @@
+ $(B)/client/ftola.o \
+ $(B)/client/snapvectora.o
+ endif
+-ifeq ($(ARCH),x86_64)
++ifeq ($(ARCH),amd64)
+ Q3OBJ += $(B)/client/vm_x86_64.o
+ endif
+
+-ifeq ($(ARCH),ppc)
++ifeq ($(ARCH),powerpc)
+ ifneq ($(VM_PPC),)
+ Q3OBJ += $(B)/client/$(VM_PPC).o
+ endif
+@@ -971,10 +968,10 @@
+ $(B)/client/sdl_glimp_smp.o
+ endif
+
+-$(B)/ioquake3.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
++$(B)/ioquake3$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
+ $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+
+-$(B)/ioquake3-smp.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
++$(B)/ioquake3-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
+ $(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \
+ $(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+
+@@ -1253,17 +1250,17 @@
+ $(B)/ded/snapvectora.o $(B)/ded/matha.o
+ endif
+
+-ifeq ($(ARCH),x86_64)
++ifeq ($(ARCH),amd64)
+ Q3DOBJ += $(B)/ded/vm_x86_64.o
+ endif
+
+-ifeq ($(ARCH),ppc)
++ifeq ($(ARCH),powerpc)
+ ifneq ($(VM_PPC),)
+ Q3DOBJ += $(B)/ded/$(VM_PPC).o
+ endif
+ endif
+
+-$(B)/ioq3ded.$(ARCH)$(BINEXT): $(Q3DOBJ)
++$(B)/ioq3ded$(BINEXT): $(Q3DOBJ)
+ $(CC) -o $@ $(Q3DOBJ) $(LDFLAGS)
+
+ $(B)/ded/sv_bot.o : $(SDIR)/sv_bot.c; $(DO_DED_CC)
+@@ -1377,7 +1374,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
+
+ $(B)/baseq3/vm/cgame.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm
+@@ -1418,7 +1415,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ)
+
+ $(B)/missionpack/vm/cgame.qvm: $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm
+@@ -1468,7 +1465,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
+
+ $(B)/baseq3/vm/qagame.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm
+@@ -1516,7 +1513,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)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ)
+
+ $(B)/missionpack/vm/qagame.qvm: $(MPGVMOBJ) $(GDIR)/g_syscalls.asm
+@@ -1576,7 +1573,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)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
+
+ $(B)/baseq3/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm
+@@ -1601,7 +1598,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)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ)
+
+ $(B)/missionpack/vm/ui.qvm: $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm
diff --git a/games/iourbanterror/files/patch-code__botlib__be_interface.c b/games/iourbanterror/files/patch-code__botlib__be_interface.c
new file mode 100644
index 000000000000..dd57f36a808f
--- /dev/null
+++ b/games/iourbanterror/files/patch-code__botlib__be_interface.c
@@ -0,0 +1,11 @@
+--- ./code/botlib/be_interface.c.orig Wed Apr 26 10:36:58 2006
++++ ./code/botlib/be_interface.c Wed Jun 7 19:34:25 2006
+@@ -155,7 +155,7 @@
+ } else {
+ Com_sprintf(logfilename, sizeof(logfilename), "botlib.log");
+ }
+- Log_Open(logfilename);
++ Log_Open("/dev/null");
+ //
+ botimport.Print(PRT_MESSAGE, "------- BotLib Initialization -------\n");
+ //
diff --git a/games/iourbanterror/files/patch-code__qcommon__common.c b/games/iourbanterror/files/patch-code__qcommon__common.c
new file mode 100644
index 000000000000..c1fdcacdd58a
--- /dev/null
+++ b/games/iourbanterror/files/patch-code__qcommon__common.c
@@ -0,0 +1,10 @@
+--- ./code/qcommon/common.c.orig Wed Apr 26 08:27:12 2006
++++ ./code/qcommon/common.c Wed Jun 7 19:34:25 2006
+@@ -25,6 +25,7 @@
+ #include "qcommon.h"
+ #include <setjmp.h>
+ #ifndef _WIN32
++#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <sys/stat.h> // umask
+ #else
diff --git a/games/iourbanterror/files/patch-code__qcommon__q_platform.h b/games/iourbanterror/files/patch-code__qcommon__q_platform.h
new file mode 100644
index 000000000000..c65c0b6f3705
--- /dev/null
+++ b/games/iourbanterror/files/patch-code__qcommon__q_platform.h
@@ -0,0 +1,15 @@
+--- ./code/qcommon/q_platform.h.orig Tue Dec 27 16:46:01 2005
++++ ./code/qcommon/q_platform.h Wed Jun 7 19:35:23 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 --git a/games/iourbanterror/files/patch-code__unix__linux_glimp.c b/games/iourbanterror/files/patch-code__unix__linux_glimp.c
new file mode 100644
index 000000000000..987afc280e72
--- /dev/null
+++ b/games/iourbanterror/files/patch-code__unix__linux_glimp.c
@@ -0,0 +1,19 @@
+--- ./code/unix/linux_glimp.c.orig Sun Apr 30 11:32:56 2006
++++ ./code/unix/linux_glimp.c Wed Jun 7 19:34:25 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 --git a/games/iourbanterror/files/patch-code__unix__unix_main.c b/games/iourbanterror/files/patch-code__unix__unix_main.c
new file mode 100644
index 000000000000..cd61c56a765f
--- /dev/null
+++ b/games/iourbanterror/files/patch-code__unix__unix_main.c
@@ -0,0 +1,31 @@
+--- ./code/unix/unix_main.c.orig Sun Feb 26 18:22:12 2006
++++ ./code/unix/unix_main.c Wed Jun 7 19:34:25 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 --git a/games/iourbanterror/pkg-descr b/games/iourbanterror/pkg-descr
new file mode 100644
index 000000000000..6bb3f4006f49
--- /dev/null
+++ b/games/iourbanterror/pkg-descr
@@ -0,0 +1,11 @@
+This project, icculus.org/quake3 (sometimes referred to ioquake3, or ioq3 for
+short) aims to build upon id Software's Quake 3 source code release. The
+source code was released on August 20, 2005 under the GPL. Since then, we have
+been cleaning up, fixing bugs, and adding features. Our permanent goal is to
+create the open source Quake 3 distribution upon which people base their games
+and projects. We also seek to have the perfect version of the engine for
+playing Quake 3: Arena, Team Arena, and all popular mods. This distribution of
+the engine has been ported to many new platforms and has had a slew of new
+features added, along with massive bug extermination.
+
+WWW: http://icculus.org/quake3/
diff --git a/games/iourbanterror/pkg-plist b/games/iourbanterror/pkg-plist
new file mode 100644
index 000000000000..a2fb5a77eb6c
--- /dev/null
+++ b/games/iourbanterror/pkg-plist
@@ -0,0 +1,12 @@
+%%DEDICATED%%bin/ioq3ded
+%%CLIENT%%bin/ioquake3
+%%SMP%%bin/ioquake3-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
+%%GAMELIBS%%@dirrm %%LIBDIR%%/missionpack
+%%GAMELIBS%%@dirrm %%LIBDIR%%/baseq3
+%%GAMELIBS%%@dirrm %%LIBDIR%%