Index: games/ioquake3/Makefile =================================================================== --- games/ioquake3/Makefile +++ games/ioquake3/Makefile @@ -2,12 +2,9 @@ # $FreeBSD$ PORTNAME?= ioquake3 -PORTVERSION?= ${IOQUAKE3VER} -PORTREVISION?= 15 +DISTVERSION?= 2930 +PORTREVISION?= 0 CATEGORIES= games -MASTER_SITES?= http://ioquake3.org/files/${DISTVERSION}/ -# Using zip this way enables slaves to override it. -EXTRACT_SUFX?= .zip MAINTAINER?= kami@FreeBSD.org COMMENT?= Cleaned-up and enhanced version of Quake 3 @@ -15,13 +12,19 @@ LICENSE?= GPLv2 LICENSE_FILE?= ${WRKSRC}/COPYING.txt -USES= pkgconfig gmake +USES+= pkgconfig gmake + +.ifndef(MASTER_SITES) +USE_GITHUB?= yes +GH_ACCOUNT?= lonkamikaze +GH_PROJECT?= ioq3-freebsd +.endif # Port configuration flags: # CLIENT SERVER TOOLS DLRENDERER GAMELIBS OPUS OPENGL2 -IOQ3?= CLIENT TOOLS GAMELIBS -IOQ3ARCH?= ${ARCH} -IOQ3SDL?= sdl +IOQ3?= CLIENT TOOLS DLRENDERER GAMELIBS OPUS OPENGL2 +IOQ3ARCH?= ${ARCH:S/i386/x86/:S/amd64/x86_64/} +IOQ3SDL?= sdl2 .if ! ${IOQ3:MCLIENT} && ! ${IOQ3:MSERVER} BROKEN= Slave ports must at least specify IOQ3=CLIENT or IOQ3=SERVER @@ -29,20 +32,21 @@ # Client options .if ${IOQ3:MCLIENT} -OPTIONS_DEFINE= SERVER CURL OPENAL MUMBLE VORBIS DEBUG +OPTIONS_DEFINE= SERVER CURL OPENAL MUMBLE VORBIS OPTIONS_DEFAULT= SERVER CURL OPENAL MUMBLE VORBIS SERVER_DESC= Install dedicated server MUMBLE_DESC= Enable Mumble support (no dependencies) USE_GL+= gl .endif IOQ3_OPTIONS= ${IOQ3:MTOOLS} ${IOQ3:MDLRENDERER} ${IOQ3:MGAMELIBS} \ - ${IOQ3:MOPUS} -OPTIONS_DEFINE+= ${IOQ3_OPTIONS} DOCS + ${IOQ3:MGAMELIBS:S/LIBS$$/QVMS/} ${IOQ3:MOPUS} +OPTIONS_DEFINE+= ${IOQ3_OPTIONS} DEBUG DOCS OPTIONS_DEFAULT+= ${IOQ3_OPTIONS} TOOLS_DESC= Enable modding tools DLRENDERER_DESC= Build dynamically loaded renderer GAMELIBS_DESC= Build game libraries +GAMEQVMS_DESC= Build game VMs MAKE_ARGS+= DEFAULT_BASEDIR="${Q3DIR}" \ DEFAULT_LIBDIR="${PREFIX}/${LIBDIR}" \ @@ -64,9 +68,10 @@ q3cpp \ q3lcc \ q3rcc -Q3DOCS?= README \ +Q3DOCS?= README.md \ id-readme.txt \ md4-readme.txt \ + opengl2-readme.md \ voip-readme.txt Q3BASE?= baseq3 \ missionpack @@ -108,24 +113,14 @@ MUMBLE_MAKE_ARGS_OFF= USE_MUMBLE=0 GAMELIBS_MAKE_ARGS= BUILD_GAME_SO=1 GAMELIBS_MAKE_ARGS_OFF= BUILD_GAME_SO=0 -# Note that SMP is only supported on OS-X, hence the option has been removed. -SMP_VARS= Q3BIN+=${Q3CLIENT}-smp -SMP_MAKE_ARGS= BUILD_CLIENT_SMP=1 -SMP_MAKE_ARGS_OFF= BUILD_CLIENT_SMP=0 DLRENDERER_MAKE_ARGS= USE_RENDERER_DLOPEN=1 DLRENDERER_MAKE_ARGS_OFF= USE_RENDERER_DLOPEN=0 .include -.if !defined(DESKTOP_ENTRIES) -. if ${IOQ3:MCLIENT} -DESKTOP_ENTRIES+= "${Q3CLIENT} ${Q3ENGINEVER}" "${COMMENT}" \ +.if ${IOQ3:MCLIENT} +DESKTOP_ENTRIES?= "${Q3CLIENT} ${Q3ENGINEVER}" "${COMMENT}" \ "${Q3ICON}" "${Q3CLIENT}${BINSUFFIX}" "Game;" false -. endif -. if ${PORT_OPTIONS:MSMP} -DESKTOP_ENTRIES+= "${Q3CLIENT} ${Q3ENGINEVER} SMP" "${COMMENT}" \ - "${Q3ICON}" "${Q3CLIENT}-smp${BINSUFFIX}" "Game;" false -. endif .endif .if ${IOQ3:MCLIENT} @@ -148,6 +143,16 @@ MAKE_ARGS+= USE_INTERNAL_OGG=0 .endif +.if ${PORT_OPTIONS:MTOOLS} || ${PORT_OPTIONS:MGAMEQVMS} +MAKE_ARGS+= BUILD_GAME_QVM=1 +.else +MAKE_ARGS+= BUILD_GAME_QVM=0 +.endif + +.if ${PORT_OPTIONS:MDLRENDERER} && ${IOQ3:MOPENGL2} +SUB_FILES?= pkg-message +.endif + # Generate a set of install instruction tuples: ;; .for bin in ${Q3BIN} IOQ3_INST+= PROGRAM;${bin}.${IOQ3ARCH};bin/${bin}${BINSUFFIX} @@ -174,6 +179,17 @@ . endfor . endfor .endif +.if ${PORT_OPTIONS:MGAMEQVMS} +. for dir in ${Q3BASE} +.if !${PORT_OPTIONS:MGAMELIBS} +PLIST_DIRS+= ${LIBDIR}/${dir} +.endif +PLIST_DIRS+= ${LIBDIR}/${dir}/vm +. for lib in ${Q3GAMELIBS} +IOQ3_INST+= DATA;${dir}/vm/${lib}.qvm;${LIBDIR}/${dir}/vm/${lib}.qvm +. endfor +. endfor +.endif .if ${PORT_OPTIONS:MDLRENDERER} || ${PORT_OPTIONS:MGAMELIBS} PLIST_DIRS+= ${LIBDIR} .endif Index: games/ioquake3/distinfo =================================================================== --- games/ioquake3/distinfo +++ games/ioquake3/distinfo @@ -1,2 +1,3 @@ -SHA256 (ioquake3-1.36.zip) = 3f8fecd81f9af484b9215df4cf58bcc6a378adb6f1504b0bba169c3dbadb4c94 -SIZE (ioquake3-1.36.zip) = 4583577 +TIMESTAMP = 1494409743 +SHA256 (lonkamikaze-ioq3-freebsd-2930_GH0.tar.gz) = c8a21a91e238265585096cc167822738947bf7b06d3c2df9f9b888780cb92136 +SIZE (lonkamikaze-ioq3-freebsd-2930_GH0.tar.gz) = 11577186 Index: games/ioquake3/files/patch-Makefile =================================================================== --- games/ioquake3/files/patch-Makefile +++ /dev/null @@ -1,162 +0,0 @@ ---- Makefile.orig 2009-04-22 18:54:48 UTC -+++ Makefile -@@ -187,6 +187,8 @@ ifeq ($(shell which pkg-config > /dev/nu - # FIXME: introduce CLIENT_CFLAGS - SDL_CFLAGS=$(shell pkg-config --cflags sdl|sed 's/-Dmain=SDL_main//') - SDL_LIBS=$(shell pkg-config --libs sdl) -+ VORBIS_CFLAGS=$(shell pkg-config --silence-errors --cflags vorbis vorbisfile) -+ VORBIS_LIBS=$(shell pkg-config --silence-errors --libs vorbis vorbisfile) - endif - - # version info -@@ -521,44 +523,25 @@ else # ifeq mingw32 - - 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 \ -- -DUSE_ICON $(shell sdl-config --cflags) -- -- ifeq ($(USE_OPENAL),1) -- BASE_CFLAGS += -DUSE_OPENAL -- ifeq ($(USE_OPENAL_DLOPEN),1) -- BASE_CFLAGS += -DUSE_OPENAL_DLOPEN -- endif -- endif -- -- ifeq ($(USE_CODEC_VORBIS),1) -- BASE_CFLAGS += -DUSE_CODEC_VORBIS -- 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 -- endif -- endif -+ ifndef HOMEPATH -+ HOMEPATH = /.ioquake3 -+ endif -+ -+ ifndef DEFAULT_LIBDIR -+ DEFAULT_LIBDIR = /usr/local/lib/ioquake3 -+ endif -+ -+ # 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 -+ CLIENT_CFLAGS += $(SDL_CFLAGS) -+ HAVE_VM_COMPILED = true - -- DEBUG_CFLAGS=$(BASE_CFLAGS) -g -+ OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer -+ OPTIMIZE = $(OPTIMIZEVM) -ffast-math - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC -@@ -568,20 +551,52 @@ ifeq ($(PLATFORM),freebsd) - # don't need -ldl (FreeBSD) - LIBS=-lm - -- CLIENT_LIBS = -- -- CLIENT_LIBS += $(shell sdl-config --libs) -lGL -+ CLIENT_LIBS = $(SDL_LIBS) -lGL - -+ # optional features/libraries - ifeq ($(USE_OPENAL),1) -- ifneq ($(USE_OPENAL_DLOPEN),1) -- CLIENT_LIBS += $(THREAD_LIBS) -lopenal -+ CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) -+ CLIENT_CFLAGS += -DUSE_OPENAL -+ ifneq ($(USE_LOCAL_HEADERS),1) -+ CLIENT_CFLAGS += $(OPENAL_CFLAGS) -+ endif -+ endif -+ -+ ifeq ($(USE_CURL),1) -+ CLIENT_LIBS += $(CURL_LIBS) -+ CLIENT_CFLAGS += -DUSE_CURL -+ ifneq ($(USE_LOCAL_HEADERS),1) -+ CLIENT_CFLAGS += $(CURL_CFLAGS) - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) -- CLIENT_LIBS += -lvorbisfile -lvorbis -logg -+ CLIENT_LIBS += $(VORBIS_LIBS) -+ CLIENT_CFLAGS += -DUSE_CODEC_VORBIS -+ ifneq ($(USE_LOCAL_HEADERS),1) -+ CLIENT_CFLAGS += $(VORBIS_CFLAGS) -+ endif - endif - -+ ifeq ($(BUILD_CLIENT),1) -+ BASE_CFLAGS += $(CLIENT_CFLAGS) -+ 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 -+ -+ RELEASE_CFLAGS = $(BASE_CFLAGS) -+ DEBUG_CFLAGS = $(BASE_CFLAGS) -g -+ - else # ifeq freebsd - - ############################################################################# -@@ -831,7 +846,7 @@ endif - ifeq ($(USE_VOIP),1) - BASE_CFLAGS += -DUSE_VOIP - ifeq ($(USE_INTERNAL_SPEEX),1) -- BASE_CFLAGS += -DFLOATING_POINT -DUSE_ALLOCA -I$(SPEEXDIR)/include -+ BASE_CFLAGS := -I$(SPEEXDIR)/include -DFLOATING_POINT -DUSE_ALLOCA $(BASE_CFLAGS) - else - CLIENT_LIBS += -lspeex - endif -@@ -1442,6 +1457,9 @@ ifeq ($(HAVE_VM_COMPILED),true) - 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 -@@ -1591,6 +1609,9 @@ ifeq ($(HAVE_VM_COMPILED),true) - 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 Index: games/ioquake3/files/patch-README =================================================================== --- games/ioquake3/files/patch-README +++ /dev/null @@ -1,11 +0,0 @@ ---- README.orig 2009-04-08 03:36:16 UTC -+++ README -@@ -79,6 +79,8 @@ Makefile.local: - CFLAGS - use this for custom CFLAGS - V - set to show cc command line when building - DEFAULT_BASEDIR - extra path to search for baseq3 and such -+ DEFAULT_LIBDIR - extra path to search for libraries (FreeBSD only) -+ HOMEPATH - alternative home directory (FreeBSD only) - BUILD_SERVER - build the 'ioq3ded' server binary - BUILD_CLIENT - build the 'ioquake3' client binary - BUILD_CLIENT_SMP - build the 'ioquake3-smp' client binary Index: games/ioquake3/files/patch-code-client-snd_openal.c =================================================================== --- games/ioquake3/files/patch-code-client-snd_openal.c +++ /dev/null @@ -1,11 +0,0 @@ ---- code/client/snd_openal.c.orig 2009-03-15 12:39:53 UTC -+++ code/client/snd_openal.c -@@ -1719,7 +1719,7 @@ static cvar_t *s_alCapture; - #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 - - /* Index: games/ioquake3/files/patch-code-qcommon-files.c =================================================================== --- games/ioquake3/files/patch-code-qcommon-files.c +++ /dev/null @@ -1,18 +0,0 @@ ---- code/qcommon/files.c.orig 2009-02-26 13:02:59 UTC -+++ code/qcommon/files.c -@@ -241,6 +241,7 @@ static cvar_t *fs_apppath; - #endif - - static cvar_t *fs_basepath; -+static cvar_t *fs_libpath; - static cvar_t *fs_basegame; - static cvar_t *fs_gamedirvar; - static searchpath_t *fs_searchpaths; -@@ -2761,6 +2762,7 @@ static void FS_Startup( const char *game - fs_debug = Cvar_Get( "fs_debug", "0", 0 ); - fs_basepath = Cvar_Get ("fs_basepath", Sys_DefaultInstallPath(), CVAR_INIT ); - fs_basegame = Cvar_Get ("fs_basegame", "", CVAR_INIT ); -+ fs_libpath = Cvar_Get ("fs_libpath", Sys_DefaultLibPath(), CVAR_INIT ); - homePath = Sys_DefaultHomePath(); - if (!homePath || !homePath[0]) { - homePath = fs_basepath->string; Index: games/ioquake3/files/patch-code-qcommon-q_platform.h =================================================================== --- games/ioquake3/files/patch-code-qcommon-q_platform.h +++ /dev/null @@ -1,11 +0,0 @@ ---- code/qcommon/q_platform.h.orig 2009-03-02 17:29:30 UTC -+++ code/qcommon/q_platform.h -@@ -199,6 +199,8 @@ Foundation, Inc., 51 Franklin St, Fifth - - #ifdef __i386__ - #define ARCH_STRING "i386" -+#elif defined __amd64__ -+#define ARCH_STRING "amd64" - #elif defined __axp__ - #define ARCH_STRING "alpha" - #endif Index: games/ioquake3/files/patch-code-qcommon-qcommon.h =================================================================== --- games/ioquake3/files/patch-code-qcommon-qcommon.h +++ /dev/null @@ -1,12 +0,0 @@ ---- code/qcommon/qcommon.h.orig 2009-01-17 23:09:58 UTC -+++ code/qcommon/qcommon.h -@@ -1069,6 +1069,9 @@ char *Sys_DefaultInstallPath(void); - char *Sys_DefaultAppPath(void); - #endif - -+void Sys_SetDefaultLibPath(const char *path); -+char *Sys_DefaultLibPath(void); -+ - void Sys_SetDefaultHomePath(const char *path); - char *Sys_DefaultHomePath(void); - const char *Sys_Dirname( char *path ); Index: games/ioquake3/files/patch-code-qcommon-vm_interpreted.c =================================================================== --- games/ioquake3/files/patch-code-qcommon-vm_interpreted.c +++ /dev/null @@ -1,34 +0,0 @@ ---- code/qcommon/vm_interpreted.c.orig 2008-08-23 22:45:30 UTC -+++ code/qcommon/vm_interpreted.c -@@ -526,18 +526,20 @@ nextInstruction2: - - //VM_LogSyscalls( (int *)&image[ programStack + 4 ] ); - { -- intptr_t* argptr = (intptr_t *)&image[ programStack + 4 ]; -- #if __WORDSIZE == 64 -- // the vm has ints on the stack, we expect -- // longs so we have to convert it -- intptr_t argarr[16]; -- int i; -- for (i = 0; i < 16; ++i) { -- argarr[i] = *(int*)&image[ programStack + 4 + 4*i ]; -+ // the vm has ints on the stack, we expect -+ // pointers so we might have to convert it -+ if (sizeof(intptr_t) != sizeof(int)) { -+ intptr_t argarr[16]; -+ int *imagePtr = (int *)&image[programStack]; -+ int i; -+ for (i = 0; i < 16; ++i) { -+ argarr[i] = *(++imagePtr); -+ } -+ r = vm->systemCall( argarr ); -+ } else { -+ intptr_t* argptr = (intptr_t *)&image[ programStack + 4 ]; -+ r = vm->systemCall( argptr ); - } -- argptr = argarr; -- #endif -- r = vm->systemCall( argptr ); - } - - #ifdef DEBUG_VM Index: games/ioquake3/files/patch-code-qcommon-vm_x86.c =================================================================== --- games/ioquake3/files/patch-code-qcommon-vm_x86.c +++ /dev/null @@ -1,41 +0,0 @@ ---- code/qcommon/vm_x86.c.orig 2008-08-17 23:22:06 UTC -+++ code/qcommon/vm_x86.c -@@ -36,7 +36,25 @@ Foundation, Inc., 51 Franklin St, Fifth - - /* 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 - -@@ -90,7 +108,11 @@ void AsmCall(void); - static void (*const asmCallPtr)(void) = AsmCall; - - -+#ifdef __clang__ -+ int callMask = 0; -+#else - static int callMask = 0; -+#endif - - static int instruction, pass; - static int lastConst = 0; Index: games/ioquake3/files/patch-code-qcommon-vm_x86_64.c =================================================================== --- games/ioquake3/files/patch-code-qcommon-vm_x86_64.c +++ /dev/null @@ -1,11 +0,0 @@ ---- code/qcommon/vm_x86_64.c.orig 2008-08-06 16:09:29 UTC -+++ code/qcommon/vm_x86_64.c -@@ -246,7 +246,7 @@ void emit(const char* fmt, ...) - #else - #define JMPIARG \ - emit("movq $%lu, %%rax", vm->codeBase+vm->instructionPointers[iarg]); \ -- emit("jmpq *%rax"); -+ emit("jmpq *%%rax"); - #endif - - // integer compare and jump Index: games/ioquake3/files/patch-code-sys-sys_main.c =================================================================== --- games/ioquake3/files/patch-code-sys-sys_main.c +++ /dev/null @@ -1,94 +0,0 @@ ---- code/sys/sys_main.c.orig 2009-03-02 22:26:36 UTC -+++ code/sys/sys_main.c -@@ -49,6 +49,7 @@ Foundation, Inc., 51 Franklin St, Fifth - - static char binaryPath[ MAX_OSPATH ] = { 0 }; - static char installPath[ MAX_OSPATH ] = { 0 }; -+static char libPath[ MAX_OSPATH ] = { 0 }; - - /* - ================= -@@ -95,6 +96,30 @@ char *Sys_DefaultInstallPath(void) - - /* - ================= -+Sys_SetDefaultLibPath -+================= -+*/ -+void Sys_SetDefaultLibPath(const char *path) -+{ -+ Q_strncpyz(libPath, path, sizeof(libPath)); -+} -+ -+/* -+================= -+Sys_DefaultLibPath -+================= -+*/ -+char *Sys_DefaultLibPath(void) -+{ -+ if (*libPath) -+ return libPath; -+ else -+ return Sys_Cwd(); -+} -+ -+ -+/* -+================= - Sys_DefaultAppPath - ================= - */ -@@ -384,6 +409,7 @@ Used to load a development dll instead o - #1 look down current path - #2 look in fs_homepath - #3 look in fs_basepath -+#4 look in fs_libpath - ================= - */ - void *Sys_LoadDll( const char *name, char *fqpath , -@@ -394,6 +420,7 @@ void *Sys_LoadDll( const char *name, cha - void (*dllEntry)( intptr_t (*syscallptr)(intptr_t, ...) ); - char fname[MAX_OSPATH]; - char *basepath; -+ char *libpath; - char *homepath; - char *pwdpath; - char *gamedir; -@@ -405,6 +432,7 @@ void *Sys_LoadDll( const char *name, cha - // TODO: use fs_searchpaths from files.c - pwdpath = Sys_Cwd(); - basepath = Cvar_VariableString( "fs_basepath" ); -+ libpath = Cvar_VariableString( "fs_libpath" ); - homepath = Cvar_VariableString( "fs_homepath" ); - gamedir = Cvar_VariableString( "fs_game" ); - -@@ -413,6 +441,9 @@ void *Sys_LoadDll( const char *name, cha - if(!libHandle && homepath) - libHandle = Sys_TryLibraryLoad(homepath, gamedir, fname, fqpath); - -+ if(!libHandle && libpath) -+ libHandle = Sys_TryLibraryLoad(libpath, gamedir, fname, fqpath); -+ - if(!libHandle && basepath) - libHandle = Sys_TryLibraryLoad(basepath, gamedir, fname, fqpath); - -@@ -469,6 +500,10 @@ void Sys_ParseArgs( int argc, char **arg - # endif - #endif - -+#ifndef DEFAULT_LIBDIR -+# define DEFAULT_LIBDIR DEFAULT_BASEDIR -+#endif -+ - /* - ================= - Sys_SigHandler -@@ -540,6 +575,7 @@ int main( int argc, char **argv ) - Sys_ParseArgs( argc, argv ); - Sys_SetBinaryPath( Sys_Dirname( argv[ 0 ] ) ); - Sys_SetDefaultInstallPath( DEFAULT_BASEDIR ); -+ Sys_SetDefaultLibPath( DEFAULT_LIBDIR ); - - // Concatenate the command line for passing to Com_Init - for( i = 1; i < argc; i++ ) Index: games/ioquake3/files/patch-code-sys-sys_unix.c =================================================================== --- games/ioquake3/files/patch-code-sys-sys_unix.c +++ /dev/null @@ -1,13 +0,0 @@ ---- code/sys/sys_unix.c.orig 2008-11-10 23:55:22 UTC -+++ code/sys/sys_unix.c -@@ -53,7 +53,9 @@ char *Sys_DefaultHomePath(void) - if( ( p = getenv( "HOME" ) ) != NULL ) - { - Q_strncpyz( homePath, p, sizeof( homePath ) ); --#ifdef MACOS_X -+#ifdef HOMEPATH -+ Q_strcat( homePath, sizeof( homePath ), HOMEPATH ); -+#elif defined MACOS_X - Q_strcat( homePath, sizeof( homePath ), "/Library/Application Support/Quake3" ); - #else - Q_strcat( homePath, sizeof( homePath ), "/.q3a" ); Index: games/ioquake3/files/pkg-message.in =================================================================== --- /dev/null +++ games/ioquake3/files/pkg-message.in @@ -0,0 +1,5 @@ +The default renderer has switched to OpenGL2. Should you encounter +a performance drop with this update, you can return to the old +OpenGL1 rendere by executing: + + ioquake3 +seta cl_renderer opengl1 Index: games/ioquake3/pkg-message =================================================================== --- games/ioquake3/pkg-message +++ /dev/null @@ -1,7 +0,0 @@ -Should the game freeze when entering a match, try to change the value of -com_zoneMegs (e.g. to 48). - -The configuration files are saved to ~/.ioquake3 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.