summaryrefslogtreecommitdiff
path: root/games/fuhquake
diff options
context:
space:
mode:
authorSergey A. Osokin <osa@FreeBSD.org>2003-09-01 11:52:06 +0000
committerSergey A. Osokin <osa@FreeBSD.org>2003-09-01 11:52:06 +0000
commitaaba25b6be579a88f78743b40d24f6e5233400e2 (patch)
treefc83cf6b56b5a70f0de303f9593d3e491339c37e /games/fuhquake
parentUpdate to 0.8.18. (diff)
Update port:
- Fixes build on 5.x with XMMS support enabled; - Fixes path where to look for XMMS binary; - Allows fuhquake to be run from any directory per kris' suggestion; - Adds WITH_SHAREWARE_DATA knob. Coupled with previous, this makes fuhquake playable right after install, yet allows it to be distributed on CDROM (since shareware data cannot be included, one must explicitly define this knob); - Properly utilizes EXTRACT_ONLY in Makefile and DOCSDIR in pkg-plist; - Removes EXTRACT_BEFORE_ARGS from Makefile since it's no longer needed; - Tells user about WITHOUT_XMMS knob, when XMMS bits are found; - Fixes palette problems on 24-bit depth with x11-renderer; - Fixes DGA mouse behavior on higher mouse rates when GLX-rendered. Submitted by: Alexey Dokuchaev <danfe@regency.nsu.ru> PR: 56085
Notes
Notes: svn path=/head/; revision=88267
Diffstat (limited to 'games/fuhquake')
-rw-r--r--games/fuhquake/Makefile35
-rw-r--r--games/fuhquake/distinfo3
-rw-r--r--games/fuhquake/files/patch-common.c11
-rw-r--r--games/fuhquake/files/patch-mp3_player.c21
-rw-r--r--games/fuhquake/files/patch-vid_glx.c15
-rw-r--r--games/fuhquake/files/patch-vid_x11.c131
-rw-r--r--games/fuhquake/pkg-message11
-rw-r--r--games/fuhquake/pkg-plist26
8 files changed, 227 insertions, 26 deletions
diff --git a/games/fuhquake/Makefile b/games/fuhquake/Makefile
index e081a4925d71..a6334e6ebe6b 100644
--- a/games/fuhquake/Makefile
+++ b/games/fuhquake/Makefile
@@ -7,6 +7,7 @@
PORTNAME= fuhquake
PORTVERSION= 0.28
+PORTREVISION= 1
CATEGORIES= games
MASTER_SITES= http://www.fuhquake.net/files/source/:src \
http://www.fuhquake.net/files/releases/:dat \
@@ -14,7 +15,16 @@ MASTER_SITES= http://www.fuhquake.net/files/source/:src \
DISTNAME= ${PORTNAME}-source-v${PORTVERSION}
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src \
${PORTNAME}-linux-v${PORTVERSION}${EXTRACT_SUFX}:dat \
- pak0.pak${EXTRACT_SUFX}:pak
+ pak0.pak:pak
+.if defined(WITH_SHAREWARE_DATA)
+DISTFILES+= q1-shareware-pak0.pak:pak
+PLIST_SUB+= SHAREWARE=""
+.else
+PLIST_SUB+= SHAREWARE="@comment "
+.endif
+
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} \
+ ${PORTNAME}-linux-v${PORTVERSION}${EXTRACT_SUFX}
MAINTAINER= danfe@regency.nsu.ru
COMMENT= An excellent QuakeWorld client
@@ -72,6 +82,12 @@ pre-everything::
.if !defined(WITHOUT_GLX)
@${ECHO_MSG} "Define WITHOUT_GLX to disable building of GLX client"
.endif
+.if defined(WITH_SHAREWARE_DATA)
+ @${ECHO_MSG} "Define WITH_SHAREWARE_DATA to install demo version game data"
+.endif
+.if !defined(WITHOUT_XMMS) && exists(${X11BASE}/lib/libxmms.so.3)
+ @${ECHO_MSG} "Define WITHOUT_XMMS to build without \`\`MP3 Player'' feature"
+.endif
.if !defined(WITH_OPTIMIZED_CFLAGS)
@${ECHO_MSG} "Define WITH_OPTIMIZED_CFLAGS to enable extra optimization options"
.endif
@@ -80,14 +96,17 @@ pre-everything::
.endif
MAKEFILE= ${FILESDIR}/Makefile
+USE_REINPLACE= yes
USE_ZIP= yes
-EXTRACT_BEFORE_ARGS+= -qo
WRKSRC= ${WRKDIR}/source
post-extract:
@${FIND} -E ${WRKDIR} -type f -iregex ".*\.(c|h|s|txt)" -exec ${FILESDIR}/fix^m.sh '{}' \;
@${CP} ${FILESDIR}/*.c ${WRKSRC}
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%%%BASEDIR%%%%|${DATADIR}|' ${WRKSRC}/common.c
+
do-build:
.if !defined(WITHOUT_X11)
@(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} clean x11)
@@ -105,11 +124,15 @@ do-install:
.for tgt in ${END_TARGETS}
${INSTALL_PROGRAM} ${WRKSRC}/${tgt} ${PREFIX}/bin
.endfor
- @${MKDIR} ${DATADIR}/qw
- @${MKDIR} ${DATADIR}/${PORTNAME}
+ @${MKDIR} ${DATADIR}/qw ${DATADIR}/${PORTNAME}
${INSTALL_DATA} ${WRKDIR}/qw/qwprogs.dat ${DATADIR}/qw
${INSTALL_DATA} ${WRKDIR}/qw/spprogs.dat ${DATADIR}/qw
- ${INSTALL_DATA} ${WRKDIR}/pak0.pak ${DATADIR}/${PORTNAME}
+ ${INSTALL_DATA} ${DISTDIR}/pak0.pak ${DATADIR}/${PORTNAME}
+.if defined(WITH_SHAREWARE_DATA)
+ @${MKDIR} ${DATADIR}/id1
+ ${INSTALL_DATA} ${DISTDIR}/q1-shareware-pak0.pak \
+ ${DATADIR}/id1/pak0.pak
+.endif
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
. for txt in benchmark config_manager crosshairs linux logitech mp3 \
@@ -120,6 +143,6 @@ do-install:
.endif
post-install:
- @${SED} -e 's#$${PREFIX}#${PREFIX}#g' ${PKGMESSAGE}
+ @${SED} -e 's|$${PREFIX}|${PREFIX}|g' ${PKGMESSAGE}
.include <bsd.port.mk>
diff --git a/games/fuhquake/distinfo b/games/fuhquake/distinfo
index c312d9c5eb48..46e7592cd5f9 100644
--- a/games/fuhquake/distinfo
+++ b/games/fuhquake/distinfo
@@ -1,3 +1,4 @@
MD5 (fuhquake-source-v0.28.zip) = 7e77a97a1e1524b289ffa6978ce5377e
MD5 (fuhquake-linux-v0.28.zip) = 72e99f8df1baab11e0492b7cee93fdd3
-MD5 (pak0.pak.zip) = eaedb54f2f0fabb1b621afb831185748
+MD5 (pak0.pak) = 2fa37c49cb1d3902d97cb82a1c96115a
+MD5 (q1-shareware-pak0.pak) = 5906e5998fc3d896ddaf5e6a62e03abb
diff --git a/games/fuhquake/files/patch-common.c b/games/fuhquake/files/patch-common.c
new file mode 100644
index 000000000000..34f60d192107
--- /dev/null
+++ b/games/fuhquake/files/patch-common.c
@@ -0,0 +1,11 @@
+--- common.c.orig Thu Aug 28 18:15:40 2003
++++ common.c Thu Aug 28 18:16:04 2003
+@@ -1512,7 +1512,7 @@
+ if ((i = COM_CheckParm ("-basedir")) && i < com_argc - 1)
+ Q_strncpyz (com_basedir, com_argv[i + 1], sizeof(com_basedir));
+ else
+- strcpy (com_basedir, ".");
++ strcpy (com_basedir, "%%%%BASEDIR%%%%");
+
+ for (i = 0; i < strlen(com_basedir); i++)
+ if (com_basedir[i] == '\\')
diff --git a/games/fuhquake/files/patch-mp3_player.c b/games/fuhquake/files/patch-mp3_player.c
index 986c0a1699f2..30218a638970 100644
--- a/games/fuhquake/files/patch-mp3_player.c
+++ b/games/fuhquake/files/patch-mp3_player.c
@@ -1,13 +1,26 @@
---- mp3_player.c.orig Wed May 21 17:18:36 2003
-+++ mp3_player.c Wed May 21 17:21:23 2003
-@@ -48,6 +48,7 @@
+--- mp3_player.c.orig Mon Sep 1 18:18:40 2003
++++ mp3_player.c Mon Sep 1 18:20:09 2003
+@@ -48,9 +48,10 @@
#ifdef __XMMS__
+#include <sys/signal.h>
#include <sys/wait.h>
- cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/local/bin"};
+-cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/local/bin"};
++cvar_t mp3_dir = {"mp3_xmms_dir", "/usr/X11R6/bin"};
+ cvar_t mp3_xmms_session = {"mp3_xmms_session", "0"};
+
+ #endif
+@@ -288,7 +289,7 @@
+ #define XMMS_COMMAND(Name, Param) \
+ void MP3_##Name##_f(void) { \
+ if (MP3_IsPlayerRunning()) { \
+- xmms_remote_##Param##(XMMS_SESSION); \
++ xmms_remote_##Param(XMMS_SESSION); \
+ } else { \
+ Com_Printf("%s\n", mp3_notrunning_msg); \
+ } \
@@ -769,7 +770,7 @@
#endif
diff --git a/games/fuhquake/files/patch-vid_glx.c b/games/fuhquake/files/patch-vid_glx.c
index 6c8185c62e47..ec2c6c6964de 100644
--- a/games/fuhquake/files/patch-vid_glx.c
+++ b/games/fuhquake/files/patch-vid_glx.c
@@ -1,5 +1,5 @@
---- vid_glx.c.orig Wed May 21 17:18:37 2003
-+++ vid_glx.c Mon Jun 2 20:04:34 2003
+--- vid_glx.c.orig Thu Aug 28 18:08:22 2003
++++ vid_glx.c Thu Aug 28 18:08:03 2003
@@ -20,7 +20,9 @@
#include <termios.h>
#include <sys/ioctl.h>
@@ -10,6 +10,17 @@
#include <stdarg.h>
#include <stdio.h>
#include <signal.h>
+@@ -284,8 +286,8 @@
+ case MotionNotify:
+ #ifdef WITH_DGA
+ if (dgamouse && _windowed_mouse.value) {
+- mouse_x = event.xmotion.x_root;
+- mouse_y = event.xmotion.y_root;
++ mouse_x += event.xmotion.x_root;
++ mouse_y += event.xmotion.y_root;
+ } else
+ #endif
+ {
@@ -601,8 +603,9 @@
#ifdef WITH_VMODE
// fullscreen
diff --git a/games/fuhquake/files/patch-vid_x11.c b/games/fuhquake/files/patch-vid_x11.c
new file mode 100644
index 000000000000..893e30d50a5a
--- /dev/null
+++ b/games/fuhquake/files/patch-vid_x11.c
@@ -0,0 +1,131 @@
+--- vid_x11.c.orig Mon Aug 25 21:01:40 2003
++++ vid_x11.c Mon Aug 25 21:10:09 2003
+@@ -21,7 +21,8 @@
+
+ #define _BSD
+
+-typedef unsigned short PIXEL;
++typedef unsigned short PIXEL16;
++typedef unsigned PIXEL24;
+
+ #include <ctype.h>
+ #include <sys/time.h>
+@@ -111,7 +112,8 @@
+ void (*vid_menukeyfn)(int key);
+ void VID_MenuKey (int key);
+
+-static PIXEL st2d_8to16table[256];
++static PIXEL16 st2d_8to16table[256];
++static PIXEL24 st2d_8to24table[256];
+ static int shiftmask_fl=0;
+ static long r_shift,g_shift,b_shift;
+ static unsigned long r_mask,g_mask,b_mask;
+@@ -132,8 +134,42 @@
+ shiftmask_fl = 1;
+ }
+
+-PIXEL xlib_rgb(int r,int g,int b) {
+- PIXEL p;
++PIXEL16 xlib_rgb16(int r,int g,int b) {
++ PIXEL16 p;
++
++ if (shiftmask_fl == 0)
++ shiftmask_init();
++ p = 0;
++
++ if (r_shift > 0) {
++ p = (r << (r_shift)) &r_mask;
++ } else if(r_shift<0) {
++ p = (r >> (-r_shift)) &r_mask;
++ } else {
++ p |= (r & r_mask);
++ }
++
++ if(g_shift>0) {
++ p |= (g << (g_shift)) &g_mask;
++ } else if(g_shift<0) {
++ p |= (g >> (-g_shift)) &g_mask;
++ } else {
++ p|=(g & g_mask);
++ }
++
++ if(b_shift > 0) {
++ p |= (b << (b_shift)) &b_mask;
++ } else if (b_shift < 0) {
++ p |= (b >> (-b_shift)) &b_mask;
++ } else {
++ p|=(b & b_mask);
++ }
++
++ return p;
++}
++
++PIXEL24 xlib_rgb24(int r,int g,int b) {
++ PIXEL24 p;
+
+ if (shiftmask_fl == 0)
+ shiftmask_init();
+@@ -169,20 +205,37 @@
+ void st2_fixup( XImage *framebuf, int x, int y, int width, int height) {
+ int xi,yi;
+ unsigned char *src;
+- PIXEL *dest;
++ PIXEL16 *dest;
+
+ if(x < 0 || y < 0)
+ return;
+
+ for (yi = y; yi < y + height; yi++) {
+ src = &framebuf->data [yi * framebuf->bytes_per_line];
+- dest = (PIXEL*)src;
++ dest = (PIXEL16 *)src;
+ for(xi = (x + width - 1); xi >= x; xi--) {
+ dest[xi] = st2d_8to16table[src[xi]];
+ }
+ }
+ }
+
++void st3_fixup( XImage *framebuf, int x, int y, int width, int height) {
++ int xi,yi;
++ unsigned char *src;
++ PIXEL24 *dest;
++
++ if(x < 0 || y < 0)
++ return;
++
++ for (yi = y; yi < y + height; yi++) {
++ src = &framebuf->data [yi * framebuf->bytes_per_line];
++ dest = (PIXEL24 *)src;
++ for(xi = (x + width - 1); xi >= x; xi--) {
++ dest[xi] = st2d_8to24table[src[xi]];
++ }
++ }
++}
++
+ // ========================================================================
+ // Tragic death handler
+ // ========================================================================
+@@ -564,8 +617,10 @@
+ int i;
+ XColor colors[256];
+
+- for (i = 0; i < 256; i++)
+- st2d_8to16table[i]= xlib_rgb(palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]);
++ for (i = 0; i < 256; i++) {
++ st2d_8to24table[i]= xlib_rgb24(palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]);
++ st2d_8to16table[i]= xlib_rgb16(palette[i * 3], palette[i * 3 + 1], palette[i * 3 + 2]);
++ }
+
+ if (x_visinfo->class == PseudoColor && x_visinfo->depth == 8) {
+ if (palette != current_palette)
+@@ -821,7 +876,9 @@
+
+ if (doShm) {
+ while (rects){
+- if (x_visinfo->depth != 8)
++ if (x_visinfo->depth == 24)
++ st3_fixup( x_framebuffer[current_framebuffer], rects->x, rects->y, rects->width, rects->height);
++ else if (x_visinfo->depth == 16)
+ st2_fixup( x_framebuffer[current_framebuffer], rects->x, rects->y, rects->width, rects->height);
+ if (!XShmPutImage(x_disp, x_win, x_gc,
+ x_framebuffer[current_framebuffer], rects->x, rects->y, rects->x, rects->y, rects->width, rects->height, True))
diff --git a/games/fuhquake/pkg-message b/games/fuhquake/pkg-message
index 48041f03ad08..aa4460a8574c 100644
--- a/games/fuhquake/pkg-message
+++ b/games/fuhquake/pkg-message
@@ -1,6 +1,15 @@
================================================
Install models, skins, maps, and mods in
- ${PREFIX}/share/fuhquake/
+ ${DATADIR}/ directory.
+
+ You must also have registered version of
+ Quake per to be able to legally copy the
+ PAK files (pak*.pak) from id1/ directory
+ to ${DATADIR}/id1/ from CDROM or Windows
+ installation. In case it is not an opt-
+ ion, you can rebuild the port with "make
+ -DWITH_SHAREWARE_DATA", and thus install
+ demo version (shareware) data files.
================================================
diff --git a/games/fuhquake/pkg-plist b/games/fuhquake/pkg-plist
index 793477bfff46..ba48e6db5c5b 100644
--- a/games/fuhquake/pkg-plist
+++ b/games/fuhquake/pkg-plist
@@ -1,21 +1,23 @@
%%X11%%bin/fuhquake-x11
%%GLX%%bin/fuhquake-glx
%%SVGA%%bin/fuhquake-svga
-%%PORTDOCS%%share/doc/fuhquake/benchmark.txt
-%%PORTDOCS%%share/doc/fuhquake/config_manager.txt
-%%PORTDOCS%%share/doc/fuhquake/crosshairs.txt
-%%PORTDOCS%%share/doc/fuhquake/fuhquake.txt
-%%PORTDOCS%%share/doc/fuhquake/linux.txt
-%%PORTDOCS%%share/doc/fuhquake/logitech.txt
-%%PORTDOCS%%share/doc/fuhquake/mp3.txt
-%%PORTDOCS%%share/doc/fuhquake/particles.txt
-%%PORTDOCS%%share/doc/fuhquake/pointing.txt
-%%PORTDOCS%%share/doc/fuhquake/rulesets.txt
-%%PORTDOCS%%share/doc/fuhquake/track.txt
-%%PORTDOCS%%@dirrm share/doc/fuhquake
+%%PORTDOCS%%%%DOCSDIR%%/benchmark.txt
+%%PORTDOCS%%%%DOCSDIR%%/config_manager.txt
+%%PORTDOCS%%%%DOCSDIR%%/crosshairs.txt
+%%PORTDOCS%%%%DOCSDIR%%/fuhquake.txt
+%%PORTDOCS%%%%DOCSDIR%%/linux.txt
+%%PORTDOCS%%%%DOCSDIR%%/logitech.txt
+%%PORTDOCS%%%%DOCSDIR%%/mp3.txt
+%%PORTDOCS%%%%DOCSDIR%%/particles.txt
+%%PORTDOCS%%%%DOCSDIR%%/pointing.txt
+%%PORTDOCS%%%%DOCSDIR%%/rulesets.txt
+%%PORTDOCS%%%%DOCSDIR%%/track.txt
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
share/fuhquake/fuhquake/pak0.pak
+%%SHAREWARE%%share/fuhquake/id1/pak0.pak
share/fuhquake/qw/qwprogs.dat
share/fuhquake/qw/spprogs.dat
@dirrm share/fuhquake/qw
+%%SHAREWARE%%@dirrm share/fuhquake/id1
@dirrm share/fuhquake/fuhquake
@dirrm share/fuhquake