summaryrefslogtreecommitdiff
path: root/games
diff options
context:
space:
mode:
authorAlejandro Pulver <alepulver@FreeBSD.org>2006-06-07 22:44:50 +0000
committerAlejandro Pulver <alepulver@FreeBSD.org>2006-06-07 22:44:50 +0000
commitdc462080a23b77abc5ba20b8015701f2cb9de770 (patch)
tree644a69f0d240700914316a708f1336b07fb19944 /games
parentThis project, icculus.org/quake3 (sometimes referred to ioquake3, or ioq3 for (diff)
Tremulous is a free, open source game that blends a team based FPS with
elements of an RTS. Players can choose from 2 unique races, aliens and humans. Players on both teams are able to build working structures in-game like an RTS. These structures provide many functions, the most important being spawning. The designated builders must ensure there are spawn structures or other players will not be able to rejoin the game after death. Other structures provide automated base defense (to some degree), healing functions and much more... Player advancement is different depending on which team you are on. As a human, players are rewarded with credits for each alien kill. These credits may be used to purchase new weapons and upgrades from the "Armoury". The alien team advances quite differently. Upon killing a human foe, the alien is able to evolve into a new class. The more kills gained the more powerful the classes available. The overall objective behind Tremulous is to eliminate the opposing team. This is achieved by not only killing the opposing players but also removing their ability to respawn by destroying their spawn structures. WWW: http://www.tremulous.net/
Notes
Notes: svn path=/head/; revision=164770
Diffstat (limited to 'games')
-rw-r--r--games/Makefile1
-rw-r--r--games/tremulous/Makefile164
-rw-r--r--games/tremulous/distinfo3
-rw-r--r--games/tremulous/files/extra-patch-src__unix__unix_shared.c24
-rw-r--r--games/tremulous/files/patch-Makefile302
-rw-r--r--games/tremulous/files/patch-src__master__Makefile22
-rw-r--r--games/tremulous/files/patch-src__qcommon__common.c10
-rw-r--r--games/tremulous/files/patch-src__qcommon__q_platform.h15
-rw-r--r--games/tremulous/files/patch-src__unix__linux_glimp.c20
-rw-r--r--games/tremulous/pkg-descr21
-rw-r--r--games/tremulous/pkg-plist20
11 files changed, 602 insertions, 0 deletions
diff --git a/games/Makefile b/games/Makefile
index 67c73d4a2372..011b5828df8e 100644
--- a/games/Makefile
+++ b/games/Makefile
@@ -650,6 +650,7 @@
SUBDIR += tractorgen
SUBDIR += traindirector
SUBDIR += tremor
+ SUBDIR += tremulous
SUBDIR += trigger
SUBDIR += trimines
SUBDIR += trojka
diff --git a/games/tremulous/Makefile b/games/tremulous/Makefile
new file mode 100644
index 000000000000..7215e35a95ad
--- /dev/null
+++ b/games/tremulous/Makefile
@@ -0,0 +1,164 @@
+# New ports collection makefile for: tremulous
+# Date created: 3 Jun 2006
+# Whom: alepulver
+#
+# $FreeBSD$
+#
+
+PORTNAME= tremulous
+PORTVERSION= 1.1.0
+CATEGORIES= games
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:S|$|${PORTNAME}/|} \
+ http://0day.icculus.org/mirrors/tremulous/ \
+ ftp://ftp.wireplay.co.uk/pub/quake3arena/mods/tremulous/ \
+ http://www.planetgloom.com/trem/
+
+MAINTAINER= alepulver@FreeBSD.org
+COMMENT= Free FPS game featuring two opposing teams, humans and aliens
+
+USE_ZIP= yes
+USE_GCC= 3.2+
+USE_GMAKE= yes
+WRKSRC= ${WRKDIR}/${PORTNAME}
+BUILD_WRKSRC= ${WRKSRC}/${DISTNAME}-src
+
+OPTIONS= CLIENT "Build client" on \
+ GAMELIBS "Build game libraries (when not mandatory)" off \
+ DEDICATED "Build dedicated server" on \
+ MASTER_SERVER "Build master server" 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="${DATADIR}" \
+ PTHREAD_LIBS="${PTHREAD_LIBS}"
+
+VM_ARCHS= amd64 i386 powerpc
+
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 500000
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src__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=""
+TRBIN+= tremulous
+.else
+PLIST_SUB+= CLIENT="@comment "
+.endif
+
+.if !defined(WITHOUT_DEDICATED)
+MAKE_ENV+= BUILD_SERVER=1
+PLIST_SUB+= DEDICATED=""
+TRBIN+= tremded
+.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_MASTER_SERVER)
+LIB_DEPENDS+= tdb.1:${PORTSDIR}/databases/tdb
+MAKE_ENV+= BUILD_MASTER_SERVER=1
+PLIST_SUB+= MASTER_SERVER=""
+.else
+PLIST_SUB+= MASTER_SERVER="@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=""
+TRBIN+= tremulous-smp
+.else
+PLIST_SUB+= SMP="@comment "
+.endif
+
+post-extract:
+ @cd ${WRKSRC} && ${TAR} zxf ${DISTNAME}-src.tar.gz
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|botlib\.log|/dev/null|' \
+ ${BUILD_WRKSRC}/src/botlib/be_interface.c
+.if ${OSVERSION} < 500000
+ @${REINPLACE_CMD} -e 's|stdint\.h|inttypes.h|' \
+ ${BUILD_WRKSRC}/src/qcommon/q_shared.h
+.endif
+
+do-install:
+.for bin in ${TRBIN}
+ ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/build/release/${bin} ${PREFIX}/bin
+.endfor
+.if defined(WITH_MASTER_SERVER)
+ ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/src/master/release/tremmaster \
+ ${PREFIX}/bin
+.endif
+ ${MKDIR} ${DATADIR}/base
+ ${INSTALL_DATA} ${WRKSRC}/base/* ${DATADIR}/base
+ ${MKDIR} ${PREFIX}/share/pixmaps
+ ${INSTALL_DATA} ${WRKSRC}/tremulous.xpm ${PREFIX}/share/pixmaps
+
+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
+
+.include <bsd.port.post.mk>
diff --git a/games/tremulous/distinfo b/games/tremulous/distinfo
new file mode 100644
index 000000000000..48f302dd64e8
--- /dev/null
+++ b/games/tremulous/distinfo
@@ -0,0 +1,3 @@
+MD5 (tremulous-1.1.0.zip) = 3df5f7565571fb9524656308347bce1b
+SHA256 (tremulous-1.1.0.zip) = c7bb66f55abc88932edee16c253e5d37f90dded2ce29cf6cb15ad4f78e378987
+SIZE (tremulous-1.1.0.zip) = 105821907
diff --git a/games/tremulous/files/extra-patch-src__unix__unix_shared.c b/games/tremulous/files/extra-patch-src__unix__unix_shared.c
new file mode 100644
index 000000000000..628935fa5e38
--- /dev/null
+++ b/games/tremulous/files/extra-patch-src__unix__unix_shared.c
@@ -0,0 +1,24 @@
+--- ./tremulous-1.1.0-src/src/unix/unix_shared.c.orig Sat Dec 10 17:19:52 2005
++++ ./tremulous-1.1.0-src/src/unix/unix_shared.c Wed Jun 7 16:59:51 2006
+@@ -22,6 +22,7 @@
+ */
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/sysctl.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <dirent.h>
+@@ -431,6 +432,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/tremulous/files/patch-Makefile b/games/tremulous/files/patch-Makefile
new file mode 100644
index 000000000000..270ac4aa5ab7
--- /dev/null
+++ b/games/tremulous/files/patch-Makefile
@@ -0,0 +1,302 @@
+--- ./tremulous-1.1.0-src/Makefile.orig Tue Mar 21 19:28:25 2006
++++ ./tremulous-1.1.0-src/Makefile Wed Jun 7 16:57:12 2006
+@@ -27,11 +27,20 @@
+ 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_MASTER_SERVER?=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
+
+ #############################################################################
+ #
+@@ -89,34 +98,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
+-
+-ifndef BUILD_MASTER_SERVER
+-BUILD_MASTER_SERVER=0
+-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
+@@ -412,18 +397,12 @@
+
+ ifeq ($(PLATFORM),freebsd)
+
+- ifneq (,$(findstring alpha,$(shell uname -m)))
+- ARCH=axp
+- else #default to x86
+- ARCH=x86
+- endif #alpha test
+-
+-
+- BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
++ BASE_CFLAGS = -I$(LOCALBASE)/include -DARCH='\"$(ARCH)\"' -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
+@@ -436,46 +415,62 @@
+ 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),x86)
+- 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
++
++ HAVE_VM_COMPILED?=false
++ 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
+
+@@ -637,21 +632,22 @@
+ TARGETS =
+
+ ifneq ($(BUILD_SERVER),0)
+- TARGETS += $(B)/tremded.$(ARCH)$(BINEXT)
++ TARGETS += $(B)/tremded$(BINEXT)
+ endif
+
+ ifneq ($(BUILD_CLIENT),0)
+- TARGETS += $(B)/tremulous.$(ARCH)$(BINEXT)
+- ifneq ($(BUILD_CLIENT_SMP),0)
+- TARGETS += $(B)/tremulous.$(ARCH)$(BINEXT)
+- endif
++ TARGETS += $(B)/tremulous$(BINEXT)
++endif
++
++ifneq ($(BUILD_CLIENT_SMP),0)
++ TARGETS += $(B)/tremulous-smp$(BINEXT)
+ endif
+
+ ifneq ($(BUILD_GAME_SO),0)
+ TARGETS += \
+- $(B)/base/cgame$(ARCH).$(SHLIBEXT) \
+- $(B)/base/game$(ARCH).$(SHLIBEXT) \
+- $(B)/base/ui$(ARCH).$(SHLIBEXT)
++ $(B)/base/cgame.$(SHLIBEXT) \
++ $(B)/base/game.$(SHLIBEXT) \
++ $(B)/base/ui.$(SHLIBEXT)
+ endif
+
+ ifneq ($(BUILD_GAME_QVM),0)
+@@ -709,14 +705,14 @@
+ endif
+
+ build_release: B=$(BR)
+-build_release: makedirs tools
++build_release: makedirs
+ $(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS) $(DEPEND_CFLAGS)"
+ ifeq ($(BUILD_MASTER_SERVER),1)
+ $(MAKE) -C $(MASTERDIR) release
+ endif
+
+ #Build both debug and release builds
+-all:build_debug build_release
++all:build_release
+
+ targets: $(TARGETS)
+
+@@ -901,7 +897,7 @@
+ $(B)/client/tr_surface.o \
+ $(B)/client/tr_world.o \
+
+-ifeq ($(ARCH),x86)
++ifeq ($(ARCH),i386)
+ Q3OBJ += $(B)/client/vm_x86.o
+ Q3OBJ += \
+ $(B)/client/snd_mixa.o \
+@@ -910,7 +906,7 @@
+ $(B)/client/snapvectora.o
+ endif
+
+-ifeq ($(ARCH),x86_64)
++ifeq ($(ARCH),amd64)
+ Q3OBJ += $(B)/client/vm_x86_64.o
+ endif
+
+@@ -962,10 +958,10 @@
+ $(B)/client/sdl_glimp_smp.o
+ endif
+
+-$(B)/tremulous.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
++$(B)/tremulous$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
+ $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+
+-$(B)/tremulous-smp.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
++$(B)/tremulous-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
+ $(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \
+ $(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
+
+@@ -1238,12 +1234,12 @@
+ $(B)/ded/null_input.o \
+ $(B)/ded/null_snddma.o
+
+-ifeq ($(ARCH),x86)
++ifeq ($(ARCH),i386)
+ Q3DOBJ += $(B)/ded/vm_x86.o $(B)/ded/ftola.o \
+ $(B)/ded/snapvectora.o $(B)/ded/matha.o
+ endif
+
+-ifeq ($(ARCH),x86_64)
++ifeq ($(ARCH),amd64)
+ Q3DOBJ += $(B)/ded/vm_x86_64.o
+ endif
+
+@@ -1253,7 +1249,7 @@
+ endif
+ endif
+
+-$(B)/tremded.$(ARCH)$(BINEXT): $(Q3DOBJ)
++$(B)/tremded$(BINEXT): $(Q3DOBJ)
+ $(CC) -o $@ $(Q3DOBJ) $(LDFLAGS)
+
+ $(B)/ded/sv_bot.o : $(SDIR)/sv_bot.c; $(DO_DED_CC)
+@@ -1374,7 +1370,7 @@
+ CGOBJ = $(CGOBJ_) $(B)/base/cgame/cg_syscalls.o
+ CGVMOBJ = $(CGOBJ_:%.o=%.asm) $(B)/base/game/bg_lib.asm
+
+-$(B)/base/cgame$(ARCH).$(SHLIBEXT) : $(CGOBJ)
++$(B)/base/cgame.$(SHLIBEXT) : $(CGOBJ)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(CGOBJ)
+
+ $(B)/base/vm/cgame.qvm: $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm
+@@ -1418,7 +1414,7 @@
+ GOBJ = $(GOBJ_) $(B)/base/game/g_syscalls.o
+ GVMOBJ = $(GOBJ_:%.o=%.asm) $(B)/base/game/bg_lib.asm
+
+-$(B)/base/game$(ARCH).$(SHLIBEXT) : $(GOBJ)
++$(B)/base/game.$(SHLIBEXT) : $(GOBJ)
+ $(CC) $(SHLIBLDFLAGS) -o $@ $(GOBJ)
+
+ $(B)/base/vm/game.qvm: $(GVMOBJ) $(GDIR)/g_syscalls.asm
+@@ -1444,7 +1440,7 @@
+ UIOBJ = $(UIOBJ_) $(B)/base/ui/ui_syscalls.o
+ UIVMOBJ = $(UIOBJ_:%.o=%.asm) $(B)/base/game/bg_lib.asm
+
+-$(B)/base/ui$(ARCH).$(SHLIBEXT) : $(UIOBJ)
++$(B)/base/ui.$(SHLIBEXT) : $(UIOBJ)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(UIOBJ)
+
+ $(B)/base/vm/ui.qvm: $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm
diff --git a/games/tremulous/files/patch-src__master__Makefile b/games/tremulous/files/patch-src__master__Makefile
new file mode 100644
index 000000000000..1b058b25e9b3
--- /dev/null
+++ b/games/tremulous/files/patch-src__master__Makefile
@@ -0,0 +1,22 @@
+--- ./tremulous-1.1.0-src/src/master/Makefile.orig Fri Jan 20 20:37:31 2006
++++ ./tremulous-1.1.0-src/src/master/Makefile Wed Jun 7 16:57:12 2006
+@@ -1,5 +1,5 @@
+ BD_DEBUG=debug-$(PLATFORM)-$(ARCH)
+-BD_RELEASE=release-$(PLATFORM)-$(ARCH)
++BD_RELEASE=release
+
+ ifeq ($(PLATFORM),mingw32)
+ BINEXT=.exe
+@@ -15,9 +15,11 @@
+ MKDIR=mkdir
+ endif
+
+-CC=gcc
++CC?=gcc
++CFLAGS+=-I$(LOCALBASE)/include
+ RELEASE_CFLAGS=-Wall -O2
+ DEBUG_CFLAGS=-g
++LDFLAGS+=-L$(LOCALBASE)/lib
+ OBJECTS= \
+ $(BD)/master.o \
+ $(BD)/messages.o \
diff --git a/games/tremulous/files/patch-src__qcommon__common.c b/games/tremulous/files/patch-src__qcommon__common.c
new file mode 100644
index 000000000000..ef840eb3844d
--- /dev/null
+++ b/games/tremulous/files/patch-src__qcommon__common.c
@@ -0,0 +1,10 @@
+--- ./tremulous-1.1.0-src/src/qcommon/common.c.orig Tue Feb 28 20:11:58 2006
++++ ./tremulous-1.1.0-src/src/qcommon/common.c Wed Jun 7 16:57:12 2006
+@@ -26,6 +26,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/tremulous/files/patch-src__qcommon__q_platform.h b/games/tremulous/files/patch-src__qcommon__q_platform.h
new file mode 100644
index 000000000000..7856b7e5be76
--- /dev/null
+++ b/games/tremulous/files/patch-src__qcommon__q_platform.h
@@ -0,0 +1,15 @@
+--- ./tremulous-1.1.0-src/src/qcommon/q_platform.h.orig Fri Jan 13 22:12:32 2006
++++ ./tremulous-1.1.0-src/src/qcommon/q_platform.h Wed Jun 7 16:57:12 2006
+@@ -177,11 +177,7 @@
+ #define ID_INLINE inline
+ #define PATH_SEP '/'
+
+-#ifdef __i386__
+-#define ARCH_STRING "x86"
+-#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/tremulous/files/patch-src__unix__linux_glimp.c b/games/tremulous/files/patch-src__unix__linux_glimp.c
new file mode 100644
index 000000000000..3fecc1909574
--- /dev/null
+++ b/games/tremulous/files/patch-src__unix__linux_glimp.c
@@ -0,0 +1,20 @@
+--- ./tremulous-1.1.0-src/src/unix/linux_glimp.c.orig Fri Mar 3 20:59:01 2006
++++ ./tremulous-1.1.0-src/src/unix/linux_glimp.c Wed Jun 7 16:57:12 2006
+@@ -619,8 +619,15 @@
+
+ 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/tremulous/pkg-descr b/games/tremulous/pkg-descr
new file mode 100644
index 000000000000..27e0d8f0dd58
--- /dev/null
+++ b/games/tremulous/pkg-descr
@@ -0,0 +1,21 @@
+Tremulous is a free, open source game that blends a team based FPS with
+elements of an RTS. Players can choose from 2 unique races, aliens and humans.
+Players on both teams are able to build working structures in-game like an
+RTS. These structures provide many functions, the most important being
+spawning. The designated builders must ensure there are spawn structures or
+other players will not be able to rejoin the game after death. Other
+structures provide automated base defense (to some degree), healing functions
+and much more...
+
+Player advancement is different depending on which team you are on. As a
+human, players are rewarded with credits for each alien kill. These credits
+may be used to purchase new weapons and upgrades from the "Armoury". The alien
+team advances quite differently. Upon killing a human foe, the alien is able
+to evolve into a new class. The more kills gained the more powerful the
+classes available.
+
+The overall objective behind Tremulous is to eliminate the opposing team. This
+is achieved by not only killing the opposing players but also removing their
+ability to respawn by destroying their spawn structures.
+
+WWW: http://www.tremulous.net/
diff --git a/games/tremulous/pkg-plist b/games/tremulous/pkg-plist
new file mode 100644
index 000000000000..922bf10bf823
--- /dev/null
+++ b/games/tremulous/pkg-plist
@@ -0,0 +1,20 @@
+%%DEDICATED%%bin/tremded
+%%MASTER_SERVER%%bin/tremmaster
+%%CLIENT%%bin/tremulous
+%%SMP%%bin/tremulous-smp
+share/pixmaps/tremulous.xpm
+%%DATADIR%%/base/data-1.1.0.pk3
+%%DATADIR%%/base/map-arachnid2-1.1.0.pk3
+%%DATADIR%%/base/map-atcs-1.1.0.pk3
+%%DATADIR%%/base/map-karith-1.1.0.pk3
+%%DATADIR%%/base/map-nexus6-1.1.0.pk3
+%%DATADIR%%/base/map-niveus-1.1.0.pk3
+%%DATADIR%%/base/map-transit-1.1.0.pk3
+%%DATADIR%%/base/map-tremor-1.1.0.pk3
+%%DATADIR%%/base/map-uncreation-1.1.0.pk3
+%%DATADIR%%/base/maprotation.cfg
+%%DATADIR%%/base/server.cfg
+%%DATADIR%%/base/vms-1.1.0.pk3
+@dirrmtry share/pixmaps
+@dirrm %%DATADIR%%/base
+@dirrm %%DATADIR%%