%define name quakeforge %define qfversion @VERSION@ %define rpmversion @RPMVERSION@ %define release 1 %define builddir $RPM_BUILD_DIR/%{name}-%{qfversion} %define HAVE_FBDEV '@HAVE_FBDEV@' %define HAVE_SDL '@HAVE_SDL@' %define HAVE_SVGA '@HAVE_SVGA@' %define HAVE_X11 '@HAVE_X@' %define HAVE_XMMS '@HAVE_XMMS@' %define HAVE_ALSA '@HAVE_ALSA@' %define HAVE_OSS '@HAVE_OSS@' %define BUILD_GL '@CAN_BUILD_GL@' %define BUILD_SW '@CAN_BUILD_SW@' %define ALSA_PLUGIN '@ALSA_PLUGIN@' %define fs_sharepath %{_prefix}/share/games/quakeforge Name: %{name} Version: %{rpmversion} Release: %{release} Vendor: The QuakeForge Project Packager: The QuakeForge Project quakeforge-devel@lists.quakeforge.net URL: http://www.quakeforge.net/ Source: %{name}-%{qfversion}.tar.gz #Patch: Group: Amusements/Games Copyright: GPL #Icon: Requires: quakeforge-common, quake-game BuildRoot: /var/tmp/%{name}-%{qfversion} Summary: QuakeForge 3D game engine %description QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. %package common Summary: QuakeForge 3D game engine - common files Group: Amusements/Games #Requires: %description common QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains files and shared libraries common to all QuakeForge packages. %package devel Summary: QuakeForge 3D game engine - headers and devel libs Group: Amusements/Games Requires: quakeforge-common %description devel QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains headers and static libraries for the development of utilities and applications for QuakeForge. %if "%{HAVE_SDL}"=="'yes'" %package sdl Summary: QuakeForge 3D game engine - SDL client Group: Amusements/Games Requires: quakeforge == %{rpmversion}, quakeforge-common == %{rpmversion} %description sdl QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the SDL versions of the QuakeWorld client and standalone engine. %package sgl Summary: QuakeForge 3D game engine - SDL-GL client Group: Amusements/Games Requires: quakeforge == %{rpmversion} %description sgl QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the SDL-GL versions of the QuakeForge client and standalone engine. %endif %if "%{HAVE_SVGA}"=="'yes'" %package svga Summary: QuakeForge 3D game engine - SVGAlib client Group: Amusements/Games Requires: quakeforge == %{rpmversion} %description svga QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the SVGAlib versions of the QuakeWorld client and standalone engine. %endif %if "%{HAVE_X11}"=="'yes'" %package x11 Summary: QuakeForge 3D game engine - X11 client Group: Amusements/Games Requires: quakeforge == %{rpmversion} %description x11 QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the X11 versions of the QuakeForge client and standalone engine. %endif %if "%{HAVE_X11}"=="'yes'" %package glx Summary: QuakeForge 3D game engine - glx client Group: Amusements/Games Requires: quakeforge == %{rpmversion}, quakeforge-common == %{rpmversion} %description glx QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the GLX versions of the QuakeForge client and standalone engine. %endif %package servers Summary: QuakeForge 3D game engine - Server Group: Amusements/Games Requires: quakeforge == %{rpmversion}, quakeforge-common == %{rpmversion} %description servers QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains both the QuakeWorld-compatible and NetQuake-compatible dedicated servers, as well as a simple QuakeWorld-compatible master server. %if "%{BUILD_SW}"=="'yes'" %package libs-sw Summary: QuakeForge 3D game engine - Software renderer libraries Group: Amusements/Games #Requires: %description libs-sw QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the shared libraries needed to use the software rendering targets. %endif %if "%{BUILD_GL}"=="'yes'" %package libs-gl Summary: QuakeForge 3D game engine - OpenGL renderer libraries Group: Amusements/Games #Requires: %description libs-gl QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This package contains the shared libraries needed to use the OpenGL rendering targets. %endif %if "%{HAVE_OSS}"=="'yes'" %package oss Summary: OSS sound plugin for QuakeForge Group: Amusements/Games #Requires: %description oss The OSS plugin for QuakeForge provides digital audio output (using OSS/Linux, OSS/Free, or kernel sound) for QuakeForge targets that contain clients. NOTE: This plugin does not work on all systems, since it uses memory-mapped I/O for the output device. If you have trouble, try the quakeforge-alsa package. %endif %if "%{HAVE_ALSA}"=="'yes'" %package alsa Summary: ALSA sound plugin for QuakeForge Group: Amusements/Games #Requires: %description alsa The ALSA plugin for QuakeForge provides digital audio output for QuakeForge targets that contain clients. %endif %package utils Summary: QuakeForge 3D game engine - utility programs Group: Amusements/Games #Requires: %description utils This package contains several tools for use with QuakeForge: * pak, a pakfile management tool. * zpak, a script for compressing pakfiles. * qfprogs, a "nm" tool for examining progs data files. * qfwavinfo, a tool to assist in converting "looped" WAV files to Ogg Vorbis. %package maptools Summary: QuakeForge 3D game engine - headers and devel libs Group: Amusements/Games Requires: quakeforge-common %description maptools This package contains QuakeForge's versions of the tools Id Software used to create maps for the Quake engine. Included are: * qfbsp, a program for compiling a map file into a BSP tree. * qflight, a program for generating lightmaps from the static lights in a BSP file. * qfvis, a program for generating the Possibly-Visible Set information from a BSP and a portal information file (generated by qfbsp). %package -n qfcc Summary: QuakeForge QC/Ruamoko compiler #FIXME correct group? Group: Amusements/Games Requires: quakeforge-common %description -n qfcc QFCC is an optimizing byte-code compiler for the Ruamoko language, a language based strongly on Id Software's QuakeC. The bytecode interpreter for QuakeC and Ruamoko is located inside the Quake engine (though there is a standalone interpreter available). QFCC is designed to work with the QuakeForge engines, but will work with most non-QuakeForge servers with a couple of changes to its command-line options. %package stub Summary: QuakeForge 3D game engine - common files Group: Amusements/Games #Requires: Provides: quake-game %description stub QuakeForge is a source port of Quake and QuakeWorld, the successors to id Software's very popular DOOM series. Its primary development goal is to remain compatible with the original games released by id Software while adding portability and optional extensions to enhance gameplay. This sub-package provides the quake-game pseudo package. %prep %setup -n %{name}-%{qfversion} #%patch -p1 %build CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} if test -f /proc/cpuinfo; then make -j`grep processor /proc/cpuinfo | wc -l` else make fi %install if [ -d $RPM_BUILD_ROOT ]; then rm -rf $RPM_BUILD_ROOT; fi mkdir -p $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/etc make install DESTDIR=$RPM_BUILD_ROOT cp RPM/quakeforge.conf $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT/%{fs_sharepath}/id1 %clean rm -rf $RPM_BUILD_ROOT %files %doc COPYING INSTALL TODO doc/* %files common %attr(-,root,root) /etc/quakeforge.conf %attr(-,root,root) %{_prefix}/lib/libQFcd.so.* %attr(-,root,root) %{_prefix}/lib/libQFconsole.so.* %attr(-,root,root) %{_prefix}/lib/libQFgamecode.so.* %attr(-,root,root) %{_prefix}/lib/libQFgamecode_builtins.so.* %attr(-,root,root) %{_prefix}/lib/libQFgib.so.* %attr(-,root,root) %{_prefix}/lib/libQFimage.so.* %attr(-,root,root) %{_prefix}/lib/libQFjs.so.* %attr(-,root,root) %{_prefix}/lib/libQFmodels.so.* %attr(-,root,root) %{_prefix}/lib/libQFruamoko.so.* %attr(-,root,root) %{_prefix}/lib/libQFsound.so.* %attr(-,root,root) %{_prefix}/lib/libQFutil.so.* %attr(-,root,root) %{_prefix}/lib/quakeforge/cd_file.so* %attr(-,root,root) %{_prefix}/lib/quakeforge/cd_linux.so* %attr(-,root,root) %{_prefix}/lib/quakeforge/console_client.so* %attr(-,root,root) %{_prefix}/lib/quakeforge/snd_output_disk.so* %attr(-,root,root) %{_prefix}/lib/quakeforge/snd_render_default.so* %attr(-,root,root) %{fs_sharepath}/QF/menu.dat* %files devel %attr(-,root,root) %{_prefix}/lib/libQFcd.*a %attr(-,root,root) %{_prefix}/lib/libQFcd.so %attr(-,root,root) %{_prefix}/lib/libQFconsole.*a %attr(-,root,root) %{_prefix}/lib/libQFconsole.so %attr(-,root,root) %{_prefix}/lib/libQFgamecode.*a %attr(-,root,root) %{_prefix}/lib/libQFgamecode.so %attr(-,root,root) %{_prefix}/lib/libQFgamecode_builtins.*a %attr(-,root,root) %{_prefix}/lib/libQFgamecode_builtins.so %attr(-,root,root) %{_prefix}/lib/libQFgib.*a %attr(-,root,root) %{_prefix}/lib/libQFgib.so %attr(-,root,root) %{_prefix}/lib/libQFimage.*a %attr(-,root,root) %{_prefix}/lib/libQFimage.so %attr(-,root,root) %{_prefix}/lib/libQFjs.*a %attr(-,root,root) %{_prefix}/lib/libQFjs.so %attr(-,root,root) %{_prefix}/lib/libQFmodels.*a %attr(-,root,root) %{_prefix}/lib/libQFmodels.so %attr(-,root,root) %{_prefix}/lib/libQFruamoko.*a %attr(-,root,root) %{_prefix}/lib/libQFruamoko.so %attr(-,root,root) %{_prefix}/lib/libQFsound.*a %attr(-,root,root) %{_prefix}/lib/libQFsound.so %attr(-,root,root) %{_prefix}/lib/libQFutil.*a %attr(-,root,root) %{_prefix}/lib/libQFutil.so %attr(-,root,root) %{_prefix}/include/QF/GL/*.h %attr(-,root,root) %{_prefix}/include/QF/*.h %attr(-,root,root) %{_prefix}/include/QF/plugin/*.h %if "%{BUILD_GL}"=="'yes'" %attr(-,root,root) %{_prefix}/lib/libQFmodels_gl.*a %attr(-,root,root) %{_prefix}/lib/libQFmodels_gl.so %attr(-,root,root) %{_prefix}/lib/libQFrenderer_gl.*a %attr(-,root,root) %{_prefix}/lib/libQFrenderer_gl.so %endif %if "%{BUILD_SW}"=="'yes'" %attr(-,root,root) %{_prefix}/lib/libQFmodels_sw.*a %attr(-,root,root) %{_prefix}/lib/libQFmodels_sw.so %if "%{HAVE_SDL}"=="'yes'" %attr(-,root,root) %{_prefix}/lib/libQFrenderer_sw32.*a %attr(-,root,root) %{_prefix}/lib/libQFrenderer_sw32.so %endif %endif %if "%{BUILD_GL}"=="'yes'" %files libs-gl %attr(-,root,root) %{_prefix}/lib/libQFmodels_gl.so.* %attr(-,root,root) %{_prefix}/lib/libQFrenderer_gl.so.* %endif %if "%{BUILD_SW}"=="'yes'" %files libs-sw %attr(-,root,root) %{_prefix}/lib/libQFmodels_sw.so.* %endif %files servers %attr(-,root,root) %{_prefix}/bin/qw-server %attr(-,root,root) %{_prefix}/bin/nq-server %attr(-,root,root) %{_prefix}/bin/qw-master #%attr(-,root,root) %{_prefix}/bin/hw-master %attr(-,root,root) %{_prefix}/lib/quakeforge/console_server.so* %if "%{HAVE_X11}"=="'yes'" %files glx %attr(-,root,root) %{_prefix}/bin/qw-client-glx %attr(-,root,root) %{_prefix}/bin/nq-glx %endif %if "%{HAVE_SDL}"=="'yes'" %files sdl %attr(-,root,root) %{_prefix}/bin/qw-client-sdl %attr(-,root,root) %{_prefix}/bin/nq-sdl %files sgl %attr(-,root,root) %{_prefix}/bin/qw-client-sgl %attr(-,root,root) %{_prefix}/bin/nq-sgl %endif %if "%{HAVE_SVGA}"=="'yes'" %files svga %attr(4755,root,root) %{_prefix}/bin/qw-client-svga %attr(4755,root,root) %{_prefix}/bin/nq-svga %endif %if "%{HAVE_X11}"=="'yes'" %files x11 %attr(-,root,root) %{_prefix}/bin/qw-client-x11 %attr(-,root,root) %{_prefix}/bin/nq-x11 %endif %if "%{HAVE_ALSA}"=="'yes'" %files alsa %attr(-,root,root) %{_prefix}/lib/quakeforge/%{ALSA_PLUGIN}.so* %endif %if "%{HAVE_OSS}"=="'yes'" %files oss %attr(-,root,root) %{_prefix}/lib/quakeforge/snd_output_oss.so* %endif %files -n qfcc %attr(-,root,root) %{_prefix}/bin/qfcc %attr(-,root,root) %{_prefix}/man/man1/qfcc.1.gz %attr(-,root,root) %{_prefix}/include/QF/ruamoko/* %attr(-,root,root) %{_prefix}/lib/ruamoko/* %files utils %attr(-,root,root) %{_prefix}/bin/pak %attr(-,root,root) %{_prefix}/bin/zpak %attr(-,root,root) %{_prefix}/bin/qfprogs %attr(-,root,root) %{_prefix}/bin/qfwavinfo %attr(-,root,root) %{_prefix}/man/man1/pak.1.gz #%attr(-,root,root) %{_prefix}/man/man1/qfprogs.1.gz #%attr(-,root,root) %{_prefix}/man/man1/qfwavinfo.1.gz %files maptools %attr(-,root,root) %{_prefix}/bin/qfbsp %attr(-,root,root) %{_prefix}/bin/qflight %attr(-,root,root) %{_prefix}/bin/qfvis %attr(-,root,root) %{_prefix}/man/man1/qflight.1.gz %attr(-,root,root) %{_prefix}/man/man1/qfvis.1.gz %files stub %attr(-,root,root) %dir %{fs_sharepath} %attr(-,root,root) %dir %{fs_sharepath}/id1 %post stub if test ! -f %{fs_sharepath}/id1/pak0.pak; then echo Warning: %{fs_sharepath}/id1/pak0.pak not found echo Install either the shareware or registered quake data in echo %{fs_sharepath} fi