aboutsummaryrefslogtreecommitdiff
path: root/games/openarena
diff options
context:
space:
mode:
authorAlejandro Pulver <alepulver@FreeBSD.org>2007-09-06 03:50:23 +0000
committerAlejandro Pulver <alepulver@FreeBSD.org>2007-09-06 03:50:23 +0000
commita67f63f67f5871bfd92d4d93f2c6716a042a3464 (patch)
treedb5707d2d26b7dc6a0359cc9055773b62c12ddd1 /games/openarena
parent87c547be6deafc2a69d74b5fc95305d11b8f1d96 (diff)
downloadports-a67f63f67f5871bfd92d4d93f2c6716a042a3464.tar.gz
ports-a67f63f67f5871bfd92d4d93f2c6716a042a3464.zip
Notes
Diffstat (limited to 'games/openarena')
-rw-r--r--games/openarena/Makefile146
-rw-r--r--games/openarena/distinfo9
-rw-r--r--games/openarena/files/patch-Makefile337
-rw-r--r--games/openarena/files/patch-code__botlib__be_interface.c11
-rw-r--r--games/openarena/files/patch-code__qcommon__common.c10
-rw-r--r--games/openarena/files/patch-code__qcommon__q_platform.h15
-rw-r--r--games/openarena/files/patch-code__unix__linux_glimp.c19
-rw-r--r--games/openarena/files/patch-code__unix__unix_main.c31
-rw-r--r--games/openarena/pkg-descr10
-rw-r--r--games/openarena/pkg-message10
-rw-r--r--games/openarena/pkg-plist23
11 files changed, 621 insertions, 0 deletions
diff --git a/games/openarena/Makefile b/games/openarena/Makefile
new file mode 100644
index 000000000000..a809758e7278
--- /dev/null
+++ b/games/openarena/Makefile
@@ -0,0 +1,146 @@
+# New ports collection makefile for: openarena
+# Date created: 2007-08-01
+# Whom: Josh Tolbert <hemi@puresimplicity.net>
+#
+# $FreeBSD$
+#
+
+PORTNAME= openarena
+PORTVERSION= 0.7.1
+CATEGORIES= games
+MASTER_SITES= http://openarena.ws/rel/070/:src \
+ http://download.tuxfamily.net/cooker/openarena/rel070/:data \
+ ftp://ftp.alepulver.com.ar/distfiles/:patch
+DISTNAME= ioq3-src-oa
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src \
+ ${OA_DATA}:data \
+ ${OA_PATCH}:patch
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
+
+MAINTAINER= hemi@puresimplicity.net
+COMMENT= GPL-licensed total conversion of Quake 3
+
+EXTRACT_DEPENDS=unzip:${PORTSDIR}/archivers/unzip
+LIB_DEPENDS= vorbis.4:${PORTSDIR}/audio/libvorbis
+
+USE_BZIP2= yes
+USE_GMAKE= yes
+NO_WRKSUBDIR= yes
+
+OPTIONS= CLIENT "Build client" on \
+ 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 \
+
+MAKE_ENV= DEFAULT_BASEDIR="${DATADIR}" LIBDIR="${LIBDIR}" \
+ PTHREAD_LIBS="${PTHREAD_LIBS}" USE_CODEC_VORBIS=1
+PLIST_SUB= LIBDIR="${LIBDIR:S/${PREFIX}\///}"
+
+LIBDIR= ${PREFIX}/lib/${PORTNAME}
+VM_ARCHS= amd64 i386 powerpc
+OA_DATA= oa070.zip
+OA_PATCH= oa071-patch.zip
+
+.include <bsd.port.pre.mk>
+
+.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
+.endif
+
+.if !defined(WITHOUT_CLIENT)
+MAKE_ENV+= BUILD_CLIENT=1
+PLIST_SUB+= CLIENT=""
+OABIN+= ioquake3
+.else
+PLIST_SUB+= CLIENT="@comment "
+.endif
+
+.if !defined(WITHOUT_DEDICATED)
+MAKE_ENV+= BUILD_SERVER=1
+PLIST_SUB+= DEDICATED=""
+OABIN+= 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=""
+OABIN+= ioquake3-smp
+.else
+PLIST_SUB+= SMP="@comment "
+.endif
+
+post-extract:
+.for f in ${OA_DATA} ${OA_PATCH}
+ @${UNZIP_CMD} -qo ${DISTDIR}/${f} -d ${WRKDIR}
+.endfor
+
+do-install:
+.for bin in ${OABIN}
+ ${INSTALL_PROGRAM} ${WRKSRC}/build/release/${bin} \
+ ${PREFIX}/bin/${bin:C/(ioquake3|ioq3)/${PORTNAME}/}
+.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
+ ${MKDIR} ${DATADIR}
+ ${CP} -R ${WRKDIR}/${PORTNAME}-0.7.0/baseoa ${DATADIR}
+
+post-install:
+ @${ECHO_CMD}
+ @${CAT} ${PKGMESSAGE}
+ @${ECHO_CMD}
+
+.include <bsd.port.post.mk>
diff --git a/games/openarena/distinfo b/games/openarena/distinfo
new file mode 100644
index 000000000000..49659f3e10c1
--- /dev/null
+++ b/games/openarena/distinfo
@@ -0,0 +1,9 @@
+MD5 (ioq3-src-oa.tar.bz2) = a43cd6044de919dd2af94fb4159ddb47
+SHA256 (ioq3-src-oa.tar.bz2) = b51a890a525e9a7c49fe9fe3808ec6bba0738014d008078bbd28244934d145b9
+SIZE (ioq3-src-oa.tar.bz2) = 3539582
+MD5 (oa070.zip) = 739548bfc5dc1d129d20c0f67d54df48
+SHA256 (oa070.zip) = f420978abedd701744de06bdba3a7c3624175aafb891101f77887581ce8576a1
+SIZE (oa070.zip) = 263123081
+MD5 (oa071-patch.zip) = 5fa31998009f8241ad3ded93eb81e701
+SHA256 (oa071-patch.zip) = 7f6162b04cf624fea73083430b7a5c7a15826fe3ce536c2280448f403fd3561a
+SIZE (oa071-patch.zip) = 12287230
diff --git a/games/openarena/files/patch-Makefile b/games/openarena/files/patch-Makefile
new file mode 100644
index 000000000000..ac77e4c5f58b
--- /dev/null
+++ b/games/openarena/files/patch-Makefile
@@ -0,0 +1,337 @@
+--- Makefile.orig Sat Jul 7 02:50:34 2007
++++ Makefile Sun Jul 29 04:30:00 2007
+@@ -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,18 +96,6 @@
+ 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_CURL
+ USE_CURL=1
+ endif
+@@ -112,18 +108,10 @@
+ endif
+ endif
+
+-ifndef USE_CODEC_VORBIS
+-USE_CODEC_VORBIS=1
+-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
+@@ -498,18 +486,12 @@
+
+ ifeq ($(PLATFORM),freebsd)
+
+- ifneq (,$(findstring alpha,$(shell uname -m)))
+- ARCH=axp
+- else #default to i386
+- ARCH=i386
+- endif #alpha test
+-
++ BASE_CFLAGS = -DARCH='\"$(ARCH)\"' -DLIBDIR='\"$(LIBDIR)\"' -I$(LOCALBASE)/include -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
+
+- BASE_CFLAGS = -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
+@@ -522,47 +504,61 @@
+ 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)
+- 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
+- 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$(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
+
+@@ -570,7 +566,6 @@
+ CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
+ endif
+
+-
+ else # ifeq freebsd
+
+ #############################################################################
+@@ -725,24 +720,25 @@
+ TARGETS =
+
+ ifneq ($(BUILD_SERVER),0)
+- TARGETS += $(B)/ioq3ded.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/ioq3ded$(BINEXT)
+ endif
+
+ ifneq ($(BUILD_CLIENT),0)
+- TARGETS += $(B)/ioquake3.$(ARCH)$(BINEXT)
+- ifneq ($(BUILD_CLIENT_SMP),0)
+- TARGETS += $(B)/ioquake3-smp.$(ARCH)$(BINEXT)
+- endif
++ TARGETS += $(B)/ioquake3$(BINEXT)
++endif
++
++ifneq ($(BUILD_CLIENT_SMP),0)
++ TARGETS += $(B)/ioquake3-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)
+@@ -804,11 +800,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)
+
+@@ -1022,13 +1018,10 @@
+ ifeq ($(ARCH),i386)
+ Q3OBJ += $(B)/client/vm_x86.o
+ endif
+- ifeq ($(ARCH),x86)
+- Q3OBJ += $(B)/client/vm_x86.o
+- endif
+- ifeq ($(ARCH),x86_64)
++ ifeq ($(ARCH),amd64)
+ Q3OBJ += $(B)/client/vm_x86_64.o
+ endif
+- ifeq ($(ARCH),ppc)
++ ifeq ($(ARCH),powerpc)
+ Q3OBJ += $(B)/client/$(VM_PPC).o
+ endif
+ endif
+@@ -1075,10 +1068,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)
+
+@@ -1378,18 +1371,15 @@
+ ifeq ($(ARCH),i386)
+ Q3DOBJ += $(B)/ded/vm_x86.o
+ endif
+- ifeq ($(ARCH),x86)
+- Q3DOBJ += $(B)/ded/vm_x86.o
+- endif
+- ifeq ($(ARCH),x86_64)
++ ifeq ($(ARCH),amd64)
+ Q3DOBJ += $(B)/ded/vm_x86_64.o
+ endif
+- ifeq ($(ARCH),ppc)
++ ifeq ($(ARCH),powerpc)
+ 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)
+@@ -1506,7 +1496,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
+@@ -1547,7 +1537,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
+@@ -1597,7 +1587,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
+@@ -1645,7 +1635,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
+@@ -1705,7 +1695,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
+@@ -1730,7 +1720,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/openarena/files/patch-code__botlib__be_interface.c b/games/openarena/files/patch-code__botlib__be_interface.c
new file mode 100644
index 000000000000..45e7f5e21246
--- /dev/null
+++ b/games/openarena/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 Sun Jun 11 17:26:26 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/openarena/files/patch-code__qcommon__common.c b/games/openarena/files/patch-code__qcommon__common.c
new file mode 100644
index 000000000000..6899017952d4
--- /dev/null
+++ b/games/openarena/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 Sun Jun 11 17:26:26 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/openarena/files/patch-code__qcommon__q_platform.h b/games/openarena/files/patch-code__qcommon__q_platform.h
new file mode 100644
index 000000000000..543c8d5710ed
--- /dev/null
+++ b/games/openarena/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 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 --git a/games/openarena/files/patch-code__unix__linux_glimp.c b/games/openarena/files/patch-code__unix__linux_glimp.c
new file mode 100644
index 000000000000..00304f2b5be1
--- /dev/null
+++ b/games/openarena/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 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 --git a/games/openarena/files/patch-code__unix__unix_main.c b/games/openarena/files/patch-code__unix__unix_main.c
new file mode 100644
index 000000000000..f539c9649a95
--- /dev/null
+++ b/games/openarena/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 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 --git a/games/openarena/pkg-descr b/games/openarena/pkg-descr
new file mode 100644
index 000000000000..a3fb8984bf8b
--- /dev/null
+++ b/games/openarena/pkg-descr
@@ -0,0 +1,10 @@
+OpenArena is an open-source content package for Quake III Arena licensed under
+the GPL, effectively creating a free stand-alone game. You do not need Quake
+III Arena to play this game.
+
+Bots were added starting in 0.6.0. They will spout taunts and everything!
+
+Concepts would be loose, so don't expect a remake of Klesk in his original
+Klesk form, or any direct remakes of any map/weapon/model.
+
+WWW: http://openarena.ws/
diff --git a/games/openarena/pkg-message b/games/openarena/pkg-message
new file mode 100644
index 000000000000..581f11640146
--- /dev/null
+++ b/games/openarena/pkg-message
@@ -0,0 +1,10 @@
+==============================================================================
+
+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.
+
+==============================================================================
diff --git a/games/openarena/pkg-plist b/games/openarena/pkg-plist
new file mode 100644
index 000000000000..a7b941999668
--- /dev/null
+++ b/games/openarena/pkg-plist
@@ -0,0 +1,23 @@
+%%DEDICATED%%bin/openarenaded
+%%CLIENT%%bin/openarena
+%%SMP%%bin/openarena-smp
+%%DATADIR%%/baseoa/pak0.pk3
+%%DATADIR%%/baseoa/pak1-maps.pk3
+%%DATADIR%%/baseoa/pak2-players-mature.pk3
+%%DATADIR%%/baseoa/pak2-players.pk3
+%%DATADIR%%/baseoa/pak3-music.pk3
+%%DATADIR%%/baseoa/pak4-textures.pk3
+%%DATADIR%%/baseoa/pak5-TA.pk3
+%%DATADIR%%/baseoa/pak6-misc.pk3
+%%DATADIR%%/baseoa/pak7-patch.pk3
+%%GAMELIBS%%%%LIBDIR%%/baseoa/cgame.so
+%%GAMELIBS%%%%LIBDIR%%/baseoa/qagame.so
+%%GAMELIBS%%%%LIBDIR%%/baseoa/ui.so
+%%GAMELIBS%%%%LIBDIR%%/missionpack/cgame.so
+%%GAMELIBS%%%%LIBDIR%%/missionpack/qagame.so
+%%GAMELIBS%%%%LIBDIR%%/missionpack/ui.so
+@dirrm %%DATADIR%%/baseoa
+@dirrm %%DATADIR%%
+%%GAMELIBS%%@dirrm %%LIBDIR%%/missionpack
+%%GAMELIBS%%@dirrm %%LIBDIR%%/baseoa
+%%GAMELIBS%%@dirrm %%LIBDIR%%