Enhaced OpenGL only Quake II engine.

WWW: http://egl.quakedev.com/

Approved by:	garga (mentor, implicitly)
This commit is contained in:
Alejandro Pulver 2006-05-25 18:44:00 +00:00
parent 42522c183f
commit 9f2d15ac29
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=163386
22 changed files with 1179 additions and 0 deletions

View file

@ -148,6 +148,7 @@
SUBDIR += easysok SUBDIR += easysok
SUBDIR += eboard SUBDIR += eboard
SUBDIR += editss SUBDIR += editss
SUBDIR += egl
SUBDIR += egoboo SUBDIR += egoboo
SUBDIR += eif SUBDIR += eif
SUBDIR += eights SUBDIR += eights

63
games/egl/Makefile Normal file
View file

@ -0,0 +1,63 @@
# New ports collection makefile for: egl
# Date created: 20 May 2006
# Whom: alepulver
#
# $FreeBSD$
#
PORTNAME= egl
PORTVERSION= 0.2.5
CATEGORIES= games
MASTER_SITES= http://egl.quakedev.com/files/:src \
ftp://ftp.alepulver.com.ar/ports/egl/:data
DISTNAME= ${PORTNAME}-v${PORTVERSION}-src
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:src \
egl.pkz:data
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= alepulver@FreeBSD.org
COMMENT= Enhaced OpenGL only Quake II engine
LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png
USE_ZIP= yes
USE_DOS2UNIX= yes
USE_GL= yes
USE_GMAKE= yes
NO_WRKSUBDIR= yes
OPTIONS= DEDICATED "Build dedicated server" on \
OPTIMIZED_CFLAGS "Enable compilation optimizations" on
MAKEFILE= makefile
MAKE_ENV= LIBDIR="${LIBDIR}" PTHREAD_LIBS="${PTHREAD_LIBS}"
PLIST_SUB= LIBDIR="${LIBDIR:S/${PREFIX}\///}"
LIBDIR= ${PREFIX}/lib/${PORTNAME}
.include "${.CURDIR}/../quake2-data/Makefile.include"
.include <bsd.port.pre.mk>
.if !defined(WITHOUT_DEDICATED)
PLIST_SUB+= DEDICATED=""
.else
MAKE_ENV+= BUILD_DEDICATED=NO
PLIST_SUB+= DEDICATED="@comment "
.endif
.if defined(WITHOUT_OPTIMIZED_CFLAGS)
MAKE_ENV+= WITH_OPT_CFLAGS=NO
.endif
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/release/egl ${PREFIX}/bin
.if !defined(WITHOUT_DEDICATED)
${INSTALL_PROGRAM} ${WRKSRC}/release/eglded ${PREFIX}/bin
.endif
${MKDIR} ${LIBDIR}/baseq2
${INSTALL_PROGRAM} ${WRKSRC}/release/baseq2/*.so ${LIBDIR}/baseq2
${INSTALL_DATA} ${DISTDIR}/egl.pkz ${LIBDIR}/baseq2
.include <bsd.port.post.mk>

6
games/egl/distinfo Normal file
View file

@ -0,0 +1,6 @@
MD5 (egl-v0.2.5-src.zip) = 1026746d24837d585015458c38775d46
SHA256 (egl-v0.2.5-src.zip) = 3ee9a001cb27b24971221203cc852d5eed8942f70861c0407ca78d5701881c1c
SIZE (egl-v0.2.5-src.zip) = 2128931
MD5 (egl.pkz) = 491e4c7c784a29c806e0dfd038eb3ddc
SHA256 (egl.pkz) = 4b925b38243508aba0c2ecd2a7f9b89ae29e4bfe0c15658295f8313d123341b7
SIZE (egl.pkz) = 9299043

View file

@ -0,0 +1,78 @@
--- ./cgame/menu/m_opts_sound.c.orig Tue May 23 20:05:59 2006
+++ ./cgame/menu/m_opts_sound.c Tue May 23 20:06:00 2006
@@ -60,7 +60,7 @@
uiList_t cdtoggle_toggle;
// openal
-/* uiAction_t al_header;
+ uiAction_t al_header;
uiSlider_t dopplerfactor_slider;
uiAction_t dopplerfactor_amount;
@@ -69,7 +69,7 @@
uiList_t al_extensions_toggle;
uiList_t al_ext_eax_toggle;
-*/
+
// software
uiAction_t sw_header;
uiList_t sw_quality_list;
@@ -94,14 +94,14 @@
static void ALDopFactorFunc (void *unused)
{
-// cgi.Cvar_SetValue ("al_dopplerfactor", m_soundMenu.dopplerfactor_slider.curValue * 0.1, qFalse);
-// m_soundMenu.dopplerfactor_amount.generic.name = cgi.Cvar_GetStringValue ("al_dopplerfactor");
+ cgi.Cvar_SetValue ("al_dopplerfactor", m_soundMenu.dopplerfactor_slider.curValue * 0.1, qFalse);
+ m_soundMenu.dopplerfactor_amount.generic.name = cgi.Cvar_GetStringValue ("al_dopplerfactor");
}
static void ALDopVelocityFunc (void *unused)
{
-// cgi.Cvar_SetValue ("al_dopplervelocity", m_soundMenu.dopplervelocity_slider.curValue * 100, qFalse);
-// m_soundMenu.dopplervelocity_amount.generic.name = cgi.Cvar_GetStringValue ("al_dopplervelocity");
+ cgi.Cvar_SetValue ("al_dopplervelocity", m_soundMenu.dopplervelocity_slider.curValue * 100, qFalse);
+ m_soundMenu.dopplervelocity_amount.generic.name = cgi.Cvar_GetStringValue ("al_dopplervelocity");
}
static void ALExtensionsFunc (void *unused)
@@ -152,8 +152,7 @@
*/
static void SoundMenu_SetValues (void)
{
-// cgi.Cvar_SetValue ("s_initSound", clamp (cgi.Cvar_GetIntegerValue ("s_initSound"), 0, 2), qTrue);
- cgi.Cvar_SetValue ("s_initSound", clamp (cgi.Cvar_GetIntegerValue ("s_initSound"), 0, 1), qTrue);
+ cgi.Cvar_SetValue ("s_initSound", clamp (cgi.Cvar_GetIntegerValue ("s_initSound"), 0, 2), qTrue);
m_soundMenu.sound_toggle.curValue = cgi.Cvar_GetIntegerValue ("s_initSound");
m_soundMenu.sfxvolume_slider.curValue = cgi.Cvar_GetFloatValue ("s_volume") * 20;
@@ -207,8 +206,8 @@
static char *soundinit_items[] = {
"off",
- "on",
-// "OpenAL [ EXPERIMENTAL ]",
+ "OSS",
+ "OpenAL [UNSTABLE]",
0
};
@@ -256,7 +255,7 @@
m_soundMenu.cdtoggle_toggle.generic.statusBar = "Toggle CD Play";
// openal
-/* m_soundMenu.al_header.generic.type = UITYPE_ACTION;
+ m_soundMenu.al_header.generic.type = UITYPE_ACTION;
m_soundMenu.al_header.generic.flags = UIF_NOSELECT|UIF_CENTERED|UIF_MEDIUM|UIF_SHADOW;
m_soundMenu.al_header.generic.name = "OpenAL Sound Settings";
@@ -289,7 +288,7 @@
m_soundMenu.al_ext_eax_toggle.generic.callBack = ALExtEAXFunc;
m_soundMenu.al_ext_eax_toggle.itemNames = soundinit_items;
m_soundMenu.al_ext_eax_toggle.generic.statusBar = "Toggle the OpenAL extension EAX 2.0";
-*/
+
// software
m_soundMenu.sw_header.generic.type = UITYPE_ACTION;
m_soundMenu.sw_header.generic.flags = UIF_NOSELECT|UIF_CENTERED|UIF_MEDIUM|UIF_SHADOW;

View file

@ -0,0 +1,129 @@
--- ./client/snd_main.c.orig Tue May 23 20:05:59 2006
+++ ./client/snd_main.c Tue May 23 20:06:00 2006
@@ -25,7 +25,8 @@
#include "snd_local.h"
qBool snd_isActive = qTrue;
-qBool snd_isInitialized;
+qBool snd_isFirstInit = qTrue;
+qBool snd_isInitialized = qFalse;
qBool snd_isDMA;
qBool snd_isAL;
@@ -870,7 +871,7 @@
int initTime;
if (snd_isInitialized)
- Snd_Shutdown ();
+ return;
Com_Printf (0, "\n--------- Sound Initialization ---------\n");
@@ -892,27 +893,44 @@
s_testsound = Cvar_Register ("s_testsound", "0", 0);
s_primary = Cvar_Register ("s_primary", "0", CVAR_ARCHIVE|CVAR_LATCH_AUDIO); // win32 specific
- al_allowExtensions = Cvar_Register ("al_allowExtensions", "1", CVAR_ARCHIVE|CVAR_LATCH_AUDIO);
- al_device = Cvar_Register ("al_device", "", CVAR_ARCHIVE);
- al_dopplerFactor = Cvar_Register ("al_dopplerFactor", "1", CVAR_ARCHIVE);
- al_dopplerVelocity = Cvar_Register ("al_dopplerVelocity", "16384", CVAR_ARCHIVE);
- al_driver = Cvar_Register ("al_driver", AL_DRIVERNAME, CVAR_ARCHIVE|CVAR_LATCH_AUDIO);
- al_errorCheck = Cvar_Register ("al_errorCheck", "1", CVAR_ARCHIVE);
- al_ext_eax2 = Cvar_Register ("al_ext_eax2", "1", CVAR_ARCHIVE|CVAR_LATCH_AUDIO);
- al_gain = Cvar_Register ("al_gain", "5", CVAR_ARCHIVE);
- al_minDistance = Cvar_Register ("al_minDistance", "100", CVAR_ARCHIVE);
- al_maxDistance = Cvar_Register ("al_maxDistance", "8192", CVAR_ARCHIVE);
- al_rollOffFactor = Cvar_Register ("al_rollOffFactor", "0.8", CVAR_ARCHIVE);
+ if (s_initSound->integer == 2) {
+ al_allowExtensions = Cvar_Register ("al_allowExtensions", "1", CVAR_ARCHIVE|CVAR_LATCH_AUDIO);
+ al_device = Cvar_Register ("al_device", "", CVAR_ARCHIVE);
+ al_dopplerFactor = Cvar_Register ("al_dopplerFactor", "1", CVAR_ARCHIVE);
+ al_dopplerVelocity = Cvar_Register ("al_dopplerVelocity", "16384", CVAR_ARCHIVE);
+ al_driver = Cvar_Register ("al_driver", AL_DRIVERNAME, CVAR_ARCHIVE|CVAR_LATCH_AUDIO);
+ al_errorCheck = Cvar_Register ("al_errorCheck", "1", CVAR_ARCHIVE);
+ al_ext_eax2 = Cvar_Register ("al_ext_eax2", "1", CVAR_ARCHIVE|CVAR_LATCH_AUDIO);
+ al_gain = Cvar_Register ("al_gain", "5", CVAR_ARCHIVE);
+ al_minDistance = Cvar_Register ("al_minDistance", "100", CVAR_ARCHIVE);
+ al_maxDistance = Cvar_Register ("al_maxDistance", "8192", CVAR_ARCHIVE);
+ al_rollOffFactor = Cvar_Register ("al_rollOffFactor", "0.8", CVAR_ARCHIVE);
+ }
+
+ /*
+ * We need to keep the snd_restart command even if the sound subsystem
+ * is not started, because there has to be a way to start it.
+ */
+ if (snd_isFirstInit) {
+ cmd_snd_restart = Cmd_AddCommand ("snd_restart", Snd_Restart_f, "Restarts the audio subsystem");
+ snd_isFirstInit = qFalse;
+ }
- cmd_snd_restart = Cmd_AddCommand ("snd_restart", Snd_Restart_f, "Restarts the audio subsystem");
cmd_play = Cmd_AddCommand ("play", Snd_Play_f, "Plays a sound");
cmd_stopSound = Cmd_AddCommand ("stopsound", Snd_StopAllSounds, "Stops all currently playing sounds");
cmd_soundList = Cmd_AddCommand ("soundlist", Snd_SoundList_f, "Prints out a list of loaded sound files");
cmd_soundInfo = Cmd_AddCommand ("soundinfo", Snd_SoundInfo_f, "Prints out information on sound subsystem");
+ /*
+ * Make Snd_Shutdown() abort the startup if necessary (it quits when
+ * the subsystem is not initialized, so make it think the opposite).
+ */
+ snd_isInitialized = qTrue;
+
if (!s_initSound->value) {
Com_Printf (0, "...not initializing\n");
Com_Printf (0, "----------------------------------------\n");
+ Snd_Shutdown();
return;
}
@@ -927,13 +945,13 @@
}
}
if (!snd_isAL) {
- if (!DMASnd_Init())
+ if (!DMASnd_Init()) {
+ Snd_Shutdown();
return;
+ }
snd_isDMA = qTrue;
}
- snd_isInitialized = qTrue;
-
Snd_StopAllSounds ();
Com_Printf (0, "----------------------------------------\n");
@@ -955,18 +973,19 @@
{
int size;
- Cmd_RemoveCommand ("snd_restart", cmd_snd_restart);
+ if (!snd_isInitialized)
+ return;
+
Cmd_RemoveCommand ("play", cmd_play);
Cmd_RemoveCommand ("stopsound", cmd_stopSound);
Cmd_RemoveCommand ("soundlist", cmd_soundList);
Cmd_RemoveCommand ("soundinfo", cmd_soundInfo);
- if (!snd_isInitialized)
- return;
- snd_isInitialized = qFalse;
-
Com_Printf (0, "\n------------ Sound Shutdown ------------\n");
+ // Stop all sounds
+ Snd_StopAllSounds();
+
// Free all sounds
Snd_FreeSounds ();
@@ -984,6 +1003,8 @@
ALSnd_Shutdown ();
snd_isAL = qFalse;
}
+
+ snd_isInitialized = qFalse;
Com_Printf (0, "----------------------------------------\n");
}

