From 7de916b97559ccf1e61c64d80d2b8189ec440b92 Mon Sep 17 00:00:00 2001
From: sezero
Date: Sun, 5 Jul 2020 09:51:50 +0300
Subject: [PATCH 01/44] update documents after svn-to-git migration.
---
Linux/sgml/Quakespasm.sgml | 4 ++--
Quakespasm.html | 7 +++----
Quakespasm.txt | 5 +++--
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/Linux/sgml/Quakespasm.sgml b/Linux/sgml/Quakespasm.sgml
index 848ce1c2..4c5ebfa2 100644
--- a/Linux/sgml/Quakespasm.sgml
+++ b/Linux/sgml/Quakespasm.sgml
@@ -4,7 +4,7 @@
-Page last edited: Sep. 2019
+Page last edited: July 2020
About
@@ -109,7 +109,7 @@ The controller support started as Jeremiah Sypult's implementation in Quakespasm
Compiling and Installation
Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
To checkout the latest version of QuakeSpasm, do:
-svn co svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm
+git clone git://git.code.sf.net/p/quakespasm/quakespasm.git
Linux/Unix
After extracting the source tarball, browse the Makefile and edit the music streaming options, then
diff --git a/Quakespasm.html b/Quakespasm.html
index 66f0a81d..9281b527 100644
--- a/Quakespasm.html
+++ b/Quakespasm.html
@@ -12,7 +12,7 @@
-Page last edited: Sep. 2019
+Page last edited: July 2020
@@ -195,7 +195,7 @@ quakespasm.pak contains a default.cfg which has been updated to give some defaul
Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
To checkout the latest version of QuakeSpasm, do:
-svn co svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm
+git clone git://git.code.sf.net/p/quakespasm/quakespasm.git
@@ -725,12 +725,11 @@ these patched libSDL binaries may help.
Ozkan,
Eric,
-Sander
+Sander
-
-
diff --git a/Quakespasm.txt b/Quakespasm.txt
index 38c73f0f..4fc753f6 100644
--- a/Quakespasm.txt
+++ b/Quakespasm.txt
@@ -55,7 +55,7 @@
______________________________________________________________________
- Page last edited: Sep. 2019
+ Page last edited: July 2020
1. About
@@ -224,7 +224,7 @@
binary and id1 directory.
To checkout the latest version of QuakeSpasm, do:
- svn co svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm
+ git clone git://git.code.sf.net/p/quakespasm/quakespasm.git
4.1. Linux/Unix
@@ -1045,3 +1045,4 @@
http://www.celephais.net/board/view_thread.php?id=60452
o Inside3D forums: http://forums.insideqc.com
+
From 6e4f29a22ff04d762e8c3dce2ab671653f6984d2 Mon Sep 17 00:00:00 2001
From: Axel Gneiting
Date: Sun, 5 Jul 2020 21:01:10 +0300
Subject: [PATCH 02/44] Remove mtexinfo_t::mipadjust (software raster remnant)
---
Quake/gl_model.c | 18 ------------------
Quake/gl_model.h | 1 -
2 files changed, 19 deletions(-)
diff --git a/Quake/gl_model.c b/Quake/gl_model.c
index 2e3c31e3..5de03a82 100644
--- a/Quake/gl_model.c
+++ b/Quake/gl_model.c
@@ -924,7 +924,6 @@ void Mod_LoadTexinfo (lump_t *l)
texinfo_t *in;
mtexinfo_t *out;
int i, j, count, miptex;
- float len1, len2;
int missing = 0; //johnfitz
in = (texinfo_t *)(mod_base + l->fileofs);
@@ -943,23 +942,6 @@ void Mod_LoadTexinfo (lump_t *l)
out->vecs[0][j] = LittleFloat (in->vecs[0][j]);
out->vecs[1][j] = LittleFloat (in->vecs[1][j]);
}
- len1 = VectorLength (out->vecs[0]);
- len2 = VectorLength (out->vecs[1]);
- len1 = (len1 + len2)/2;
- if (len1 < 0.32)
- out->mipadjust = 4;
- else if (len1 < 0.49)
- out->mipadjust = 3;
- else if (len1 < 0.99)
- out->mipadjust = 2;
- else
- out->mipadjust = 1;
-#if 0
- if (len1 + len2 < 0.001)
- out->mipadjust = 1; // don't crash
- else
- out->mipadjust = 1 / floor((len1+len2)/2 + 0.1);
-#endif
miptex = LittleLong (in->miptex);
out->flags = LittleLong (in->flags);
diff --git a/Quake/gl_model.h b/Quake/gl_model.h
index 9eeaebdd..dd012336 100644
--- a/Quake/gl_model.h
+++ b/Quake/gl_model.h
@@ -123,7 +123,6 @@ typedef struct
typedef struct
{
float vecs[2][4];
- float mipadjust;
texture_t *texture;
int flags;
} mtexinfo_t;
From 9c9e45d9bb5cabebb2939153bf070ebc28e44c30 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer
Date: Thu, 16 Jul 2020 04:27:10 +0300
Subject: [PATCH 03/44] rebuilt libmpg123 for win64 (x64) after applying an asm
bug fix from mainstream.
---
Windows/codecs/x64/libmpg123-0.dll | Bin 172032 -> 172032 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/Windows/codecs/x64/libmpg123-0.dll b/Windows/codecs/x64/libmpg123-0.dll
index 0498ec547dc5a094dfa62604cdf6a60df30fa422..3c0417b02d55b63379abbdd544990656f8319096 100644
GIT binary patch
delta 120
zcmZoTz}0YoYeEOhgw_1<6MKA^r{pp>-rjnfG5(l$iHZQfMvaPs3%`boiUE-HQE>p0
zAu0htGDal
Date: Tue, 8 Sep 2020 14:00:00 +0300
Subject: [PATCH 04/44] host_cmd.c (Host_SavegameComment): Remove CR/LFs from
level name.
Avoids broken saves, e.g. with autumn_sp map. See:
https://celephais.net/board/view_thread.php?id=60452&start=3666
---
Quake/host_cmd.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/Quake/host_cmd.c b/Quake/host_cmd.c
index 70cc0d8f..0e375c68 100644
--- a/Quake/host_cmd.c
+++ b/Quake/host_cmd.c
@@ -1000,9 +1000,18 @@ void Host_SavegameComment (char *text)
{
int i;
char kills[20];
+ char *p1, *p2;
for (i = 0; i < SAVEGAME_COMMENT_LENGTH; i++)
text[i] = ' ';
+
+// Remove CR/LFs from level name to avoid broken saves, e.g. with autumn_sp map:
+// https://celephais.net/board/view_thread.php?id=60452&start=3666
+ p1 = strchr(cl.levelname, '\n');
+ p2 = strchr(cl.levelname, '\r');
+ if (p1 != NULL) *p1 = 0;
+ if (p2 != NULL) *p2 = 0;
+
memcpy (text, cl.levelname, q_min(strlen(cl.levelname),22)); //johnfitz -- only copy 22 chars.
sprintf (kills,"kills:%3i/%3i", cl.stats[STAT_MONSTERS], cl.stats[STAT_TOTALMONSTERS]);
memcpy (text+22, kills, strlen(kills));
@@ -1012,6 +1021,8 @@ void Host_SavegameComment (char *text)
if (text[i] == ' ')
text[i] = '_';
}
+ if (p1 != NULL) *p1 = '\n';
+ if (p2 != NULL) *p2 = '\r';
text[SAVEGAME_COMMENT_LENGTH] = '\0';
}
From 1bb0584c345d7eb9ef1c458eb2650fed6262b650 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer
Date: Thu, 10 Sep 2020 17:00:00 +0300
Subject: [PATCH 05/44] documentation tweaks from Steven.
---
Linux/sgml/Quakespasm.sgml | 22 ++++++++---------
Quakespasm.html | 26 +++++++++-----------
Quakespasm.txt | 49 ++++++++++++++++++--------------------
3 files changed, 44 insertions(+), 53 deletions(-)
diff --git a/Linux/sgml/Quakespasm.sgml b/Linux/sgml/Quakespasm.sgml
index 4c5ebfa2..24f99c95 100644
--- a/Linux/sgml/Quakespasm.sgml
+++ b/Linux/sgml/Quakespasm.sgml
@@ -4,7 +4,7 @@
-Page last edited: July 2020
+Page last edited: September 2020
About
@@ -21,7 +21,8 @@ SDL is probably less buggy, but SDL2 has nicer features and smoother mouse input
-
-
-
+
-
+
-
@@ -107,16 +108,15 @@ quakespasm.pak contains a default.cfg which has been updated to give some defaul
The controller support started as Jeremiah Sypult's implementation in Quakespasm-Rift and also uses ideas and code from LordHavoc (DarkPlaces).
Compiling and Installation
-
Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
-To checkout the latest version of QuakeSpasm, do:
-git clone git://git.code.sf.net/p/quakespasm/quakespasm.git
+See the Downloads section to get the sourcecode, then below for platform specific instructions.
+Quakespasm can also be built with the cross-platform Codeblocks.
+
+Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
Linux/Unix
-After extracting the source tarball, browse the Makefile and edit the music streaming options, then
-
-make
-cp quakespasm /usr/local/games/quake (for example)
-
+After extracting the source tarball, "cd Quake" and edit the Makefile for music options.
+
Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.
+
Then type "make" to compile the program, and copy the "quakespasm" binary (and "quakespasm.pak") to your Quake game directory.
Compile time options include
@@ -125,8 +125,6 @@ Compile time options include
- make SDL_CONFIG=/PATH/TO/SDL-CONFIG for unusual SDL installations
- make USE_SDL2=1 to compile against SDL2 instead of SDL-1.2
-Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.
-
The project can also be built with Codeblocks (project files included).
Windows
The QuakeSpasm developers cross-compile windows binaries using and .
diff --git a/Quakespasm.html b/Quakespasm.html
index 9281b527..7aa9a0fc 100644
--- a/Quakespasm.html
+++ b/Quakespasm.html
@@ -12,7 +12,7 @@
-Page last edited: July 2020
+Page last edited: September 2020
@@ -94,7 +94,9 @@ SDL is probably less buggy, but SDL2 has nicer features and smoother mouse input
-
Project Downloads
-
-Automatic Builds
+Latest code repository
+-
+Automatic Builds (dead link)
@@ -193,20 +195,15 @@ quakespasm.pak contains a default.cfg which has been updated to give some defaul
-Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
-To checkout the latest version of QuakeSpasm, do:
-git clone git://git.code.sf.net/p/quakespasm/quakespasm.git
+See the Downloads section to get the sourcecode, then below for platform specific instructions.
+Quakespasm can also be built with the cross-platform Codeblocks.
+Quakespasm's (optional) custom data is now stored in the file quakespasm.pak. This file should be placed alongside your quakespasm binary and id1 directory.
-After extracting the source tarball, browse the Makefile and edit the music streaming options, then
-
-
-make
-cp quakespasm /usr/local/games/quake (for example)
-
-
-
+After extracting the source tarball, "cd Quake" and edit the Makefile for music options.
+Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.
+Then type "make" to compile the program, and copy the "quakespasm" binary (and "quakespasm.pak") to your Quake game directory.
Compile time options include
- make DO_USERDIRS=1 to include user directories support
@@ -215,8 +212,7 @@ Compile time options include
- make USE_SDL2=1 to compile against SDL2 instead of SDL-1.2
-Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.
-The project can also be built with Codeblocks (project files included).
+
diff --git a/Quakespasm.txt b/Quakespasm.txt
index 4fc753f6..dde853b9 100644
--- a/Quakespasm.txt
+++ b/Quakespasm.txt
@@ -25,11 +25,11 @@
6.4 Changes in 0.92.1
6.5 Changes in 0.92.0
6.6 Changes in 0.91.0
- 6.5.1 Bugfixes
- 6.5.2 Visual improvements
- 6.5.3 Interface improvements
- 6.5.4 Code cleanup / Other
- 6.5.5 Raised limits
+ 6.6.1 Bugfixes
+ 6.6.2 Visual improvements
+ 6.6.3 Interface improvements
+ 6.6.4 Code cleanup / Other
+ 6.6.5 Raised limits
6.7 Changes in 0.90.1
6.7.1 Bugfixes
6.7.2 Performance
@@ -55,7 +55,7 @@
______________________________________________________________________
- Page last edited: July 2020
+ Page last edited: September 2020
1. About
@@ -68,16 +68,20 @@
sound driver, some graphical niceities, and numerous bug-fixes and
other improvements.
- Quakespasm utilizes either the SDL or SDL2 frameworks, so choose
- which one works best for you. SDL is probably less buggy, but SDL2
- has nicer features and smoother mouse input - though no CD support.
+ Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which
+ one works best for you. SDL is probably less buggy, but SDL2 has
+ nicer features and smoother mouse input - though no CD support.
2. Downloads
o Project Downloads: http://quakespasm.sourceforge.net/download.htm
- o Automatic Builds: http://quakespasm.ericwa.com/job/quakespasm-sdl2/
+ o Latest code repository:
+ https://sourceforge.net/p/quakespasm/quakespasm/ci/master/tree/
+
+ o Automatic Builds (dead link):
+ http://quakespasm.ericwa.com/job/quakespasm-sdl2/
3. Hints
@@ -219,24 +223,23 @@
4. Compiling and Installation
+ See the Downloads section to get the sourcecode, then below for
+ platform specific instructions. Quakespasm can also be built with the
+ cross-platform Codeblocks.
Quakespasm's (optional) custom data is now stored in the file
quakespasm.pak. This file should be placed alongside your quakespasm
binary and id1 directory.
- To checkout the latest version of QuakeSpasm, do:
- git clone git://git.code.sf.net/p/quakespasm/quakespasm.git
-
4.1. Linux/Unix
- After extracting the source tarball, browse the Makefile and edit the
- music streaming options, then
-
- ______________________________________________________________________
- make
- cp quakespasm /usr/local/games/quake (for example)
- ______________________________________________________________________
+ After extracting the source tarball, "cd Quake" and edit the Makefile
+ for music options.
+ Streaming music playback requires "libmad" or "libmpg123" for MP3, and
+ "libogg" and "libvorbis" for OGG files.
+ Then type "make" to compile the program, and copy the "quakespasm"
+ binary (and "quakespasm.pak") to your Quake game directory.
Compile time options include
o make DO_USERDIRS=1 to include user directories support
@@ -247,12 +250,6 @@
o make USE_SDL2=1 to compile against SDL2 instead of SDL-1.2
- Streaming music playback requires "libmad" or "libmpg123" for MP3, and
- "libogg" and "libvorbis" for OGG files.
-
- The project can also be built with Codeblocks (project files
- included).
-
4.2. Windows
The QuakeSpasm developers cross-compile windows binaries using MinGW
From 9bd1cc8d1db1470ee16e07dbafb9691a3ac0a173 Mon Sep 17 00:00:00 2001
From: Stephen Kitt
Date: Fri, 26 Aug 2016 22:44:29 +0200
Subject: [PATCH 06/44] Spelling fixes
---
Quake/cmd.c | 2 +-
Quake/gl_model.c | 2 +-
Quake/host_cmd.c | 8 ++++----
Quake/net_dgrm.c | 4 ++--
Quake/sv_main.c | 4 ++--
Quake/zone.c | 20 ++++++++++----------
6 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/Quake/cmd.c b/Quake/cmd.c
index 783475fd..b2c76300 100644
--- a/Quake/cmd.c
+++ b/Quake/cmd.c
@@ -334,7 +334,7 @@ void Cmd_Alias_f (void)
return;
}
- // if the alias allready exists, reuse it
+ // if the alias already exists, reuse it
for (a = cmd_alias ; a ; a=a->next)
{
if (!strcmp(s, a->name))
diff --git a/Quake/gl_model.c b/Quake/gl_model.c
index 5de03a82..03f66c44 100644
--- a/Quake/gl_model.c
+++ b/Quake/gl_model.c
@@ -611,7 +611,7 @@ void Mod_LoadTextures (lump_t *l)
if (!tx || tx->name[0] != '+')
continue;
if (tx->anim_next)
- continue; // allready sequenced
+ continue; // already sequenced
// find the number of frames in the animation
memset (anims, 0, sizeof(anims));
diff --git a/Quake/host_cmd.c b/Quake/host_cmd.c
index 0e375c68..d71e3efc 100644
--- a/Quake/host_cmd.c
+++ b/Quake/host_cmd.c
@@ -1542,7 +1542,7 @@ void Host_Kill_f (void)
if (sv_player->v.health <= 0)
{
- SV_ClientPrintf ("Can't suicide -- allready dead!\n");
+ SV_ClientPrintf ("Can't suicide -- already dead!\n");
return;
}
@@ -1611,7 +1611,7 @@ void Host_PreSpawn_f (void)
if (host_client->spawned)
{
- Con_Printf ("prespawn not valid -- allready spawned\n");
+ Con_Printf ("prespawn not valid -- already spawned\n");
return;
}
@@ -1640,13 +1640,13 @@ void Host_Spawn_f (void)
if (host_client->spawned)
{
- Con_Printf ("Spawn not valid -- allready spawned\n");
+ Con_Printf ("Spawn not valid -- already spawned\n");
return;
}
// run the entrance script
if (sv.loadgame)
- { // loaded games are fully inited allready
+ { // loaded games are fully inited already
// if this is the last client to be connected, unpause
sv.paused = false;
}
diff --git a/Quake/net_dgrm.c b/Quake/net_dgrm.c
index 4a4b4f7b..0188951d 100644
--- a/Quake/net_dgrm.c
+++ b/Quake/net_dgrm.c
@@ -554,7 +554,7 @@ static void Test_Poll (void *unused)
break;
if (MSG_ReadByte() != CCREP_PLAYER_INFO)
- Sys_Error("Unexpected repsonse to Player Info request\n");
+ Sys_Error("Unexpected response to Player Info request\n");
MSG_ReadByte(); /* playerNumber */
Q_strcpy(name, MSG_ReadString());
@@ -706,7 +706,7 @@ Reschedule:
return;
Error:
- Con_Printf("Unexpected repsonse to Rule Info request\n");
+ Con_Printf("Unexpected response to Rule Info request\n");
Done:
dfunc.Close_Socket(test2Socket);
test2InProgress = false;
diff --git a/Quake/sv_main.c b/Quake/sv_main.c
index 91deeac9..d358a61d 100644
--- a/Quake/sv_main.c
+++ b/Quake/sv_main.c
@@ -178,7 +178,7 @@ Each entity can have eight independant sound sources, like voice,
weapon, feet, etc.
Channel 0 is an auto-allocate channel, the others override anything
-allready running on that entity/channel pair.
+already running on that entity/channel pair.
An attenuation of 0 will play full volume everywhere in the level.
Larger attenuations will drop off. (max 4 attenuation)
@@ -211,7 +211,7 @@ void SV_StartSound (edict_t *entity, int channel, const char *sample, int volume
if (sound_num == MAX_SOUNDS || !sv.sound_precache[sound_num])
{
- Con_Printf ("SV_StartSound: %s not precacheed\n", sample);
+ Con_Printf ("SV_StartSound: %s not precached\n", sample);
return;
}
diff --git a/Quake/zone.c b/Quake/zone.c
index 05936bb1..6c568eff 100644
--- a/Quake/zone.c
+++ b/Quake/zone.c
@@ -284,12 +284,12 @@ void Z_Print (memzone_t *zone)
//============================================================================
-#define HUNK_SENTINAL 0x1df001ed
+#define HUNK_SENTINEL 0x1df001ed
#define HUNKNAME_LEN 24
typedef struct
{
- int sentinal;
+ int sentinel;
int size; // including sizeof(hunk_t), -1 = not allocated
char name[HUNKNAME_LEN];
} hunk_t;
@@ -307,7 +307,7 @@ int hunk_tempmark;
==============
Hunk_Check
-Run consistancy and sentinal trahing checks
+Run consistancy and sentinel trahing checks
==============
*/
void Hunk_Check (void)
@@ -316,8 +316,8 @@ void Hunk_Check (void)
for (h = (hunk_t *)hunk_base ; (byte *)h != hunk_base + hunk_low_used ; )
{
- if (h->sentinal != HUNK_SENTINAL)
- Sys_Error ("Hunk_Check: trahsed sentinal");
+ if (h->sentinel != HUNK_SENTINEL)
+ Sys_Error ("Hunk_Check: trashed sentinel");
if (h->size < (int) sizeof(hunk_t) || h->size + (byte *)h - hunk_base > hunk_size)
Sys_Error ("Hunk_Check: bad size");
h = (hunk_t *)((byte *)h+h->size);
@@ -373,8 +373,8 @@ void Hunk_Print (qboolean all)
//
// run consistancy checks
//
- if (h->sentinal != HUNK_SENTINAL)
- Sys_Error ("Hunk_Check: trahsed sentinal");
+ if (h->sentinel != HUNK_SENTINEL)
+ Sys_Error ("Hunk_Check: trashed sentinel");
if (h->size < (int) sizeof(hunk_t) || h->size + (byte *)h - hunk_base > hunk_size)
Sys_Error ("Hunk_Check: bad size");
@@ -449,7 +449,7 @@ void *Hunk_AllocName (int size, const char *name)
memset (h, 0, size);
h->size = size;
- h->sentinal = HUNK_SENTINAL;
+ h->sentinel = HUNK_SENTINEL;
q_strlcpy (h->name, name, HUNKNAME_LEN);
return (void *)(h+1);
@@ -540,7 +540,7 @@ void *Hunk_HighAllocName (int size, const char *name)
memset (h, 0, size);
h->size = size;
- h->sentinal = HUNK_SENTINAL;
+ h->sentinel = HUNK_SENTINEL;
q_strlcpy (h->name, name, HUNKNAME_LEN);
return (void *)(h+1);
@@ -906,7 +906,7 @@ void *Cache_Alloc (cache_user_t *c, int size, const char *name)
cache_system_t *cs;
if (c->data)
- Sys_Error ("Cache_Alloc: allready allocated");
+ Sys_Error ("Cache_Alloc: already allocated");
if (size <= 0)
Sys_Error ("Cache_Alloc: size %i", size);
From a7503e2be290b2de6e440d3ec1fff172326330b9 Mon Sep 17 00:00:00 2001
From: Helmut Grohne
Date: Sun, 27 May 2018 19:28:47 +0200
Subject: [PATCH 07/44] Make pkg-config substitutable
This helps with cross-compilation. When cross-compiling, the environment
variable PKG_CONFIG is typically set to a version of pkg-config that is
configured to look in appropriate locations for the cross architecture.
For example, a build for 64-bit ARM might use:
make \
CC=aarch64-linux-gnu-gcc \
STRIP=aarch64-linux-gnu-strip \
PKG_CONFIG=aarch64-linux-gnu-pkg-config \
release
On a Debian system, this would look in
/usr/lib/aarch64-linux-gnu/pkgconfig for details of 64-bit ARM Opus
libraries.
Bug-Debian: https://bugs.debian.org/900217
---
Quake/Makefile | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/Quake/Makefile b/Quake/Makefile
index fe1ae833..a74b102d 100644
--- a/Quake/Makefile
+++ b/Quake/Makefile
@@ -46,6 +46,7 @@ CC ?= gcc
LINKER = $(CC)
STRIP ?= strip
+PKG_CONFIG ?= pkg-config
#CPUFLAGS= -mtune=i686
#CPUFLAGS= -march=pentium4
@@ -153,8 +154,8 @@ ifeq ($(USE_CODEC_OPUS),1)
# but they include the headers without the opus directory
# prefix and rely on pkg-config. ewww...
CFLAGS+= -DUSE_CODEC_OPUS
-CFLAGS+= $(shell pkg-config --cflags opusfile)
-CODECLIBS+= $(shell pkg-config --libs opusfile)
+CFLAGS+= $(shell $(PKG_CONFIG) --cflags opusfile)
+CODECLIBS+= $(shell $(PKG_CONFIG) --libs opusfile)
endif
ifeq ($(USE_CODEC_VORBIS),1)
CFLAGS+= -DUSE_CODEC_VORBIS $(cpp_vorbisdec)
From bbda7657fe266ddd77c70d9613bb1f771d58ea6f Mon Sep 17 00:00:00 2001
From: Ozkan Sezer
Date: Fri, 1 Jan 2021 15:23:40 +0300
Subject: [PATCH 08/44] rebuilt SDL-1.2 from latest mainstream code
---
.../Versions/A/Headers/SDL_config_os2.h | 2 +-
.../Versions/A/Headers/SDL_endian.h | 16 ++++++++++++++--
.../Versions/A/Headers/SDL_opengl.h | 13 +++++++++----
.../Versions/A/Headers/SDL_video.h | 1 +
MacOSX/SDL.framework/Versions/A/SDL | Bin 1421172 -> 1470676 bytes
Windows/SDL/include/SDL_config_os2.h | 2 +-
Windows/SDL/include/SDL_endian.h | 16 ++++++++++++++--
Windows/SDL/include/SDL_opengl.h | 13 +++++++++----
Windows/SDL/include/SDL_video.h | 1 +
Windows/SDL/lib/SDL.dll | Bin 316928 -> 349184 bytes
Windows/SDL/lib64/SDL.dll | Bin 316416 -> 331264 bytes
11 files changed, 50 insertions(+), 14 deletions(-)
diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_os2.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_os2.h
index 0342c818..1b36dc11 100644
--- a/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_os2.h
+++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_config_os2.h
@@ -122,7 +122,7 @@
#define SDL_VIDEO_DRIVER_OS2FS 1
/* Enable OpenGL support */
-/* Nothing yet for OS/2. */
+/* #undef SDL_VIDEO_OPENGL */ /* Nothing yet */
/* Enable assembly routines where available */
#define SDL_ASSEMBLY_ROUTINES 1
diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h
index 953f2c0f..48ae0eea 100644
--- a/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h
+++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_endian.h
@@ -31,7 +31,7 @@
#include "SDL_stdinc.h"
/** @name SDL_ENDIANs
- * The two types of endianness
+ * The two types of endianness
*/
/*@{*/
#define SDL_LIL_ENDIAN 1234
@@ -94,6 +94,12 @@ static __inline__ Uint16 SDL_Swap16(Uint16 x)
__asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x));
return (Uint16)result;
}
+#elif defined(__GNUC__) && defined(__aarch64__)
+static __inline__ Uint16 SDL_Swap16(Uint16 x)
+{
+ __asm__("rev16 %w1, %w0" : "=r"(x) : "r"(x));
+ return x;
+}
#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__))
static __inline__ Uint16 SDL_Swap16(Uint16 x)
{
@@ -135,6 +141,12 @@ static __inline__ Uint32 SDL_Swap32(Uint32 x)
__asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x));
return result;
}
+#elif defined(__GNUC__) && defined(__aarch64__)
+static __inline__ Uint32 SDL_Swap32(Uint32 x)
+{
+ __asm__("rev %w1, %w0": "=r"(x):"r"(x));
+ return x;
+}
#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__))
static __inline__ Uint32 SDL_Swap32(Uint32 x)
{
@@ -174,7 +186,7 @@ static __inline__ Uint64 SDL_Swap64(Uint64 x)
v.u = x;
__asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
: "=r" (v.s.a), "=r" (v.s.b)
- : "0" (v.s.a), "1" (v.s.b));
+ : "0" (v.s.a), "1" (v.s.b));
return v.u;
}
#elif defined(__GNUC__) && defined(__x86_64__)
diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h
index 3d791d69..389b7c37 100644
--- a/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h
+++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_opengl.h
@@ -27,7 +27,9 @@
#include "SDL_config.h"
#ifdef __WIN32__
+#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
+#endif
#ifndef NOMINMAX
#define NOMINMAX /* Don't defined min() and max() */
#endif
@@ -35,6 +37,7 @@
#endif
#ifndef NO_SDL_GLEXT
#define __glext_h_ /* Don't let gl.h include glext.h */
+#define __gl_glext_h_ /* Don't let gl.h include glext.h */
#endif
#if defined(__MACOSX__)
#include /* Header File For The OpenGL Library */
@@ -48,6 +51,7 @@
#endif
#ifndef NO_SDL_GLEXT
#undef __glext_h_
+#undef __gl_glext_h_
#endif
/** @name GLext.h
@@ -57,8 +61,9 @@
*/
/*@{*/
#ifndef NO_SDL_GLEXT
-#if !defined(__glext_h_) && !defined(GL_GLEXT_LEGACY)
+#if !(defined(__glext_h_) || defined(__gl_glext_h_)) && !defined(GL_GLEXT_LEGACY)
#define __glext_h_
+#define __gl_glext_h_
#ifdef __cplusplus
extern "C" {
@@ -6227,12 +6232,12 @@ typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint);
GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, const GLuint *);
+GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *);
GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
+typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);
typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
#endif
@@ -6565,6 +6570,6 @@ typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid
}
#endif
-#endif
+#endif /* GL_GLEXT_LEGACY */
#endif /* NO_SDL_GLEXT */
/*@}*/
diff --git a/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h b/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h
index f9c4e070..aa0459cd 100644
--- a/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h
+++ b/MacOSX/SDL.framework/Versions/A/Headers/SDL_video.h
@@ -138,6 +138,7 @@ typedef struct SDL_Surface {
#define SDL_ANYFORMAT 0x10000000 /**< Allow any video depth/pixel-format */
#define SDL_HWPALETTE 0x20000000 /**< Surface has exclusive palette */
#define SDL_DOUBLEBUF 0x40000000 /**< Set up double-buffered video mode */
+#define SDL_TRIPLEBUF 0x40000100 /**< Set up triple-buffered video mode */
#define SDL_FULLSCREEN 0x80000000 /**< Surface is a full screen display */
#define SDL_OPENGL 0x00000002 /**< Create an OpenGL rendering context */
#define SDL_OPENGLBLIT 0x0000000A /**< Create an OpenGL rendering context and use it for blitting */
diff --git a/MacOSX/SDL.framework/Versions/A/SDL b/MacOSX/SDL.framework/Versions/A/SDL
index c9316d7878bb0efb6461469c5330847958f9b373..a48737ac3c6a6b341408d0974f6bcec684fc6d6a 100755
GIT binary patch
delta 350159
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