From 7e5af715bb9bc9815d99c76d41b4dceecbd253e1 Mon Sep 17 00:00:00 2001 From: Jeff Teunissen Date: Wed, 17 May 2000 09:25:03 +0000 Subject: [PATCH] Automake stuff. Don't blame me for this. ;) You will need to run automake --add-missing to create the necessary symlinks for install-sh, etc. --- AUTHORS | 1 + INSTALL | 182 +++++++++++++ Makefile.am | 2 + NEWS | 204 +++++++++++++++ README | 284 ++++++++++++++++++++ RPM/Makefile.am | 45 ++++ RPM/build_rpm.in | 27 ++ RPM/quakeforge.spec.in | 49 ++++ acconfig.h | 80 ++++++ aclocal.m4 | 127 +++++++++ configure.in | 516 +++++++++++++++++++++++++++++++++++++ man/quakeforge.1 | 47 ++++ quakeforge.lsm.in | 16 ++ source/Makefile.am | 41 +++ texinfo/quakeforge.texinfo | 195 ++++++++++++++ 15 files changed, 1816 insertions(+) create mode 100644 AUTHORS create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100644 RPM/Makefile.am create mode 100644 RPM/build_rpm.in create mode 100644 RPM/quakeforge.spec.in create mode 100644 acconfig.h create mode 100644 aclocal.m4 create mode 100644 configure.in create mode 100644 man/quakeforge.1 create mode 100644 quakeforge.lsm.in create mode 100644 source/Makefile.am create mode 100644 texinfo/quakeforge.texinfo diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..b154854 --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +The QuakeForge Project diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..b42a17a --- /dev/null +++ b/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..3106846 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,2 @@ +## Process this file with automake to produce Makefile.in +SUBDIRS = source diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..31ade58 --- /dev/null +++ b/NEWS @@ -0,0 +1,204 @@ +NEWS for the QuakeForge project +------------------------------- + +QuakeForge 0.2 + +08 Mar 2000 - Massive news updates + The engine is actually working and working well for perhaps the + first time since we branched off stable. A long overdue news + update is in order. These things have been added to GL targets: + + Skyboxes + Put a a Quake2 skybox in mydir/gfx/env and -game mydir, + set r_skyname to the base name of the sky (for the one + released on the MegaTF website, use r_skyname night for + example), load a map with a sky in it, and set r_sky 1. + + You must reload a map for a new r_skyname to take effect. + The software renderer WILL support this hopefully soon. + + Volumetric fog + For testing only. As implemented now it uses the stencil + buffer (very slow for most of us) and borrows the water + brush since we don't have a fog brush yet. raptor suggests + r_volfog 0.0009 and r_wateralpha 0.3 to test. You'll need + watervis'd maps. + + Water Ripples + We reported earlier that setting r_waterripple to 1 made a + wave effect. Actually, if you want a wave effect you can + see, you'd better set it at least to 5. Looks good with + the volfog settings mentioned above. raptor plans to put + r_waterripple into the software renderer. + + Rodents with wheels + If you've got one, you'll be pleased to hear that -x11 and + -glx now support them the same way -svga does. You need to + have ZAxisMapping set in your XF86Config properly. + +26 Jan 2000 - Waterwarp bug fixed + The waterwarp bug has been fixed, set r_waterwarp 1 to use it. + + +QuakeForge 0.1.0 + +22 Jan 2000 - cl_sbar and cl_hudswap in uquake + The cvars cl_sbar and cl_hudswap noe work in uquake just like they + do in qw-client. In uquake, cl_sbar defaults to 1 to satisfy the + least-surprise principle. Set it to 0 if you want a qw-client like + HUD. + +22 Jan 2000 - changes to command line option -game [REMOVED!] + You may now specify multiple game directories with -game. If for + example you wanted to use the original registered game with MegaTF + on a new style binary you would use -game id1,megatf. It does work + with traditional style binaries and you may specify as many dirs as + you like seperated by commas. + + One caveat: Most mods were designed to be the only one in use, it + may be a Bad Thing to mix certain mods with other mods. + + NOTE: This feature has been removed because it can seriously cause + confusion to a game mod. The proper way to override part of + a game is to use different fs_basepath and fs_sharepath. + +19 Jan 2000 - changes to cvar r_fog + Fog color is once again white. The r_fog cvar is now a control for + the fog density rather than a simple toggle control. Eric Windisch + recommends setting r_fog to .0005 if you're going to use it. + +19 Jan 2000 - removed cvar r_mirroralpha + This was a cheap hack which affected one texture on one map of the + entire game. It also wasn't working right, so it's been removed. + +19 Jan 2000 - time cheats revisited + The final word in detecting time/speed cheating is here at long + last! Still catches an occasional person who is "not cheating", but + as it turns out when it does catch such a person they technically + are cheating. + + This seems to be caused by dodgy cmos clocks used in many machines + on the market. If the server occasionally claims you seem to be + cheating, try installing some sort of ntp program to synchronize + your clock periodically against a time server. If this does not + seem to fix the problem, we'd like to know about it. + +18 Jan 2000 - cvar show_fps + show_fps 1 now works in uquake as well as qw-client. No more need + to use timedemo to check performance! Much more accurate in showing + where performance is good and where it isn't. + +16 Jan 2000 - new ./configure option: --enable-newstyle + Use this option when you run ./configure if you wish to use a few + QuakeForge defaults which are a bit different than Id Software used, + but do not change the gameplay. + + Currenly all this does is use "base" instead of "id1" for the + default place to look for your game data. + +11 Jan 2000 - New cvar: r_waterripple + When set to 1 this will create a small wave effect under the GL + renderer. + +09 Jan 2000 - Preliminary IPv6 support + Support exists in QuakeForge for the use of IPv6. It's not ready + for prime time yet. Still, it deserves mention. + +09 Jan 2000 - gl_ztrick default changed + Since this seems not to work more places than it does at this point, + the default for the cvar gl_ztrick has been changed from 1 to 0 in + the glx target. This value is saved to your config so if it works + for you just set it to 1. + +08 Jan 2000 - Mouse wheel support + Preliminary support for the wheels found on some mice has been added + to the Linux SVGALib target. To use it bind MHWHEELDOWN and + MHWHEELUP to whatever you want to use the wheel for. + +07 Jan 2000 - Options menu changes + A few things were added to the options menu in some targets such as + an option for fullscreen and whether or not to use the mouse. + +06 Jan 2000 - Output cleanups + The use of CR and LF in names is a "feature" Id Software clearly + didn't intend. General mailing list consensus is that unlike other + unintended features (rocket jumps for example), this "feature" has + no real legitimate use. qw-server now replaces CR's and LF's with + underscores. + + You will no longer see [e1] or similar crap sent to stdout. These + characters are now translated to the nearest ASCII characters, + resulting in much nicer-looking output. + +06 Jan 2000 - PackFile/Findfile messages to stdout removed + The PackFile and FindFile messages previously sent to stdout no + longer are. If you wish to see them again for some reason, set the + developer cvar to 1. + +05 Jan 2000 - Preliminary time cheat detection code + Preliminary code to detect clients attempting various time related + cheats has been added. Some issues persist. + +05 Jan 2000 - GL fullbright texture support [REMOVED] + The GL renderer now supports fullbright textures, though this causes + a noticable impact on performance. Use the new cmdline option + -noglow to disable it if this bugs you. + + NOTE: This was removed for now because it didn't work quite right + and -noglow did not in fact actually disable it properly. + +02 Jan 2000 - registered game check removed + The check for a copy of the registered pak files has largely been + removed since it no longer makes a whole lot of sense with all the + talk of free complete TC's (total conversions). + + A very simple check for pop.txt (found only in the registered pak + files) remains to set the cvar registered to 1 if necessary, + allowing the start map to know whether or not to allow you through + the gates leading to episodes 2-4. + +02 Jan 2000 - crosshairs + qw-client's crosshair 2 is now supported in uquake. + + A new (for now) GL-renderer-only experimental crosshair 3 has been + added. It's obeys the crosshaircolor cvar. No timeframe on porting + it to the software renderers yet, but it will happen eventually. + +02 Jan 2000 - Removed cvar + gl_reporttjunctions did nothing at all, removed. + +01 Jan 2000 - Changed cvar + In uquake, the chasecam cvar is now cl_chasecam just like it is in + qw-client. + +01 Jan 2000 - Preliminary volumetric fog + QuakeForge now has preliminary support for volumetric fog. The cvar + r_fog can be set to 1 to try it out. + +30 Dec 1999 - CVS tree changes + We now use autoheader and autoconf. If you checkout/update your + tree from CVS you're going to need to run ./bootstrap now to + perform all the necessary black voodoo needed to allow you to run + ./configure as normal. This should not be necessary for releases, + only for the CVS tree and CVS snapshots. + +29 Dec 1999 - Known bug in sound init fixed + A bug which caused QF to segfault if sound could not be initialized + has been fixed. If sound can not be initialized, you will now + simply not hear any. + +29 Dec 1999 - Autoconf support + QuakeForge now uses autoconf! Run ./configure --help and have a + look at the options available in case something isn't detected or + you wish to enable or disable certain compile-time options. + +25 Dec 1999 - Keyboard bindings now support keypad keys + The numeric keypad keys found on many keyboards may now be bound to + functions. The names for these keys are (in PC style layout): + + KP_NUMLCK KP_DIVIDE KP_MULTIPLY KP_MINUS + KP_HOME KP_UPARROW KP_PGUP + KP_LEFTARROW KP_5 KP_RIGHTARROW KP_PLUS + KP_END KP_DOWNARROW KP_PGDN + KP_INS KP_DEL KP_ENTER + diff --git a/README b/README new file mode 100644 index 0000000..21d21d7 --- /dev/null +++ b/README @@ -0,0 +1,284 @@ +QuakeForge - Release Notes +Copyright (C) 1996-1997 Id Software, Inc. +Copyright (C) 1999,2000 contributors of the QuakeForge Project +Please see the file "AUTHORS" for a list of contributors + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to: + + Free Software Foundation, Inc. + 59 Temple Place, Suite 330 + Boston, MA 02111-1307 USA + +See file COPYING for license details. + +Quake(R) and QuakeWorld(R) are registered trademarks of Id Software, +Inc. The NIN logo is a registered trademark licensed to Nothing +Interactive, Inc. All other trademarks are the property of their +respective owners + + +Table of Contents +~~~~~~~~~~~~~~~~~ + +1 Special Thanks +2 System Requirements +3 Compiling and Running QuakeForge +4 Platform-Specific Issues +5 Errata and Known Bugs +6 Troubleshooting +7 Technical Support +8 Joystick Notes +9 Tested Systems + + +1 Special Thanks +~~~~~~~~~~~~~~~~~~~~~~ + +The QuakeForge Project would like to thank Id Software, Inc. for writing +and releasing Quake under the GNU GPL. We'd like to thank John Carmack +and Dave Kirsch in particular for the support they have provided to us +and to the Free Software community as a whole. + +We would also like to thank the following organizations for their +contributions to QuakeForge: + + VA Linux Systems, Inc. + 3Dfx Interactive, Inc. + +And last but certainly not least, we would like to thank every single +person who has contributed even one line of code, documentation, or +other support to the QuakeForge project. + +Without all of you, we would not be where we are right now. + +Id Software, Inc. thanks MPath Interactive and Gandalf Technology for +their help and support. + +If you'd like to contribute in any way to the QuakeForge project, please +contact our mailing list at quake-devel@lists.sourceforge.net. + + +2 System Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* A Raster capable display. ;-) +* 16 megabytes of memory beyond operating system footprint. +* A Floating-point processor. While not strictly required, QuakeForge + uses a lot of floating-point math, so a FPU is highly recommended. +* 10MB of free hard disk space to build all targets. In addition to the + base system, you will require game data files. For the default game + ("Quake"), you will need either the shareware or registered version of + Quake. + + +3 Compiling and Running QuakeForge +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Please read the INSTALL file for more information on compiling. + +Autoconf 2.13 or later and automake 1.3 or later are required to use +the bootstrap script, which creates the "configure" script. + +After you have compiled successfully, you must download the shareware +version of Quake 1 to play. Insert the proper binaries in the same +directory as the unpacked shareware files, and run. + +We are currently working on a free replacement for the Quake game data +files. + + +4 Platform-Specific Issues +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This section discusses issues that affect only certain operating +platforms. + +4.1 DOS + +If you experience page faults while running Quarterdeck's QDPMI DPMI +server, this is caused by a bug in QDPMI. Workarounds: Remove QDPMI +from CONFIG.SYS, issue the command QDPMI OFF before running QuakeForge, +or get the update patch for QDPMI from Quarterdeck. You may be running +QDPMI without knowing it if you have QEMM installed, because it can be +installed as part of the QEMM installation. + +4.2 Linux + +SVGALib-using targets (-svga and -3dfx) can't be started from within X. +We are aware of the problem, and if you can figure out the reason, we'd +appreciate a patch, PLEASE! As a workaround, you can use "open" to start +those targets from within X. (e.g. "open -s -- qw-client-svga") + +Some 3Dfx Voodoo-based 3D accelerators may have issues with the way +QuakeForge uses the "3dfxgl" minidriver to interface to the Glide +library. + +Video boards based on the Riva +128/128ZX/TNT/TNT2/TNT2 Ultra/Vanta/GeForce 256 chipsets from nVidia +Corp. using the latest (as of 13 Jan 2000) nVidia OpenGL drivers may +have problems with transparency. Under some conditions, these drivers +may lock the X Window System server, possibly rendering the system +unusable. The currently-recommended drivers for video cards with Riva +128/128ZX/TNT/TNT2/TNT2 Ultra chipsets are those from the Utah GLX +project, located at http://utah-glx.sourceforge.net/ -- for the Vanta +and GeForce 256 chipsets, there is no suggested hardware-accelerated +OpenGL alternative at this time. We believe the bug to be in nVidia's +drivers, because our code seems to work under other OpenGL +implementations. + +4.4 Windows 95/98/Millennium + +Currently, we are unable to determine the status of the Windows-based +targets of QuakeForge. Because of our move to GNU Autoconf and the +dearth of "proper" GNU tools available on the Windows platform, our +build system may not work properly on Windows. We are working on +solutions for this problem. + +4.5 Windows NT/2000 + +For the most part, issues for Windows 9x-based operating environments +will be similar. However, because of numerous differences in the way +Windows NT and Windows 9x operate, these systems may have specific +issues. + +5 Errata and Known Bugs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Problem: After running the X11 target my keyboard repeat turns off! How + do I turn it back on? +Solution: xset r on + +Problem: The screen flickers once about every other frame when using GL +Solution: Not all GL implementations support a performance hack which is + used by the GL renderer allowing it to avoid clearing the + Z-buffer. The console command "gl_ztrick 0" fixes this + problem. + +Problem: Zombies can sometimes get "stuck" in the ground. They can be + heard but not killed making it impossible to get 100% on the + current level. +Solution: None found yet. + +Problem: It is possible for players to sometimes get stuck in a room or + wall, much like the zombies mentioned above. +Solution: The "kill" console command will un-stick you, but it has the + unfortunate side effect of killing you in the process (hence + the command's name.) It is a good idea to save your games + often. + +Problem: Sometimes during a game the player's view will not center + properly. The end result is that the player view is looking + up toward the ceiling while walking. +Solution: Use of freelook (mouse or keyboard) may solve this problem, as + will exiting the level or the "kill" console command. + + +6 Troubleshooting +~~~~~~~~~~~~~~~~~~~~~~~ + +If QuakeForge fails to start up, or has problems not addressed elsewhere +in the documentation, try the -safe command line switch, which disables +a number of parts of QuakeForge that can be problems if there are +hardware or configuration problems. The -safe command line switch is +equivalent to -stdvid, -nosound, -nonet, and -nocdaudio together. Those +four switches do the following: + + -stdvid disables VESA video modes + -nosound disables sound card support + -nonet disables network card support + -nocdaudio disables CD audio support + +If -safe makes the problem go away, try using each of the switches +individually to isolate the area in which you're experiencing the +problem, then either correct the configuration or hardware problem or +play QuakeForge with that functionality disabled. + + +7 Technical Support +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Please do not contact Id Software, Inc. regarding technical support +issues related to QuakeForge. QuakeForge is heavily modified from the +original Quake source release and Id Software does not support these +modifications. + +Visit the QuakeForge project's webpage for more information on technical +support, bugs reports, and help at: http://www.quakeforge.net/ + +Thank you. + + +8 Joystick notes +~~~~~~~~~~~~~~~~~~~~~~ + +Your joystick must be plugged in when QuakeForge is launched. + +If you have a joystick plugged in, but do not wish QuakeForge to try to +use it, just add the -nojoy option to the QuakeForge command line. + +You may disable joystick reads from the QuakeForge console with the +"joystick 0" command. + +There are default configuration bindings for joystick buttons. + +If your joystick or interface card reports three or four buttons and you +only have two, use the QuakeForge console command "joybuttons 2". + +The "mlook" and "sidestep" commands work with a joystick exactly as they +do for a mouse, as does the "invert mouse up/down" menu option. + + +9 Tested Systems +~~~~~~~~~~~~~~~~~~~~~~ + +Processors tested: + AMD Athlon + AMD K6-2 + Apple/IBM/Motorola PowerPC + Compaq/Digital Alpha 21x64 + IBM Power3 + Intel Pentium + Intel Pentium II + Intel Pentium III + MIPS R10000 + Sun UltraSPARC + SGI Indigo 2 + +Operating systems tested: + Linux 2.x + FreeBSD + Solaris + SGI Irix + IBM AIX 4.x + Compaq/Digital Tru64 Unix + Windows 98 + Windows NT + +Video cards tested (On Intel-based systems): + 3Dfx Voodoo Graphics (Linux) + 3Dfx Voodoo 2 (Linux) + 3Dfx Voodoo 3 3000 (Linux) + Creative Labs Graphics Blaster RivaTNT (Linux) + Diamond Stealth 2000 PRO (Linux) + Matrox G200 (Linux) + Matrox G400 (Linux) + STB Velocity 4400 RivaTNT (Linux) + +Please send user testimonials via e-mail to the QuakeForge users mailing list, +located at: + + "Quake-User" + +Visit http://www.quakeforge.net/ to find out more about subscribing to our +mailing lists and for more information. diff --git a/RPM/Makefile.am b/RPM/Makefile.am new file mode 100644 index 0000000..89581e8 --- /dev/null +++ b/RPM/Makefile.am @@ -0,0 +1,45 @@ +## Process this file with automake to produce Makefile.in + +bin_PROGRAMS= qf_server qf_client_ggi qf_client_sdl qf_client_svga \ + qf_client_x11 qf_client_3dfx qf_client_glx + +common_SOURCES= net_chan.c net_com.c net_udp.c pmove.c pmovetst.c zone.c \ + mdfour.c mathlib.c math.S cvar.c crc.c common.c model.c cmd.c + +server_SOURCES= pr_cmds.c pr_edict.c pr_exec.c sv_init.c sv_main.c sv_misc.c \ + sv_model.c sv_nchan.c sv_ents.c sv_send.c sv_move.c sv_phys.c \ + sv_user.c sv_ccmds.c world.c worlda.S sys_unix.c sv_cvar.c + +client_SOURCES= cl_cmd.c cl_cvar.c cl_demo.c cl_ents.c cl_input.c cl_main.c \ + cl_math.S cl_misc.c cl_parse.c cl_pred.c cl_tent.c cl_cam.c \ + snd_linux.c sys_linux.c cd_linux.c r_view.c wad.c snd_dma.c \ + snd_mem.c snd_mix.c snd_mixa.S skin.c sbar.c nonintel.c \ + menu.c keys.c console.c sys_x86.S + +soft_SOURCES= cl_model.c cl_trans.c d_edge.c d_fill.c d_init.c d_modech.c \ + d_part.c d_polyse.c d_scan.c d_sky.c d_sprite.c d_surf.c \ + d_vars.c d_zpoint.c draw.c r_aclip.c r_alias.c r_bsp.c \ + r_draw.c r_edge.c r_efrag.c r_light.c r_main.c r_misc.c \ + r_part.c r_sky.c r_sprite.c r_surf.c r_vars.c sw_view.c \ + screen.c d_copy.S d_draw.S d_draw16.S d_parta.S d_polysa.S \ + d_scana.S d_spr8.S d_varsa.S r_aclipa.S r_aliasa.S r_drawa.S \ + r_edgea.S r_varsa.S surf16.S surf8.S + +ogl_SOURCES= gl_draw.c gl_mesh.c gl_model.c gl_ngraph.c gl_part.c \ + gl_refrag.c gl_rlight.c gl_rmain.c gl_rmisc.c gl_rsurf.c \ + gl_screen.c gl_trans.c gl_view.c gl_warp.c + +ggi_SOURCES= vid_ggi.c +sdl_SOURCES= vid_sdl.c +svga_SOURCES= vid_svgalib.c +x11_SOURCES= vid_x11.c +glx_SOURCES= vid_glx.c +tdfx_SOURCES= vid_3dfx.c + +#qf_client_ggi_SOURCES= $(common_SOURCES) $(client_SOURCES) $(soft_SOURCES) $(ggi_SOURCES) +#qf_client_sdl_SOURCES= $(common_SOURCES) $(client_SOURCES) $(soft_SOURCES) $(sdl_SOURCES) +qf_client_svga_SOURCES= $(common_SOURCES) $(client_SOURCES) $(soft_SOURCES) $(svga_SOURCES) +qf_client_x11_SOURCES= $(common_SOURCES) $(client_SOURCES) $(soft_SOURCES) $(x11_SOURCES) +qf_client_3dfx_SOURCES= $(common_SOURCES) $(client_SOURCES) $(ogl_SOURCES) $(tdfx_SOURCES) +qf_client_glx_SOURCES= $(common_SOURCES) $(client_SOURCES) $(ogl_SOURCES) $(glx_SOURCES) +qf_server_SOURCES= $(common_SOURCES) $(server_SOURCES) diff --git a/RPM/build_rpm.in b/RPM/build_rpm.in new file mode 100644 index 0000000..50d5edb --- /dev/null +++ b/RPM/build_rpm.in @@ -0,0 +1,27 @@ +#!/bin/sh -x + +version=@VERSION@ +temp_dir=/var/tmp +srcdir=@srcdir@ +if [ "$srcdir" = "." ]; then + srcdir=.. +fi + +rm -rf BUILD SPECS RPMS SOURCES SRPMS +mkdir -p BUILD SPECS RPMS/{noarch,i386,i686} SOURCES SRPMS +rm -rf ${temp_dir}/quakeforge-${version} +cp -a $srcdir ${temp_dir}/quakeforge-${version} +dest_dir=$PWD +cd ${temp_dir}/quakeforge-${version} +# this is needed to ensure there is a makefile +./bootstrap +./configure +make distclean +cd ${temp_dir} +tar zcf ${dest_dir}/SOURCES/quakeforge-${version}.tar.gz quakeforge-${version} +cd ${dest_dir} +rm -rf ${temp_dir}/quakeforge-${version} +cat > rpmmacros < $RPM_BUILD_DIR/file.list.%{name} +find . -type f | sed 's,^\.,\%attr(-\,root\,root) ,' >> $RPM_BUILD_DIR/file.list.%{name} +find . -type l | sed 's,^\.,\%attr(-\,root\,root) ,' >> $RPM_BUILD_DIR/file.list.%{name} + +%clean +rm -rf $RPM_BUILD_ROOT +rm ../file.list.%{name} + +%files -f ../file.list.%{name} +%doc README diff --git a/acconfig.h b/acconfig.h new file mode 100644 index 0000000..b9eb081 --- /dev/null +++ b/acconfig.h @@ -0,0 +1,80 @@ +/* "Proper" package name */ +#undef PROGRAM + +/* Define this to the QuakeWorld standard version you support */ +#undef QW_VERSION + +/* Define this to the QSG standard version you support */ +#undef QSG_VERSION + +/* Define if you want to use QF-style defaults instead of Id-style */ +#undef NEWSTYLE + +/* Define this to the location of the global config file */ +#undef FS_GLOBALCFG + +/* Define this to the shared game directory root */ +#undef FS_SHAREPATH + +/* Define this to the unshared game directory root */ +#undef FS_USERPATH + +/* Define this to the base game for the engine to load */ +#undef BASEGAME + +/* Define this if you have OpenGL */ +#undef HAVE_OPENGL + +/* Define if you have the XFree86 DGA extension */ +#undef HAVE_DGA + +/* Define if you have the XFree86 VIDMODE extension */ +#undef HAVE_VIDMODE + +/* If your version of OpenGL uses APIENTRY, define GLAPIENTRY to be APIENTRY*/ +#undef GLAPIENTRY + +/* Define this if you are using Mesa */ +#undef HAVE_XMESA + +/* Define this if you want IPv6 support */ +#undef HAVE_IPV6 + +/* Define this if you have GL_COLOR_INDEX8_EXT in GL/gl.h */ +#undef HAVE_GL_COLOR_INDEX8_EXT + +/* Define this if C symbols are prefixed with an underscore */ +#undef HAVE_SYM_PREFIX_UNDERSCORE + +/* Define this if you want to use Intel assembly optimizations */ +#undef USE_INTEL_ASM + +/* Define this if you have a Linux-style CD-ROM API */ +#undef USE_LINUX_CD + +/* Define this if you have a BSD-style CD-ROM API */ +#undef USE_BSD_CD + +/* Define this to use experimental code */ +#undef _EXPERIMENTAL_ + +/* Define this if your system has socklen_t */ +#undef HAVE_SOCKLEN_T + +/* Define this if your system has size_t */ +#undef HAVE_SIZE_T + +/* Define this if you have ss_len member in struct sockaddr_storage (BSD) */ +#undef HAVE_SS_LEN + +/* Define this if you have sin6_len member in struct sockaddr_in6 (BSD) */ +#undef HAVE_SIN6_LEN + +/* Define this if you have sa_len member in struct sockaddr (BSD) */ +#undef HAVE_SA_LEN + +/* Define this to something sane if you don't have stricmp */ +#undef stricmp + +/* Define if you have the dlopen function. */ +#undef HAVE_DLOPEN diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..bd4779c --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,127 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Like AC_CONFIG_HEADER, but automatically create stamp file. + +AC_DEFUN(AM_CONFIG_HEADER, +[AC_PREREQ([2.12]) +AC_CONFIG_HEADER([$1]) +dnl When config.status generates a header, we must update the stamp-h file. +dnl This file resides in the same directory as the config header +dnl that is generated. We must strip everything past the first ":", +dnl and everything past the last "/". +AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl +ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, +<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, +<>; do + case " <<$>>CONFIG_HEADERS " in + *" <<$>>am_file "*<<)>> + echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx + ;; + esac + am_indx=`expr "<<$>>am_indx" + 1` +done<<>>dnl>>) +changequote([,]))]) + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..342e4c4 --- /dev/null +++ b/configure.in @@ -0,0 +1,516 @@ +dnl Process this file with autoconf to produce a configure script. +AC_PREREQ(2.13) +AC_INIT(source/sv_main.c) +AC_REVISION($Revision$) dnl +AM_CONFIG_HEADER(include/config.h) +AC_CANONICAL_SYSTEM + +dnl This is the only place where the package version appears +AM_INIT_AUTOMAKE(quakeforge, 0.1.99pre0) + +QW_VERSION=2.40 +QSG_VERSION=1.0 + +AC_DEFINE_UNQUOTED(PROGRAM, "QuakeForge") +AC_DEFINE_UNQUOTED(QW_VERSION, "$QW_VERSION") +AC_DEFINE_UNQUOTED(QSG_VERSION, "$QSG_VERSION") +AC_SUBST(QW_VERSION) +AC_SUBST(QSG_VERSION) + +dnl Start TARGETS out at "qf-server" +TARGETS=qf-server + +dnl Set to yes for releases +RELEASE=no + +dnl Set this to no for Id defaults +NEWSTYLE=yes + +ISODATE=`date +%Y-%m-%d` +AC_SUBST(ISODATE) + +AC_LANG_C + +dnl Checks for programs. +AC_PROG_AWK +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S + +dnl Checks for system services +AC_SYS_LONG_FILE_NAMES +AC_EXEEXT +AC_OBJEXT + +dnl Checks for header files. +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_HEADER_MAJOR +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS( + unistd.h fcntl.h dlfcn.h windows.h sys/ioctl.h sys/mman.h \ + sys/io.h asm/io.h \ + sys/stat.h sys/time.h sys/timeb.h \ + sys/socket.h netinet/in.h netdb.h arpa/inet.h sys/filio.h \ + sys/soundcard.h linux/soundcard.h machine/soundcard.h sys/audioio.h \ + dsound.h mmsystem.h initguid.h mme/mmsystem.h mme/mme_public.h \ + sys/asoundlib.h string.h strings.h memory.h malloc.h \ + errno.h sys/dir.h +) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T +AC_STRUCT_ST_BLKSIZE +AC_HEADER_TIME +AC_STRUCT_TM + +AC_TRY_COMPILE( + [#include ], + [ socklen_t x = 0;], + AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + dnl FreeBSD 4.0 has it in sys/socket.h + AC_MSG_CHECKING(for socklen_t in sys/socket.h) + AC_TRY_COMPILE( + [#include + #include ], + [ socklen_t x = 0;], + AC_DEFINE(HAVE_SOCKLEN_T) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + ) +) + +AC_MSG_CHECKING(for size_t in sys/types.h) +AC_TRY_COMPILE( + [#include ], + [ size_t x = 0;], + AC_DEFINE(HAVE_SIZE_T) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) +) + +dnl maybe these two (at least the 2nd) should only be checked if ipv6 is enabled? +AC_MSG_CHECKING(for ss_len in struct sockaddr_storage) +AC_TRY_COMPILE( + [#include + #include ], + [ void f(void) { struct sockaddr_storage ss; ss.ss_len=0; }], + AC_DEFINE(HAVE_SS_LEN) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) +) + +AC_MSG_CHECKING(for sin6_len in struct sockaddr_in6) +AC_TRY_COMPILE( + [#include + #include ], + [ void f(void) { struct sockaddr_in6 s6; s6.sin6_len=0; }], + AC_DEFINE(HAVE_SIN6_LEN) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) +) + +AC_MSG_CHECKING(for sa_len in struct sockaddr) +AC_TRY_COMPILE( + [#include + #include ], + [ void f(void) { struct sockaddr sa; sa.sa_len=0; }], + AC_DEFINE(HAVE_SA_LEN) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) +) + +dnl Checks for library functions. +AC_FUNC_ALLOCA +AC_FUNC_MEMCMP +AC_FUNC_MMAP +AC_TYPE_SIGNAL +AC_FUNC_VPRINTF +AC_CHECK_FUNCS( + gethostname gethostbyname connect gettimeofday getwd mkdir \ + ftime _ftime fcntl stat putenv select socket strerror strstr \ + snprintf _snprintf vsnprintf _vsnprintf strsep dlopen getaddrinfo \ + getnameinfo +) + +dnl Checks for stricmp/strcasecmp +AC_CHECK_FUNC(stricmp,, + AC_CHECK_FUNC(strcasecmp, AC_DEFINE(stricmp,strcasecmp))) + +dnl Check for vsnprintf +if test "x$ac_cv_func_vsnprintf" = "xno" -a \ + "x$ac_cv_func__vsnprintf" = "xno"; then + dnl libdb may have this + AC_CHECK_LIB(db,vsnprintf) +fi + +dnl Checks for working -lm +AC_CHECK_LIB(m, pow,, AC_MSG_ERROR([math library (-lm) appears broken])) + +dnl Checks for SVGALib support +AC_ARG_WITH(svga, +[ --with-svga[=DIR] use SVGALib found in DIR], +HAVE_SVGA=$withval, HAVE_SVGA=auto) +if test "x$HAVE_SVGA" != xno; then + if test "x$HAVE_SVGA" != xauto; then + SVGA_CFLAGS="$SVGA_CFLAGS= -I$withval/include" + SVGA_LIBS="$SVGA_LIBS -L$withval/lib" + dnl The default system location is /usr/include or /usr/local/include + dnl and we (obviously) do not need to set CFLAGS for that + fi + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $SVGA_CFLAGS" + AC_CHECK_HEADER(vga.h, HAVE_SVGA=yes, HAVE_SVGA=no) + CPPFLAGS="$save_CPPFLAGS" + + dnl Make sure -lvga works + if test "x$HAVE_SVGA" = xyes; then + AC_CHECK_LIB(vga, vga_getmousetype, SVGA_LIBS="$SVGA_LIBS -lvga" + HAVE_SVGA=yes, HAVE_SVGA=no, [$SVGA_LIBS] + ) + fi + if test "x$HAVE_SVGA" != xyes; then + SVGA_CFLAGS="" SVGA_LIBS="" + fi +fi +AC_SUBST(SVGA_CFLAGS) +AC_SUBST(SVGA_LIBS) + +dnl Checks for X11 and XShm +AC_PATH_XTRA +if test "x$no_x" = x; then + HAVE_X11=yes + AC_CHECK_LIB(Xext, XShmQueryExtension, [X11_SHM_LIB=-lXext], + [HAVE_X11="no"], [ $X_LIBS -lX11 $X_EXTRA_LIBS ] + ) + + dnl check for X11 video driver + AC_MSG_CHECKING(for X11 video driver) + case "${target}" in + *-solaris*) + X11_VID_SRC="vid_sunx.c" ;; + *) + if test "x$HAVE_X11"; then + X11_VID_SRC="vid_x11.c"; + else + X11_VID_SRC= + fi + ;; + esac +fi +if test "x$X11_VID_SRC" = x; then +AC_MSG_RESULT(no) +else +AC_MSG_RESULT(yes ($X11_VID_SRC)) +fi +AC_SUBST(X_CFLAGS) +AC_SUBST(X_LIBS) +AC_SUBST(X11_SHM_LIB) +AC_SUBST(X11_VID_SRC) + +dnl Checks for OpenGL support +dnl GL is a special case, we need seperate includes/libs entires +AC_ARG_WITH(opengl, + [ --with-opengl[=DIR] use OpenGL with libraries found in DIR], + HAVE_OPENGL=$withval, HAVE_OPENGL=auto +) +AC_ARG_WITH(opengl-includes, + [ --with-opengl-includes[=DIR] + use OpenGL with header files found in DIR], + OPENGL_INCLUDES=$withval, OPENGL_INCLUDES=auto +) +if test "x$OPENGL_INCLUDES" = xno; then + HAVE_OPENGL="no" +fi +if test "x$HAVE_OPENGL" = xno; then + OPENGL_INCLUDES="" +fi +if test "x$HAVE_OPENGL" != xno; then + if test "x$HAVE_OPENGL" != xauto; then + OPENGL_LIBS="$OPENGL_LIBS -L$HAVE_OPENGL" + fi + if test "x$OPENGL_INCLUDES" != xauto; then + OPENGL_INCLUDES="-I$OPENGL_INCLUDES" + else + OPENGL_INCLUDES="-I${x_includes:-.}" + fi + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $OPENGL_INCLUDES" + AC_CHECK_HEADER(GL/gl.h, HAVE_OPENGL=yes, HAVE_OPENGL=no) + if test "x$HAVE_OPENGL" != xno; then + AC_MSG_CHECKING(for GL_COLOR_INDEX8_EXT in GL/gl.h) + AC_TRY_COMPILE([#include "GL/gl.h"], + [ int x = (int) GL_COLOR_INDEX8_EXT;], + AC_DEFINE(HAVE_GL_COLOR_INDEX8_EXT) AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + ) + AC_MSG_CHECKING(for GLAPIENTRY in GL/gl.h) + AC_TRY_COMPILE( + [#include "GL/gl.h"], + [ int x = GLAPIENTRY printf("");], + HAVE_GLAPIENTRY=yes, HAVE_GLAPIENTRY=no + ) + if test "x$HAVE_GLAPIENTRY" != xno; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + + AC_MSG_CHECKING(for APIENTRY in GL/gl.h) + AC_TRY_COMPILE( + [#include "GL/gl.h"], + [ int x = APIENTRY printf("");], + AC_DEFINE(GLAPIENTRY, APIENTRY) AC_MSG_RESULT(yes), + AC_DEFINE(GLAPIENTRY, ) AC_MSG_RESULT(no) + ) + fi + fi + CPPFLAGS="$save_CPPFLAGS" + + dnl Make sure -lGL or -lMesaGL works + if test "x$HAVE_OPENGL" = xyes; then + AC_CHECK_LIB(GL, glColor4f, + OPENGL_LIBS="$OPENGL_LIBS -lGL" + HAVE_OPENGL=yes + OPENGL_NAME=GL + if test "x$have_dynload" != "xyes"; then + AC_CHECK_LIB(GL, XMesaSetFXmode, qwfoo=qwfoo, HAVE_XMESA=no, + [ $OPENGL_LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS] + ) + fi + ,HAVE_OPENGL=no, + [ $OPENGL_LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS] + ) + if test "x$HAVE_OPENGL" != xyes; then + AC_CHECK_LIB(MesaGL, glColor4f, OGL_LIBS="$OGL_LIBS -lMesaGL" + HAVE_OPENGL=yes + OPENGL_NAME=MesaGL + if test "x$have_dynload" != "xyes"; then + AC_CHECK_LIB(MesaGL, XMesaSetFXmode, qwfoo=qwfoo, HAVE_XMESA=no, + [ $OPENGL_LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS] + ) + fi + ,HAVE_OPENGL=no, + [ $OPENGL_LIBS $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS] + ) + fi + fi + if test "x$HAVE_OPENGL" != xyes; then + OGL_CFLAGS="" OGL_LIBS="" + else + if test "x$HAVE_XMESA" = xyes; then + AC_DEFINE(HAVE_XMESA) + fi + fi +fi +if test "x$HAVE_OPENGL" = xyes; then + AC_DEFINE(HAVE_OPENGL) +fi + +AC_SUBST(OGL_CFLAGS) +AC_SUBST(OGL_INCLUDES) +AC_SUBST(OGL_LIBS) + +dnl Set $prefix and $exec_prefix to $ac_default_prefix if they haven't been set +test "x$prefix" = xNONE && prefix=$ac_default_prefix +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +AC_ARG_ENABLE(experimental, +[ --enable-experimental compile with experimental code. Use at your + own risk]) +if test "x$enable_experimental" = xyes; then + AC_DEFINE(_EXPERIMENTAL_) +fi + +AC_ARG_WITH(gamename, +[ --with-newstyle compile with defaults a bit different than those + used by Id Software (does not affect gameplay)], + NEWSTYLE=$enable_newstyle +) +if test "x$NEWSTYLE" = xyes; then + AC_DEFINE(NEWSTYLE) + AC_DEFINE(BASEGAME, "base") +else + AC_DEFINE(BASEGAME, "id1") +fi + +AC_ARG_WITH(global-cfg, +[ --with-global-cfg=FILE If set will change the name and location of the + global config file used by QuakeForge. Defaults to + \${sysconfdir}/quakeforge.conf], +globalconf="$withval", globalconf="auto") +if test "x$globalconf" = "xauto" || test "x$globalconf" = "xyes" || \ + test "x$globalconf" = "xno"; then dnl yes/no sanity checks + eval foo="$sysconfdir" + AC_DEFINE_UNQUOTED(FS_GLOBALCFG, "$foo/quakeforge.conf") +else + AC_DEFINE_UNQUOTED(FS_GLOBALCFG, $globalconf) +fi + +AC_ARG_WITH(sharepath, +[ --with-sharepath=DIR Use DIR for shared game data, defaults to + \${datadir}/games/quakeforge], +SHAREPATH=$withval, SHAREPATH="auto") +if test "x$SHAREPATH" = "xauto" -o "x$SHAREPATH" = "xyes" -o "x$SHAREPATH" = "x"; then + eval foo="$datadir" + AC_DEFINE_UNQUOTED(FS_SHAREPATH, "$foo/games/quakeforge") +elif test "x$SHAREPATH" = xno; then + AC_DEFINE_UNQUOTED(FS_SHAREPATH, ".") +else + AC_DEFINE_UNQUOTED(FS_SHAREPATH, "$SHAREPATH") +fi + +AC_ARG_WITH(userpath, +[ --with-userpath=DIR Use DIR for unshared game data, defaults to + \${HOME}/.quakeforge], +USERPATH=$withval, USERPATH="auto") +if test "x$USERPATH" = "xauto" -o "x$USERPATH" = "xyes" -o "x$USERPATH" = "x"; then + AC_DEFINE_UNQUOTED(FS_USERPATH, "~/.quakeforge") +elif test "x$USERPATH" = xno; then + AC_DEFINE_UNQUOTED(FS_USERPATH, ".") +else + AC_DEFINE_UNQUOTED(FS_USERPATH, "$USERPATH") +fi + +dnl CFLAGS for release and devel versions +AC_ARG_ENABLE(release, + [ --enable-release compile release (with optimizations)], + RELEASE=$enable_release +) +if test "x$RELEASE" = xyes; then + CFLAGS="-O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations" + if test "x$GCC" = xyes; then + AC_MSG_CHECKING(for special release compiler settings) + case "${target}" in + i?86-*-*) + MORE_CFLAGS="-malign-loops=2 -malign-jumps=2 -malign-functions=2" + ;; + *) + MORE_CFLAGS="" + ;; + esac + if test "x$MORE_CFLAGS" = x; then + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + CFLAGS="$CFLAGS $MORE_CFLAGS" + fi + else + CFLAGS=-O2 + fi +fi + +dnl QuakeForge code has lots of BCPL-style (//) comments, which cause +dnl problems with any compiler that is ANSI/ISO-C compliant. +dnl Make the compiler swallow its pride... +if test "x$GCC" != xyes; then + AC_MSG_CHECKING(for how to deal with C++ comments) + case "$target" in + *-aix*) + CFLAGS="$CFLAGS -qcpluscmt" + AC_MSG_RESULT([-qcpluscmt]) + ;; + *-irix6*) + CFLAGS="$CFLAGS -Xcpluscomm" + AC_MSG_RESULT([-Xcpluscomm]) + ;; + *-solaris*) + CFLAGS="$CFLAGS -xCC" + AC_MSG_RESULT([-xCC]) + ;; + *) + AC_MSG_RESULT(nothing needed or no switch known) + ;; + esac +fi + +dnl We want warnings, lots of warnings... +if test "x$GCC" = xyes; then + CFLAGS="$CFLAGS -Wall -Werror" +# CFLAGS="$CFLAGS -Wall -pedantic" +fi + +dnl Check for ia32 +AC_MSG_CHECKING(for an ia32 machine) +case "${target}" in + i?86-*-*) + AC_MSG_RESULT(yes) + AC_MSG_CHECKING(to see if we should disable asm optimizations) + AC_ARG_ENABLE(asmopt, + [ --disable-asmopt disable assembler optimization], + ASM_ARCH=none + AC_MSG_RESULT(yes), + AC_DEFINE(USE_INTEL_ASM) + AC_MSG_RESULT(no) + ) + ;; + *) AC_MSG_RESULT(no) +esac + +dnl Checks for which system driver to use +AC_MSG_CHECKING(for system driver) +case "${target}" in + *-*-linux-gnu*) + CL_SYS_SRC="sys_linux.c" + SV_SYS_SRC="sys_unix.c" + ;; + i?86-*-mingw32*) + CL_SYS_SRC="sys_win.c" + SV_SYS_SRC="sys_win.c" + ;; + i?86-*-*djgpp* | i?86-*-*msdos*) +# XXX - dos - conproc.c(?) sys_dos.c +# XXX - need to add dos + CL_SYS_SRC="" + SV_SYS_SRC="" + ;; + *) + CL_SYS_SRC="sys_linux.c" + SV_SYS_SRC="sys_unix.c" + DEFAULT_SYS=yes + ;; +esac +if test "x$DEFAULT_SYS" = xyes; then +AC_MSG_RESULT([no, using default]) +else +AC_MSG_RESULT(yes ($CL_SYS_SRC $SV_SYS_SRC)) +fi + +AC_MSG_CHECKING(targets to be built) +if test "x$HAVE_SVGA" = xyes; then + TARGETS="$TARGETS qf-client-svga" +fi +if test "x$HAVE_X11" = xyes; then + TARGETS="$TARGETS qf-client-x11" +fi +if test "x$HAVE_OPENGL" = xyes; then + TARGETS="$TARGETS qf-client-glx" +fi + +AC_SUBST(libdir) + +AC_SUBST(ASM_ARCH) +AC_SUBST(HAVE_OPENGL) +AC_SUBST(HAVE_SVGA) +AC_SUBST(HAVE_X11) +AC_SUBST(INTEL_ARCH) +AC_SUBST(LIBS) +AC_SUBST(CL_SYS_SRC) +AC_SUBST(SV_SYS_SRC) +AC_SUBST(QW_VERSION) +AC_SUBST(TARGETS) + +AC_SUBST(ac_configure_args) + +dnl Output files +AC_OUTPUT( + source/Makefile + Makefile + RPM/quakeforge.spec + RPM/build_rpm + quakeforge.lsm, + chmod +x RPM/build_rpm +) +AC_MSG_RESULT([ + The following targets have been configured: + + $TARGETS] +) diff --git a/man/quakeforge.1 b/man/quakeforge.1 new file mode 100644 index 0000000..3419db5 --- /dev/null +++ b/man/quakeforge.1 @@ -0,0 +1,47 @@ +.\" hey, Emacs: -*- nroff -*- +.\" quakeforge is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this program; see the file COPYING. If not, write to +.\" the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +.\" +.TH QUAKEFORGE 1 "May 15, 2000" +.\" Please update the above date whenever this man page is modified. +.SH NAME +quakeforge \- 3D game engine based on id Software's Quake engine +.SH SYNOPSIS +.B quakeforge +.RI [ options ] +.SH DESCRIPTION +\fBquakeforge\fP washes your windows, mends your fences, mows your lawn... +.PP +It also... +.SH OPTIONS +\fBquakeforge\fP accepts the following options: +.TP +.BR -i , " --interactive" +Prompt for confirmation. +.TP +.BR -q , " --quiet" , " --silent" +Inhibit usual output. +.TP +.B --verbose +Print more information. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.\" .SH "SEE ALSO" +.\" .BR foo "(1), " bar (1) +.SH AUTHOR +The QuakeForge Project . diff --git a/quakeforge.lsm.in b/quakeforge.lsm.in new file mode 100644 index 0000000..c8f9401 --- /dev/null +++ b/quakeforge.lsm.in @@ -0,0 +1,16 @@ +Begin3 +Title: quakeforge +Version: @VERSION@ +Entered-date: @ISODATE@ +Description: 3D game engine based on id Software's Quake engine +Keywords: 3D, game, engine, quake +Author: quake-devel@lists.sourceforge.net (The QuakeForge Project) +Maintained-by: quake-devel@lists.sourceforge.net (The QuakeForge Project) +Primary-site: http://www.quakeforge.net/ + 31k quakeforge-@VERSION@.tar.gz + 550 quakeforge.lsm +Alternate-site: http://sourceforge.net/project/?group_id=882 +Original-site: http://www.quakeforge.net/ +Platforms: any +Copying-policy: GPL v2 +End diff --git a/source/Makefile.am b/source/Makefile.am new file mode 100644 index 0000000..f3fdc9c --- /dev/null +++ b/source/Makefile.am @@ -0,0 +1,41 @@ +## Process this file with automake to produce Makefile.in + +bin_PROGRAMS = @TARGETS@ + +EXTRA_PROGRAMS= qf-server qf-client-svga qf-client-x11 qf-client-glx + +common_SOURCES= net_chan.c net_com.c net_udp.c pmove.c pmovetst.c zone.c \ + mdfour.c mathlib.c math.S cvar.c crc.c common.c model.c cmd.c +server_SOURCES= pr_cmds.c pr_edict.c pr_exec.c sv_init.c sv_main.c sv_misc.c \ + sv_model.c sv_nchan.c sv_ents.c sv_send.c sv_move.c sv_phys.c \ + sv_user.c sv_ccmds.c world.c worlda.S sys_unix.c sv_cvar.c +client_SOURCES= cl_cmd.c cl_cvar.c cl_demo.c cl_ents.c cl_input.c cl_main.c \ + cl_math.S cl_misc.c cl_parse.c cl_pred.c cl_tent.c cl_cam.c \ + snd_linux.c sys_linux.c cd_linux.c r_view.c wad.c snd_dma.c \ + snd_mem.c snd_mix.c snd_mixa.S skin.c sbar.c nonintel.c \ + menu.c keys.c console.c sys_x86.S +soft_SOURCES= cl_model.c cl_trans.c d_edge.c d_fill.c d_init.c d_modech.c \ + d_part.c d_polyse.c d_scan.c d_sky.c d_sprite.c d_surf.c \ + d_vars.c d_zpoint.c draw.c r_aclip.c r_alias.c r_bsp.c \ + r_draw.c r_edge.c r_efrag.c r_light.c r_main.c r_misc.c \ + r_part.c r_sky.c r_sprite.c r_surf.c r_vars.c sw_view.c \ + screen.c \ + d_copy.S d_draw.S d_draw16.S d_parta.S d_polysa.S d_scana.S \ + d_spr8.S d_varsa.S r_aclipa.S r_aliasa.S r_drawa.S r_edgea.S \ + r_varsa.S surf16.S surf8.S +ogl_SOURCES= gl_draw.c gl_mesh.c gl_model.c gl_ngraph.c gl_part.c \ + gl_refrag.c gl_rlight.c gl_rmain.c gl_rmisc.c gl_rsurf.c \ + gl_screen.c gl_trans.c gl_view.c gl_warp.c + +svga_SOURCES= vid_svgalib.c +glx_SOURCES= vid_glx.c +x11_SOURCES= vid_x11.c + +qf_server_SOURCES= $(common_SOURCES) $(server_SOURCES) +qf_client_svga_SOURCES= $(common_SOURCES) $(client_SOURCES) $(soft_SOURCES) $(svga_SOURCES) +qf_client_x11_SOURCES= $(common_SOURCES) $(client_SOURCES) $(soft_SOURCES) $(x11_SOURCES) +qf_client_glx_SOURCES= $(common_SOURCES) $(client_SOURCES) $(ogl_SOURCES) $(glx_SOURCES) + +qf_client_svga_LDADD= @SVGA_LIBS@ +qf_client_x11_LDADD= @X_PRE_LIBS@ @X_LIBS@ @X_EXTRA_LIBS@ -lX11 @X11_SHM_LIB@ +qf_client_glx_LDADD= @OPENGL_LIBS@ diff --git a/texinfo/quakeforge.texinfo b/texinfo/quakeforge.texinfo new file mode 100644 index 0000000..ac2bbc8 --- /dev/null +++ b/texinfo/quakeforge.texinfo @@ -0,0 +1,195 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename quakeforge.info +@settitle 3D game engine based on id Software's Quake engine +@finalout +@setchapternewpage odd +@c %**end of header + +@set VERSION 0.1.0 + +@ifinfo +This file documents the @code{quakeforge} command which 3D game engine based on id Software's Quake engine + +Copyright (C) 2000 The QuakeForge Project + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). + +@end ignore +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. +@end ifinfo + +@titlepage +@title quakeforge +@subtitle 3D game engine based on id Software's Quake engine +@subtitle for quakeforge Version @value{VERSION} +@author by The QuakeForge Project + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 2000 The QuakeForge Project + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. +@end titlepage + +@c All the nodes can be updated using the EMACS command +@c texinfo-every-node-update, which is normally bound to C-c C-u C-e. +@node Top, Instructions, (dir), (dir) + +@ifinfo +This file documents the @code{quakeforge} command to 3D game engine based on id Software's Quake engine. +@end ifinfo + +@c All the menus can be updated with the EMACS command +@c texinfo-all-menus-update, which is normally bound to C-c C-u C-a. +@menu +* Instructions:: How to read this manual. +* Copying:: How you can copy and share @code{quakeforge}. +* Overview:: Preliminary information. +* Sample:: Sample output from @code{quakeforge}. +* Invoking quakeforge:: How to run @code{quakeforge}. +* Problems:: Reporting bugs. +* Concept Index:: Index of concepts. +@end menu + +@node Instructions, Copying, Top, Top +@chapter How to Read This Manual + +@cindex reading +@cindex manual, how to read +@cindex how to read +To read this manual, begin at the beginning, reading from left to right +and top to bottom, until you get to the end. Then stop. You may pause +for a beer anywhere in the middle as well, if you wish. (Please note, +however, that The King strongly advises against heavy use of +prescription pharmaceuticals, based on his extensive personal and +professional experience.) + +@node Copying, Overview, Instructions, Top +@include gpl.texinfo + +@node Overview, Sample, Copying, Top +@chapter Overview +@cindex greetings +@cindex overview + +The GNU @code{quakeforge} program produces a familiar, friendly greeting. +It allows nonprogrammers to use a classic computer science tool which +would otherwise be unavailable to them. Because it is protected by the +GNU General Public License, users are free to share and change it. + +GNU @code{quakeforge} was written by The QuakeForge Project. + +@node Sample, Invoking quakeforge, Overview, Top +@chapter Sample Output +@cindex sample + +Here are some realistic examples of running @code{quakeforge}. + +This is the output of the command @samp{quakeforge}: + +@example +hello, world! +@end example + +This is the output of the command @samp{quakeforge --help}: + +@example +3D game engine based on id Software's Quake engine +Usage: quakeforge [options] + -h, --help Print a summary of the options + -v, --version Print the version number +@end example + +@node Invoking quakeforge, Problems, Sample, Top +@chapter Invoking @code{quakeforge} +@cindex invoking +@cindex version +@cindex options +@cindex usage +@cindex help +@cindex getting help + +The format for running the @code{quakeforge} program is: + +@example +quakeforge @var{option} @dots{} +@end example + +@code{quakeforge} supports the following options: + +@table @samp +@item --interactive +@itemx -i +Prompt for confirmation. + +@item --quiet +@item --silent +@itemx -q +Inhibit usual output. + +@item --verbose +Print more information. + +@item --help +@itemx -h +Print an informative help message describing the options and then exit. + +@item --version +@itemx -v +Print the version number of @code{quakeforge} on the standard error output +and then exit. +@end table + +@node Problems, Concept Index, Invoking quakeforge, Top +@chapter Reporting Bugs +@cindex bugs +@cindex problems + +If you find a bug in @code{quakeforge}, please send electronic mail to +@w{@samp{quake-devel@@lists.sourceforge.net}}. Include the version number, which you can find by +running @w{@samp{quakeforge --version}}. Also include in your message the +output that the program produced and the output you expected.@refill + +If you have other questions, comments or suggestions about +@code{quakeforge}, contact the author via electronic mail to +@w{@samp{quake-devel@@lists.sourceforge.net}}. The author will try to help you out, although he +may not have time to fix your problems. + +@node Concept Index, , Problems, Top +@unnumbered Concept Index + +@cindex tail recursion +@printindex cp + +@shortcontents +@contents +@bye