View file

@ -0,0 +1,11 @@
--- ./client/snd_openal.c.orig Tue May 23 20:05:59 2006
+++ ./client/snd_openal.c Tue May 23 20:06:00 2006
@@ -40,7 +40,7 @@
# define AL_FREELIB(a) FreeLibrary (a)
#endif
-#if defined(__linux__) || defined(__FreeBSD__)
+#ifdef __unix__
# include <dlfcn.h>
# include <unistd.h>
# include <sys/types.h>

View file

@ -0,0 +1,10 @@
--- ./common/common.c.orig Tue May 23 20:05:59 2006
+++ ./common/common.c Tue May 23 20:06:00 2006
@@ -645,6 +645,7 @@
Com_InitArgv (argc, argv);
Cmd_Init ();
+ Swap_Init ();
Cbuf_Init ();
Alias_Init ();
Cvar_Init ();

View file

@ -0,0 +1,75 @@
--- ./common/files.c.orig Tue May 23 20:05:59 2006
+++ ./common/files.c Tue May 23 20:06:00 2006
@@ -1169,6 +1169,23 @@
return BASE_MODDIRNAME;
}
+#ifdef HOMEDIR
+/*
+ * FS_AddHomeAsGameDirectory
+ * Add a game directory in "~/.egl". It can be used to set the last path, so
+ * it will be used for writting.
+ */
+void FS_AddHomeAsGameDirectory(char *dir)
+{
+ char gdir[MAX_OSPATH]; /* Game directory. */
+ char *homedir; /* Home directory. */
+
+ if ((homedir = getenv("HOME")) != NULL) {
+ Q_snprintfz(gdir, sizeof(gdir), "%s/.egl/%s", homedir, dir);
+ FS_AddGameDirectory(gdir, dir);
+ }
+}
+#endif
/*
================
@@ -1220,10 +1237,17 @@
}
else {
Cvar_VariableSet (fs_gamedircvar, dir, qTrue);
+#ifdef __FreeBSD__
+ FS_AddGameDirectory (Q_VarArgs ("%s/%s", DATADIR, dir), dir);
+ FS_AddGameDirectory (Q_VarArgs ("%s/%s", LIBDIR, dir), dir);
+#endif
if (fs_cddir->string[0])
FS_AddGameDirectory (Q_VarArgs ("%s/%s", fs_cddir->string, dir), dir);
FS_AddGameDirectory (Q_VarArgs ("%s/%s", fs_basedir->string, dir), dir);
+#ifdef HOMEDIR
+ FS_AddHomeAsGameDirectory(dir);
+#endif
}
if (!firstTime) {
@@ -1573,16 +1597,30 @@
fs_defaultPaks = Cvar_Register ("fs_defaultPaks", "1", CVAR_ARCHIVE);
// Load pak files
+#ifdef __FreeBSD__
+ FS_AddGameDirectory (Q_VarArgs ("%s/"BASE_MODDIRNAME, DATADIR), BASE_MODDIRNAME);
+ FS_AddGameDirectory (Q_VarArgs ("%s/"BASE_MODDIRNAME, LIBDIR), BASE_MODDIRNAME);
+#endif
if (fs_cddir->string[0])
FS_AddGameDirectory (Q_VarArgs ("%s/"BASE_MODDIRNAME, fs_cddir->string), BASE_MODDIRNAME);
FS_AddGameDirectory (Q_VarArgs ("%s/"BASE_MODDIRNAME, fs_basedir->string), BASE_MODDIRNAME);
+#ifdef HOMEDIR
+ FS_AddHomeAsGameDirectory(BASE_MODDIRNAME);
+#endif
// Any set gamedirs will be freed up to here
fs_baseSearchPath = fs_searchPaths;
if (fs_game->string[0])
FS_SetGamedir (fs_game->string, qTrue);
+
+#ifdef HOMEDIR
+ /* Create the writable directory if doesn't exist ("~/.egl"). */
+ FS_CreatePath(fs_gameDir);
+ Sys_Mkdir(fs_gameDir);
+ Com_Printf(0, "Using '%s' for writing.\n", fs_gameDir);
+#endif
// Check memory integrity
Mem_CheckPoolIntegrity (MEMPOOL_FILESYS);

