summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorStelios Tsampas2022-07-16 19:36:17 +0300
committerStelios Tsampas2022-07-16 19:36:17 +0300
commitf609b360677518e5c862431a4bc0734a7bb40118 (patch)
tree511b2191057545bda4ccb5b87317ec945e4297e7
parent44b73dd30e00df3fa7448bc5e1b8b7ab43bc414c (diff)
downloadaur-f609b360677518e5c862431a4bc0734a7bb40118.tar.gz
Update to 1.4.0
-rw-r--r--.SRCINFO40
-rw-r--r--.gitignore5
-rw-r--r--20-reproducible.patch72
-rw-r--r--40-libpng16.patch75
-rw-r--r--60-spelling-errors.patch416
-rw-r--r--80-gcc7.patch92
-rw-r--r--90-fix-include-path.patch18
-rw-r--r--PKGBUILD110
-rw-r--r--PKGBUILD.live79
-rw-r--r--rbdoom-3-bfg-launcher27
-rw-r--r--rbdoom-3-bfg.desktop7
-rw-r--r--rbdoom-3-bfg.install5
-rw-r--r--rbdoom-3-bfg.pngbin0 -> 116285 bytes
13 files changed, 188 insertions, 758 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b16081b8af1c..78a4e1029abc 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,38 +1,28 @@
pkgbase = rbdoom-3-bfg
- pkgdesc = Enhanced Doom 3: BFG Edition engine
- pkgver = 1.2.0
+ pkgdesc = Doom 3 BFG Edition with modern engine features like PBR, Baked Global Illumination, Soft Shadows
+ pkgver = 1.4.0
pkgrel = 1
url = https://github.com/RobertBeckebans/RBDOOM-3-BFG
install = rbdoom-3-bfg.install
arch = x86_64
- groups = games
license = GPL3
+ makedepends = git
makedepends = cmake
- makedepends = rapidjson
- makedepends = zip
- depends = doom3bfg-data
+ makedepends = glu
depends = ffmpeg
- depends = glew
- depends = libpng
depends = openal
depends = sdl2
- optdepends = alsa-plugins: pulseaudio-support
- optdepends = libpulse: pulseaudio support
- conflicts = rbdoom3-bfg-git
- source = https://github.com/RobertBeckebans/RBDOOM-3-BFG/archive/3f7cf5387d887b44ed9cf7786f090b7b761550e8.tar.gz
+ optdepends = doom3bfg-data: packaged game data files
+ options = !lto
+ source = git+https://github.com/RobertBeckebans/RBDOOM-3-BFG.git#tag=v1.4.0
+ source = glslang::git+https://github.com/KhronosGroup/glslang.git
source = rbdoom-3-bfg.desktop
- source = 20-reproducible.patch
- source = 40-libpng16.patch
- source = 60-spelling-errors.patch
- source = 80-gcc7.patch
- source = 90-fix-include-path.patch
- sha512sums = 85e7165295e23a70859168f4ede3730ceb490535dccd011e1adfb1879c528be4f1b83a3506caece3b32a3923bf7a4862c9a9968ef006b4230ae1c58d40e063e2
- sha512sums = f1a74a79c369bec1c371eb74f7e8c415b4d1993fae995b0e476eb7c7e3b0a42dfb8ee5ae1f2e960c1443603f36abe37409ffeac0c29fd085ef5045388ff905f8
- sha512sums = f76d82dd92ef85c381c597578556019d624c6da70f5487072f2069604866fb2d067681ec8d48de1ad890289d452d6f0ee3c659105b31ac67dea41943f22b4767
- sha512sums = efd74dacb3cdd28b7d78b348e884de0e23170908504f32f1dad2ded81c49a1c7e3b0f80da4fca96c14e52c4aeb2c4591a5877ada81ea2fcd3ab9e59b78d3989e
- sha512sums = 20cf661f8ad4dc06d1e4ffe3d2f63bae3d1e2002618e58d5a05f027d15a87ba7e47c2ef14ce5c98e18d759ff76d9e144767195200fa78983f12505a93d739beb
- sha512sums = 5b473c8fa55c53d57044e0a1713443f2012c8e88e7f6349eb9e81f482e6ca958b501e95c88f55cac74dca84b3c015414617dfdb159c08d17d134543d7da5dc74
- sha512sums = d30f418f19608d94251cb2076c7c38e08ed6f19f0db55b0646c5119fc645f6ebe9d6ac4ee1183e3959ad75d70c33027226f39cb588681599f5874ea557c990e4
+ source = rbdoom-3-bfg.png
+ source = rbdoom-3-bfg-launcher
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = 961649f60b9b39b97c5a23201f9276037694b4eb9e930bc33d255d9093385646
+ sha256sums = 0fb6a3bb9b47cad65d5012ba20dc9de3b1487f4ac1908ee847e6087511b7f09e
+ sha256sums = 6b40daca58635b30a68100741c265d22ffdefe90c74aad37827af1ea3daf8304
pkgname = rbdoom-3-bfg
-
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 665307854be8..000000000000
--- a/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.pkg.tar*
-*.src.tar*
-*.gz
-src
-pkg
diff --git a/20-reproducible.patch b/20-reproducible.patch
deleted file mode 100644
index aefe0c6e7511..000000000000
--- a/20-reproducible.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Description: Make rbdoom3bfg reproducible
- by removing the usages of __TIME__ and __DATE__
-Author: Tobias Frost <tobi@debian.org>
-Forwarded: https://github.com/RobertBeckebans/RBDOOM-3-BFG/pull/250
-Last-Update: 2015-11-02
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/neo/framework/Common.cpp
-+++ b/neo/framework/Common.cpp
-@@ -59,7 +59,7 @@
- {
- version_s()
- {
-- sprintf( string, "%s.%d%s %s %s %s", ENGINE_VERSION, BUILD_NUMBER, BUILD_DEBUG, BUILD_STRING, __DATE__, __TIME__ );
-+ sprintf( string, "%s.%d%s %s", ENGINE_VERSION, BUILD_NUMBER, BUILD_DEBUG, BUILD_STRING );
- }
- char string[256];
- } version;
---- a/neo/d3xp/Game_local.cpp
-+++ b/neo/d3xp/Game_local.cpp
-@@ -317,7 +317,7 @@
-
- Printf( "--------- Initializing Game ----------\n" );
- Printf( "gamename: %s\n", GAME_VERSION );
-- Printf( "gamedate: %s\n", __DATE__ );
-+ // Printf( "gamedate: %s\n", __DATE__ );
-
- // register game specific decl types
- declManager->RegisterDeclType( "model", DECL_MODELDEF, idDeclAllocator<idDeclModelDef> );
---- a/neo/d3xp/gamesys/SysCvar.cpp
-+++ b/neo/d3xp/gamesys/SysCvar.cpp
-@@ -43,14 +43,14 @@
- */
-
- struct gameVersion_s {
-- gameVersion_s() { sprintf( string, "%s.%d%s %s %s %s", ENGINE_VERSION, BUILD_NUMBER, BUILD_DEBUG, BUILD_STRING, __DATE__, __TIME__ ); }
-+ gameVersion_s() { sprintf( string, "%s.%d%s %s", ENGINE_VERSION, BUILD_NUMBER, BUILD_DEBUG, BUILD_STRING ); }
- char string[256];
- } gameVersion;
-
-
- // noset vars
- idCVar gamename( "gamename", GAME_VERSION, CVAR_GAME | CVAR_ROM, "" );
--idCVar gamedate( "gamedate", __DATE__, CVAR_GAME | CVAR_ROM, "" );
-+//idCVar gamedate( "gamedate", __DATE__, CVAR_GAME | CVAR_ROM, "" );
-
- idCVar si_map( "si_map", "-1", CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "default map choice for profile" );
- idCVar si_mode( "si_mode", "-1", CVAR_GAME | CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_INTEGER, "default mode choice for profile", -1, GAME_COUNT - 1 );
---- a/neo/idlib/Parser.cpp
-+++ b/neo/idlib/Parser.cpp
-@@ -796,8 +796,8 @@
-
- CONSOLE_COMMAND( TestPreprocessorMacros, "check analyze warning", 0 )
- {
-- idLib::Printf( "%s : %s\n", __DATE__, PreProcessorDate().c_str() );
-- idLib::Printf( "%s : %s\n", __TIME__, PreProcessorTime().c_str() );
-+ idLib::Printf( "%s\n", PreProcessorDate().c_str() );
-+ idLib::Printf( "%s\n", PreProcessorTime().c_str() );
- }
-
- /*
---- a/neo/framework/Console.cpp
-+++ b/neo/framework/Console.cpp
-@@ -1189,7 +1189,7 @@
-
- // RB begin
- //idStr version = va( "%s.%i.%i", ENGINE_VERSION, BUILD_NUMBER, BUILD_NUMBER_MINOR );
-- idStr version = va( "%s %s %s %s", ENGINE_VERSION, BUILD_STRING, __DATE__, __TIME__ );
-+ idStr version = va( "%s %s (Debian package)", ENGINE_VERSION, BUILD_STRING);
- //idStr version = com_version.GetString();
- // RB end
-
diff --git a/40-libpng16.patch b/40-libpng16.patch
deleted file mode 100644
index c8ad60d3720d..000000000000
--- a/40-libpng16.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Description: Patch for libpng1.6's changed API
-Author: Tobias Frost <tobi@debian.org>
-Forwarded: https://github.com/RobertBeckebans/RBDOOM-3-BFG/pull/293
-Last-Update: 2016-02-01
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/neo/renderer/Image_files.cpp
-+++ b/neo/renderer/Image_files.cpp
-@@ -621,6 +621,7 @@
-
- extern "C"
- {
-+#include <string.h>
- #include <png.h>
-
-
-@@ -636,9 +637,12 @@
-
- static void png_ReadData( png_structp pngPtr, png_bytep data, png_size_t length )
- {
-- memcpy( data, ( byte* )pngPtr->io_ptr, length );
--
-- pngPtr->io_ptr = ( ( byte* ) pngPtr->io_ptr ) + length;
-+
-+ // There is a get_io_ptr but not a set_io_ptr.. Therefore we need some tmp storage here.
-+ byte **ioptr = (byte **)png_get_io_ptr(pngPtr);
-+
-+ memcpy( data, *ioptr, length );
-+ *ioptr += length;
- }
-
- }
-@@ -651,6 +655,7 @@
- static void LoadPNG( const char* filename, unsigned char** pic, int* width, int* height, ID_TIME_T* timestamp )
- {
- byte* fbuffer;
-+ byte* readptr;
-
- if( !pic )
- {
-@@ -683,7 +688,8 @@
- common->Error( "LoadPNG( %s ): png_create_info_struct failed", filename );
- }
-
-- png_set_read_fn( pngPtr, fbuffer, png_ReadData );
-+ readptr = fbuffer;
-+ png_set_read_fn( pngPtr, &readptr, png_ReadData );
-
- png_set_sig_bytes( pngPtr, 0 );
-
-@@ -770,10 +776,11 @@
- static int png_compressedSize = 0;
- static void png_WriteData( png_structp pngPtr, png_bytep data, png_size_t length )
- {
-- memcpy( ( byte* )pngPtr->io_ptr, data, length );
--
-- pngPtr->io_ptr = ( ( byte* ) pngPtr->io_ptr ) + length;
-+ byte **ioptr = (byte**)png_get_io_ptr(pngPtr);
-+
-+ memcpy( *ioptr, data, length );
-
-+ *ioptr += length;
- png_compressedSize += length;
- }
-
-@@ -802,7 +809,8 @@
-
- png_compressedSize = 0;
- byte* buffer = ( byte* ) Mem_Alloc( width * height * bytesPerPixel, TAG_TEMP );
-- png_set_write_fn( pngPtr, buffer, png_WriteData, png_FlushData );
-+ byte* ioptr = buffer;
-+ png_set_write_fn( pngPtr, &ioptr, png_WriteData, png_FlushData );
-
- if( bytesPerPixel == 4 )
- {
diff --git a/60-spelling-errors.patch b/60-spelling-errors.patch
deleted file mode 100644
index e223491b9926..000000000000
--- a/60-spelling-errors.patch
+++ /dev/null
@@ -1,416 +0,0 @@
-Description: Fix several spelling errors found by lintian
-Author: Tobias Frost <tobi@debian.org>
-Forwarded: https://github.com/RobertBeckebans/RBDOOM-3-BFG/pull/354
-Last-Update: 2018-04-04
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/base/renderprogs/SMAA.inc.hlsl
-+++ b/base/renderprogs/SMAA.inc.hlsl
-@@ -228,14 +228,14 @@
- * - DX10.1: D3D10_STANDARD_MULTISAMPLE_PATTERN or
- * - DX11: D3D11_STANDARD_MULTISAMPLE_PATTERN
- *
-- * This allows to ensure that the subsample order matches the table in
-+ * This allows one to ensure that the subsample order matches the table in
- * @SUBSAMPLE_INDICES.
- *
- * (*) In the case of DX10, we refer the reader to:
- * - SMAA::detectMSAAOrder and
- * - SMAA::msaaReorder
- *
-- * These functions allow to match the standard multisample patterns by
-+ * These functions allow one to match the standard multisample patterns by
- * detecting the subsample order for a specific GPU, and reordering
- * them appropriately.
- *
-@@ -326,8 +326,8 @@
- * performance.
- *
- * Range: [0, 0.5]
-- * 0.1 is a reasonable value, and allows to catch most visible edges.
-- * 0.05 is a rather overkill value, that allows to catch 'em all.
-+ * 0.1 is a reasonable value, and allows one to catch most visible edges.
-+ * 0.05 is a rather overkill value, that allows one to catch 'em all.
- *
- * If temporal supersampling is used, 0.2 could be a reasonable value, as low
- * contrast edges are properly filtered by just 2x.
-@@ -390,7 +390,7 @@
- * If there is an neighbor edge that has SMAA_LOCAL_CONTRAST_FACTOR times
- * bigger contrast than current edge, current edge will be discarded.
- *
-- * This allows to eliminate spurious crossing edges, and is based on the fact
-+ * This allows one to eliminate spurious crossing edges, and is based on the fact
- * that, if there is too much contrast in a direction, that will hide
- * perceptually contrast in the other neighbors.
- */
-@@ -399,7 +399,7 @@
- #endif
-
- /**
-- * Predicated thresholding allows to better preserve texture details and to
-+ * Predicated thresholding allows one to better preserve texture details and to
- * improve performance, by decreasing the number of detected edges using an
- * additional buffer like the light accumulation buffer, object ids or even the
- * depth buffer (the depth buffer usage may be limited to indoor or short range
-@@ -446,7 +446,7 @@
- #endif
-
- /**
-- * Temporal reprojection allows to remove ghosting artifacts when using
-+ * Temporal reprojection allows one to remove ghosting artifacts when using
- * temporal supersampling. We use the CryEngine 3 method which also introduces
- * velocity weighting. This feature is of extreme importance for totally
- * removing ghosting. More information here:
-@@ -461,7 +461,7 @@
- #endif
-
- /**
-- * SMAA_REPROJECTION_WEIGHT_SCALE controls the velocity weighting. It allows to
-+ * SMAA_REPROJECTION_WEIGHT_SCALE controls the velocity weighting. It allows one to
- * remove ghosting trails behind the moving object, which are not removed by
- * just using reprojection. Using low values will exhibit ghosting, while using
- * high values will disable temporal supersampling under motion.
-@@ -869,7 +869,7 @@
- }
-
- /**
-- * These functions allows to perform diagonal pattern searches.
-+ * These functions allows one to perform diagonal pattern searches.
- */
- float2 SMAASearchDiag1(SMAATexture2D(edgesTex), float2 texcoord, float2 dir, out float2 e) {
- dir.y = API_V_DIR(dir.y);
-@@ -1204,7 +1204,7 @@
- coords.z = SMAASearchXRight(SMAATexturePass2D(edgesTex), SMAATexturePass2D(searchTex), offset[0].zw, offset[2].y);
- d.y = coords.z;
-
-- // We want the distances to be in pixel units (doing this here allow to
-+ // We want the distances to be in pixel units (doing this here allows one to
- // better interleave arithmetic and memory accesses):
- d = abs(round(mad(SMAA_RT_METRICS.zz, d, -pixcoord.xx)));
-
---- a/doomclassic/doom/p_enemy.cpp
-+++ b/doomclassic/doom/p_enemy.cpp
-@@ -1452,7 +1452,7 @@
- currentthinker = currentthinker->next;
- }
-
-- // if there are allready 20 skulls on the level,
-+ // if there are already 20 skulls on the level,
- // don't spit another one
- if (count > 20)
- return;
---- a/doomclassic/doom/p_pspr.cpp
-+++ b/doomclassic/doom/p_pspr.cpp
-@@ -358,7 +358,7 @@
- if (player->pendingweapon != wp_nochange || !player->health)
- {
- // change weapon
-- // (pending weapon should allready be validated)
-+ // (pending weapon should already be validated)
- newstate = (statenum_t)weaponinfo[player->readyweapon].downstate;
- P_SetPsprite (player, ps_weapon, newstate);
- return;
---- a/doomclassic/doom/p_sight.cpp
-+++ b/doomclassic/doom/p_sight.cpp
-@@ -165,7 +165,7 @@
- {
- line = seg->linedef;
-
-- // allready checked other side?
-+ // already checked other side?
- if (line->validcount == ::g->validcount)
- continue;
-
---- a/doomclassic/doom/structs.h
-+++ b/doomclassic/doom/structs.h
-@@ -358,7 +358,7 @@
- typedef struct
- {
- // Block origin (allways UL),
-- // which has allready accounted
-+ // which has already accounted
- // for the internal origin of the patch.
- int originx;
- int originy;
---- a/neo/d3xp/gamesys/Class.h
-+++ b/neo/d3xp/gamesys/Class.h
-@@ -216,7 +216,7 @@
- ( idEventFunc<idClass> * )nameofclass::eventCallbacks, nameofclass::CreateInstance, ( void ( idClass::* )() )&nameofclass::Spawn, \
- ( void ( idClass::* )( idSaveGame * ) const )&nameofclass::Save, ( void ( idClass::* )( idRestoreGame * ) )&nameofclass::Restore ); \
- idClass *nameofclass::CreateInstance() { \
-- gameLocal.Error( "Cannot instanciate abstract class %s.", #nameofclass ); \
-+ gameLocal.Error( "Cannot instantiate abstract class %s.", #nameofclass ); \
- return NULL; \
- } \
- idTypeInfo *nameofclass::GetType() const { \
---- a/neo/d3xp/gamesys/SysCvar.cpp
-+++ b/neo/d3xp/gamesys/SysCvar.cpp
-@@ -104,8 +104,8 @@
-
-
- idCVar g_showPVS( "g_showPVS", "0", CVAR_GAME | CVAR_INTEGER, "", 0, 2 );
--idCVar g_showTargets( "g_showTargets", "0", CVAR_GAME | CVAR_BOOL, "draws entities and thier targets. hidden entities are drawn grey." );
--idCVar g_showTriggers( "g_showTriggers", "0", CVAR_GAME | CVAR_BOOL, "draws trigger entities (orange) and thier targets (green). disabled triggers are drawn grey." );
-+idCVar g_showTargets( "g_showTargets", "0", CVAR_GAME | CVAR_BOOL, "draws entities and their targets. hidden entities are drawn grey." );
-+idCVar g_showTriggers( "g_showTriggers", "0", CVAR_GAME | CVAR_BOOL, "draws trigger entities (orange) and their targets (green). disabled triggers are drawn grey." );
- idCVar g_showCollisionWorld( "g_showCollisionWorld", "0", CVAR_GAME | CVAR_BOOL, "" );
- idCVar g_showCollisionModels( "g_showCollisionModels", "0", CVAR_GAME | CVAR_BOOL, "" );
- idCVar g_showCollisionTraces( "g_showCollisionTraces", "0", CVAR_GAME | CVAR_BOOL, "" );
---- a/neo/framework/Common.cpp
-+++ b/neo/framework/Common.cpp
-@@ -68,9 +68,9 @@
- idCVar com_forceGenericSIMD( "com_forceGenericSIMD", "0", CVAR_BOOL | CVAR_SYSTEM | CVAR_NOCHEAT, "force generic platform independent SIMD" );
-
- #ifdef ID_RETAIL
--idCVar com_allowConsole( "com_allowConsole", "0", CVAR_BOOL | CVAR_SYSTEM | CVAR_INIT, "allow toggling console with the tilde key" );
-+idCVar com_allowConsole( "com_allowConsole", "0", CVAR_BOOL | CVAR_SYSTEM | CVAR_INIT, "allows one toggling console with the tilde key" );
- #else
--idCVar com_allowConsole( "com_allowConsole", "1", CVAR_BOOL | CVAR_SYSTEM | CVAR_INIT, "allow toggling console with the tilde key" );
-+idCVar com_allowConsole( "com_allowConsole", "1", CVAR_BOOL | CVAR_SYSTEM | CVAR_INIT, "allows one toggling console with the tilde key" );
- #endif
-
- idCVar com_developer( "developer", "0", CVAR_BOOL | CVAR_SYSTEM | CVAR_NOCHEAT, "developer mode" );
---- a/neo/framework/Common_printf.cpp
-+++ b/neo/framework/Common_printf.cpp
-@@ -36,7 +36,7 @@
- idCVar com_timestampPrints( "com_timestampPrints", "0", CVAR_SYSTEM, "print time with each console print, 1 = msec, 2 = sec", 0, 2, idCmdSystem::ArgCompletion_Integer<0, 2> );
-
- #ifndef ID_RETAIL
--idCVar com_printFilter( "com_printFilter", "", CVAR_SYSTEM, "only print lines that contain this, add multiple filters with a ; delimeter" );
-+idCVar com_printFilter( "com_printFilter", "", CVAR_SYSTEM, "only print lines that contain this, add multiple filters with a ; delimiter" );
- #endif
-
- /*
---- a/neo/renderer/RenderProgs_embedded.h
-+++ b/neo/renderer/RenderProgs_embedded.h
-@@ -465,7 +465,7 @@
- " * half-rate linear filtering on GCN.\n"
- " *\n"
- " * If SMAA is applied to 64-bit color buffers, switching to point filtering\n"
-- " * when accesing them will increase the performance. Search for\n"
-+ " * when accessing them will increase the performance. Search for\n"
- " * 'SMAASamplePoint' to see which textures may benefit from point\n"
- " * filtering, and where (which is basically the color input in the edge\n"
- " * detection and resolve passes).\n"
-@@ -580,14 +580,14 @@
- " * - DX10.1: D3D10_STANDARD_MULTISAMPLE_PATTERN or\n"
- " * - DX11: D3D11_STANDARD_MULTISAMPLE_PATTERN\n"
- " *\n"
-- " * This allows to ensure that the subsample order matches the table in\n"
-+ " * This allows one to ensure that the subsample order matches the table in\n"
- " * @SUBSAMPLE_INDICES.\n"
- " *\n"
- " * (*) In the case of DX10, we refer the reader to:\n"
- " * - SMAA::detectMSAAOrder and\n"
- " * - SMAA::msaaReorder\n"
- " *\n"
-- " * These functions allow to match the standard multisample patterns by\n"
-+ " * These functions allow one to match the standard multisample patterns by\n"
- " * detecting the subsample order for a specific GPU, and reordering\n"
- " * them appropriately.\n"
- " *\n"
-@@ -678,8 +678,8 @@
- " * performance. \n"
- " *\n"
- " * Range: [0, 0.5]\n"
-- " * 0.1 is a reasonable value, and allows to catch most visible edges.\n"
-- " * 0.05 is a rather overkill value, that allows to catch 'em all.\n"
-+ " * 0.1 is a reasonable value, and allows one to catch most visible edges.\n"
-+ " * 0.05 is a rather overkill value, that allows one to catch 'em all.\n"
- " *\n"
- " * If temporal supersampling is used, 0.2 could be a reasonable value, as low\n"
- " * contrast edges are properly filtered by just 2x.\n"
-@@ -742,7 +742,7 @@
- " * If there is an neighbor edge that has SMAA_LOCAL_CONTRAST_FACTOR times\n"
- " * bigger contrast than current edge, current edge will be discarded.\n"
- " *\n"
-- " * This allows to eliminate spurious crossing edges, and is based on the fact\n"
-+ " * This allows one to eliminate spurious crossing edges, and is based on the fact\n"
- " * that, if there is too much contrast in a direction, that will hide\n"
- " * perceptually contrast in the other neighbors.\n"
- " */\n"
-@@ -751,7 +751,7 @@
- "#endif\n"
- "\n"
- "/**\n"
-- " * Predicated thresholding allows to better preserve texture details and to\n"
-+ " * Predicated thresholding allows one to better preserve texture details and to\n"
- " * improve performance, by decreasing the number of detected edges using an\n"
- " * additional buffer like the light accumulation buffer, object ids or even the\n"
- " * depth buffer (the depth buffer usage may be limited to indoor or short range\n"
-@@ -798,7 +798,7 @@
- "#endif\n"
- "\n"
- "/**\n"
-- " * Temporal reprojection allows to remove ghosting artifacts when using\n"
-+ " * Temporal reprojection allows one to remove ghosting artifacts when using\n"
- " * temporal supersampling. We use the CryEngine 3 method which also introduces\n"
- " * velocity weighting. This feature is of extreme importance for totally\n"
- " * removing ghosting. More information here:\n"
-@@ -813,7 +813,7 @@
- "#endif\n"
- "\n"
- "/**\n"
-- " * SMAA_REPROJECTION_WEIGHT_SCALE controls the velocity weighting. It allows to\n"
-+ " * SMAA_REPROJECTION_WEIGHT_SCALE controls the velocity weighting. It allows one to\n"
- " * remove ghosting trails behind the moving object, which are not removed by\n"
- " * just using reprojection. Using low values will exhibit ghosting, while using\n"
- " * high values will disable temporal supersampling under motion.\n"
-@@ -1195,7 +1195,7 @@
- "#if !defined(SMAA_DISABLE_DIAG_DETECTION)\n"
- "\n"
- "/**\n"
-- " * Allows to decode two binary values from a bilinear-filtered access.\n"
-+ " * Allows one to decode two binary values from a bilinear-filtered access.\n"
- " */\n"
- "float2 SMAADecodeDiagBilinearAccess(float2 e) {\n"
- " // Bilinear access for fetching 'e' have a 0.25 offset, and we are\n"
-@@ -1221,7 +1221,7 @@
- "}\n"
- "\n"
- "/**\n"
-- " * These functions allows to perform diagonal pattern searches.\n"
-+ " * These functions allows one to perform diagonal pattern searches.\n"
- " */\n"
- "float2 SMAASearchDiag1(SMAATexture2D(edgesTex), float2 texcoord, float2 dir, out float2 e) {\n"
- " dir.y = API_V_DIR(dir.y);\n"
-@@ -1357,7 +1357,7 @@
- "// Horizontal/Vertical Search Functions\n"
- "\n"
- "/**\n"
-- " * This allows to determine how much length should we add in the last step\n"
-+ " * This allows one to determine how much length should we add in the last step\n"
- " * of the searches. It takes the bilinearly interpolated edge (see \n"
- " * @PSEUDO_GATHER4), and adds 0, 1 or 2, depending on which edges and\n"
- " * crossing edges are active.\n"
-@@ -1392,7 +1392,7 @@
- " * @PSEUDO_GATHER4\n"
- " * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to\n"
- " * sample between edge, thus fetching four edges in a row.\n"
-- " * Sampling with different offsets in each direction allows to disambiguate\n"
-+ " * Sampling with different offsets in each direction allows one to disambiguate\n"
- " * which edges are active from the four fetched ones.\n"
- " */\n"
- " float2 e = float2(0.0, 1.0);\n"
-@@ -1556,7 +1556,7 @@
- " coords.z = SMAASearchXRight(SMAATexturePass2D(edgesTex), SMAATexturePass2D(searchTex), offset[0].zw, offset[2].y);\n"
- " d.y = coords.z;\n"
- "\n"
-- " // We want the distances to be in pixel units (doing this here allow to\n"
-+ " // We want the distances to be in pixel units (doing this here allows one to\n"
- " // better interleave arithmetic and memory accesses):\n"
- " d = abs(round(mad(SMAA_RT_METRICS.zz, d, -pixcoord.xx)));\n"
- "\n"
-@@ -10545,7 +10545,7 @@
- "\n"
- "Doom 3 BFG Edition GPL Source Code\n"
- "Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. \n"
-- "Coypright (C) 2014 Robert Beckebans\n"
-+ "Copyright (C) 2014 Robert Beckebans\n"
- "\n"
- "This file is part of the Doom 3 BFG Edition GPL Source Code (\"Doom 3 BFG Edition Source Code\"). \n"
- "\n"
-@@ -12324,7 +12324,7 @@
- " float L = ( 1.0 - exp( -Yr * exposure ) );\n"
- " color.rgb *= L;\n"
- " \n"
-- " // Kodak filmic tone mappping, includes gamma correction\n"
-+ " // Kodak filmic tone mapping, includes gamma correction\n"
- " //float3 rgb = max( float3( 0 ), color.rgb - float3( 0.004 ) );\n"
- " //color.rgb = rgb * ( float3( 0.5 ) + 6.2 * rgb ) / ( float3( 0.06 ) + rgb * ( float3( 1.7 ) + 6.2 * rgb ) );\n"
- " \n"
---- a/neo/sys/sys_lobby_snapshot.cpp
-+++ b/neo/sys/sys_lobby_snapshot.cpp
-@@ -35,7 +35,7 @@
-
- idCVar net_peer_throttle_mode( "net_peer_throttle_mode", "0", CVAR_INTEGER, "= 0 off, 1 = enable fixed, 2 = absolute, 3 = both" );
-
--idCVar net_peer_throttle_minSnapSeq( "net_peer_throttle_minSnapSeq", "150", CVAR_INTEGER, "Minumum number of snapshot exchanges before throttling can be triggered" );
-+idCVar net_peer_throttle_minSnapSeq( "net_peer_throttle_minSnapSeq", "150", CVAR_INTEGER, "Minimum number of snapshot exchanges before throttling can be triggered" );
-
- idCVar net_peer_throttle_bps_peer_threshold_pct( "net_peer_throttle_bps_peer_threshold_pct", "0.60", CVAR_FLOAT, "Min reported incoming bps % of sent from host that a peer must maintain before throttling kicks in" );
- idCVar net_peer_throttle_bps_host_threshold( "net_peer_throttle_bps_host_threshold", "1024", CVAR_FLOAT, "Min outgoing bps of host for bps based throttling to be considered" );
---- a/neo/tools/compilers/aas/BrushBSP.cpp
-+++ b/neo/tools/compilers/aas/BrushBSP.cpp
-@@ -87,7 +87,7 @@
- {
- if( nodes[0] || nodes[1] )
- {
-- common->Error( "AddToNode: allready included" );
-+ common->Error( "AddToNode: already included" );
- }
-
- assert( front && back );
---- a/neo/tools/compilers/dmap/portals.cpp
-+++ b/neo/tools/compilers/dmap/portals.cpp
-@@ -111,7 +111,7 @@
- {
- if( p->nodes[0] || p->nodes[1] )
- {
-- common->Error( "AddPortalToNode: allready included" );
-+ common->Error( "AddPortalToNode: already included" );
- }
-
- p->nodes[0] = front;
-@@ -877,7 +877,7 @@
-
- if( node->area != -1 )
- {
-- return; // allready got it
-+ return; // already got it
- }
- if( node->opaque )
- {
-@@ -939,7 +939,7 @@
-
- if( node->area != -1 )
- {
-- return; // allready got it
-+ return; // already got it
- }
-
- c_areaFloods = 0;
---- a/neo/ui/GuiScript.cpp
-+++ b/neo/ui/GuiScript.cpp
-@@ -426,7 +426,7 @@
-
- if( handler == NULL )
- {
-- src->Error( "Uknown script call %s", token.c_str() );
-+ src->Error( "Unknown script call %s", token.c_str() );
- }
- // now read parms til ;
- // all parms are read as idWinStr's but will be fixed up later
---- a/README.txt
-+++ b/README.txt
-@@ -349,7 +349,7 @@
- r_useHDR [0 or 1] - Use High Dynamic Range lighting
-
- r_hdrAutoExposure [0 or 1] - Adaptive tonemapping with HDR
-- This allows to have very bright or very dark scenes but the camera will adopt to it so the scene won't loose details
-+ This allows on to have very bright or very dark scenes but the camera will adopt to it so the scene won't loose details
-
- r_exposure [0 .. 1] - Default 0.5, Controls brightness and affects HDR exposure key
- This is what you change in the video brightness options
---- a/doomclassic/doom/doominterface.cpp
-+++ b/doomclassic/doom/doominterface.cpp
-@@ -182,7 +182,7 @@
-
- lastTicRun = iTime;
- } else {
-- printf( "Skipping this frame becase it's not time to run a tic yet.\n" );
-+ printf( "Skipping this frame because it's not time to run a tic yet.\n" );
- }
-
- return bAllFinished;
---- a/neo/renderer/ImageManager.cpp
-+++ b/neo/renderer/ImageManager.cpp
-@@ -427,7 +427,7 @@
- {
- image->referencedOutsideLevelLoad = ( !insideLevelLoad && !preloadingMapImages );
- image->ActuallyLoadImage( false ); // load is from front end
-- declManager->MediaPrint( "%ix%i %s (reload for mixed referneces)\n", image->GetUploadWidth(), image->GetUploadHeight(), image->GetName() );
-+ declManager->MediaPrint( "%ix%i %s (reload for mixed references)\n", image->GetUploadWidth(), image->GetUploadHeight(), image->GetName() );
- }
- return image;
- }
diff --git a/80-gcc7.patch b/80-gcc7.patch
deleted file mode 100644
index facb206aaa8a..000000000000
--- a/80-gcc7.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-Description: Fix compilation errors with gcc7
-Author: Tobias Frost <tobi@debian.org>
-Bug-Debian: https://bugs.debian.org/853638
-Last-Update: 2018-04-06
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-diff --git a/doomclassic/doom/wi_stuff.cpp b/doomclassic/doom/wi_stuff.cpp
-index 47837cf..cec5156 100644
---- a/doomclassic/doom/wi_stuff.cpp
-+++ b/doomclassic/doom/wi_stuff.cpp
-@@ -1551,7 +1553,8 @@ void WI_loadData(void)
- ::g->lnames = (patch_t **) DoomLib::Z_Malloc(sizeof(patch_t*) * ( NUMMAPS ), PU_LEVEL_SHARED, 0);
- for (i=0 ; i<NUMMAPS ; i++)
- {
-- sprintf(name, "WILV%d%d", ::g->wbs->epsd, i);
-+ snprintf(name, 20, "WILV%d%d", ::g->wbs->epsd, i);
-+ name[19] = 0;
- ::g->lnames[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED);
- }
-
-@@ -1594,7 +1598,7 @@ void WI_loadData(void)
- for (i=0;i<10;i++)
- {
- // numbers 0-9
-- sprintf(name, "WINUM%d", i);
-+ snprintf(name, 10, "WINUM%d", i); name[9] = 0;
- ::g->num[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED);
- }
-
-@@ -1651,11 +1655,11 @@ void WI_loadData(void)
- for (i=0 ; i<MAXPLAYERS ; i++)
- {
- // "1,2,3,4"
-- sprintf(name, "STPB%d", i);
-+ snprintf(name, 10, "STPB%d", i); name[9] = 0;
- ::g->wistuff_p[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED);
-
- // "1,2,3,4"
-- sprintf(name, "WIBP%d", i+1);
-+ snprintf(name, 10, "WIBP%d", i+1); name[9] = 0;
- ::g->wistuff_bp[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED);
- }
-
-diff --git a/neo/d3xp/MultiplayerGame.cpp b/neo/d3xp/MultiplayerGame.cpp
-index a14c6da..4780f95 100644
---- a/neo/d3xp/MultiplayerGame.cpp
-+++ b/neo/d3xp/MultiplayerGame.cpp
-@@ -631,7 +631,8 @@ idMultiplayerGame::GameTime
- const char* idMultiplayerGame::GameTime()
- {
- static char buff[16];
-- int m, s, t, ms;
-+ unsigned int m, s, t;
-+ int ms;
-
- if( gameState == COUNTDOWN )
- {
-@@ -653,7 +654,9 @@ const char* idMultiplayerGame::GameTime()
- }
- else
- {
-- sprintf( buff, "WMP %i", s );
-+ snprintf( buff, 16, "WMP %i", s );
-+ buff[15] = 0;
-+
- }
- }
- else
-diff --git a/neo/tools/compilers/dmap/dmap.cpp b/neo/tools/compilers/dmap/dmap.cpp
-index 655e881..03c5831 100644
---- a/neo/tools/compilers/dmap/dmap.cpp
-+++ b/neo/tools/compilers/dmap/dmap.cpp
-@@ -34,6 +34,10 @@ If you have questions concerning this license or the applicable additional terms
-
- dmapGlobals_t dmapGlobals;
-
-+#ifndef PATH_MAX
-+#define PATH_MAX 4096
-+#endif
-+
- /*
- ============
- ProcessModel
-@@ -243,7 +247,7 @@ void Dmap( const idCmdArgs& args )
- {
- int i;
- int start, end;
-- char path[1024];
-+ char path[PATH_MAX];
- idStr passedName;
- bool leaked = false;
- bool noCM = false;
diff --git a/90-fix-include-path.patch b/90-fix-include-path.patch
deleted file mode 100644
index 789eeea73229..000000000000
--- a/90-fix-include-path.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Description: Fix include path in RendererBackend.cpp
-Author: Tobias Frost <tobi@debian.org>
-Forwarded: https://github.com/RobertBeckebans/RBDOOM-3-BFG/pull/435
-Applied-Upstream: Yes
-Last-Update: 2019-10-15
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/neo/renderer/RenderBackend.cpp
-+++ b/neo/renderer/RenderBackend.cpp
-@@ -31,7 +31,7 @@
- #pragma hdrstop
- #include "precompiled.h"
-
--#include "../../framework/Common_local.h"
-+#include "framework/Common_local.h"
- #include "RenderCommon.h"
- #include "Framebuffer.h"
-
diff --git a/PKGBUILD b/PKGBUILD
index e92358ae92e9..af8441814163 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,69 +1,75 @@
-# Maintainer: Mike Swanson <mikeonthecomputer@gmail.com>
+# Maintainer: loathingkernel <username at gmail dot com>
+# Contributor: Mike Swanson <mikeonthecomputer@gmail.com>
# Based on the rbdoom3-bfg-git package by M0Rf30
pkgname=rbdoom-3-bfg
-_commit=3f7cf5387d887b44ed9cf7786f090b7b761550e8
-pkgver=1.2.0
+_srctag=1.4.0
+pkgver=${_srctag//-/.}
pkgrel=1
-pkgdesc="Enhanced Doom 3: BFG Edition engine"
+pkgdesc="Doom 3 BFG Edition with modern engine features like PBR, Baked Global Illumination, Soft Shadows"
arch=('x86_64')
url="https://github.com/RobertBeckebans/RBDOOM-3-BFG"
license=('GPL3')
-groups=('games')
-depends=(doom3bfg-data ffmpeg glew libpng openal sdl2)
-makedepends=(cmake rapidjson zip)
-conflicts=('rbdoom3-bfg-git')
-install=rbdoom-3-bfg.install
-optdepends=('alsa-plugins: pulseaudio-support'
- 'libpulse: pulseaudio support')
-source=("https://github.com/RobertBeckebans/RBDOOM-3-BFG/archive/${_commit}.tar.gz"
- rbdoom-3-bfg.desktop
- 20-reproducible.patch
- 40-libpng16.patch
- 60-spelling-errors.patch
- 80-gcc7.patch
- 90-fix-include-path.patch)
-sha512sums=('85e7165295e23a70859168f4ede3730ceb490535dccd011e1adfb1879c528be4f1b83a3506caece3b32a3923bf7a4862c9a9968ef006b4230ae1c58d40e063e2'
- 'f1a74a79c369bec1c371eb74f7e8c415b4d1993fae995b0e476eb7c7e3b0a42dfb8ee5ae1f2e960c1443603f36abe37409ffeac0c29fd085ef5045388ff905f8'
- 'f76d82dd92ef85c381c597578556019d624c6da70f5487072f2069604866fb2d067681ec8d48de1ad890289d452d6f0ee3c659105b31ac67dea41943f22b4767'
- 'efd74dacb3cdd28b7d78b348e884de0e23170908504f32f1dad2ded81c49a1c7e3b0f80da4fca96c14e52c4aeb2c4591a5877ada81ea2fcd3ab9e59b78d3989e'
- '20cf661f8ad4dc06d1e4ffe3d2f63bae3d1e2002618e58d5a05f027d15a87ba7e47c2ef14ce5c98e18d759ff76d9e144767195200fa78983f12505a93d739beb'
- '5b473c8fa55c53d57044e0a1713443f2012c8e88e7f6349eb9e81f482e6ca958b501e95c88f55cac74dca84b3c015414617dfdb159c08d17d134543d7da5dc74'
- 'd30f418f19608d94251cb2076c7c38e08ed6f19f0db55b0646c5119fc645f6ebe9d6ac4ee1183e3959ad75d70c33027226f39cb588681599f5874ea557c990e4')
+depends=(
+ ffmpeg
+ openal
+ sdl2
+)
+makedepends=(
+ git
+ cmake
+ glu
+# vulkan-headers
+)
+optdepends=(
+ 'doom3bfg-data: packaged game data files'
+)
+install=$pkgname.install
+options=(!lto)
+source=(
+ git+https://github.com/RobertBeckebans/RBDOOM-3-BFG.git#tag=v${_srctag}
+ glslang::git+https://github.com/KhronosGroup/glslang.git
+ rbdoom-3-bfg.desktop
+ rbdoom-3-bfg.png
+ rbdoom-3-bfg-launcher
+)
+sha256sums=('SKIP'
+ 'SKIP'
+ '961649f60b9b39b97c5a23201f9276037694b4eb9e930bc33d255d9093385646'
+ '0fb6a3bb9b47cad65d5012ba20dc9de3b1487f4ac1908ee847e6087511b7f09e'
+ '6b40daca58635b30a68100741c265d22ffdefe90c74aad37827af1ea3daf8304')
prepare() {
- cd "$srcdir/RBDOOM-3-BFG-$_commit"
-
- for patch in ../*.patch; do
- if [ ! -f "$patch" ]; then
- break;
- else
- patch -p1 -i "$patch"
- fi
+ cd RBDOOM-3-BFG
+ for submodule in neo/extern/glslang; do
+ git submodule init "${submodule}"
+ git config submodule."${submodule}".url ../"${submodule##*/}"
+ git submodule update "${submodule}"
done
}
build() {
- mkdir "RBDOOM-3-BFG-$_commit/build"
- cd "RBDOOM-3-BFG-$_commit/build"
-
- cmake -DCMAKE_INSTALL_PREFIX=/usr \
- -DOPENAL=ON \
- -DSDL2=ON \
- -DUSE_SYSTEM_LIBGLEW=ON \
- -DUSE_SYSTEM_LIBJPEG=ON \
- -DUSE_SYSTEM_LIBPNG=ON \
- -DUSE_SYSTEM_RAPIDJSON=ON \
- -DUSE_SYSTEM_ZLIB=ON \
- -DUSE_PRECOMPILED_HEADERS=OFF \
- -Wno-dev ../neo
- make
+ cd RBDOOM-3-BFG
+ cmake \
+ -S neo \
+ -B build \
+ -DCMAKE_BUILD_TYPE="Release" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DUSE_VULKAN=OFF \
+ -DUSE_SYSTEM_LIBGLEW=OFF \
+ -DUSE_SYSTEM_LIBJPEG=OFF \
+ -DUSE_SYSTEM_LIBPNG=OFF \
+ -DUSE_SYSTEM_RAPIDJSON=OFF \
+ -DUSE_SYSTEM_ZLIB=OFF \
+ -DUSE_PRECOMPILED_HEADERS=OFF \
+ -Wno-dev
+ cmake --build build
}
package() {
- cd "RBDOOM-3-BFG-$_commit/build"
-
- install -Dm755 RBDoom3BFG "$pkgdir/usr/bin/RBDoom3BFG"
- install -Dm644 "../../rbdoom-3-bfg.desktop" "$pkgdir/usr/share/applications/rbdoom-3-bfg.desktop"
- ln -s RBDoom3BFG "$pkgdir/usr/bin/rbdoom3bfg"
+ install -Dm755 -t "$pkgdir"/usr/bin/ RBDOOM-3-BFG/build/RBDoom3BFG
+ install -Dm755 -t "$pkgdir"/usr/bin/ rbdoom-3-bfg-launcher
+ install -Dm644 -t "$pkgdir"/usr/share/applications/ rbdoom-3-bfg.desktop
+ install -Dm644 -t "$pkgdir"/usr/share/pixmaps/ rbdoom-3-bfg.png
}
+
diff --git a/PKGBUILD.live b/PKGBUILD.live
new file mode 100644
index 000000000000..140949e2ad79
--- /dev/null
+++ b/PKGBUILD.live
@@ -0,0 +1,79 @@
+# Maintainer: loathingkernel <username at gmail dot com>
+# Contributor: Mike Swanson <mikeonthecomputer@gmail.com>
+# Based on the rbdoom3-bfg-git package by M0Rf30
+
+pkgname=rbdoom-3-bfg
+pkgver=1.4.0.r11.d292e461
+pkgrel=1
+pkgdesc="Doom 3 BFG Edition with modern engine features like PBR, Baked Global Illumination, Soft Shadows"
+arch=('x86_64')
+url="https://github.com/RobertBeckebans/RBDOOM-3-BFG"
+license=('GPL3')
+depends=(
+ ffmpeg
+ openal
+ sdl2
+)
+makedepends=(
+ git
+ cmake
+ glu
+# vulkan-headers
+)
+optdepends=(
+ 'doom3bfg-data: packaged game data files'
+)
+install=$pkgname.install
+options=(!lto)
+source=(
+ git+https://github.com/RobertBeckebans/RBDOOM-3-BFG.git
+ glslang::git+https://github.com/KhronosGroup/glslang.git
+ rbdoom-3-bfg.desktop
+ rbdoom-3-bfg.png
+ rbdoom-3-bfg-launcher
+)
+sha256sums=('SKIP'
+ 'SKIP'
+ '961649f60b9b39b97c5a23201f9276037694b4eb9e930bc33d255d9093385646'
+ '0fb6a3bb9b47cad65d5012ba20dc9de3b1487f4ac1908ee847e6087511b7f09e'
+ '6b40daca58635b30a68100741c265d22ffdefe90c74aad37827af1ea3daf8304')
+
+pkgver() {
+ cd RBDOOM-3-BFG
+ printf "%s" "$(git describe --long --tags | sed 's/\([^-]*-\)g/r\1/;s/-/./g;s/^v//g')"
+}
+
+prepare() {
+ cd RBDOOM-3-BFG
+ for submodule in neo/extern/glslang; do
+ git submodule init "${submodule}"
+ git config submodule."${submodule}".url ../"${submodule##*/}"
+ git submodule update "${submodule}"
+ done
+}
+
+build() {
+ cd RBDOOM-3-BFG
+ cmake \
+ -S neo \
+ -B build \
+ -DCMAKE_BUILD_TYPE="Release" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DUSE_VULKAN=OFF \
+ -DUSE_SYSTEM_LIBGLEW=OFF \
+ -DUSE_SYSTEM_LIBJPEG=OFF \
+ -DUSE_SYSTEM_LIBPNG=OFF \
+ -DUSE_SYSTEM_RAPIDJSON=OFF \
+ -DUSE_SYSTEM_ZLIB=OFF \
+ -DUSE_PRECOMPILED_HEADERS=OFF \
+ -Wno-dev
+ cmake --build build
+}
+
+package() {
+ install -Dm755 -t "$pkgdir"/usr/bin/ RBDOOM-3-BFG/build/RBDoom3BFG
+ install -Dm755 -t "$pkgdir"/usr/bin/ rbdoom-3-bfg-launcher
+ install -Dm644 -t "$pkgdir"/usr/share/applications/ rbdoom-3-bfg.desktop
+ install -Dm644 -t "$pkgdir"/usr/share/pixmaps/ rbdoom-3-bfg.png
+}
+
diff --git a/rbdoom-3-bfg-launcher b/rbdoom-3-bfg-launcher
new file mode 100644
index 000000000000..3a7b363cb5e8
--- /dev/null
+++ b/rbdoom-3-bfg-launcher
@@ -0,0 +1,27 @@
+#!/usr/bin/bash
+
+conf="$HOME/.rbdoom3bfg/launcher.conf"
+
+if [ -f "$conf" ]; then
+ source "$conf"
+else
+ conf_dir=$(dirname "$conf")
+ if [ ! -d "$conf_dir" ]; then
+ mkdir -p "$conf_dir"
+ fi
+ echo "install_dir=\"\"" > "$conf"
+fi
+
+basepath=""
+if [ -z "$install_dir" ]; then
+ printf "%s: install_dir is not set.\n\n" "$(basename "$0")"
+ printf "\tThe default install locations will be searched.\n"
+ printf "\tIf RBDoom3BFG fails to start, specify the Doom 3 BFG \n"
+ printf "\tinstallation directory in %s.\n\n" "$conf"
+else
+ basepath="+set fs_basepath $install_dir"
+fi
+
+# Disable terminal support too, if the user knows
+# what they are doing, they don't need the launcher anyways
+exec RBDoom3BFG +set in_tty 0 "$basepath" "$@"
diff --git a/rbdoom-3-bfg.desktop b/rbdoom-3-bfg.desktop
index f38e8d87e9ef..4a3556c03c7b 100644
--- a/rbdoom-3-bfg.desktop
+++ b/rbdoom-3-bfg.desktop
@@ -1,9 +1,10 @@
[Desktop Entry]
+Encoding=UTF-8
Name=RBDOOM-3-BFG
-GenericName=Doom 3: BFG Edition
-Exec=/usr/bin/RBDoom3BFG
-Icon=doom3bfg
+Exec=rbdoom-3-bfg-launcher
+Icon=rbdoom-3-bfg
StartupNotify=true
Terminal=false
Type=Application
+Comment=Modern Doom 3 BFG source port
Categories=Game;ActionGame;
diff --git a/rbdoom-3-bfg.install b/rbdoom-3-bfg.install
index f7bc30b892e4..eeb089c60291 100644
--- a/rbdoom-3-bfg.install
+++ b/rbdoom-3-bfg.install
@@ -1,5 +1,10 @@
post_install() {
cat <<EOF
+RBDoom 3 BFG requires the game data files to play.
+Either install the optional doom3-bfg-data package
+or copy the \"base\" directory of any Doom 3 BFG install
+to either ~/.rbdoom3bfg or /usr/share/games/doom3bfg.
+
If your doom3bfg-data package includes multiple *.lang files under
/usr/share/games/doom3bfg/base/strings, you may find the game starting
up in Japanese or another unwanted language on launch.
diff --git a/rbdoom-3-bfg.png b/rbdoom-3-bfg.png
new file mode 100644
index 000000000000..15a3fc8f0129
--- /dev/null
+++ b/rbdoom-3-bfg.png
Binary files differ