View file

@ -0,0 +1,11 @@
--- ./include/zlibpng/zconf.h.orig Tue May 23 20:05:59 2006
+++ ./include/zlibpng/zconf.h Tue May 23 20:06:00 2006
@@ -254,7 +254,7 @@
#if !defined(__MACTYPES__)
typedef unsigned char Byte; /* 8 bits */
#endif
-#if !defined(__linux__) && !defined(__FreeBSD__)
+#ifndef __unix__
typedef unsigned int uInt; /* 16 bits or more */
typedef unsigned long uLong; /* 32 bits or more */
#endif

View file

@ -0,0 +1,10 @@
--- ./linux/glimp_linux.c.orig Tue May 23 20:05:59 2006
+++ ./linux/glimp_linux.c Tue May 23 20:06:00 2006
@@ -282,6 +282,7 @@
glStatic.cDepthBits = X11_GetGLAttribute(GLX_DEPTH_SIZE);
glStatic.cStencilBits = X11_GetGLAttribute(GLX_STENCIL_SIZE);
+ X11_SetKMGrab(qFalse, qTrue);
return qTrue;
}

View file

@ -0,0 +1,14 @@
--- ./linux/glimp_linux.h.orig Tue May 23 20:05:59 2006
+++ ./linux/glimp_linux.h Tue May 23 20:06:00 2006
@@ -21,9 +21,9 @@
// glimp_linux.h
//
-#ifndef __linux__
+#ifndef __unix__
# error You should not be including this file on this platform
-#endif // __linux__
+#endif // __unix__
#ifndef __GLIMP_LINUX_H__
#define __GLIMP_LINUX_H__

View file

@ -0,0 +1,109 @@
--- ./linux/snd_linux.c.orig Tue May 23 20:05:59 2006
+++ ./linux/snd_linux.c Tue May 23 20:06:00 2006
@@ -25,7 +25,11 @@
#include <sys/mman.h>
#include <sys/shm.h>
#include <sys/wait.h>
+#ifdef __linux__
#include <linux/soundcard.h>
+#else
+#include <sys/soundcard.h>
+#endif
#include <stdio.h>
#include "../client/snd_local.h"
@@ -56,7 +60,7 @@
extern uid_t saved_euid;
if (sndInitialized)
- return;
+ return 1;
if (!snddevice) {
sndbits = Cvar_Register ("sndbits", "16", CVAR_ARCHIVE);
@@ -101,13 +105,6 @@
return 0;
}
- if (ioctl (audio_fd, SNDCTL_DSP_GETOSPACE, &info) == -1) {
- perror ("GETOSPACE");
- Com_Printf (0, "Um, can't do GETOSPACE?\n");
- close (audio_fd);
- return 0;
- }
-
// set sample bits & speed
snd_audioDMA.sampleBits = (int)sndbits->value;
if (snd_audioDMA.sampleBits != 16 && snd_audioDMA.sampleBits != 8) {
@@ -126,21 +123,6 @@
snd_audioDMA.channels = (int)sndchannels->value;
if ((snd_audioDMA.channels < 1) || (snd_audioDMA.channels > 2))
snd_audioDMA.channels = 2;
-
- snd_audioDMA.samples = info.fragstotal * info.fragsize / (snd_audioDMA.sampleBits/8);
- snd_audioDMA.submissionChunk = 1;
-
- // memory map the dma buffer
- if (!snd_audioDMA.buffer)
- snd_audioDMA.buffer = (unsigned char *) mmap(NULL, info.fragstotal
- * info.fragsize, PROT_WRITE, MAP_FILE|MAP_SHARED, audio_fd, 0);
-
- if (!snd_audioDMA.buffer) {
- perror (snddevice->string);
- Com_Printf (0, "Could not mmap %s\n", snddevice->string);
- close (audio_fd);
- return 0;
- }
tmp = 0;
if (snd_audioDMA.channels == 2)
@@ -157,6 +139,14 @@
else
snd_audioDMA.channels = 1;
+ rc = ioctl (audio_fd, SNDCTL_DSP_SPEED, &snd_audioDMA.speed);
+ if (rc < 0) {
+ perror (snddevice->string);
+ Com_Printf (0, "Could not set %s speed to %d", snddevice->string, snd_audioDMA.speed);
+ close (audio_fd);
+ return 0;
+ }
+
if (snd_audioDMA.sampleBits == 16) {
rc = AFMT_S16_LE;
rc = ioctl (audio_fd, SNDCTL_DSP_SETFMT, &rc);
@@ -182,13 +172,29 @@
return 0;
}
- rc = ioctl (audio_fd, SNDCTL_DSP_SPEED, &snd_audioDMA.speed);
- if (rc < 0) {
- perror (snddevice->string);
- Com_Printf (0, "Could not set %s speed to %d", snddevice->string, snd_audioDMA.speed);
+ if (ioctl (audio_fd, SNDCTL_DSP_GETOSPACE, &info) == -1) {
+ perror ("GETOSPACE");
+ Com_Printf (0, "Um, can't do GETOSPACE?\n");
close (audio_fd);
- return 0;
+ return 0;
}
+
+ snd_audioDMA.samples = info.fragstotal * info.fragsize / (snd_audioDMA.sampleBits/8);
+ snd_audioDMA.submissionChunk = 1;
+
+ // memory map the dma buffer
+ if (!snd_audioDMA.buffer)
+ snd_audioDMA.buffer = (unsigned char *) mmap(NULL, info.fragstotal
+ * info.fragsize, PROT_WRITE, MAP_FILE|MAP_SHARED, audio_fd, 0);
+
+ if (!snd_audioDMA.buffer) {
+ perror (snddevice->string);
+ Com_Printf (0, "Could not mmap %s\n", snddevice->string);
+ close (audio_fd);
+ return 0;
+ }
+
+
// toggle the trigger & start her up
tmp = 0;

View file

@ -0,0 +1,58 @@
--- ./linux/sys_linux.c.orig Tue May 23 20:05:59 2006
+++ ./linux/sys_linux.c Tue May 23 20:06:00 2006
@@ -43,10 +43,6 @@
#include "../common/common.h"
-#if defined(__FreeBSD__)
-#include <machine/param.h>
-#endif
-
uint32 sys_frameTime;
int sys_currTime;
@@ -607,7 +603,6 @@
void *Sys_LoadLibrary (libType_t libType, void *parms)
{
char name[MAX_OSPATH];
- char cwd[MAX_OSPATH];
char *path;
void *(*APIfunc) (void *);
void **lib;
@@ -657,13 +652,13 @@
switch (libType) {
case LIB_CGAME:
lib = &cGameLib;
- libname = "eglcgame" ARCH ".so";
+ libname = "eglcgame.so";
apifuncname = "GetCGameAPI";
break;
case LIB_GAME:
lib = &gameLib;
- libname = "game" ARCH ".so";
+ libname = "game.so";
apifuncname = "GetGameAPI";
break;
@@ -673,8 +668,7 @@
}
// check the current debug directory first for development purposes
- getcwd (cwd, sizeof(cwd));
- Q_snprintfz (name, sizeof(name), "%s/%s/%s", cwd, debugdir, libname);
+ Q_snprintfz (name, sizeof(name), "%s/%s", debugdir, libname);
*lib = dlopen (name, RTLD_NOW);
if (*lib) {
@@ -697,8 +691,10 @@
Com_DevPrintf (0, "dlopen (%s)\n", name);
break;
}
+#if 0
if (!*lib && (error = dlerror()))
Com_Printf (PRNT_ERROR, "dlopen (%s): %s\n", name, error);
+#endif
}
}

View file

@ -0,0 +1,11 @@
--- ./linux/x11_linux.h.orig Tue May 23 20:05:59 2006
+++ ./linux/x11_linux.h Tue May 23 20:06:00 2006
@@ -1,6 +1,6 @@
-#ifndef __linux__
+#ifndef __unix__
# error You should not be including this file on this platform
-#endif // __linux__
+#endif // __unix__
#ifndef __X11_LINUX_H__
#define __X11_LINUX_H__

View file

@ -0,0 +1,11 @@
--- ./linux/x11_main.c.orig Tue May 23 20:05:59 2006
+++ ./linux/x11_main.c Tue May 23 20:06:00 2006
@@ -147,7 +147,7 @@
}
}
-static void X11_SetKMGrab (qBool kg, qBool mg)
+void X11_SetKMGrab (qBool kg, qBool mg)
{
keybd_grabbed = kg;
mouse_grabbed = mg;

View file

@ -0,0 +1,150 @@
--- ./makefile.orig Tue May 23 20:06:00 2006
+++ ./makefile Tue May 23 20:11:46 2006
@@ -1,37 +1,64 @@
-BUILD_CLIENT=YES # client executable
-BUILD_DEDICATED=YES # server executable
-BUILD_CGAME=YES # cgame dll
-BUILD_GAME=YES # game dll
+# GNU Makefile for EGL.
+
+# Compilation components and options.
+BUILD_CLIENT?=YES # Client executable.
+BUILD_DEDICATED?=YES # Server executable.
+BUILD_CGAME?=YES # cgame shared library.
+BUILD_GAME?=YES # game shared library.
+WITH_OPT_CFLAGS?=YES # Optimized compiler flags.
+WITH_HOMEDIR?=YES # Write files in "~/.egl".
+# Common variables.
+CC?=gcc
VERSION=0.0.6
+EGL_MAKEFILE=makefile
+# Compiler flags.
+SHARED_FLAGS= $(CFLAGS) -DARCH='\"$(ARCH)\"' \
+ -DGAME_NAME='\"$(GAME_NAME)\"' \
+ -DEGLCGAME_NAME='\"$(EGLCGAME_NAME)\"'
+RELEASE_CFLAGS= -Isource/ -I./ -I../ $(SHARED_FLAGS)
+DEBUG_CFLAGS=- g -Isource/ -I./ -I../ $(SHARED_FLAGS) -DC_ONLY
-CC=gcc
-EGL_MAKEFILE=makefile
-SHARED_FLAGS:=
-RELEASE_CFLAGS=-Isource/ -I./ -I../ $(SHARED_FLAGS) -O2 -fno-strict-aliasing -ffast-math -fexpensive-optimizations
-DEBUG_CFLAGS=-g -Isource/ -I./ -I../ $(SHARED_FLAGS) -DC_ONLY
-LDFLAGS=-ldl -lm -lz -ljpeg -lpng
-DED_LDFLAGS=-ldl -lm -lz
-MODULE_LDFLAGS=-ldl -lm
-X11_LDFLAGS=-L/usr/X11R6/lib -lX11 -lXext
+# Linker flags.
+LDFLAGS+=-lm
+DED_LDFLAGS=-lz
+MODULE_LDFLAGS=
+X11_LDFLAGS=-lX11 -lXext -ljpeg -lpng -lz
+# Compilation commands.
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared
-
DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
DO_DED_CC=$(CC) $(CFLAGS) -DDEDICATED_ONLY -o $@ -c $<
DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
-
-# this nice line comes from the linux kernel makefile
+# This nice line comes from the linux kernel makefile.
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)
SHLIBEXT =so
-BUILD_DEBUG_DIR=debug$(ARCH)
-BUILD_RELEASE_DIR=release$(ARCH)
+OSTYPE := $(shell uname -s)
+
+BUILD_DEBUG_DIR=debug
+BUILD_RELEASE_DIR=release
+
+ifeq ($(OSTYPE),Linux)
+LDFLAGS+=-ldl
+GAME_NAME= game$(ARCH)
+EGLCGAME_NAME= eglcgame$(ARCH)
+endif
+
+ifeq ($(OSTYPE),FreeBSD)
+# These variables are defined from the port, and passed by the environment.
+SHARED_FLAGS+= -I$(LOCALBASE)/include -I$(X11BASE)/include \
+ -DDATADIR='\"$(Q2DIR)\"' -DLIBDIR='\"$(LIBDIR)\"'
+LDFLAGS+= -L$(LOCALBASE)/lib -L$(X11BASE)/lib
+X11_LDFLAGS+= $(PTHREAD_LIBS)
+GAME_NAME= game
+EGLCGAME_NAME= eglcgame
+endif
ifeq ($(strip $(BUILD_CLIENT)),YES)
TARGETS += $(BUILDDIR)/egl
@@ -42,20 +69,27 @@
endif
ifeq ($(strip $(BUILD_CGAME)),YES)
- TARGETS += $(BUILDDIR)/baseq2/eglcgame$(ARCH).$(SHLIBEXT)
+ TARGETS += $(BUILDDIR)/baseq2/$(EGLCGAME_NAME).$(SHLIBEXT)
endif
ifeq ($(strip $(BUILD_GAME)),YES)
- TARGETS += $(BUILDDIR)/baseq2/game$(ARCH).$(SHLIBEXT)
+ TARGETS += $(BUILDDIR)/baseq2/$(GAME_NAME).$(SHLIBEXT)
endif
+ifeq ($(strip $(WITH_OPT_CFLAGS)),YES)
+RELEASE_CFLAGS += -O2 -fno-strict-aliasing -ffast-math -fexpensive-optimizations
+endif
-ifeq ($(wildcard /usr/include/X11/extensions/xf86vmode.h),/usr/include/X11/extensions/xf86vmode.h)
+ifeq ($(strip $(WITH_HOMEDIR)),YES)
+SHARED_FLAGS += -DHOMEDIR
+endif
+
+ifeq ($(wildcard $(X11BASE)/include/X11/extensions/xf86vmode.h),$(X11BASE)/include/X11/extensions/xf86vmode.h)
SHARED_FLAGS += -DXF86VMODE
X11_LDFLAGS += -lXxf86vm
endif
-ifeq ($(wildcard /usr/include/X11/extensions/xf86dga.h),/usr/include/X11/extensions/xf86dga.h)
+ifeq ($(wildcard $(X11BASE)/include/X11/extensions/xf86dga.h),$(X11BASE)/include/X11/extensions/xf86dga.h)
SHARED_FLAGS += -DXF86DGA
X11_LDFLAGS += -lXxf86dga
endif
@@ -527,7 +561,7 @@
$(BUILDDIR)/eglded: $(OBJS_DEDICATED)
@echo Linking eglded;
- $(CC) $(CFLAGS) -o $@ $(OBJS_DEDICATED) $(DED_LDFLAGS)
+ $(CC) $(CFLAGS) -o $@ $(OBJS_DEDICATED) $(LDFLAGS) $(DED_LDFLAGS)
$(BUILDDIR)/dedicated/alias.o: $(SOURCEDIR)/common/alias.c
$(DO_DED_CC)
@@ -738,9 +772,9 @@
$(BUILDDIR)/baseq2/cgame/m_flash.o \
-$(BUILDDIR)/baseq2/eglcgame$(ARCH).$(SHLIBEXT): $(OBJS_CGAME)
+$(BUILDDIR)/baseq2/$(EGLCGAME_NAME).$(SHLIBEXT): $(OBJS_CGAME)
@echo Linking cgame dll;
- $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(OBJS_CGAME) $(MODULE_LDFLAGS)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(OBJS_CGAME) $(LDFLAGS) $(MODULE_LDFLAGS)
$(BUILDDIR)/baseq2/cgame/cg_api.o: $(SOURCEDIR)/cgame/cg_api.c
$(DO_SHLIB_CC)
@@ -1026,9 +1060,9 @@
$(BUILDDIR)/baseq2/game/string.o \
-$(BUILDDIR)/baseq2/game$(ARCH).$(SHLIBEXT): $(OBJS_GAME)
+$(BUILDDIR)/baseq2/$(GAME_NAME).$(SHLIBEXT): $(OBJS_GAME)
@echo Linking game dll;
- $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(OBJS_GAME) $(MODULE_LDFLAGS)
+ $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(OBJS_GAME) $(LDFLAGS) $(MODULE_LDFLAGS)
$(BUILDDIR)/baseq2/game/cg_api.o: $(SOURCEDIR)/cgame/cg_api.c
$(DO_SHLIB_CC)

View file

@ -0,0 +1,20 @@
--- ./renderer/qgl.h.orig Tue May 23 20:05:59 2006
+++ ./renderer/qgl.h Tue May 23 20:06:00 2006
@@ -30,7 +30,7 @@
#include <GL/gl.h>
-#if defined(__linux__) || defined(__FreeBSD__)
+#ifdef __unix__
# include <GL/glx.h>
#endif
@@ -431,7 +431,7 @@
-#if defined(__linux__) || defined(__FreeBSD__)
+#ifdef __unix__
//
// linux

View file

@ -0,0 +1,10 @@
--- ./renderer/r_init.c.orig Tue May 23 20:05:59 2006
+++ ./renderer/r_init.c Tue May 23 20:06:00 2006
@@ -1395,6 +1395,7 @@
Com_Printf (0, "----------------------------------------\n");
// Sub-system init
+ Swap_Init();
R_ImageInit ();
R_ProgramInit ();
R_ShaderInit ();

View file

@ -0,0 +1,115 @@
--- ./shared/shared.c.orig Tue May 23 20:05:59 2006
+++ ./shared/shared.c Tue May 23 20:06:00 2006
@@ -539,3 +539,112 @@
dest--;
}
}
+
+/*
+==============================================================================
+
+ BYTE ORDER FUNCTIONS
+
+==============================================================================
+*/
+
+qBool bigendien;
+
+/*
+ * Can't just use function pointers, or DLL linkage can mess up when qcommon
+ * is included in multiple places.
+ */
+
+int16 (*_LittleShort) (int16 l);
+int32 (*_LittleLong) (int32 l);
+float (*_LittleFloat) (float l);
+int16 (*_BigShort) (int16 l);
+int32 (*_BigLong) (int32 l);
+float (*_BigFloat) (float l);
+
+int16 LittleShort (int16 l) { return _LittleShort(l); }
+int32 LittleLong (int32 l) { return _LittleLong(l); }
+float LittleFloat (float l) { return _LittleFloat(l); }
+int16 BigShort (int16 l) { return _BigShort(l); }
+int32 BigLong (int32 l) { return _BigLong(l); }
+float BigFloat (float l) { return _BigFloat(l); }
+
+int16 ShortNoSwap (int16 l) { return l; }
+int32 LongNoSwap (int32 l) { return l; }
+float FloatNoSwap (float f) { return f; }
+
+int16 ShortSwap (int16 s)
+{
+ union {
+ byte b[2];
+ int16 s;
+ } in, out;
+
+ in.s = s;
+
+ out.b[0] = in.b[1];
+ out.b[1] = in.b[0];
+
+ return out.s;
+}
+
+int32 LongSwap (int32 l)
+{
+ union {
+ byte b[4];
+ int l;
+ } in, out;
+
+ in.l = l;
+
+ out.b[0] = in.b[3];
+ out.b[1] = in.b[2];
+ out.b[2] = in.b[1];
+ out.b[3] = in.b[0];
+
+ return out.l;
+}
+
+float FloatSwap (float f)
+{
+ union {
+ byte b[4];
+ float f;
+ } in, out;
+
+ in.f = f;
+
+ out.b[0] = in.b[3];
+ out.b[1] = in.b[2];
+ out.b[2] = in.b[1];
+ out.b[3] = in.b[0];
+
+ return out.f;
+}
+
+/*
+ * Swap_Init
+ * Set the byte swapping variables in a portable manner.
+ */
+void Swap_Init (void)
+{
+ byte swaptest[2] = {1, 0};
+
+ if (*(int16 *)swaptest == 1) {
+ bigendien = qFalse;
+ _LittleShort = ShortNoSwap;
+ _LittleLong = LongNoSwap;
+ _LittleFloat = FloatNoSwap;
+ _BigShort = ShortSwap;
+ _BigLong = LongSwap;
+ _BigFloat = FloatSwap;
+ } else {
+ bigendien = qTrue;
+ _LittleShort = ShortSwap;
+ _LittleLong = LongSwap;
+ _LittleFloat = FloatSwap;
+ _BigShort = ShortNoSwap;
+ _BigLong = LongNoSwap;
+ _BigFloat = FloatNoSwap;
+ }
+}

View file

@ -0,0 +1,277 @@
--- ./shared/shared.h.orig Tue May 23 20:05:59 2006
+++ ./shared/shared.h Tue May 23 20:06:00 2006
@@ -41,6 +41,15 @@
//R1Q2 SPECIFC
// =========================================================================
+// Common
+//
+#ifdef NDEBUG
+# define DEBUG_STR ""
+#else
+# define DEBUG_STR " Debug"
+#endif
+
+// =========================================================================
// Windows
//
#ifdef WIN32
@@ -68,23 +77,15 @@
# define BUILDSTRING "Win32"
-# ifdef NDEBUG
-# ifdef _M_IX86
-# define CPUSTRING "x86"
-# elif defined _M_ALPHA
-# define CPUSTRING "AXP"
-# endif
-# else // NDEBUG
-# ifdef _M_IX86
-# define CPUSTRING "x86 Debug"
-# elif defined _M_ALPHA
-# define CPUSTRING "AXP Debug"
-# endif
-# endif // NDEBUG
+# ifdef _M_IX86
+# define CPUSTRING "x86"
+# elif defined _M_ALPHA
+# define CPUSTRING "AXP"
+# endif
-typedef __int16 int16;
-typedef __int32 int32;
-typedef __int64 int64;
+typedef __int16 int16;
+typedef __int32 int32;
+typedef __int64 int64;
typedef unsigned __int16 uint16;
typedef unsigned __int32 uint32;
typedef unsigned __int64 uint64;
@@ -94,49 +95,35 @@
# define __declspec_naked __declspec(naked)
// =========================================================================
-// Linux
+// Unix in general (Linux, *BSD, etc)
//
-#elif defined __linux__
-# include <stdint.h>
-
-# define GL_DRIVERNAME "libGL.so.1"
-# define AL_DRIVERNAME "libopenal.so.0"
-# define GL_FORCEFINISH
+#elif defined __unix__
-# define HAVE_INLINE
-# define HAVE_STRCASECMP
+// Linux
+# if defined(__linux__)
+# include <stdint.h>
-# define BUILDSTRING "Linux"
+# define BUILDSTRING "Linux"
-# ifdef NDEBUG
-# ifdef __i386__
-# define CPUSTRING "i386"
-# elif defined(__alpha__)
-# define CPUSTRING "AXP"
-# endif
-# else // NDEBUG
-# ifdef __i386__
-# define CPUSTRING "i386 Debug"
-# elif defined(__alpha__)
-# define CPUSTRING "AXP Debug"
+// FreeBSD
+# elif defined __FreeBSD__
+# include <machine/param.h>
+# if __FreeBSD_version < 500000
+# include <inttypes.h>
+# else
+# include <stdint.h>
# endif
-# endif // NDEBUG
-typedef int16_t int16;
-typedef int32_t int32;
-typedef int64_t int64;
-typedef uint16_t uint16;
-typedef uint32_t uint32;
-typedef uint64_t uint64;
+# define BUILDSTRING "FreeBSD"
-# define __declspec
-# define __declspec_naked
+# else
+# include <stdint.h>
+# endif
-// =========================================================================
-// FreeBSD
-//
-#elif defined __FreeBSD__
-# include <stdint.h>
+// Common
+# ifdef ARCH
+# define CPUSTRING ARCH
+# endif
# define GL_DRIVERNAME "libGL.so.1"
# define AL_DRIVERNAME "libopenal.so.0"
@@ -145,22 +132,6 @@
# define HAVE_INLINE
# define HAVE_STRCASECMP
-# define BUILDSTRING "FreeBSD"
-
-# ifdef NDEBUG
-# ifdef __i386__
-# define CPUSTRING "i386"
-# elif defined(__alpha__)
-# define CPUSTRING "AXP"
-# endif
-# else // NDEBUG
-# ifdef __i386__
-# define CPUSTRING "i386 Debug"
-# elif defined(__alpha__)
-# define CPUSTRING "AXP Debug"
-# endif
-# endif // NDEBUG
-
typedef int16_t int16;
typedef int32_t int32;
typedef int64_t int64;
@@ -225,7 +196,7 @@
// =========================================================================
-#if (defined(_M_IX86) || defined(__i386__)) && !defined(C_ONLY) && !defined(__linux__) && !defined(__FreeBSD__) // FIXME: make this work with linux
+#if (defined(_M_IX86) || defined(__i386__)) && !defined(C_ONLY) && !defined(__unix__) // FIXME: make this work with linux
# define id386
#else
# ifdef id386
@@ -233,14 +204,6 @@
# endif
#endif
-#if !defined(ENDIAN_LITTLE) && !defined(ENDIAN_BIG)
-# if defined(__i386__) || defined(__ia64__) || defined(WIN32) || (defined(__alpha__) || defined(__alpha)) || defined(__arm__) || (defined(__mips__) && defined(__MIPSEL__)) || defined(__LITTLE_ENDIAN__)
-# define ENDIAN_LITTLE
-# else
-# define ENDIAN_BIG
-# endif
-#endif
-
#ifndef BUILDSTRING
# define BUILDSTRING "Unknown"
#endif
@@ -755,100 +718,17 @@
==============================================================================
BYTE ORDER FUNCTIONS
-
-==============================================================================
-*/
-
-#ifdef USE_BYTESWAP
-
-/*
-===============
-FloatSwap
-===============
-*/
-static inline float FloatSwap (float f)
-{
- union {
- byte b[4];
- float f;
- } in, out;
-
- in.f = f;
- out.b[0] = in.b[3];
- out.b[1] = in.b[2];
- out.b[2] = in.b[1];
- out.b[3] = in.b[0];
-
- return out.f;
-}
-
-
-/*
-===============
-LongSwap
-===============
-*/
-static inline int LongSwap (int l)
-{
- union {
- byte b[4];
- int l;
- } in, out;
-
- in.l = l;
-
- out.b[0] = in.b[3];
- out.b[1] = in.b[2];
- out.b[2] = in.b[1];
- out.b[3] = in.b[0];
-
- return out.l;
-}
-
-/*
-===============
-ShortSwap
-===============
+==============================================================================
*/
-static inline int16 ShortSwap (int16 s)
-{
- union {
- byte b[2];
- int16 s;
- } in, out;
-
- in.s = s;
- out.b[0] = in.b[1];
- out.b[1] = in.b[0];
-
- return out.s;
-}
-
-#if defined(WIN32) || defined(__linux__) || defined(__FreeBSD__)
-
-#define LittleFloat
-#define LittleLong
-#define LittleShort
-
-static inline float BigFloat (float f) { return FloatSwap (f); }
-static inline int BigLong (int l) { return LongSwap (l); }
-static inline int16 BigShort (int16 s) { return ShortSwap (s); }
-
-#elif (defined __MACOS__ || defined MACOS_X)
-
-#define BigFloat
-#define BigLong
-#define BigShort
-
-static inline float LittleFloat (float f) { return FloatSwap (f); }
-static inline int LittleLong (int l) { return LongSwap (l); }
-static inline int16 LittleShort (int16 s) { return ShortSwap (s); }
-
-#endif
-
-#endif // USE_BYTESWAP
+int16 LittleShort (int16 l);
+int32 LittleLong (int32 l);
+float LittleFloat (float l);
+int16 BigShort (int16 l);
+int32 BigLong (int32 l);
+float BigFloat (float l);
+void Swap_Init (void);
/*
==============================================================================

3
games/egl/pkg-descr Normal file
View file

@ -0,0 +1,3 @@
Enhaced OpenGL only Quake II engine.
WWW: http://egl.quakedev.com/

7
games/egl/pkg-plist Normal file
View file

@ -0,0 +1,7 @@
bin/egl
%%DEDICATED%%bin/eglded
%%LIBDIR%%/baseq2/egl.pkz
%%LIBDIR%%/baseq2/eglcgame.so
%%LIBDIR%%/baseq2/game.so
@dirrm %%LIBDIR%%/baseq2
@dirrm %%LIBDIR%%