From 53bbfc2cd65273c3631efe8ad9061d014ff88f12 Mon Sep 17 00:00:00 2001 From: Ensiform Date: Mon, 13 May 2013 12:08:16 -0500 Subject: [PATCH 01/62] Remove unused renderCommandList variable from renderers --- code/renderergl1/tr_cmds.c | 2 -- code/renderergl1/tr_local.h | 2 -- code/renderergl2/tr_cmds.c | 2 -- code/renderergl2/tr_local.h | 2 -- 4 files changed, 8 deletions(-) diff --git a/code/renderergl1/tr_cmds.c b/code/renderergl1/tr_cmds.c index 1d6beea5..00b819ac 100644 --- a/code/renderergl1/tr_cmds.c +++ b/code/renderergl1/tr_cmds.c @@ -21,8 +21,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "tr_local.h" -volatile renderCommandList_t *renderCommandList; - /* ===================== R_PerformanceCounters diff --git a/code/renderergl1/tr_local.h b/code/renderergl1/tr_local.h index de75c0b0..925dec29 100644 --- a/code/renderergl1/tr_local.h +++ b/code/renderergl1/tr_local.h @@ -1593,8 +1593,6 @@ extern int max_polyverts; extern backEndData_t *backEndData; // the second one may not be allocated -extern volatile renderCommandList_t *renderCommandList; - void *R_GetCommandBuffer( int bytes ); void RB_ExecuteRenderCommands( const void *data ); diff --git a/code/renderergl2/tr_cmds.c b/code/renderergl2/tr_cmds.c index d4b83e1f..1426b581 100644 --- a/code/renderergl2/tr_cmds.c +++ b/code/renderergl2/tr_cmds.c @@ -21,8 +21,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "tr_local.h" -volatile renderCommandList_t *renderCommandList; - /* ===================== R_PerformanceCounters diff --git a/code/renderergl2/tr_local.h b/code/renderergl2/tr_local.h index b615cc07..144b16eb 100644 --- a/code/renderergl2/tr_local.h +++ b/code/renderergl2/tr_local.h @@ -2651,8 +2651,6 @@ extern int max_polyverts; extern backEndData_t *backEndData; // the second one may not be allocated -extern volatile renderCommandList_t *renderCommandList; - void *R_GetCommandBuffer( int bytes ); void RB_ExecuteRenderCommands( const void *data ); From 0448f68a13c53efd17a8ef04d4a6b3e01a12bef6 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 23 May 2013 00:55:32 -0500 Subject: [PATCH 02/62] Fix predicting touching items in CTF and 1FCTF In CTF, rail or plasma gun/ammo were not predicted for pickup depending on what team player is on. The rail and plasma values are the same as PW_REDFLAG and PW_BLUEFLAG. In 1FCTF, only neutral flag, BFG, and BFG ammo were predicted for pickup. WP_BFG is equal to PW_NEUTRALFLAG. --- code/cgame/cg_predict.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/cgame/cg_predict.c b/code/cgame/cg_predict.c index acdfe59d..de33e4c9 100644 --- a/code/cgame/cg_predict.c +++ b/code/cgame/cg_predict.c @@ -283,17 +283,17 @@ static void CG_TouchItem( centity_t *cent ) { // We don't predict touching our own flag #ifdef MISSIONPACK if( cgs.gametype == GT_1FCTF ) { - if( item->giTag != PW_NEUTRALFLAG ) { + if( item->giType == IT_TEAM && item->giTag != PW_NEUTRALFLAG ) { return; } } #endif if( cgs.gametype == GT_CTF ) { if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_RED && - item->giTag == PW_REDFLAG) + item->giType == IT_TEAM && item->giTag == PW_REDFLAG) return; if (cg.predictedPlayerState.persistant[PERS_TEAM] == TEAM_BLUE && - item->giTag == PW_BLUEFLAG) + item->giType == IT_TEAM && item->giTag == PW_BLUEFLAG) return; } From 71b804a096cdf0f56839423f3ee4642d38871052 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 24 May 2013 12:26:45 -0500 Subject: [PATCH 03/62] Remove RF_SUNFLARE from OpenGL2 renderer RF_SUNFLARE didn't do anything after commit "Merge Reaction renderer features, remove "#ifdef REACTION"s". --- code/renderergl2/tr_extratypes.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/renderergl2/tr_extratypes.h b/code/renderergl2/tr_extratypes.h index b84cd5e4..71cd2df8 100644 --- a/code/renderergl2/tr_extratypes.h +++ b/code/renderergl2/tr_extratypes.h @@ -25,9 +25,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // tr_extratypes.h, for mods that want to extend tr_types.h without losing compatibility with original VMs -// extra renderfx flags start at 0x0400 -#define RF_SUNFLARE 0x0400 - // extra refdef flags start at 0x0008 #define RDF_NOFOG 0x0008 // don't apply fog #define RDF_EXTRA 0x0010 // Makro - refdefex_t to follow after refdef_t From d5b046186aaf11379170819ba90e15105651476f Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 24 May 2013 13:16:56 -0500 Subject: [PATCH 04/62] Clarify comment for OpenGL2's RDF_NOFOG --- code/renderergl2/tr_extratypes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderergl2/tr_extratypes.h b/code/renderergl2/tr_extratypes.h index 71cd2df8..84e39a76 100644 --- a/code/renderergl2/tr_extratypes.h +++ b/code/renderergl2/tr_extratypes.h @@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // tr_extratypes.h, for mods that want to extend tr_types.h without losing compatibility with original VMs // extra refdef flags start at 0x0008 -#define RDF_NOFOG 0x0008 // don't apply fog +#define RDF_NOFOG 0x0008 // don't apply fog to polys added using RE_AddPolyToScene #define RDF_EXTRA 0x0010 // Makro - refdefex_t to follow after refdef_t #define RDF_SUNLIGHT 0x0020 // SmileTheory - render sunlight and shadows From ab4c602374caa0f520b3a0801d384a73e29e0bc7 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Mon, 27 May 2013 20:45:42 +0100 Subject: [PATCH 05/62] Fix Freetype build problems --- code/renderercommon/tr_font.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderercommon/tr_font.c b/code/renderercommon/tr_font.c index 17148f45..3f830d5c 100644 --- a/code/renderercommon/tr_font.c +++ b/code/renderercommon/tr_font.c @@ -73,10 +73,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #ifdef BUILD_FREETYPE #include +#include FT_FREETYPE_H #include FT_ERRORS_H #include FT_SYSTEM_H #include FT_IMAGE_H -#include FT_FREETYPE_H #include FT_OUTLINE_H #define _FLOOR(x) ((x) & -64) From 0c3ec34db92be94354dd7e3e4e9a9955f14f718e Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 24 May 2013 22:02:52 -0500 Subject: [PATCH 06/62] Allow drawing sun in OpenGL1 renderer Removed #if 0 ... #endif around RB_DrawSun(). Merged improvements and changes from OpenGL2 renderer. --- code/renderergl1/tr_backend.c | 7 ++-- code/renderergl1/tr_local.h | 2 +- code/renderergl1/tr_sky.c | 63 ++++------------------------------- 3 files changed, 11 insertions(+), 61 deletions(-) diff --git a/code/renderergl1/tr_backend.c b/code/renderergl1/tr_backend.c index 5bff947b..60449261 100644 --- a/code/renderergl1/tr_backend.c +++ b/code/renderergl1/tr_backend.c @@ -668,9 +668,10 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) { qglDepthRange (0, 1); } -#if 0 - RB_DrawSun(); -#endif + if (r_drawSun->integer) { + RB_DrawSun(0.1, tr.sunShader); + } + // darken down any stencil shadows RB_ShadowFinish(); diff --git a/code/renderergl1/tr_local.h b/code/renderergl1/tr_local.h index 925dec29..dd292bc6 100644 --- a/code/renderergl1/tr_local.h +++ b/code/renderergl1/tr_local.h @@ -1326,7 +1326,7 @@ SKIES void R_BuildCloudData( shaderCommands_t *shader ); void R_InitSkyTexCoords( float cloudLayerHeight ); void R_DrawSkyBox( shaderCommands_t *shader ); -void RB_DrawSun( void ); +void RB_DrawSun( float scale, shader_t *shader ); void RB_ClipSkyPolygons( shaderCommands_t *shader ); /* diff --git a/code/renderergl1/tr_sky.c b/code/renderergl1/tr_sky.c index 3e774a31..daa5ff12 100644 --- a/code/renderergl1/tr_sky.c +++ b/code/renderergl1/tr_sky.c @@ -696,23 +696,21 @@ void R_InitSkyTexCoords( float heightCloud ) /* ** RB_DrawSun */ -void RB_DrawSun( void ) { +void RB_DrawSun( float scale, shader_t *shader ) { float size; float dist; vec3_t origin, vec1, vec2; - vec3_t temp; + byte sunColor[4] = { 255, 255, 255, 255 }; if ( !backEnd.skyRenderedThisView ) { return; } - if ( !r_drawSun->integer ) { - return; - } + qglLoadMatrixf( backEnd.viewParms.world.modelMatrix ); qglTranslatef (backEnd.viewParms.or.origin[0], backEnd.viewParms.or.origin[1], backEnd.viewParms.or.origin[2]); dist = backEnd.viewParms.zFar / 1.75; // div sqrt(3) - size = dist * 0.4; + size = dist * scale; VectorScale( tr.sunDirection, dist, origin ); PerpendicularVector( vec1, tr.sunDirection ); @@ -724,58 +722,9 @@ void RB_DrawSun( void ) { // farthest depth range qglDepthRange( 1.0, 1.0 ); - // FIXME: use quad stamp - RB_BeginSurface( tr.sunShader, tess.fogNum ); - VectorCopy( origin, temp ); - VectorSubtract( temp, vec1, temp ); - VectorSubtract( temp, vec2, temp ); - VectorCopy( temp, tess.xyz[tess.numVertexes] ); - tess.texCoords[tess.numVertexes][0][0] = 0; - tess.texCoords[tess.numVertexes][0][1] = 0; - tess.vertexColors[tess.numVertexes][0] = 255; - tess.vertexColors[tess.numVertexes][1] = 255; - tess.vertexColors[tess.numVertexes][2] = 255; - tess.numVertexes++; + RB_BeginSurface( shader, 0 ); - VectorCopy( origin, temp ); - VectorAdd( temp, vec1, temp ); - VectorSubtract( temp, vec2, temp ); - VectorCopy( temp, tess.xyz[tess.numVertexes] ); - tess.texCoords[tess.numVertexes][0][0] = 0; - tess.texCoords[tess.numVertexes][0][1] = 1; - tess.vertexColors[tess.numVertexes][0] = 255; - tess.vertexColors[tess.numVertexes][1] = 255; - tess.vertexColors[tess.numVertexes][2] = 255; - tess.numVertexes++; - - VectorCopy( origin, temp ); - VectorAdd( temp, vec1, temp ); - VectorAdd( temp, vec2, temp ); - VectorCopy( temp, tess.xyz[tess.numVertexes] ); - tess.texCoords[tess.numVertexes][0][0] = 1; - tess.texCoords[tess.numVertexes][0][1] = 1; - tess.vertexColors[tess.numVertexes][0] = 255; - tess.vertexColors[tess.numVertexes][1] = 255; - tess.vertexColors[tess.numVertexes][2] = 255; - tess.numVertexes++; - - VectorCopy( origin, temp ); - VectorSubtract( temp, vec1, temp ); - VectorAdd( temp, vec2, temp ); - VectorCopy( temp, tess.xyz[tess.numVertexes] ); - tess.texCoords[tess.numVertexes][0][0] = 1; - tess.texCoords[tess.numVertexes][0][1] = 0; - tess.vertexColors[tess.numVertexes][0] = 255; - tess.vertexColors[tess.numVertexes][1] = 255; - tess.vertexColors[tess.numVertexes][2] = 255; - tess.numVertexes++; - - tess.indexes[tess.numIndexes++] = 0; - tess.indexes[tess.numIndexes++] = 1; - tess.indexes[tess.numIndexes++] = 2; - tess.indexes[tess.numIndexes++] = 0; - tess.indexes[tess.numIndexes++] = 2; - tess.indexes[tess.numIndexes++] = 3; + RB_AddQuadStamp(origin, vec1, vec2, sunColor); RB_EndSurface(); From 242dcf9cf846f773bc5ce76b7a616aeab91bab51 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Wed, 29 May 2013 14:23:34 +0100 Subject: [PATCH 07/62] Suppress warning --- code/renderergl2/tr_bsp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code/renderergl2/tr_bsp.c b/code/renderergl2/tr_bsp.c index 1825b19c..04170919 100644 --- a/code/renderergl2/tr_bsp.c +++ b/code/renderergl2/tr_bsp.c @@ -3376,6 +3376,7 @@ void RE_LoadWorldMap( const char *name ) { gridLightCol[0] = ByteToFloat(data[3]); gridLightCol[1] = ByteToFloat(data[4]); gridLightCol[2] = ByteToFloat(data[5]); + (void)gridLightCol; // Suppress unused-but-set-variable warning lat = data[7]; lng = data[6]; From 2d54a1261541a437f7e5ce1218131151d4cf8efb Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Thu, 30 May 2013 15:32:44 -0500 Subject: [PATCH 08/62] fix some "\n"-related stuff add missing "\n"s to some Printf()-like calls (in Rend2) drop erroneous "\n"s from some Error()-like calls (in Rend2) drop erroneous "\n" from a Com_Error() call (in vm_sparc.c) --- code/qcommon/vm_sparc.c | 2 +- code/renderergl2/tr_bsp.c | 10 +++++----- code/renderergl2/tr_fbo.c | 2 +- code/renderergl2/tr_glsl.c | 6 ++++-- code/renderergl2/tr_shade_calc.c | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/code/qcommon/vm_sparc.c b/code/qcommon/vm_sparc.c index 578294d5..d79b4324 100644 --- a/code/qcommon/vm_sparc.c +++ b/code/qcommon/vm_sparc.c @@ -701,7 +701,7 @@ static void dst_insn_append(struct func_info * const fp) static void ErrJump(void) { - Com_Error(ERR_DROP, "program tried to execute code outside VM\n"); + Com_Error(ERR_DROP, "program tried to execute code outside VM"); exit(1); } diff --git a/code/renderergl2/tr_bsp.c b/code/renderergl2/tr_bsp.c index 04170919..01556cdd 100644 --- a/code/renderergl2/tr_bsp.c +++ b/code/renderergl2/tr_bsp.c @@ -350,7 +350,7 @@ static void R_LoadLightmaps( lump_t *l, lump_t *surfs ) { } if (!size) - ri.Error(ERR_DROP, "Bad header for %s!\n", filename); + ri.Error(ERR_DROP, "Bad header for %s!", filename); size -= 2; p += 2; @@ -368,10 +368,10 @@ static void R_LoadLightmaps( lump_t *l, lump_t *surfs ) { #if 0 // HDRFILE_RGBE if (size != tr.lightmapSize * tr.lightmapSize * 4) - ri.Error(ERR_DROP, "Bad size for %s (%i)!\n", filename, size); + ri.Error(ERR_DROP, "Bad size for %s (%i)!", filename, size); #else // HDRFILE_FLOAT if (size != tr.lightmapSize * tr.lightmapSize * 12) - ri.Error(ERR_DROP, "Bad size for %s (%i)!\n", filename, size); + ri.Error(ERR_DROP, "Bad size for %s (%i)!", filename, size); #endif } else @@ -2184,7 +2184,7 @@ static void R_LoadSurfaces( lump_t *surfs, lump_t *verts, lump_t *indexLump ) { { //ri.Printf(PRINT_ALL, "Found!\n"); if (size != sizeof(float) * 3 * (verts->filelen / sizeof(*dv))) - ri.Error(ERR_DROP, "Bad size for %s (%i, expected %i)!\n", filename, size, (int)((sizeof(float)) * 3 * (verts->filelen / sizeof(*dv)))); + ri.Error(ERR_DROP, "Bad size for %s (%i, expected %i)!", filename, size, (int)((sizeof(float)) * 3 * (verts->filelen / sizeof(*dv)))); } } @@ -2685,7 +2685,7 @@ void R_LoadLightGrid( lump_t *l ) { if (size != sizeof(float) * 6 * numGridPoints) { - ri.Error(ERR_DROP, "Bad size for %s (%i, expected %i)!\n", filename, size, (int)(sizeof(float)) * 6 * numGridPoints); + ri.Error(ERR_DROP, "Bad size for %s (%i, expected %i)!", filename, size, (int)(sizeof(float)) * 6 * numGridPoints); } w->hdrLightGrid = ri.Hunk_Alloc(size, h_low); diff --git a/code/renderergl2/tr_fbo.c b/code/renderergl2/tr_fbo.c index 00b8b174..fee11d5c 100644 --- a/code/renderergl2/tr_fbo.c +++ b/code/renderergl2/tr_fbo.c @@ -107,7 +107,7 @@ FBO_t *FBO_Create(const char *name, int width, int height) if(strlen(name) >= MAX_QPATH) { - ri.Error(ERR_DROP, "FBO_Create: \"%s\" is too long\n", name); + ri.Error(ERR_DROP, "FBO_Create: \"%s\" is too long", name); } if(width <= 0 || width > glRefConfig.maxRenderbufferSize) diff --git a/code/renderergl2/tr_glsl.c b/code/renderergl2/tr_glsl.c index 93b78a1a..d8b07432 100644 --- a/code/renderergl2/tr_glsl.c +++ b/code/renderergl2/tr_glsl.c @@ -431,7 +431,8 @@ static void GLSL_LinkProgram(GLhandleARB program) if(!linked) { GLSL_PrintInfoLog(program, qfalse); - ri.Error(ERR_DROP, "\nshaders failed to link"); + ri.Printf(PRINT_ALL, "\n"); + ri.Error(ERR_DROP, "shaders failed to link"); } } @@ -445,7 +446,8 @@ static void GLSL_ValidateProgram(GLhandleARB program) if(!validated) { GLSL_PrintInfoLog(program, qfalse); - ri.Error(ERR_DROP, "\nshaders failed to validate"); + ri.Printf(PRINT_ALL, "\n"); + ri.Error(ERR_DROP, "shaders failed to validate"); } } diff --git a/code/renderergl2/tr_shade_calc.c b/code/renderergl2/tr_shade_calc.c index 9421f646..a5c4e9ab 100644 --- a/code/renderergl2/tr_shade_calc.c +++ b/code/renderergl2/tr_shade_calc.c @@ -456,10 +456,10 @@ static void Autosprite2Deform( void ) { vec3_t forward; if ( tess.numVertexes & 3 ) { - ri.Printf( PRINT_WARNING, "Autosprite2 shader %s had odd vertex count", tess.shader->name ); + ri.Printf( PRINT_WARNING, "Autosprite2 shader %s had odd vertex count\n", tess.shader->name ); } if ( tess.numIndexes != ( tess.numVertexes >> 2 ) * 6 ) { - ri.Printf( PRINT_WARNING, "Autosprite2 shader %s had odd index count", tess.shader->name ); + ri.Printf( PRINT_WARNING, "Autosprite2 shader %s had odd index count\n", tess.shader->name ); } if ( backEnd.currentEntity != &tr.worldEntity ) { From 830d93aa38dc50d40dccab35689ade70ebd664bc Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:24 +0200 Subject: [PATCH 09/62] add some noreturn annotations --- code/qcommon/common.c | 2 +- code/qcommon/vm_x86.c | 2 +- code/renderercommon/tr_image_jpg.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 7cfd77bd..8dfbde91 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -2248,7 +2248,7 @@ Just throw a fatal error to test error shutdown procedures ============= */ -static void Com_Error_f (void) { +static void __attribute__((__noreturn__)) Com_Error_f (void) { if ( Cmd_Argc() > 1 ) { Com_Error( ERR_DROP, "Testing drop error" ); } else { diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c index be6c66bf..c2838586 100644 --- a/code/qcommon/vm_x86.c +++ b/code/qcommon/vm_x86.c @@ -381,7 +381,7 @@ Error handler for jump/call to invalid instruction number ================= */ -static void ErrJump(void) +static void __attribute__((__noreturn__)) ErrJump(void) { Com_Error(ERR_DROP, "program tried to execute code outside VM"); exit(1); diff --git a/code/renderercommon/tr_image_jpg.c b/code/renderercommon/tr_image_jpg.c index de122337..bd81c048 100644 --- a/code/renderercommon/tr_image_jpg.c +++ b/code/renderercommon/tr_image_jpg.c @@ -42,7 +42,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # endif #endif -static void R_JPGErrorExit(j_common_ptr cinfo) +static void __attribute__((__noreturn__)) R_JPGErrorExit(j_common_ptr cinfo) { char buffer[JMSG_LENGTH_MAX]; From 8cc817b5a34a93719d2cf698243b086bf1dfd377 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:24 +0200 Subject: [PATCH 10/62] remove some redundant exit() calls --- code/qcommon/vm_powerpc.c | 6 +----- code/qcommon/vm_x86.c | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/code/qcommon/vm_powerpc.c b/code/qcommon/vm_powerpc.c index 60eb6bb6..a2eed8b3 100644 --- a/code/qcommon/vm_powerpc.c +++ b/code/qcommon/vm_powerpc.c @@ -45,11 +45,7 @@ static clock_t time_total_vm = 0; #endif /* exit() won't be called but use it because it is marked with noreturn */ -#define DIE( reason ) \ - do { \ - Com_Error(ERR_DROP, "vm_powerpc compiler error: " reason); \ - exit(1); \ - } while(0) +#define DIE( reason ) Com_Error( ERR_DROP, "vm_powerpc compiler error: " reason ) /* * vm_powerpc uses large quantities of memory during compilation, diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c index c2838586..b896883d 100644 --- a/code/qcommon/vm_x86.c +++ b/code/qcommon/vm_x86.c @@ -384,7 +384,6 @@ Error handler for jump/call to invalid instruction number static void __attribute__((__noreturn__)) ErrJump(void) { Com_Error(ERR_DROP, "program tried to execute code outside VM"); - exit(1); } /* From f0b43aba353672514b4a397415556716fab5ddd9 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:25 +0200 Subject: [PATCH 11/62] remove some unused stuff --- code/client/cl_cgame.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/code/client/cl_cgame.c b/code/client/cl_cgame.c index 4484efbe..d1e84806 100644 --- a/code/client/cl_cgame.c +++ b/code/client/cl_cgame.c @@ -186,15 +186,6 @@ void CL_AddCgameCommand( const char *cmdName ) { Cmd_AddCommand( cmdName, NULL ); } -/* -===================== -CL_CgameError -===================== -*/ -void CL_CgameError( const char *string ) { - Com_Error( ERR_DROP, "%s", string ); -} - /* ===================== From a8ce30163e6cbc17fc3e25b69fdd76a22ac45be8 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:25 +0200 Subject: [PATCH 12/62] make the fread() success-check code in Sys_RandomBytes() more secure --- code/sys/sys_unix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/sys/sys_unix.c b/code/sys/sys_unix.c index 7dfcd563..607d0f21 100644 --- a/code/sys/sys_unix.c +++ b/code/sys/sys_unix.c @@ -123,7 +123,7 @@ qboolean Sys_RandomBytes( byte *string, int len ) if( !fp ) return qfalse; - if( !fread( string, sizeof( byte ), len, fp ) ) + if( fread( string, sizeof( byte ), len, fp ) != len ) { fclose( fp ); return qfalse; From 1d0a044de31736e0be4b46566d51d271bb2f518e Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:25 +0200 Subject: [PATCH 13/62] when using the condump command, do not say "dumped console text" prematurely, before trying to open the file --- code/client/cl_console.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/client/cl_console.c b/code/client/cl_console.c index 4c117ecd..d1b9fec1 100644 --- a/code/client/cl_console.c +++ b/code/client/cl_console.c @@ -191,8 +191,6 @@ void Con_Dump_f (void) Q_strncpyz( filename, Cmd_Argv( 1 ), sizeof( filename ) ); COM_DefaultExtension( filename, sizeof( filename ), ".txt" ); - Com_Printf ("Dumped console text to %s.\n", filename ); - f = FS_FOpenFileWrite( filename ); if (!f) { @@ -200,6 +198,8 @@ void Con_Dump_f (void) return; } + Com_Printf ("Dumped console text to %s.\n", filename ); + // skip empty lines for (l = con.current - con.totallines + 1 ; l <= con.current ; l++) { From bbd17d75cef31513ad9913b7f68a964705d2d6e1 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:26 +0200 Subject: [PATCH 14/62] reduce the amount of compiler warnings for variable shadowing --- code/botlib/be_ai_chat.c | 1 - code/cgame/cg_particles.c | 1 - code/client/cl_parse.c | 1 - code/client/snd_mix.c | 1 - code/renderergl1/tr_model_iqm.c | 2 +- code/renderergl2/tr_model_iqm.c | 2 +- code/renderergl2/tr_world.c | 2 -- code/server/sv_world.c | 1 - 8 files changed, 2 insertions(+), 9 deletions(-) diff --git a/code/botlib/be_ai_chat.c b/code/botlib/be_ai_chat.c index 35366e0f..b1a9bc4f 100644 --- a/code/botlib/be_ai_chat.c +++ b/code/botlib/be_ai_chat.c @@ -1025,7 +1025,6 @@ bot_randomlist_t *BotLoadRandomStrings(char *filename) } //end if while(!PC_CheckTokenString(source, "}")) { - size_t len; if (!BotLoadChatMessage(source, chatmessagestring)) { FreeSource(source); diff --git a/code/cgame/cg_particles.c b/code/cgame/cg_particles.c index 1cd72dc0..2cccaad7 100644 --- a/code/cgame/cg_particles.c +++ b/code/cgame/cg_particles.c @@ -636,7 +636,6 @@ void CG_AddParticleToScene (cparticle_t *p, vec3_t org, float alpha) } else if (p->type == P_FLAT_SCALEUP) { - float width, height; float sinR, cosR; if (p->color == BLOODRED) diff --git a/code/client/cl_parse.c b/code/client/cl_parse.c index 3db34bcc..2d5a98fe 100644 --- a/code/client/cl_parse.c +++ b/code/client/cl_parse.c @@ -789,7 +789,6 @@ void CL_ParseVoip ( msg_t *msg ) { } for (i = 0; i < frames; i++) { - char encoded[256]; const int len = MSG_ReadByte(msg); if (len < 0) { Com_DPrintf("VoIP: Short packet!\n"); diff --git a/code/client/snd_mix.c b/code/client/snd_mix.c index 74a42ace..fca5e15f 100644 --- a/code/client/snd_mix.c +++ b/code/client/snd_mix.c @@ -164,7 +164,6 @@ void S_TransferPaintBuffer(int endtime) if ( s_testsound->integer ) { int i; - int count; // write a fixed sine wave count = (endtime - s_paintedtime); diff --git a/code/renderergl1/tr_model_iqm.c b/code/renderergl1/tr_model_iqm.c index 3d2ca3e2..8af77e3e 100644 --- a/code/renderergl1/tr_model_iqm.c +++ b/code/renderergl1/tr_model_iqm.c @@ -206,7 +206,7 @@ qboolean R_LoadIQM( model_t *mod, void *buffer, int filesize, const char *mod_na } vertexarray = (iqmVertexArray_t *)((byte *)header + header->ofs_vertexarrays); for( i = 0; i < header->num_vertexarrays; i++, vertexarray++ ) { - int j, n, *intPtr; + int n, *intPtr; if( vertexarray->size <= 0 || vertexarray->size > 4 ) { return qfalse; diff --git a/code/renderergl2/tr_model_iqm.c b/code/renderergl2/tr_model_iqm.c index 2e6b7655..15e0fe78 100644 --- a/code/renderergl2/tr_model_iqm.c +++ b/code/renderergl2/tr_model_iqm.c @@ -206,7 +206,7 @@ qboolean R_LoadIQM( model_t *mod, void *buffer, int filesize, const char *mod_na } vertexarray = (iqmVertexArray_t *)((byte *)header + header->ofs_vertexarrays); for( i = 0; i < header->num_vertexarrays; i++, vertexarray++ ) { - int j, n, *intPtr; + int n, *intPtr; if( vertexarray->size <= 0 || vertexarray->size > 4 ) { return qfalse; diff --git a/code/renderergl2/tr_world.c b/code/renderergl2/tr_world.c index 0224dbdb..ab447f8a 100644 --- a/code/renderergl2/tr_world.c +++ b/code/renderergl2/tr_world.c @@ -157,7 +157,6 @@ static int R_DlightSurface( msurface_t *surf, int dlightBits ) { if ( surf->cullinfo.type & CULLINFO_PLANE ) { - int i; for ( i = 0 ; i < tr.refdef.num_dlights ; i++ ) { if ( ! ( dlightBits & ( 1 << i ) ) ) { continue; @@ -238,7 +237,6 @@ static int R_PshadowSurface( msurface_t *surf, int pshadowBits ) { if ( surf->cullinfo.type & CULLINFO_PLANE ) { - int i; for ( i = 0 ; i < tr.refdef.num_pshadows ; i++ ) { if ( ! ( pshadowBits & ( 1 << i ) ) ) { continue; diff --git a/code/server/sv_world.c b/code/server/sv_world.c index 665043a0..94868142 100644 --- a/code/server/sv_world.c +++ b/code/server/sv_world.c @@ -257,7 +257,6 @@ void SV_LinkEntity( sharedEntity_t *gEnt ) { if ( gEnt->r.bmodel && (angles[0] || angles[1] || angles[2]) ) { // expand for rotation float max; - int i; max = RadiusFromBounds( gEnt->r.mins, gEnt->r.maxs ); for (i=0 ; i<3 ; i++) { From 9d626b6a1249c8aeb200d939b9d79a32b34cfe42 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:26 +0200 Subject: [PATCH 15/62] drop some useless return statements --- code/botlib/be_ai_char.c | 3 --- code/botlib/be_ai_chat.c | 1 - code/botlib/be_ai_goal.c | 1 - code/cgame/cg_particles.c | 1 - code/client/cl_keys.c | 1 - code/qcommon/common.c | 2 -- code/qcommon/files.c | 1 - code/qcommon/vm_powerpc.c | 2 -- code/renderergl1/tr_surface.c | 1 - code/renderergl2/tr_surface.c | 1 - code/tools/asm/q3asm.c | 2 -- code/tools/lcc/cpp/cpp.c | 1 - code/tools/lcc/cpp/include.c | 1 - code/tools/lcc/cpp/macro.c | 1 - code/zlib/inffast.c | 1 - 15 files changed, 20 deletions(-) diff --git a/code/botlib/be_ai_char.c b/code/botlib/be_ai_char.c index b94c4e9a..4adb2812 100644 --- a/code/botlib/be_ai_char.c +++ b/code/botlib/be_ai_char.c @@ -760,14 +760,11 @@ void Characteristic_String(int character, int index, char *buf, int size) { strncpy(buf, ch->c[index].value.string, size-1); buf[size-1] = '\0'; - return; } //end if else { botimport.Print(PRT_ERROR, "characteristic %d is not a string\n", index); - return; } //end else if - return; } //end of the function Characteristic_String //=========================================================================== // diff --git a/code/botlib/be_ai_chat.c b/code/botlib/be_ai_chat.c index b1a9bc4f..e90aaddc 100644 --- a/code/botlib/be_ai_chat.c +++ b/code/botlib/be_ai_chat.c @@ -1506,7 +1506,6 @@ void BotMatchVariable(bot_match_t *match, int variable, char *buf, int size) { strcpy(buf, ""); } //end else - return; } //end of the function BotMatchVariable //=========================================================================== // diff --git a/code/botlib/be_ai_goal.c b/code/botlib/be_ai_goal.c index be15d9af..3a5d01ab 100644 --- a/code/botlib/be_ai_goal.c +++ b/code/botlib/be_ai_goal.c @@ -691,7 +691,6 @@ void BotGoalName(int number, char *name, int size) } //end for } //end for strcpy(name, ""); - return; } //end of the function BotGoalName //=========================================================================== // diff --git a/code/cgame/cg_particles.c b/code/cgame/cg_particles.c index 2cccaad7..53507ad5 100644 --- a/code/cgame/cg_particles.c +++ b/code/cgame/cg_particles.c @@ -1320,7 +1320,6 @@ void CG_ParticleExplosion (char *animStr, vec3_t origin, vec3_t vel, int duratio // Rafael Shrapnel void CG_AddParticleShrapnel (localEntity_t *le) { - return; } // done. diff --git a/code/client/cl_keys.c b/code/client/cl_keys.c index be2a93a9..f0751efb 100644 --- a/code/client/cl_keys.c +++ b/code/client/cl_keys.c @@ -1286,7 +1286,6 @@ void CL_KeyDownEvent( int key, unsigned time ) // send the bound action CL_ParseBinding( key, qtrue, time ); - return; } /* diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 8dfbde91..9d048a3f 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -1411,8 +1411,6 @@ void Com_InitSmallZoneMemory( void ) { Com_Error( ERR_FATAL, "Small zone data failed to allocate %1.1f megs", (float)s_smallZoneTotal / (1024*1024) ); } Z_ClearZone( smallzone, s_smallZoneTotal ); - - return; } void Com_InitZoneMemory( void ) { diff --git a/code/qcommon/files.c b/code/qcommon/files.c index 5955fb15..724175c4 100644 --- a/code/qcommon/files.c +++ b/code/qcommon/files.c @@ -2810,7 +2810,6 @@ void FS_Which_f( void ) { } Com_Printf("File not found: \"%s\"\n", filename); - return; } diff --git a/code/qcommon/vm_powerpc.c b/code/qcommon/vm_powerpc.c index a2eed8b3..3d9ede65 100644 --- a/code/qcommon/vm_powerpc.c +++ b/code/qcommon/vm_powerpc.c @@ -1961,8 +1961,6 @@ PPC_ComputeCode( vm_t *vm ) di_now = di_first; } } - - return; } static void diff --git a/code/renderergl1/tr_surface.c b/code/renderergl1/tr_surface.c index 4108f443..39b5d9e5 100644 --- a/code/renderergl1/tr_surface.c +++ b/code/renderergl1/tr_surface.c @@ -1202,7 +1202,6 @@ static void RB_SurfaceEntity( surfaceType_t *surfType ) { RB_SurfaceAxis(); break; } - return; } static void RB_SurfaceBad( surfaceType_t *surfType ) { diff --git a/code/renderergl2/tr_surface.c b/code/renderergl2/tr_surface.c index c991d16c..0823e69e 100644 --- a/code/renderergl2/tr_surface.c +++ b/code/renderergl2/tr_surface.c @@ -1561,7 +1561,6 @@ static void RB_SurfaceEntity( surfaceType_t *surfType ) { RB_SurfaceAxis(); break; } - return; } static void RB_SurfaceBad( surfaceType_t *surfType ) { diff --git a/code/tools/asm/q3asm.c b/code/tools/asm/q3asm.c index 331ba098..191a9db6 100644 --- a/code/tools/asm/q3asm.c +++ b/code/tools/asm/q3asm.c @@ -250,7 +250,6 @@ static void hashtable_init (hashtable_t *H, int buckets) { H->buckets = buckets; H->table = calloc(H->buckets, sizeof(*(H->table))); - return; } static hashtable_t *hashtable_new (int buckets) @@ -285,7 +284,6 @@ static void hashtable_add (hashtable_t *H, int hashvalue, void *datum) } hc->data = datum; hc->next = 0; - return; } static hashchain_t *hashtable_get (hashtable_t *H, int hashvalue) diff --git a/code/tools/lcc/cpp/cpp.c b/code/tools/lcc/cpp/cpp.c index 1fcffbc5..b999d212 100644 --- a/code/tools/lcc/cpp/cpp.c +++ b/code/tools/lcc/cpp/cpp.c @@ -250,7 +250,6 @@ control(Tokenrow *trp) break; } setempty(trp); - return; } void * diff --git a/code/tools/lcc/cpp/include.c b/code/tools/lcc/cpp/include.c index 1bb88475..54c0b77a 100644 --- a/code/tools/lcc/cpp/include.c +++ b/code/tools/lcc/cpp/include.c @@ -108,7 +108,6 @@ doinclude(Tokenrow *trp) return; syntax: error(ERROR, "Syntax error in #include"); - return; } /* diff --git a/code/tools/lcc/cpp/macro.c b/code/tools/lcc/cpp/macro.c index 49d11297..71102570 100644 --- a/code/tools/lcc/cpp/macro.c +++ b/code/tools/lcc/cpp/macro.c @@ -218,7 +218,6 @@ expand(Tokenrow *trp, Nlist *np) insertrow(trp, ntokc, &ntr); trp->tp -= rowlen(&ntr); dofree(ntr.bp); - return; } /* diff --git a/code/zlib/inffast.c b/code/zlib/inffast.c index bbee92ed..11bcbb0b 100644 --- a/code/zlib/inffast.c +++ b/code/zlib/inffast.c @@ -298,7 +298,6 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ 257 + (end - out) : 257 - (out - end)); state->hold = hold; state->bits = bits; - return; } /* From 9e9d6fa52c058a164d5d92fd08d79618f64397a2 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:27 +0200 Subject: [PATCH 16/62] clean up return statements a bit more --- code/botlib/be_ai_move.c | 2 -- code/qcommon/common.c | 3 ++- code/renderergl1/tr_shader.c | 8 ++------ 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/code/botlib/be_ai_move.c b/code/botlib/be_ai_move.c index a9e64d5d..0c4de348 100644 --- a/code/botlib/be_ai_move.c +++ b/code/botlib/be_ai_move.c @@ -3455,8 +3455,6 @@ void BotMoveToGoal(bot_moveresult_t *result, int movestate, bot_goal_t *goal, in if (result->blocked) ms->reachability_time -= 10 * ms->thinktime; //copy the last origin VectorCopy(ms->origin, ms->lastorigin); - //return the movement result - return; } //end of the function BotMoveToGoal //=========================================================================== // diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 9d048a3f..3c8c25d0 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -2539,8 +2539,9 @@ static void Com_WriteCDKey( const char *filename, const char *ikey ) { out: #ifndef _WIN32 umask(savedumask); +#else + ; #endif - return; } #endif diff --git a/code/renderergl1/tr_shader.c b/code/renderergl1/tr_shader.c index a3963c60..aa88e50b 100644 --- a/code/renderergl1/tr_shader.c +++ b/code/renderergl1/tr_shader.c @@ -1668,7 +1668,7 @@ static void ComputeStageIteratorFunc( void ) if ( shader.isSky ) { shader.optimalStageIteratorFunc = RB_StageIteratorSky; - goto done; + return; } if ( r_ignoreFastPath->integer ) @@ -1694,7 +1694,7 @@ static void ComputeStageIteratorFunc( void ) if ( !shader.numDeforms ) { shader.optimalStageIteratorFunc = RB_StageIteratorVertexLitTexture; - goto done; + return; } } } @@ -1720,16 +1720,12 @@ static void ComputeStageIteratorFunc( void ) if ( shader.multitextureEnv ) { shader.optimalStageIteratorFunc = RB_StageIteratorLightmappedMultitexture; - goto done; } } } } } } - -done: - return; } typedef struct { From 120e296a74b0317f29d7f516d904bdc70f71b006 Mon Sep 17 00:00:00 2001 From: /dev/humancontroller Date: Sun, 14 Apr 2013 18:33:25 +0200 Subject: [PATCH 17/62] fix some OOB enumerator usages (should be no-op with usual compiler workings) --- code/q3_ui/ui_players.c | 14 +++++++------- code/qcommon/files.c | 2 +- code/qcommon/qcommon.h | 2 +- code/ui/ui_main.c | 4 ++-- code/ui/ui_players.c | 14 +++++++------- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/code/q3_ui/ui_players.c b/code/q3_ui/ui_players.c index d132f5c9..fbb87b6d 100644 --- a/code/q3_ui/ui_players.c +++ b/code/q3_ui/ui_players.c @@ -708,10 +708,10 @@ void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int ti dp_realtime = time; - if ( pi->pendingWeapon != -1 && dp_realtime > pi->weaponTimer ) { + if ( pi->pendingWeapon != WP_NUM_WEAPONS && dp_realtime > pi->weaponTimer ) { pi->weapon = pi->pendingWeapon; pi->lastWeapon = pi->pendingWeapon; - pi->pendingWeapon = -1; + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; if( pi->currentWeapon != pi->weapon ) { trap_S_StartLocalSound( weaponChangeSound, CHAN_LOCAL ); @@ -1136,7 +1136,7 @@ void UI_PlayerInfo_SetModel( playerInfo_t *pi, const char *model ) { pi->weapon = WP_MACHINEGUN; pi->currentWeapon = pi->weapon; pi->lastWeapon = pi->weapon; - pi->pendingWeapon = -1; + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; pi->chat = qfalse; pi->newModel = qtrue; @@ -1202,11 +1202,11 @@ void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_ pi->torso.yawAngle = viewAngles[YAW]; pi->torso.yawing = qfalse; - if ( weaponNumber != -1 ) { + if ( weaponNumber != WP_NUM_WEAPONS ) { pi->weapon = weaponNumber; pi->currentWeapon = weaponNumber; pi->lastWeapon = weaponNumber; - pi->pendingWeapon = -1; + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; UI_PlayerInfo_SetWeapon( pi, pi->weapon ); } @@ -1215,8 +1215,8 @@ void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_ } // weapon - if ( weaponNumber == -1 ) { - pi->pendingWeapon = -1; + if ( weaponNumber == WP_NUM_WEAPONS ) { + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; } else if ( weaponNumber != WP_NONE ) { diff --git a/code/qcommon/files.c b/code/qcommon/files.c index 724175c4..20808f0b 100644 --- a/code/qcommon/files.c +++ b/code/qcommon/files.c @@ -1398,7 +1398,7 @@ Return the searchpath in "startSearch". ================= */ -vmInterpret_t FS_FindVM(void **startSearch, char *found, int foundlen, const char *name, int enableDll) +int FS_FindVM(void **startSearch, char *found, int foundlen, const char *name, int enableDll) { searchpath_t *search, *lastSearch; directory_t *dir; diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index 349953db..65271464 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -624,7 +624,7 @@ qboolean FS_FileExists( const char *file ); qboolean FS_CreatePath (char *OSPath); -vmInterpret_t FS_FindVM(void **startSearch, char *found, int foundlen, const char *name, int enableDll); +int FS_FindVM(void **startSearch, char *found, int foundlen, const char *name, int enableDll); char *FS_BuildOSPath( const char *base, const char *game, const char *qpath ); qboolean FS_CompareZipChecksum(const char *zipfile); diff --git a/code/ui/ui_main.c b/code/ui/ui_main.c index 602957d9..21423cd2 100644 --- a/code/ui/ui_main.c +++ b/code/ui/ui_main.c @@ -118,7 +118,7 @@ static void UI_StartServerRefresh(qboolean full); static void UI_StopServerRefresh( void ); static void UI_DoServerRefresh( void ); static void UI_FeederSelection(float feederID, int index); -static void UI_BuildServerDisplayList(qboolean force); +static void UI_BuildServerDisplayList(int force); static void UI_BuildServerStatus(qboolean force); static void UI_BuildFindPlayerList(qboolean force); static int QDECL UI_ServersQsortCompare( const void *arg1, const void *arg2 ); @@ -3762,7 +3762,7 @@ static void UI_BinaryServerInsertion(int num) { UI_BuildServerDisplayList ================== */ -static void UI_BuildServerDisplayList(qboolean force) { +static void UI_BuildServerDisplayList(int force) { int i, count, clients, maxClients, ping, game, len, visible; char info[MAX_STRING_CHARS]; // qboolean startRefresh = qtrue; TTimo: unused diff --git a/code/ui/ui_players.c b/code/ui/ui_players.c index 409ff689..2b74d0e1 100644 --- a/code/ui/ui_players.c +++ b/code/ui/ui_players.c @@ -714,10 +714,10 @@ void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int ti dp_realtime = time; - if ( pi->pendingWeapon != -1 && dp_realtime > pi->weaponTimer ) { + if ( pi->pendingWeapon != WP_NUM_WEAPONS && dp_realtime > pi->weaponTimer ) { pi->weapon = pi->pendingWeapon; pi->lastWeapon = pi->pendingWeapon; - pi->pendingWeapon = -1; + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; if( pi->currentWeapon != pi->weapon ) { trap_S_StartLocalSound( weaponChangeSound, CHAN_LOCAL ); @@ -1254,7 +1254,7 @@ void UI_PlayerInfo_SetModel( playerInfo_t *pi, const char *model, const char *he pi->weapon = WP_MACHINEGUN; pi->currentWeapon = pi->weapon; pi->lastWeapon = pi->weapon; - pi->pendingWeapon = -1; + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; pi->chat = qfalse; pi->newModel = qtrue; @@ -1293,11 +1293,11 @@ void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_ pi->torso.yawAngle = viewAngles[YAW]; pi->torso.yawing = qfalse; - if ( weaponNumber != -1 ) { + if ( weaponNumber != WP_NUM_WEAPONS ) { pi->weapon = weaponNumber; pi->currentWeapon = weaponNumber; pi->lastWeapon = weaponNumber; - pi->pendingWeapon = -1; + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; UI_PlayerInfo_SetWeapon( pi, pi->weapon ); } @@ -1306,8 +1306,8 @@ void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_ } // weapon - if ( weaponNumber == -1 ) { - pi->pendingWeapon = -1; + if ( weaponNumber == WP_NUM_WEAPONS ) { + pi->pendingWeapon = WP_NUM_WEAPONS; pi->weaponTimer = 0; } else if ( weaponNumber != WP_NONE ) { From eb73dcb7f46b25eeb73567f7d6067900e703f48a Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 30 May 2013 22:58:58 -0500 Subject: [PATCH 18/62] Catch more bad shader syntax cases Use to only ignore file in cases where both { and \0 were missing after shader name. Now ignore file when either are missing, such as "}\0". --- code/renderergl1/tr_shader.c | 2 +- code/renderergl2/tr_shader.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/renderergl1/tr_shader.c b/code/renderergl1/tr_shader.c index aa88e50b..611bebb0 100644 --- a/code/renderergl1/tr_shader.c +++ b/code/renderergl1/tr_shader.c @@ -2955,7 +2955,7 @@ static void ScanAndLoadShaderFiles( void ) oldp = p; token = COM_ParseExt(&p, qtrue); - if(token[0] != '{' && token[1] != '\0') + if(token[0] != '{' || token[1] != '\0') { ri.Printf(PRINT_WARNING, "WARNING: Bad shader file %s has incorrect syntax.\n", filename); ri.FS_FreeFile(buffers[i]); diff --git a/code/renderergl2/tr_shader.c b/code/renderergl2/tr_shader.c index 2cb86684..416b7f17 100644 --- a/code/renderergl2/tr_shader.c +++ b/code/renderergl2/tr_shader.c @@ -3595,7 +3595,7 @@ static void ScanAndLoadShaderFiles( void ) oldp = p; token = COM_ParseExt(&p, qtrue); - if(token[0] != '{' && token[1] != '\0') + if(token[0] != '{' || token[1] != '\0') { ri.Printf(PRINT_WARNING, "WARNING: Bad shader file %s has incorrect syntax.\n", filename); ri.FS_FreeFile(buffers[i]); From 6c4d010f29cefcad1e7794674ad4a0e50d962122 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 31 May 2013 01:07:49 -0500 Subject: [PATCH 19/62] Fix null model axis disappearing if sky is in view --- code/renderergl1/tr_surface.c | 1 + code/renderergl2/tr_surface.c | 1 + 2 files changed, 2 insertions(+) diff --git a/code/renderergl1/tr_surface.c b/code/renderergl1/tr_surface.c index 39b5d9e5..3b4a943b 100644 --- a/code/renderergl1/tr_surface.c +++ b/code/renderergl1/tr_surface.c @@ -1157,6 +1157,7 @@ Draws x/y/z lines from the origin for orientation debugging */ static void RB_SurfaceAxis( void ) { GL_Bind( tr.whiteImage ); + GL_State( GLS_DEFAULT ); qglLineWidth( 3 ); qglBegin( GL_LINES ); qglColor3f( 1,0,0 ); diff --git a/code/renderergl2/tr_surface.c b/code/renderergl2/tr_surface.c index 0823e69e..427d153d 100644 --- a/code/renderergl2/tr_surface.c +++ b/code/renderergl2/tr_surface.c @@ -1515,6 +1515,7 @@ static void RB_SurfaceAxis( void ) { // FIXME: implement this #if 0 GL_Bind( tr.whiteImage ); + GL_State( GLS_DEFAULT ); qglLineWidth( 3 ); qglBegin( GL_LINES ); qglColor3f( 1,0,0 ); From c0a21d08986a589f4295944ff7e5593aefc5af37 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sun, 2 Jun 2013 21:21:45 -0500 Subject: [PATCH 20/62] Fix setting COM_Parse current line number Fix initial off-by-one error. Count lines in /* */ comments and multi-line strings. Fix counting some lines twice if text has Unix newlines. --- code/qcommon/q_shared.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/qcommon/q_shared.c b/code/qcommon/q_shared.c index 31d87f65..af80df8f 100644 --- a/code/qcommon/q_shared.c +++ b/code/qcommon/q_shared.c @@ -289,7 +289,7 @@ static int com_lines; void COM_BeginParseSession( const char *name ) { - com_lines = 0; + com_lines = 1; Com_sprintf(com_parsename, sizeof(com_parsename), "%s", name); } @@ -473,6 +473,10 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks ) data += 2; while ( *data && ( *data != '*' || data[1] != '/' ) ) { + if ( *data == '\n' ) + { + com_lines++; + } data++; } if ( *data ) @@ -499,6 +503,10 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks ) *data_p = ( char * ) data; return com_token; } + if ( c == '\n' ) + { + com_lines++; + } if (len < MAX_TOKEN_CHARS - 1) { com_token[len] = c; @@ -517,8 +525,6 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks ) } data++; c = *data; - if ( c == '\n' ) - com_lines++; } while (c>32); com_token[len] = 0; From 3ec2b02dce9496e06f2b4dcda8840fd216114711 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sun, 2 Jun 2013 21:55:19 -0500 Subject: [PATCH 21/62] Check for shaders without closing brace Shaders without closing brace can eat shaders in other files. Pass depth to SkipBracedSection instead of reparsing text as it messed up parse line numbers. --- code/qcommon/q_shared.c | 8 ++++---- code/qcommon/q_shared.h | 2 +- code/renderergl1/tr_shader.c | 26 ++++++++++++++++++-------- code/renderergl2/tr_shader.c | 26 ++++++++++++++++++-------- 4 files changed, 41 insertions(+), 21 deletions(-) diff --git a/code/qcommon/q_shared.c b/code/qcommon/q_shared.c index af80df8f..0d1e5eb4 100644 --- a/code/qcommon/q_shared.c +++ b/code/qcommon/q_shared.c @@ -552,16 +552,14 @@ void COM_MatchToken( char **buf_p, char *match ) { ================= SkipBracedSection -The next token should be an open brace. +The next token should be an open brace or set depth to 1 if already parsed it. Skips until a matching close brace is found. Internal brace depths are properly skipped. ================= */ -void SkipBracedSection (char **program) { +qboolean SkipBracedSection (char **program, int depth) { char *token; - int depth; - depth = 0; do { token = COM_ParseExt( program, qtrue ); if( token[1] == 0 ) { @@ -573,6 +571,8 @@ void SkipBracedSection (char **program) { } } } while( depth && *program ); + + return ( depth == 0 ); } /* diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index 786fca25..b7f03fda 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -752,7 +752,7 @@ typedef struct pc_token_s void COM_MatchToken( char**buf_p, char *match ); -void SkipBracedSection (char **program); +qboolean SkipBracedSection (char **program, int depth); void SkipRestOfLine ( char **data ); void Parse1DMatrix (char **buf_p, int x, float *m); diff --git a/code/renderergl1/tr_shader.c b/code/renderergl1/tr_shader.c index 611bebb0..2d30f603 100644 --- a/code/renderergl1/tr_shader.c +++ b/code/renderergl1/tr_shader.c @@ -2382,7 +2382,7 @@ static char *FindShaderInShaderText( const char *shadername ) { } else { // skip the definition - SkipBracedSection( &p ); + SkipBracedSection( &p, 0 ); } } @@ -2916,6 +2916,8 @@ static void ScanAndLoadShaderFiles( void ) int i; char *oldp, *token, *hashMem, *textEnd; int shaderTextHashTableSizes[MAX_SHADERTEXT_HASH], hash, size; + char shaderName[MAX_QPATH]; + int shaderLine; long sum = 0, summand; // scan for shader files @@ -2945,15 +2947,17 @@ static void ScanAndLoadShaderFiles( void ) // Do a simple check on the shader structure in that file to make sure one bad shader file cannot fuck up all other shaders. p = buffers[i]; + COM_BeginParseSession(filename); while(1) { token = COM_ParseExt(&p, qtrue); if(!*token) break; - - oldp = p; - + + Q_strncpyz(shaderName, token, sizeof(shaderName)); + shaderLine = COM_GetCurrentParseLine(); + token = COM_ParseExt(&p, qtrue); if(token[0] != '{' || token[1] != '\0') { @@ -2963,8 +2967,14 @@ static void ScanAndLoadShaderFiles( void ) break; } - SkipBracedSection(&oldp); - p = oldp; + if(!SkipBracedSection(&p, 1)) + { + ri.Printf(PRINT_WARNING, "WARNING: Ignoring shader file %s. Shader \"%s\" on line %d missing closing brace.\n", + filename, shaderName, shaderLine); + ri.FS_FreeFile(buffers[i]); + buffers[i] = NULL; + break; + } } @@ -3008,7 +3018,7 @@ static void ScanAndLoadShaderFiles( void ) hash = generateHashValue(token, MAX_SHADERTEXT_HASH); shaderTextHashTableSizes[hash]++; size++; - SkipBracedSection(&p); + SkipBracedSection(&p, 0); } size += MAX_SHADERTEXT_HASH; @@ -3034,7 +3044,7 @@ static void ScanAndLoadShaderFiles( void ) hash = generateHashValue(token, MAX_SHADERTEXT_HASH); shaderTextHashTable[hash][shaderTextHashTableSizes[hash]++] = oldp; - SkipBracedSection(&p); + SkipBracedSection(&p, 0); } return; diff --git a/code/renderergl2/tr_shader.c b/code/renderergl2/tr_shader.c index 416b7f17..6dbe089a 100644 --- a/code/renderergl2/tr_shader.c +++ b/code/renderergl2/tr_shader.c @@ -3018,7 +3018,7 @@ static char *FindShaderInShaderText( const char *shadername ) { } else { // skip the definition - SkipBracedSection( &p ); + SkipBracedSection( &p, 0 ); } } @@ -3542,6 +3542,8 @@ static void ScanAndLoadShaderFiles( void ) int i; char *oldp, *token, *hashMem, *textEnd; int shaderTextHashTableSizes[MAX_SHADERTEXT_HASH], hash, size; + char shaderName[MAX_QPATH]; + int shaderLine; long sum = 0, summand; // scan for shader files @@ -3585,15 +3587,17 @@ static void ScanAndLoadShaderFiles( void ) // Do a simple check on the shader structure in that file to make sure one bad shader file cannot fuck up all other shaders. p = buffers[i]; + COM_BeginParseSession(filename); while(1) { token = COM_ParseExt(&p, qtrue); if(!*token) break; - - oldp = p; - + + Q_strncpyz(shaderName, token, sizeof(shaderName)); + shaderLine = COM_GetCurrentParseLine(); + token = COM_ParseExt(&p, qtrue); if(token[0] != '{' || token[1] != '\0') { @@ -3603,8 +3607,14 @@ static void ScanAndLoadShaderFiles( void ) break; } - SkipBracedSection(&oldp); - p = oldp; + if(!SkipBracedSection(&p, 1)) + { + ri.Printf(PRINT_WARNING, "WARNING: Ignoring shader file %s. Shader \"%s\" on line %d missing closing brace.\n", + filename, shaderName, shaderLine); + ri.FS_FreeFile(buffers[i]); + buffers[i] = NULL; + break; + } } @@ -3648,7 +3658,7 @@ static void ScanAndLoadShaderFiles( void ) hash = generateHashValue(token, MAX_SHADERTEXT_HASH); shaderTextHashTableSizes[hash]++; size++; - SkipBracedSection(&p); + SkipBracedSection(&p, 0); } size += MAX_SHADERTEXT_HASH; @@ -3674,7 +3684,7 @@ static void ScanAndLoadShaderFiles( void ) hash = generateHashValue(token, MAX_SHADERTEXT_HASH); shaderTextHashTable[hash][shaderTextHashTableSizes[hash]++] = oldp; - SkipBracedSection(&p); + SkipBracedSection(&p, 0); } return; From d4f785c465b778f72daea530aa8f65b3a3d9b0bf Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sun, 2 Jun 2013 21:59:01 -0500 Subject: [PATCH 22/62] Improve warning for shader missing opening brace --- code/renderergl1/tr_shader.c | 8 +++++++- code/renderergl2/tr_shader.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/code/renderergl1/tr_shader.c b/code/renderergl1/tr_shader.c index 2d30f603..877c6191 100644 --- a/code/renderergl1/tr_shader.c +++ b/code/renderergl1/tr_shader.c @@ -2961,7 +2961,13 @@ static void ScanAndLoadShaderFiles( void ) token = COM_ParseExt(&p, qtrue); if(token[0] != '{' || token[1] != '\0') { - ri.Printf(PRINT_WARNING, "WARNING: Bad shader file %s has incorrect syntax.\n", filename); + ri.Printf(PRINT_WARNING, "WARNING: Ignoring shader file %s. Shader \"%s\" on line %d missing opening brace", + filename, shaderName, shaderLine); + if (token[0]) + { + ri.Printf(PRINT_WARNING, " (found \"%s\" on line %d)", token, COM_GetCurrentParseLine()); + } + ri.Printf(PRINT_WARNING, ".\n"); ri.FS_FreeFile(buffers[i]); buffers[i] = NULL; break; diff --git a/code/renderergl2/tr_shader.c b/code/renderergl2/tr_shader.c index 6dbe089a..da2a7c60 100644 --- a/code/renderergl2/tr_shader.c +++ b/code/renderergl2/tr_shader.c @@ -3601,7 +3601,13 @@ static void ScanAndLoadShaderFiles( void ) token = COM_ParseExt(&p, qtrue); if(token[0] != '{' || token[1] != '\0') { - ri.Printf(PRINT_WARNING, "WARNING: Bad shader file %s has incorrect syntax.\n", filename); + ri.Printf(PRINT_WARNING, "WARNING: Ignoring shader file %s. Shader \"%s\" on line %d missing opening brace", + filename, shaderName, shaderLine); + if (token[0]) + { + ri.Printf(PRINT_WARNING, " (found \"%s\" on line %d)", token, COM_GetCurrentParseLine()); + } + ri.Printf(PRINT_WARNING, ".\n"); ri.FS_FreeFile(buffers[i]); buffers[i] = NULL; break; From 1315d624919a0ca2e689ce8f6c104d3d30ee48a5 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Mon, 3 Jun 2013 22:35:57 -0500 Subject: [PATCH 23/62] Make COM_ParseWarning report starting line number of multi-line tokens COM_ParseWarning use to show last line number of multi-line string tokens, now shows starting line number. --- code/qcommon/q_shared.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/code/qcommon/q_shared.c b/code/qcommon/q_shared.c index 0d1e5eb4..357451c5 100644 --- a/code/qcommon/q_shared.c +++ b/code/qcommon/q_shared.c @@ -286,15 +286,22 @@ PARSING static char com_token[MAX_TOKEN_CHARS]; static char com_parsename[MAX_TOKEN_CHARS]; static int com_lines; +static int com_tokenline; void COM_BeginParseSession( const char *name ) { com_lines = 1; + com_tokenline = 0; Com_sprintf(com_parsename, sizeof(com_parsename), "%s", name); } int COM_GetCurrentParseLine( void ) { + if ( com_tokenline ) + { + return com_tokenline; + } + return com_lines; } @@ -312,7 +319,7 @@ void COM_ParseError( char *format, ... ) Q_vsnprintf (string, sizeof(string), format, argptr); va_end (argptr); - Com_Printf("ERROR: %s, line %d: %s\n", com_parsename, com_lines, string); + Com_Printf("ERROR: %s, line %d: %s\n", com_parsename, COM_GetCurrentParseLine(), string); } void COM_ParseWarning( char *format, ... ) @@ -324,7 +331,7 @@ void COM_ParseWarning( char *format, ... ) Q_vsnprintf (string, sizeof(string), format, argptr); va_end (argptr); - Com_Printf("WARNING: %s, line %d: %s\n", com_parsename, com_lines, string); + Com_Printf("WARNING: %s, line %d: %s\n", com_parsename, COM_GetCurrentParseLine(), string); } /* @@ -434,6 +441,7 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks ) data = *data_p; len = 0; com_token[0] = 0; + com_tokenline = 0; // make sure incoming data is valid if ( !data ) @@ -490,6 +498,9 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks ) } } + // token starts on this line + com_tokenline = com_lines; + // handle quoted strings if (c == '\"') { From 21c93736b8aaf351ae5880b9b5cb1fb9492d5c41 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 4 Jun 2013 22:28:46 -0500 Subject: [PATCH 24/62] Allow recording VoIP in SP for demo commentaries --- code/client/cl_parse.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/client/cl_parse.c b/code/client/cl_parse.c index 2d5a98fe..c422dec7 100644 --- a/code/client/cl_parse.c +++ b/code/client/cl_parse.c @@ -365,10 +365,7 @@ void CL_SystemInfoChanged( void ) { #endif { s = Info_ValueForKey( systemInfo, "sv_voip" ); - if ( Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER || Cvar_VariableValue("ui_singlePlayerActive")) - clc.voipEnabled = qfalse; - else - clc.voipEnabled = atoi(s); + clc.voipEnabled = atoi(s); } #endif From e89a1b9f8e08cda3fd3ad96bfefb7c4e2db4f83b Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 4 Jun 2013 23:02:23 -0500 Subject: [PATCH 25/62] Allow adjusting VoIP gain and mute during demo playback --- code/client/cl_parse.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/client/cl_parse.c b/code/client/cl_parse.c index c422dec7..a424aa59 100644 --- a/code/client/cl_parse.c +++ b/code/client/cl_parse.c @@ -352,11 +352,6 @@ void CL_SystemInfoChanged( void ) { // in some cases, outdated cp commands might get sent with this news serverId cl.serverId = atoi( Info_ValueForKey( systemInfo, "sv_serverid" ) ); - // don't set any vars when playing a demo - if ( clc.demoplaying ) { - return; - } - #ifdef USE_VOIP #ifdef LEGACY_PROTOCOL if(clc.compat) @@ -369,6 +364,11 @@ void CL_SystemInfoChanged( void ) { } #endif + // don't set any vars when playing a demo + if ( clc.demoplaying ) { + return; + } + s = Info_ValueForKey( systemInfo, "sv_cheats" ); cl_connectedToCheatServer = atoi( s ); if ( !cl_connectedToCheatServer ) { From 2937ac76616459fd7fb85dccb36b8ca2cddfa5f4 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 4 Jun 2013 23:04:49 -0500 Subject: [PATCH 26/62] Allow adjusting VoIP gain and mute during SP demo playback --- code/client/cl_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/client/cl_main.c b/code/client/cl_main.c index 4700c9be..c345c973 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -256,7 +256,7 @@ void CL_Voip_f( void ) reason = "Speex not initialized"; else if (!clc.voipEnabled) reason = "Server doesn't support VoIP"; - else if ( Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER || Cvar_VariableValue("ui_singlePlayerActive")) + else if (!clc.demoplaying && (Cvar_VariableValue( "g_gametype" ) == GT_SINGLE_PLAYER || Cvar_VariableValue("ui_singlePlayerActive"))) reason = "running in single-player mode"; if (reason != NULL) { From 7b1541504216ce09ef2c7987eb5a7117a2125a5a Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Mon, 10 Jun 2013 20:30:48 +0100 Subject: [PATCH 27/62] Rate limit getchallenge --- code/server/server.h | 22 ++++++++++++++++++++++ code/server/sv_client.c | 14 ++++++++++++++ code/server/sv_main.c | 23 +++-------------------- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/code/server/server.h b/code/server/server.h index be7e5baa..c3f3ae01 100644 --- a/code/server/server.h +++ b/code/server/server.h @@ -308,6 +308,28 @@ extern cvar_t *sv_voip; // // sv_main.c // +typedef struct leakyBucket_s leakyBucket_t; +struct leakyBucket_s { + netadrtype_t type; + + union { + byte _4[4]; + byte _6[16]; + } ipv; + + int lastTime; + signed char burst; + + long hash; + + leakyBucket_t *prev, *next; +}; + +extern leakyBucket_t outboundLeakyBucket; + +qboolean SVC_RateLimit( leakyBucket_t *bucket, int burst, int period ); +qboolean SVC_RateLimitAddress( netadr_t from, int burst, int period ); + void SV_FinalMessage (char *message); void QDECL SV_SendServerCommand( client_t *cl, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); diff --git a/code/server/sv_client.c b/code/server/sv_client.c index 4012ee6e..2dcff87e 100644 --- a/code/server/sv_client.c +++ b/code/server/sv_client.c @@ -67,6 +67,20 @@ void SV_GetChallenge(netadr_t from) return; } + // Prevent using getchallenge as an amplifier + if ( SVC_RateLimitAddress( from, 10, 1000 ) ) { + Com_DPrintf( "SV_GetChallenge: rate limit from %s exceeded, dropping request\n", + NET_AdrToString( from ) ); + return; + } + + // Allow getchallenge to be DoSed relatively easily, but prevent + // excess outbound bandwidth usage when being flooded inbound + if ( SVC_RateLimit( &outboundLeakyBucket, 10, 100 ) ) { + Com_DPrintf( "SV_GetChallenge: rate limit exceeded, dropping request\n" ); + return; + } + gameName = Cmd_Argv(2); #ifdef LEGACY_PROTOCOL diff --git a/code/server/sv_main.c b/code/server/sv_main.c index 8d5f1a2a..e48e0b97 100644 --- a/code/server/sv_main.c +++ b/code/server/sv_main.c @@ -354,30 +354,13 @@ CONNECTIONLESS COMMANDS ============================================================================== */ -typedef struct leakyBucket_s leakyBucket_t; -struct leakyBucket_s { - netadrtype_t type; - - union { - byte _4[4]; - byte _6[16]; - } ipv; - - int lastTime; - signed char burst; - - long hash; - - leakyBucket_t *prev, *next; -}; - // This is deliberately quite large to make it more of an effort to DoS #define MAX_BUCKETS 16384 #define MAX_HASHES 1024 static leakyBucket_t buckets[ MAX_BUCKETS ]; static leakyBucket_t *bucketHashes[ MAX_HASHES ]; -static leakyBucket_t outboundLeakyBucket; +leakyBucket_t outboundLeakyBucket; /* ================ @@ -494,7 +477,7 @@ static leakyBucket_t *SVC_BucketForAddress( netadr_t address, int burst, int per SVC_RateLimit ================ */ -static qboolean SVC_RateLimit( leakyBucket_t *bucket, int burst, int period ) { +qboolean SVC_RateLimit( leakyBucket_t *bucket, int burst, int period ) { if ( bucket != NULL ) { int now = Sys_Milliseconds(); int interval = now - bucket->lastTime; @@ -526,7 +509,7 @@ SVC_RateLimitAddress Rate limit for a particular address ================ */ -static qboolean SVC_RateLimitAddress( netadr_t from, int burst, int period ) { +qboolean SVC_RateLimitAddress( netadr_t from, int burst, int period ) { leakyBucket_t *bucket = SVC_BucketForAddress( from, burst, period ); return SVC_RateLimit( bucket, burst, period ); From 00c1831edb4f5e0c6662d996171defbdc031dc88 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 11 Jun 2013 15:47:00 -0500 Subject: [PATCH 28/62] Don't try to fog flares with fogNum 0 fogNum 0 means no fog. Shaders don't try to apply fog color if fogNum is 0. This was done to make things more consistent and fix a crash in iortcw MP using a user made map on GNU/Linux x86_64. --- code/renderergl1/tr_flares.c | 4 ++-- code/renderergl2/tr_flares.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/renderergl1/tr_flares.c b/code/renderergl1/tr_flares.c index ff768bab..1d0a9175 100644 --- a/code/renderergl1/tr_flares.c +++ b/code/renderergl1/tr_flares.c @@ -352,8 +352,8 @@ void RB_RenderFlare( flare_t *f ) { VectorScale(f->color, f->drawIntensity * intensity, color); -// Calculations for fogging - if(tr.world && f->fogNum < tr.world->numfogs) + // Calculations for fogging + if(tr.world && f->fogNum > 0 && f->fogNum < tr.world->numfogs) { tess.numVertexes = 1; VectorCopy(f->origin, tess.xyz[0]); diff --git a/code/renderergl2/tr_flares.c b/code/renderergl2/tr_flares.c index 8e6c321f..5bcefa2a 100644 --- a/code/renderergl2/tr_flares.c +++ b/code/renderergl2/tr_flares.c @@ -352,8 +352,8 @@ void RB_RenderFlare( flare_t *f ) { VectorScale(f->color, f->drawIntensity * intensity, color); -// Calculations for fogging - if(tr.world && f->fogNum < tr.world->numfogs) + // Calculations for fogging + if(tr.world && f->fogNum > 0 && f->fogNum < tr.world->numfogs) { tess.numVertexes = 1; VectorCopy(f->origin, tess.xyz[0]); From cb2fa48d65ab4f151a91c3ac4624f49e0600f49f Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 18 Jun 2013 17:02:47 -0500 Subject: [PATCH 29/62] Only allow model meshes to have SHADER_MAX_VERTEXES - 1 vertexes The last index is used to check for buffer overflows. See RB_CheckOverflow and RB_EndSurface. --- code/renderergl1/tr_model.c | 24 ++++++++++++------------ code/renderergl1/tr_model_iqm.c | 8 ++++---- code/renderergl2/tr_model.c | 24 ++++++++++++------------ code/renderergl2/tr_model_iqm.c | 8 ++++---- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/code/renderergl1/tr_model.c b/code/renderergl1/tr_model.c index bbac11ee..f9e2c3af 100644 --- a/code/renderergl1/tr_model.c +++ b/code/renderergl1/tr_model.c @@ -458,15 +458,15 @@ static qboolean R_LoadMD3 (model_t *mod, int lod, void *buffer, const char *mod_ LL(surf->ofsXyzNormals); LL(surf->ofsEnd); - if ( surf->numVerts > SHADER_MAX_VERTEXES ) { + if ( surf->numVerts >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMD3: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, surf->name[0] ? surf->name : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, surf->name[0] ? surf->name : "a surface", surf->numVerts ); return qfalse; } - if ( surf->numTriangles*3 > SHADER_MAX_INDEXES ) { + if ( surf->numTriangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMD3: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, surf->name[0] ? surf->name : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, surf->name[0] ? surf->name : "a surface", surf->numTriangles ); return qfalse; } @@ -736,17 +736,17 @@ static qboolean R_LoadMDR( model_t *mod, void *buffer, int filesize, const char // numBoneReferences and BoneReferences generally seem to be unused // now do the checks that may fail. - if ( surf->numVerts > SHADER_MAX_VERTEXES ) + if ( surf->numVerts >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMDR: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, surf->name[0] ? surf->name : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, surf->name[0] ? surf->name : "a surface", surf->numVerts ); return qfalse; } - if ( surf->numTriangles*3 > SHADER_MAX_INDEXES ) + if ( surf->numTriangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMDR: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, surf->name[0] ? surf->name : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, surf->name[0] ? surf->name : "a surface", surf->numTriangles ); return qfalse; } @@ -953,15 +953,15 @@ static qboolean R_LoadMD4( model_t *mod, void *buffer, const char *mod_name ) { LL(surf->ofsVerts); LL(surf->ofsEnd); - if ( surf->numVerts > SHADER_MAX_VERTEXES ) { + if ( surf->numVerts >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMD4: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, surf->name[0] ? surf->name : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, surf->name[0] ? surf->name : "a surface", surf->numVerts ); return qfalse; } - if ( surf->numTriangles*3 > SHADER_MAX_INDEXES ) { + if ( surf->numTriangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMD4: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, surf->name[0] ? surf->name : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, surf->name[0] ? surf->name : "a surface", surf->numTriangles ); return qfalse; } diff --git a/code/renderergl1/tr_model_iqm.c b/code/renderergl1/tr_model_iqm.c index 8af77e3e..0c7d4665 100644 --- a/code/renderergl1/tr_model_iqm.c +++ b/code/renderergl1/tr_model_iqm.c @@ -318,17 +318,17 @@ qboolean R_LoadIQM( model_t *mod, void *buffer, int filesize, const char *mod_na } // check ioq3 limits - if ( mesh->num_vertexes > SHADER_MAX_VERTEXES ) + if ( mesh->num_vertexes >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadIQM: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, meshName[0] ? meshName : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, meshName[0] ? meshName : "a surface", mesh->num_vertexes ); return qfalse; } - if ( mesh->num_triangles*3 > SHADER_MAX_INDEXES ) + if ( mesh->num_triangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadIQM: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, meshName[0] ? meshName : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, meshName[0] ? meshName : "a surface", mesh->num_triangles ); return qfalse; } diff --git a/code/renderergl2/tr_model.c b/code/renderergl2/tr_model.c index 2c567afc..8feeab0e 100644 --- a/code/renderergl2/tr_model.c +++ b/code/renderergl2/tr_model.c @@ -495,17 +495,17 @@ static qboolean R_LoadMD3(model_t * mod, int lod, void *buffer, int bufferSize, LL(md3Surf->ofsXyzNormals); LL(md3Surf->ofsEnd); - if(md3Surf->numVerts > SHADER_MAX_VERTEXES) + if(md3Surf->numVerts >= SHADER_MAX_VERTEXES) { ri.Printf(PRINT_WARNING, "R_LoadMD3: %s has more than %i verts on %s (%i).\n", - modName, SHADER_MAX_VERTEXES, md3Surf->name[0] ? md3Surf->name : "a surface", + modName, SHADER_MAX_VERTEXES - 1, md3Surf->name[0] ? md3Surf->name : "a surface", md3Surf->numVerts ); return qfalse; } - if(md3Surf->numTriangles * 3 > SHADER_MAX_INDEXES) + if(md3Surf->numTriangles * 3 >= SHADER_MAX_INDEXES) { ri.Printf(PRINT_WARNING, "R_LoadMD3: %s has more than %i triangles on %s (%i).\n", - modName, SHADER_MAX_INDEXES / 3, md3Surf->name[0] ? md3Surf->name : "a surface", + modName, ( SHADER_MAX_INDEXES / 3 ) - 1, md3Surf->name[0] ? md3Surf->name : "a surface", md3Surf->numTriangles ); return qfalse; } @@ -996,17 +996,17 @@ static qboolean R_LoadMDR( model_t *mod, void *buffer, int filesize, const char // numBoneReferences and BoneReferences generally seem to be unused // now do the checks that may fail. - if ( surf->numVerts > SHADER_MAX_VERTEXES ) + if ( surf->numVerts >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMDR: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, surf->name[0] ? surf->name : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, surf->name[0] ? surf->name : "a surface", surf->numVerts ); return qfalse; } - if ( surf->numTriangles*3 > SHADER_MAX_INDEXES ) + if ( surf->numTriangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMDR: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, surf->name[0] ? surf->name : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, surf->name[0] ? surf->name : "a surface", surf->numTriangles ); return qfalse; } @@ -1213,15 +1213,15 @@ static qboolean R_LoadMD4( model_t *mod, void *buffer, const char *mod_name ) { LL(surf->ofsVerts); LL(surf->ofsEnd); - if ( surf->numVerts > SHADER_MAX_VERTEXES ) { + if ( surf->numVerts >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMD4: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, surf->name[0] ? surf->name : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, surf->name[0] ? surf->name : "a surface", surf->numVerts ); return qfalse; } - if ( surf->numTriangles*3 > SHADER_MAX_INDEXES ) { + if ( surf->numTriangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadMD4: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, surf->name[0] ? surf->name : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, surf->name[0] ? surf->name : "a surface", surf->numTriangles ); return qfalse; } diff --git a/code/renderergl2/tr_model_iqm.c b/code/renderergl2/tr_model_iqm.c index 15e0fe78..43dece19 100644 --- a/code/renderergl2/tr_model_iqm.c +++ b/code/renderergl2/tr_model_iqm.c @@ -318,17 +318,17 @@ qboolean R_LoadIQM( model_t *mod, void *buffer, int filesize, const char *mod_na } // check ioq3 limits - if ( mesh->num_vertexes > SHADER_MAX_VERTEXES ) + if ( mesh->num_vertexes >= SHADER_MAX_VERTEXES ) { ri.Printf(PRINT_WARNING, "R_LoadIQM: %s has more than %i verts on %s (%i).\n", - mod_name, SHADER_MAX_VERTEXES, meshName[0] ? meshName : "a surface", + mod_name, SHADER_MAX_VERTEXES - 1, meshName[0] ? meshName : "a surface", mesh->num_vertexes ); return qfalse; } - if ( mesh->num_triangles*3 > SHADER_MAX_INDEXES ) + if ( mesh->num_triangles*3 >= SHADER_MAX_INDEXES ) { ri.Printf(PRINT_WARNING, "R_LoadIQM: %s has more than %i triangles on %s (%i).\n", - mod_name, SHADER_MAX_INDEXES / 3, meshName[0] ? meshName : "a surface", + mod_name, ( SHADER_MAX_INDEXES / 3 ) - 1, meshName[0] ? meshName : "a surface", mesh->num_triangles ); return qfalse; } From aa2ea68741f913b861c8e7ce6f0ac07a71c1f36a Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 18 Jun 2013 18:00:45 -0500 Subject: [PATCH 30/62] Fix IQM tess buffer overflow Set the variables that use tess.numVertexes after calling RB_CHECKOVERFLOW() as it may set tess.numVertexes to 0! Could cause visual issues and error "RB_EndSurface() - SHADER_MAX_VERTEXES hit". --- code/renderergl1/tr_model_iqm.c | 13 +++++++++---- code/renderergl2/tr_model_iqm.c | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/code/renderergl1/tr_model_iqm.c b/code/renderergl1/tr_model_iqm.c index 0c7d4665..a0cdbe75 100644 --- a/code/renderergl1/tr_model_iqm.c +++ b/code/renderergl1/tr_model_iqm.c @@ -953,10 +953,10 @@ void RB_IQMSurfaceAnim( surfaceType_t *surface ) { float jointMats[IQM_MAX_JOINTS * 12]; int i; - vec4_t *outXYZ = &tess.xyz[tess.numVertexes]; - vec4_t *outNormal = &tess.normal[tess.numVertexes]; - vec2_t (*outTexCoord)[2] = &tess.texCoords[tess.numVertexes]; - color4ub_t *outColor = &tess.vertexColors[tess.numVertexes]; + vec4_t *outXYZ; + vec4_t *outNormal; + vec2_t (*outTexCoord)[2]; + color4ub_t *outColor; int frame = data->num_frames ? backEnd.currentEntity->e.frame % data->num_frames : 0; int oldframe = data->num_frames ? backEnd.currentEntity->e.oldframe % data->num_frames : 0; @@ -968,6 +968,11 @@ void RB_IQMSurfaceAnim( surfaceType_t *surface ) { RB_CHECKOVERFLOW( surf->num_vertexes, surf->num_triangles * 3 ); + outXYZ = &tess.xyz[tess.numVertexes]; + outNormal = &tess.normal[tess.numVertexes]; + outTexCoord = &tess.texCoords[tess.numVertexes]; + outColor = &tess.vertexColors[tess.numVertexes]; + // compute interpolated joint matrices if ( data->num_joints > 0 ) { ComputePoseMats( data, frame, oldframe, backlerp, jointMats ); diff --git a/code/renderergl2/tr_model_iqm.c b/code/renderergl2/tr_model_iqm.c index 43dece19..30b8ff07 100644 --- a/code/renderergl2/tr_model_iqm.c +++ b/code/renderergl2/tr_model_iqm.c @@ -953,10 +953,10 @@ void RB_IQMSurfaceAnim( surfaceType_t *surface ) { float jointMats[IQM_MAX_JOINTS * 12]; int i; - vec4_t *outXYZ = &tess.xyz[tess.numVertexes]; - vec4_t *outNormal = &tess.normal[tess.numVertexes]; - vec2_t (*outTexCoord)[2] = &tess.texCoords[tess.numVertexes]; - vec4_t *outColor = &tess.vertexColors[tess.numVertexes]; + vec4_t *outXYZ; + vec4_t *outNormal; + vec2_t (*outTexCoord)[2]; + vec4_t *outColor; int frame = data->num_frames ? backEnd.currentEntity->e.frame % data->num_frames : 0; int oldframe = data->num_frames ? backEnd.currentEntity->e.oldframe % data->num_frames : 0; @@ -968,6 +968,11 @@ void RB_IQMSurfaceAnim( surfaceType_t *surface ) { RB_CHECKOVERFLOW( surf->num_vertexes, surf->num_triangles * 3 ); + outXYZ = &tess.xyz[tess.numVertexes]; + outNormal = &tess.normal[tess.numVertexes]; + outTexCoord = &tess.texCoords[tess.numVertexes]; + outColor = &tess.vertexColors[tess.numVertexes]; + // compute interpolated joint matrices if ( data->num_joints > 0 ) { ComputePoseMats( data, frame, oldframe, backlerp, jointMats ); From 323e8b9921b50f785529e80ef83ddf632cddb881 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 20 Jun 2013 16:21:26 -0500 Subject: [PATCH 31/62] Fix r_speeds 4 in OpenGL2 renderer --- code/renderergl2/tr_shade.c | 2 ++ code/renderergl2/tr_world.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/code/renderergl2/tr_shade.c b/code/renderergl2/tr_shade.c index ef73fc5f..633b3f43 100644 --- a/code/renderergl2/tr_shade.c +++ b/code/renderergl2/tr_shade.c @@ -415,6 +415,7 @@ static void ProjectDlightTexture( void ) { backEnd.pc.c_totalIndexes += tess.numIndexes; backEnd.pc.c_dlightIndexes += tess.numIndexes; + backEnd.pc.c_dlightVertexes += tess.numVertexes; } } @@ -874,6 +875,7 @@ static void ForwardDlight( void ) { backEnd.pc.c_totalIndexes += tess.numIndexes; backEnd.pc.c_dlightIndexes += tess.numIndexes; + backEnd.pc.c_dlightVertexes += tess.numVertexes; } } diff --git a/code/renderergl2/tr_world.c b/code/renderergl2/tr_world.c index ab447f8a..5159a659 100644 --- a/code/renderergl2/tr_world.c +++ b/code/renderergl2/tr_world.c @@ -218,6 +218,8 @@ static int R_DlightSurface( msurface_t *surf, int dlightBits ) { if ( dlightBits ) { tr.pc.c_dlightSurfaces++; + } else { + tr.pc.c_dlightSurfacesCulled++; } return dlightBits; From 872465500e6952a611306f5c790ae7626ab73a27 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 20 Jun 2013 16:22:40 -0500 Subject: [PATCH 32/62] Fix r_nocurves in OpenGL2 renderer Check r_nocurves in surface cull. While r_nocurves is enabled, don't use merged surfaces because merged curves would be renderer. (note: surface merging is enabled by r_mergeLeafSurfaces) --- code/renderergl2/tr_world.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/renderergl2/tr_world.c b/code/renderergl2/tr_world.c index 5159a659..e67be16f 100644 --- a/code/renderergl2/tr_world.c +++ b/code/renderergl2/tr_world.c @@ -36,6 +36,10 @@ static qboolean R_CullSurface( msurface_t *surf ) { return qfalse; } + if ( *surf->data == SF_GRID && r_nocurves->integer ) { + return qtrue; + } + if (surf->cullinfo.type & CULLINFO_PLANE) { // Only true for SF_FACE, so treat like its own function @@ -554,7 +558,7 @@ static void R_RecursiveWorldNode( mnode_t *node, int planeBits, int dlightBits, } // add merged and unmerged surfaces - if (tr.world->viewSurfaces) + if (tr.world->viewSurfaces && !r_nocurves->integer) view = tr.world->viewSurfaces + node->firstmarksurface; else view = tr.world->marksurfaces + node->firstmarksurface; From d79fe658783a1310772d52d95f0704ceb2ddd918 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 20 Jun 2013 21:56:04 -0500 Subject: [PATCH 33/62] Fix r_mergeLightmaps 0 crashing OpenGL2 renderer tr.fatLightmapStep was 0 and caused modulus division by 0. --- code/renderergl2/tr_bsp.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/code/renderergl2/tr_bsp.c b/code/renderergl2/tr_bsp.c index 01556cdd..05b933e8 100644 --- a/code/renderergl2/tr_bsp.c +++ b/code/renderergl2/tr_bsp.c @@ -524,11 +524,13 @@ static float FatPackU(float input, int lightmapnum) if (tr.worldDeluxeMapping) lightmapnum >>= 1; - lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep); - if(tr.fatLightmapSize > 0) { - int x = lightmapnum % tr.fatLightmapStep; + int x; + + lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep); + + x = lightmapnum % tr.fatLightmapStep; return (input / ((float)tr.fatLightmapStep)) + ((1.0 / ((float)tr.fatLightmapStep)) * (float)x); } @@ -544,11 +546,13 @@ static float FatPackV(float input, int lightmapnum) if (tr.worldDeluxeMapping) lightmapnum >>= 1; - lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep); - if(tr.fatLightmapSize > 0) { - int y = lightmapnum / tr.fatLightmapStep; + int y; + + lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep); + + y = lightmapnum / tr.fatLightmapStep; return (input / ((float)tr.fatLightmapStep)) + ((1.0 / ((float)tr.fatLightmapStep)) * (float)y); } From 213b8e24356c8a1fe3e75ba76ef23c1c99deabc7 Mon Sep 17 00:00:00 2001 From: morturp Date: Wed, 26 Jun 2013 11:42:59 +0300 Subject: [PATCH 34/62] Prevent the skip of the glyph if it does not fit --- code/renderercommon/tr_font.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/renderercommon/tr_font.c b/code/renderercommon/tr_font.c index 3f830d5c..e2e94f13 100644 --- a/code/renderercommon/tr_font.c +++ b/code/renderercommon/tr_font.c @@ -503,7 +503,8 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { xOut = 0; yOut = 0; ri.Free(imageBuff); - i++; + if(i == GLYPH_END) + i++; } else { Com_Memcpy(&font->glyphs[i], glyph, sizeof(glyphInfo_t)); i++; From 608e852ac620e327ba8f6bd1089102196aea74f4 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 4 Jul 2013 15:34:05 -0500 Subject: [PATCH 35/62] Free Team Arena fonts/fontImage_X.dat buffer Caused temp memory to be present all the time, so Hunk_Alloc ignored memory low/high preference. May have caused other issues as well. --- code/renderercommon/tr_font.c | 1 + 1 file changed, 1 insertion(+) diff --git a/code/renderercommon/tr_font.c b/code/renderercommon/tr_font.c index e2e94f13..dda00e24 100644 --- a/code/renderercommon/tr_font.c +++ b/code/renderercommon/tr_font.c @@ -401,6 +401,7 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { font->glyphs[i].glyph = RE_RegisterShaderNoMip(font->glyphs[i].shaderName); } Com_Memcpy(®isteredFont[registeredFontCount++], font, sizeof(fontInfo_t)); + ri.FS_FreeFile(faceData); return; } From 6b1380606621f5675e0d74835b4b78b55ad66aff Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sun, 7 Jul 2013 16:08:58 -0500 Subject: [PATCH 36/62] Fix getting servers from and being listed on id's q3 master server Use q3 master protocol when com_gamename is Quake3Arena (the default), otherwise use dpmaster protocol. --- code/client/cl_main.c | 3 +++ code/qcommon/q_shared.h | 5 +++++ code/server/sv_main.c | 3 +++ 3 files changed, 11 insertions(+) diff --git a/code/client/cl_main.c b/code/client/cl_main.c index c345c973..26faf80f 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -4145,6 +4145,9 @@ void CL_GlobalServers_f( void ) { com_gamename->string, Cmd_Argv(2)); } } + else if ( !Q_stricmp( com_gamename->string, LEGACY_MASTER_GAMENAME ) ) + Com_sprintf(command, sizeof(command), "getservers %s", + Cmd_Argv(2)); else Com_sprintf(command, sizeof(command), "getservers %s %s", com_gamename->string, Cmd_Argv(2)); diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index b7f03fda..48647f1d 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -51,6 +51,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // Heartbeat for dpmaster protocol. You shouldn't change this unless you know what you're doing #define HEARTBEAT_FOR_MASTER "DarkPlaces" +// When com_gamename is LEGACY_MASTER_GAMENAME, use quake3 master protocol. +// You shouldn't change this unless you know what you're doing +#define LEGACY_MASTER_GAMENAME "Quake3Arena" +#define LEGACY_HEARTBEAT_FOR_MASTER "QuakeArena-1" + #define BASETA "missionpack" #ifndef PRODUCT_VERSION diff --git a/code/server/sv_main.c b/code/server/sv_main.c index e48e0b97..ed50707e 100644 --- a/code/server/sv_main.c +++ b/code/server/sv_main.c @@ -252,6 +252,9 @@ void SV_MasterHeartbeat(const char *message) if ( svs.time < svs.nextHeartbeatTime ) return; + if ( !Q_stricmp( com_gamename->string, LEGACY_MASTER_GAMENAME ) ) + message = LEGACY_HEARTBEAT_FOR_MASTER; + svs.nextHeartbeatTime = svs.time + HEARTBEAT_MSEC; // send to group masters From 4776fb47674975e3684b6a67f3e848d3a0593088 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Mon, 8 Jul 2013 16:36:30 -0600 Subject: [PATCH 37/62] (bug #5984) Unload renderer lib --- code/client/cl_main.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/client/cl_main.c b/code/client/cl_main.c index 26faf80f..c03ba61e 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -3070,11 +3070,18 @@ CL_ShutdownRef ============ */ void CL_ShutdownRef( void ) { - if ( !re.Shutdown ) { - return; + if ( re.Shutdown ) { + re.Shutdown( qtrue ); } - re.Shutdown( qtrue ); + Com_Memset( &re, 0, sizeof( re ) ); + +#ifdef USE_RENDERER_DLOPEN + if ( rendererLib ) { + Sys_UnloadLibrary( rendererLib ); + rendererLib = NULL; + } +#endif } /* From 30fcabec653bbbe9cfdff06e3cfc29de173ec914 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 9 Jul 2013 14:41:56 -0500 Subject: [PATCH 38/62] SDL Mouse Button clean up Make 'b' variable an int so that key values more than 255 will work (not currently an issue in ioq3 afaik). Use SDL_BUTTON_* for easier transition to SDL2. (SDL2 doesn't have SDL_BUTTON_WHEELUP or SDL_BUTTON_WHEELDOWN, X1/X2 are different values.) --- code/sdl/sdl_input.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/sdl/sdl_input.c b/code/sdl/sdl_input.c index 90500bd0..72c66096 100644 --- a/code/sdl/sdl_input.c +++ b/code/sdl/sdl_input.c @@ -912,17 +912,17 @@ static void IN_ProcessEvents( void ) case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { - unsigned char b; + int b; switch( e.button.button ) { - case 1: b = K_MOUSE1; break; - case 2: b = K_MOUSE3; break; - case 3: b = K_MOUSE2; break; - case 4: b = K_MWHEELUP; break; - case 5: b = K_MWHEELDOWN; break; - case 6: b = K_MOUSE4; break; - case 7: b = K_MOUSE5; break; - default: b = K_AUX1 + ( e.button.button - 8 ) % 16; break; + case SDL_BUTTON_LEFT: b = K_MOUSE1; break; + case SDL_BUTTON_MIDDLE: b = K_MOUSE3; break; + case SDL_BUTTON_RIGHT: b = K_MOUSE2; break; + case SDL_BUTTON_WHEELUP: b = K_MWHEELUP; break; + case SDL_BUTTON_WHEELDOWN: b = K_MWHEELDOWN; break; + case SDL_BUTTON_X1: b = K_MOUSE4; break; + case SDL_BUTTON_X2: b = K_MOUSE5; break; + default: b = K_AUX1 + ( e.button.button - SDL_BUTTON_X2 + 1 ) % 16; break; } Com_QueueEvent( 0, SE_KEY, b, ( e.type == SDL_MOUSEBUTTONDOWN ? qtrue : qfalse ), 0, NULL ); From 690b281e4dc89db5a09b4d48ba035c8cd5c31223 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Thu, 11 Jul 2013 23:26:30 -0500 Subject: [PATCH 39/62] Remove unused models from server_t --- code/server/server.h | 1 - 1 file changed, 1 deletion(-) diff --git a/code/server/server.h b/code/server/server.h index c3f3ae01..b577591f 100644 --- a/code/server/server.h +++ b/code/server/server.h @@ -78,7 +78,6 @@ typedef struct { int snapshotCounter; // incremented for each snapshot built int timeResidual; // <= 1000 / sv_frame->value int nextFrameTime; // when time > nextFrameTime, process world - struct cmodel_s *models[MAX_MODELS]; char *configstrings[MAX_CONFIGSTRINGS]; svEntity_t svEntities[MAX_GENTITIES]; From 0f9eca6546640e1635b7da1b22b66fbb4073a61f Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Sat, 13 Jul 2013 01:06:26 -0500 Subject: [PATCH 40/62] Initial Xcode workspace & project support (4.6.3). Updated .gitignore and ioquake3fe Xcode project. Added Retina-enabled QUAKE III logo icon files. Details in misc/xcode/xcode-readme.txt --- .gitignore | 30 + misc/osxfe/ioquake3fe/Info.plist | 4 +- .../ioquake3fe.xcodeproj/project.pbxproj | 34 +- misc/quake3_flat.icns | Bin 0 -> 189443 bytes misc/quake3_flat.iconset/icon_128x128.png | Bin 0 -> 7525 bytes misc/quake3_flat.iconset/icon_128x128@2x.png | Bin 0 -> 16205 bytes misc/quake3_flat.iconset/icon_16x16.png | Bin 0 -> 1529 bytes misc/quake3_flat.iconset/icon_16x16@2x.png | Bin 0 -> 2181 bytes misc/quake3_flat.iconset/icon_256x256.png | Bin 0 -> 16205 bytes misc/quake3_flat.iconset/icon_256x256@2x.png | Bin 0 -> 35948 bytes misc/quake3_flat.iconset/icon_32x32.png | Bin 0 -> 2181 bytes misc/quake3_flat.iconset/icon_32x32@2x.png | Bin 0 -> 3785 bytes misc/quake3_flat.iconset/icon_512x512.png | Bin 0 -> 35948 bytes misc/quake3_flat.iconset/icon_512x512@2x.png | Bin 0 -> 77303 bytes misc/xcode/botlib.xcodeproj/project.pbxproj | 425 +++++++ misc/xcode/cgame.xcodeproj/project.pbxproj | 369 ++++++ misc/xcode/game.xcodeproj/project.pbxproj | 405 ++++++ misc/xcode/ioquake3-Info.plist | 34 + misc/xcode/ioquake3-Prefix.pch | 7 + misc/xcode/ioquake3.xcodeproj/project.pbxproj | 1103 +++++++++++++++++ .../contents.xcworkspacedata | 34 + misc/xcode/jpeg8.xcodeproj/project.pbxproj | 425 +++++++ misc/xcode/q3_ui.xcodeproj/project.pbxproj | 461 +++++++ .../project.pbxproj | 435 +++++++ .../project.pbxproj | 684 ++++++++++ misc/xcode/speex.xcodeproj/project.pbxproj | 517 ++++++++ misc/xcode/ui.xcodeproj/project.pbxproj | 299 +++++ misc/xcode/xcode-readme.txt | 51 + 28 files changed, 5303 insertions(+), 14 deletions(-) create mode 100644 misc/quake3_flat.icns create mode 100644 misc/quake3_flat.iconset/icon_128x128.png create mode 100644 misc/quake3_flat.iconset/icon_128x128@2x.png create mode 100644 misc/quake3_flat.iconset/icon_16x16.png create mode 100644 misc/quake3_flat.iconset/icon_16x16@2x.png create mode 100644 misc/quake3_flat.iconset/icon_256x256.png create mode 100644 misc/quake3_flat.iconset/icon_256x256@2x.png create mode 100644 misc/quake3_flat.iconset/icon_32x32.png create mode 100644 misc/quake3_flat.iconset/icon_32x32@2x.png create mode 100644 misc/quake3_flat.iconset/icon_512x512.png create mode 100644 misc/quake3_flat.iconset/icon_512x512@2x.png create mode 100644 misc/xcode/botlib.xcodeproj/project.pbxproj create mode 100644 misc/xcode/cgame.xcodeproj/project.pbxproj create mode 100644 misc/xcode/game.xcodeproj/project.pbxproj create mode 100644 misc/xcode/ioquake3-Info.plist create mode 100644 misc/xcode/ioquake3-Prefix.pch create mode 100644 misc/xcode/ioquake3.xcodeproj/project.pbxproj create mode 100644 misc/xcode/ioquake3.xcworkspace/contents.xcworkspacedata create mode 100644 misc/xcode/jpeg8.xcodeproj/project.pbxproj create mode 100644 misc/xcode/q3_ui.xcodeproj/project.pbxproj create mode 100644 misc/xcode/renderer_opengl1.xcodeproj/project.pbxproj create mode 100644 misc/xcode/renderer_opengl2.xcodeproj/project.pbxproj create mode 100644 misc/xcode/speex.xcodeproj/project.pbxproj create mode 100644 misc/xcode/ui.xcodeproj/project.pbxproj create mode 100644 misc/xcode/xcode-readme.txt diff --git a/.gitignore b/.gitignore index bfd2d925..55412ca7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,33 @@ build Makefile.local *.swp *tags + +# OS X +#################### +.Spotlight-V100/ +.Trashes/ +._* +.AppleDouble +.DS_Store +.LSOverride +Icon? + +# Xcode +#################### +*.mode1v3 +*.mode2v3 +*.pbxuser +*.perspectivev3 +*.user +*.xcuserstate +*.moved-aside +*~.nib +.idea/ +DerivedData/ +project.xcworkspace/ +xcuserdata/ +profile +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 diff --git a/misc/osxfe/ioquake3fe/Info.plist b/misc/osxfe/ioquake3fe/Info.plist index 4b5c2e7c..09ec7571 100644 --- a/misc/osxfe/ioquake3fe/Info.plist +++ b/misc/osxfe/ioquake3fe/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile - ioquake3.icns + quake3_flat CFBundleIdentifier org.icculus.quake3 CFBundleInfoDictionaryVersion @@ -16,6 +16,8 @@ ${PRODUCT_NAME} CFBundlePackageType APPL + CFBundleShortVersionString + 1.0 CFBundleSignature ???? CFBundleVersion diff --git a/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj b/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj index 75496ee5..9069160e 100644 --- a/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj +++ b/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj @@ -3,16 +3,16 @@ archiveVersion = 1; classes = { }; - objectVersion = 45; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ + 278714DB1791207600094CA3 /* quake3_flat.icns in Resources */ = {isa = PBXBuildFile; fileRef = 278714DA1791207600094CA3 /* quake3_flat.icns */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; C30C62180F677DD30043A4E2 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = C30C62170F677DD30043A4E2 /* Controller.m */; }; C30C631D0F67A37E0043A4E2 /* ErrorWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C30C631C0F67A37E0043A4E2 /* ErrorWindow.m */; }; - C30C638F0F67AA7B0043A4E2 /* ioquake3.icns in Resources */ = {isa = PBXBuildFile; fileRef = C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */; }; C34EC1F60F68433A00C42E7D /* ErrorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = C34EC1F50F68433A00C42E7D /* ErrorWindowController.m */; }; C37357890F68280200B1A10C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C37357850F68280200B1A10C /* MainMenu.xib */; }; C373578A0F68280200B1A10C /* ErrorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C37357870F68280200B1A10C /* ErrorWindow.xib */; }; @@ -22,6 +22,7 @@ 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 278714DA1791207600094CA3 /* quake3_flat.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = quake3_flat.icns; path = ../../quake3_flat.icns; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; @@ -32,7 +33,6 @@ C30C62170F677DD30043A4E2 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; C30C631B0F67A37E0043A4E2 /* ErrorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorWindow.h; sourceTree = ""; }; C30C631C0F67A37E0043A4E2 /* ErrorWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ErrorWindow.m; sourceTree = ""; }; - C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ioquake3.icns; sourceTree = ""; }; C34EC1F40F68433A00C42E7D /* ErrorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorWindowController.h; sourceTree = ""; }; C34EC1F50F68433A00C42E7D /* ErrorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ErrorWindowController.m; sourceTree = ""; }; C37357860F68280200B1A10C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; @@ -116,7 +116,7 @@ children = ( C37357850F68280200B1A10C /* MainMenu.xib */, C37357870F68280200B1A10C /* ErrorWindow.xib */, - C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */, + 278714DA1791207600094CA3 /* quake3_flat.icns */, 8D1107310486CEB800E47090 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, ); @@ -158,9 +158,16 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ioquake3fe" */; - compatibilityVersion = "Xcode 3.1"; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + en, + ); mainGroup = 29B97314FDCFA39411CA2CEA /* ioquake3fe */; projectDirPath = ""; projectRoot = ""; @@ -176,9 +183,9 @@ buildActionMask = 2147483647; files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, - C30C638F0F67AA7B0043A4E2 /* ioquake3.icns in Resources */, C37357890F68280200B1A10C /* MainMenu.xib in Resources */, C373578A0F68280200B1A10C /* ErrorWindow.xib in Resources */, + 278714DB1791207600094CA3 /* quake3_flat.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -230,15 +237,16 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = ioquake3fe_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.5; PRODUCT_NAME = ioquake3fe; }; name = Debug; @@ -247,12 +255,14 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = ioquake3fe_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.5; PRODUCT_NAME = ioquake3fe; }; name = Release; @@ -260,26 +270,24 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - SDKROOT = macosx10.4; + SDKROOT = ""; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = macosx10.4; + SDKROOT = ""; }; name = Release; }; diff --git a/misc/quake3_flat.icns b/misc/quake3_flat.icns new file mode 100644 index 0000000000000000000000000000000000000000..1e85a214f3071d47332b9d7df08f52dcb70e3d58 GIT binary patch literal 189443 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 literal 0 HcmV?d00001 diff --git a/misc/quake3_flat.iconset/icon_128x128@2x.png b/misc/quake3_flat.iconset/icon_128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b08d4f642ac9d658c7b8e3fb624d0b4ce94a99d GIT binary patch literal 16205 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 literal 0 HcmV?d00001 diff --git a/misc/quake3_flat.iconset/icon_16x16@2x.png b/misc/quake3_flat.iconset/icon_16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a9db9514086b8023f058469a5f0dd3102df02df4 GIT binary patch literal 2181 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

dxIXukd8c$XtF;=TuNX7sB|&r>eJs}}{u zxqmTk12as@1rH6a2zjdT-@KS-O6cKee;i8}FZ~JB69yW}jHfEl23n9B)R=|8u=Mut z9yQS!rrVA4$==?=-=A&bp_ATe8fp(M>+m#R#g5e!BWV#hk3qZG1pLdrbs!1=p= zJ>qK6w9O$A#qo#-kYx4O(|ZhQJUBvsJLwdn&2PJWzpvhXI@sI){z=3Pb)p)2wZp5Y zhd#?>`c^>p85Mylu~tptE5gG{rU_0^XHDN8+Z3z8dtm}!-U#%LwEh$O;&(#veJ9_g zK#GPgiB(*mcwVhM&EU@{epvBbh_ACa(V^0MXvM2mTYr|(e4vc~jbK%e44csc4|X&X zWre3Or9e!HhJ5nk#+GNji_9>HJH-35`*HHbE{*Km^4Ih`vzjwV{<{!h-AW`cL2uf8z26wT#1xba{Bt!bBy~f`t~w5% zr^Y^&Ua9_96^7w`ZyUncSnRLgk<)Q2;Gx$1I>9;I!W^J_DL(zUkB2=^BApTR39ZsB zoo`ub@aFHiyblX@bQBnXn){+=KS(>n-hYH6Dor72RrPACY_M-eRX&X1LnXk2kiZ6m zT?CO*L)t4L6GuLp9;8L!Ey;DExt9ibwMHpF5E4^`N|6ji`Nvj7vM`!&K;CL%J+=1i zP!R>qzVH6Jd}BF48!ycX6)A%-^lKDiqQaq!_(?xpuye^wOy!|RB%n0~McdJ1_b3A~@2=Vo>{QiY*4V11pH!3VALyF zmsU0(RY71*9D#4UPg>T*!4Ljt>Wz6US*#70*09{*)dd#MJAnQ_Vr#dhkA+QDVablw z`W!m%*mCEX1MhO?@B)UOMxB`-aLOp7FkYRZWf=p9jaAM(pi*E}tPyu_4vUgHgSkBy z)80!APuVwFIT(DByJ!PEhaNP{H*G`4;C~8de>h@Mv zZ4_ko5R4FMUBFPm1ze5$-~^~{zuBEvY3gczV1 z$4uk4Ok=51-LU8M^cjCXbDm=I6X4nKzgvJ|;)%`eang^^0x!N;q-4-}N=nL^N#()R z1BZWqU%mS5pYJ=b)pswiOO?9L@!#3rB8h9e9E~ z2tAm~FdewR5m&H?Kp zGY_bH9s=XFMV>hd;ur^}dq94L`#Cn?(cmEa6>Na%;X|?mH^ea>2Y~5=;r)r53Si3^ zI9t?#wOt)g1|yVT0pvfBwUh?leGIa{@dGei5A`$ZLL8&O_@3pTe56AK$NHCtm>Gb; M)78&qol`;+0N4ZnYybcN literal 0 HcmV?d00001 diff --git a/misc/quake3_flat.iconset/icon_32x32.png b/misc/quake3_flat.iconset/icon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a9db9514086b8023f058469a5f0dd3102df02df4 GIT binary patch literal 2181 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 W=sC3d|Hw2tR&`# UoEpH6ZvAXpn(o8hGWLr9C+$T)_y7O^ literal 0 HcmV?d00001 diff --git a/misc/quake3_flat.iconset/icon_512x512.png b/misc/quake3_flat.iconset/icon_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..e5097e3285ae8e5e383bec898fefdce0d9223ae5 GIT binary patch literal 35948 zcmcG$by(D0w*Wdb48qVYA|2A*JxGdlm!xzzk~1RRij<^Ew}7Oi2m%r!DGegs&A{9r z@A=L--#zEXKll3J1MI!_-mBNzYwaOMOG6nShYAM-0^vVVQP2T_Ai$3h5cWOb+eyH$ zE8rWcZ<}DE*&G-+51n~3SFfSwhKOjEN(u_vxTJ-YnUbghYJp4QYj50X%^z>3* z&+R016qNq89QaL|(ZR>ZLxPvr-`}6dUy#S$%bu5CTwI)&Pk>iIfE$3|_I}~!V->*d z=FRjUoBZcK3bx)hUXC6e;wrJ{V%Ej`gjAZ zJb3we_;~+oXJDZeK%<1Z`*TOT7YbHBwlV^I{DRzk!rc6Pdi)o&P0zCg(`S0`pS}MhRN5j9-^bf=C(D@(Z|8KPV zINJR;SN~7M-p%}PYVSrRG`$>c0WRP1QiflO_kWH38-4%G8SB`3ySw=Q11|~?^}h!H z=K^_mR}U{+Z|}PUg#QKq?_>WH{=fIvcXRalFP#3z@c&$8^xyL`|Ap4S5B_Vx|7Xm$ z4RHLwVfNk3|7P~xsKh@SVWi;bYU}nN{NM*T_XUTfpH;gx@gxBNBS>KVQf_M$4A+mI`iIGU%T#1W`Vua~lCw`RA)88AOiY zaq%(8{MSGU=z!`!m+~;fG4pXB=IB5AkG;SgptgJeu}&o)7p4W?=vK0S`{ZAH;ee|D z1xB**7@`MisTni2{TCX*kkVdm3Z8s6=Z{TP2c)8Fg>CabK^H9!W9 zPs_7va9`xQ1Ncfr15^_@sTo8-saS{{Pj^CX%#A(wR!XV%4`y0a|C}GD;dCkr1j|Em z6cIRZ`vz8Lc}N2BXqklsx)%pA*0Q3fX>hiKq)4}WsP z^+3XYb*?O408GvI#vX-?io1T#N{079;|;=}=0HEd8N8NXcX0bkbufWR`so0^UOEe^ zszDa8JAYS)l@9S?=4TT)fQ@hnI+&0I44v!<0!I~tZ~$4ps)jjqcv3T3IxSobvXUeN zN@7@+B-s!H7%oxu#F&AkB&oA@yLMEQTXuwQcJKycYcNwe1q53|0whb-lh`sN$*^5y z1gScIE_S41((`Dv3bT_9asgbKeFcDsIAX`jK{81*vN(*2@1^O2;)V4<0`6oKDv%lC zd`L2lbD9EVS25pcM}Oe76jKhtL#!oP1!;m}%O=C^0f@Ehm}7a3^2H5-$D z^aNZ&_b7=OiMrdML*&C(=A{_KX5UhWed&+_yNAg*q=t+-R2f3^7+`jk5OcX41fP^` zE41RAFinzh5ENzJ+`T`T)3*;Gc_atG$jrv*yhiv#zHNaEbGR_uxOyo-em z24~{de;;m_UqNLgDgDfB%OAjqIXMhq?9pOm1sKN6NY4*S+qq#8&BPe3>d@oh-DJ)v zf#)hfm`4quC7^nJZ!Joa{$xbVy>wlWH63UNQ)|zn=LRI;LPDVkF(v_sXK_tagt#i? zTmBdwSlJ*c0;kP!d;B@R;DjZ^X|c7y{qmgJN+c>s#Dv?f>dd#NP#SW?TgpRGl72xz zNnW@~4`@Js5F3e1hV4M|%`9DP^P3q1M1aMu!0w|}-15yT^tO;`9FIT4G*6+fT1J-{ zskYD0nBkDkJKocpuB$2_)gQ)00nb-Q71&=fD7rtsKd-aW3422aH_1; z7eHztbhiqS7mwhW^dptZGf(IlklufBzZf(l#n$#?UpR1pIFFW-n3FB;1oGQ2H5)*? z=9^0N;=!pA<&LCHbVqjm?(%0NR<8bpa@^Sr4*z&@2Ya z1S+H2^Yo$eV~m@d!k=ZsFMsrRdjl3=A`j@Tb5orji32w{%?SQ!~RLZ4;7%$Dj|_Eo7h%_3Xy# zn4P%3c8>we1~w0Bz$#=wx?pci$fE|x5R*JLVCs9BcjP9*3s#-J;sE}nLKT!17D9ZR z&EZg73aU^|#Y%?X0tb8ZGX{Xdo zXcoN(>Dh%`qj@?e{T`ad4nztla^IZ`@l+qcN$DJb0v3(*byJt7Km?TL!?tuN40zsl zyavJQ9|G2}JIR}vyPes4PI~2PB{OK)S-x(c>@3-0J%`W?NgXXRUxcTby;?f zMA-^Lx1VSz`f@+0VCAKi2RJ2jXSJH9S|lX>ui#6uU-)*<yB z$52(lBEk>omY(Z-v%jRDjkfs=A)zYtoB%bS7=L)F3$*Ezd1liT>BwMLOgaxB%E=Y&CUO{K05K1m#@mt$lqc$vEGhMmI*tB2o zm3;^TVd}1~T?D^At zyS8Pb?&M%UNyHAgFeC&(Aggd;o}FHU|9VF-~iW2da@|!Pi7Chb2k`RYC0Md zo`z>)L-kHXrH*9i9aN=+@tJ09bw$$#frYFwk}VN-uIUBVzEAR3?|55meHh)B7%0o}K#}-lP$OpJ9_PfZzXlADlaaGPQxk{Lf zQ2Nuo)fIVjkBU3I4_N>FDPXjp+l;AT^{Mc#txyF>@>`HEtN5g&Fj*f_$u$?P3ZNf* zciJ9=t1UxvpaQxE;dOt|G=K=D62Uw+gjI!I#2reA0NyeuvjZe&uGm>IkD5SI^uw`t z#z#YVDL`?B;nJ=CqCV!%&I3OIH)O!n`7luUF)9Zt5d$YWVXCo^cMSc$1Rwbd@h#g&-ZT(JY^)@tXzbC@8>q>hODpfMGb3>TBjGj=EMJoK5wK~2RS=2A z$?)HIf%CJve3we6EVzp@tsD@r{w*NM!5J^bi?Lp_fhMS$6eh#ZN~8+`vo%sf;B;Cu zqSPQXs`Rl;m*Vj&q-CI4K($7l!zZ>hAo08NIlIFq{tU>5mS4Dnp+_%*6^M5pyHp6k ze7L|SAc@b8#{48k3Y}Io9iB0(m(G6x`+YnB1XOzf`J=hO)Ep=kgVwK`+0Cy8vL7BM zF^onBNTmTT&J>vc^ykM+BJ4z&p(*0YW@;CI#YV zDN%F{gg$X2ozK65p0ec`i!MD0#rJUlNC&u0&?`0#WkF|S5ip_wL)MnRy^#EzhhlZ_ zfJCf;9Z19;VKWC(3Te}7vH)Bq25)yG?eH!r`T1 zsliAuhj^{A)atZ@xIMP})c7W&hKG6d2cUR9-rIG1&lKSz5LFYauY}23oi~bKNmR11 zM(*M<@14ZTrP=U-cucQj=jxr=y1-z2l{FY{e`k<)X21KBBsCm}FP3IrxQJ-GdV&EG zwdfciqh|t+--xz*&Z1)J3wfkvggL745~9T=M6B8r^Zo?~EE#c^G@=A;6PZWTpm>vq ztmIq-&^0qT@25*2v0u=_>S^vYc8ZxS8j2#NoSMxirHhq3TAO*-FXX7GVlFbm3??}M z1dg!JA4-JIrgZWv9C)`h&!bk@IvI*Vv$Y}Yq%h{YhyWALm4}Ek)x7W#($XLlu>mJX zMF>05+v^uM0cte}T=i=3C_~jDG>Vo^Wr*Rh{0Ery>je{8i7VX$$?*F?9yHpUFjD4E zh;07pLiqC1N-%$24`lO3lEjbDbutymw&@QSmM%+Z3jvgfAkt;iQ6B9-unr3_5%AWAOwj|F=X?lVLY1GtH~kO79rV? z09e{m_1$>cjX6J@hycOi@Oe)Q5@{Zt0r|1sb9|Q{To4&4Bvt>KExA|^h&D4 zGQn^6NLuk`I;F4yGbhV{7y35^?O@EKfe@apbF0Qaj&3<$KkxB&XeHKT7@(#9+<%d7 z^a#q^9~>YfCAN=O`i?EX@cWIFNj7`{BqY8>7|Q~@m=vPx;@v~r@*=Ex3xJ$tEf25( zR3n2k98yj?TIGldzX~$~2NtNoVU~8o ze#a)j%m1f&M8NYK@<1{sSdW$x5xYOD05!}4q@DjDP%0hj^%z8eQ0D{*VCLuGGCswm zXZ@kU|HM)eK+WK558V@bG}JssyH(#weIly5`HG&<2t@rJN8s)Xm;+$g)=2+{6*&Qe z4qwiEGkgy+H31p04m16G`Yt4Ixjk8l6mT1j!px_73il?53*rN*XTCb1_zrI(^C_8= zDUd5WF5vC+d%^4=AW5iyZrcvf@ZUE?ZibpFt&Luh(3^{69T{ryRN(jMOrQesZ|+_O z$!-&vV-OPB5(eYgU?{V^ng9d?aPLlQap-T=ATL<8xPIU}6n^R5kD{|2e~NQFoO<*I z&I$mG!YcbEk~?vru~k@-;4RAtd8(`LrdkD&s(-qGJ=%ewd!U|rnF4=D9Ia*xA`XUF z=z=`hsK0u3+KJwG5mW`@e#@QL+H>}vY#PKCizE2W4n#R^#u|pvtar~%K|losX-2xF zp1r;P;Q&afkolw4QVG+F;N+U_ptB2YwyoscD1f4m3V_pQs%1Ge7mCWE61s71{z-lY!6^48Fx6{+Jm@Vo5ggmWhopmjg*G8+6cAX?4F zAiSO1Vn~BXwr+*1rnk8@?e3C05FmnF$07Alr|3 z*J3KYOjcMuG5EvH4%Dce#2Sa}t^OQQ$-P(AcUOyu>;d&!z)rT9Ev1zA!XI1tAaUS1 z7cVGb_1t&<=(iAAJhYAY;B$}#HCAWy<5!mOg^xB$05`esDiHtVC&~CoLnj(BHL%{_ zy_-~69wfZ;F-EAD4Nxh9R04*aufJx@1A7jKL(athqBuY#di@?a^x^9^#LUSYz#*k8 zw(EC!g=Z)2hzv-F=`W)R$mDlD5E!$7i(kIut05qmq{FFeu+{@%ORJo{auH^5I*Zxy1b&Ds@%5!LWD10m&=G%ppMQ$(&iXo$?jq0HwG7n?m?Fq>4H&&{~ZZ=zb%88)aeEm4XsMAWlwoL*z&9t=`brOWnA@B!gyr_U7C z8wUxolEG$kwr2FW<0zElVm4CzZ4A^)0d6XtkHLj`B85fdpw8M!{S0fKy(~O0HnBSR z#rr|asb3;>U_R7uRbwn9|pTK{4Ww9)Gje7IRsooSj| zQB5Y0RU0+%s)cKA?3U`az0)C$?$K4rcY|mXVeK5Y%qs6;RqiHV{FuYQZ*{W@pocwI zv^-va&0obE>NllbMBS*x(1~9Mqj;JAK0LUTyW}XFQ#yDmF-0?CGE|7IDXha6y&1*V zpyht%t1_A;?^OxPN1iOW8t&FBNlT8dUpMT9&<1YoZlK~0qp^NquvnfF-*W8O#)2*@ za|pz?j4{c>+yo&_qW2)R7B7MgdNrksZ6D-sOaf_5#SivGow|s}Bl(=wg7@lu(pmB7jbm|SV%wr*s_;$@l#=kR*94}&d^gN zn&sZpQ$CAv-X9FJ&l-$ZK09vF)xLReWm``uOXN>v9EPWhh2G(~(zQ`elKH8(E|m#2 zfm;S&A5@cL9QVD2e#rmxH6h0?N1~=(D|D+`CSbkWtM4#~#6cK&=qyqJd*5BRyms@! z<06#*D%RP$j(jg_T6OLtLf|0vx=XJ(gK6#Z*@-4yY<*~lj$j_0q{o@r8^w=-fxkIG ztCBv|pWfvmUu36$hzol_*2HQ_uUqEm*)9>{2;V$mk$WJKNPu2N`l2Z#*KKxAY`9RY zeb8@8QSN*E>l)QKh&j%I93R20?>4L&qa10g+aKO3pk1MUxW4E(zBII_OY&(5r2@gz zn-F})!u!Vgc>SX%48h0X6VCmd3}1_Y?HE$m##e2XWC+h4!K%*|mwK)^ynUqWeWRNe zrn@KQMIjbB?LsX+R{|@_tAp6g$H7U$kbjz>P1@Fj2rq_I zWJm^2K(*i4wVR~RRk;>Uu%G>4OwHE0YXKfI1u%+wwGI9L6wv@U7m*-BwGUi^ke06K6T+ zObAib!hG|gIOfAPoUEy&PU<>i%S(Yi74wEySe7V?#HY$RpV5&`ps>aw7n$S8>_E54 ztzJVCqlC_dvE>d}{N;m191!hm?*W6{pzVV3^U6mUfOnE2y2yEESdrr`Eem4pFkHTB zC)QY!KjaWdvhm%Fp->a2t1ux;XCr%Dc@Q zBKDjMYV>edz5u=xn&6SNRmTD2i?_7_miWCw}v&()XqZRWi?JAS&6T>a*%kbkyAtg(6y*2M8;@zuI}w{V}V ztX~JG{nymqWVk6&0P*{Rc`*r;oY9oq$<4t_R$&oiUEYq}r9;AcMO$_#>?2@pzh^mp z3eZvf`N6_U+asKoRq#EQBqd}(EWF~EksYP=adQ&8GrF&bFb~z(y4vN8^VTHUb_?)6 ztBq!k-3NbD1*^k9*Zpq%5b>+f&LD*nXf-D zPSJ2MPN?t*iS2Lu*dH0%0pr|J8ejVC+lS)rE>O<3FXq;jMWki*W!IL{>h1=e`v<;I%s@e6LljIgjpl7^=E8hJ9NVvT8_Z z5tnn%Ji&1%uM^>2?yd;O9=yR+r0?E1qZ{p*7ypc2n;NIji-manu1c}*p6j@8lb9Yo z+D<2fpq11CNu@D1pUX1^^|fR4$@Vm@IhrvJ306a&yW>>`cEs9$_p433RI6Qao!{oi zJYbbMwl!x?z7JV76?GAg$j$3nIW@F72~C)@mbsRw#qJM@3_7pSKC67|b z%w>?Hgx${q=z8{Mc(wVwZr#*@y5tWFt!tO>(hr*-FhcF*fWGx2P@cbwA zMjrI@h1B-W!%=r>vU7`EGO#w}U{Qo7BWQ1qA9c@o{WsTQQ88$5THK3NijkkNMD)tU ziMb&w?^+CF_iwd2+0A!uK=s|~-u}5{9#x0#&59gxnf}UqDX9Iu4i{dL(L;4^sMT*V zudZfnNK%rH;0oFIUvFqSH|Ip|1#{D--fDN_^+3*LU3*bVf}!9TZqWOXoq6%2MXRGQ zR*sFz^dX4l5lJKAeQ_n8)7`JYmx#-PyM zEa$)~yy682_Zt4n>BcIUw3?FwBWj$kJ|*yYx~ESjvtCCk3914wmHbSIt`WJ)3zh`o znAVOiw|AUxVb{k9fHH8vN)|rqN&ER*NE=tzHfK-Bs zeYj^C=yFoulGK-LBEKztNj&k4jgT3cO+qQ@vo$_;w#u87eZz8szV4+O-I+K32BHrC z`!EQn7cJSo9b5iTaXcAv5Y*FyA*bmhii3(MlYji7_gP@@4twb@vURpFUYt4HK7yR! zzebUs$-HkP^HlQduqlg|pcxuvCO0Qb>totYAb#L-_DkM!$A*VmGGHaF-0LzTn(5*% z<#nX~w!gGJZ%8~Fc;jgYtB3S{+BEbjUBgMEFDH;h_?>8+Z_2__FCVbiWRfLa*^s`! z&emNXbYBQVB~&g@)Mj2C02NJTNRxV07L65`Vf8efaVgk$`LScO&4n~jq5lbWlL=fu z_;Ia?@>&~G&mg(bsA~uRWbL8bHwwi`zM z*^jFTEH;8{Z6&9FSFbqgU&XXyZ@DIHbd|?Tp3r^f{OU*IG8(In9NjQu8~XlFr`7Ur z17$R(T=3qrXHv9sK;=0VbaM6!a{5&SUK|*7^>-_9l(`aPgbAs^>LHkYUh{ta?^z;2 z7)AJMD<5}_jH3l7hR;b|brX;jV!OGUB+QrL^gWXlT|^9{d4|U2S2fd|9-;eZ!|EfJ zdUsH7JlBlxD#^vq%8-Evqa63Dl5pTm3EehNEMbrh3mR*uwr4X3$_HnrKh$8+M_Qxn zQ~Pa!<4N4wzgR3POF*czGv94uG2zQ4FwCg*;PPvNLAS|20@MHn04e11zA`XYn0#{rp??LemSD zcuo$Gw;VdG&#R-DMOe9iONNZk_U-LRBdwI@aYk!L+iN~l0?>;f1ji58{!}4kX_%d0 ziTK9!&4~l#+qELctVIX-q&`BEscSl7$K&}YZ$U957+vC9&&h_1X|{BK(XzdSHE` zz&GrT9*n3Mj)!3$@_R#H(=>786Aq%Z1dTU-bH!YQ-s-o|R7$zBb-90aK1e=%*QWo; zaMx2&pq&WcGy#1b(gI3=8l(bKJgoHmx2$&a+mGK4k@a5{}@ z+><^0i=Q_{3RGX(h&I^OzF(n`YtH@#_nAVen|)~T4bxvL11}m#DJ6q%wVk`CI^Tyi zjg=sOM)lx$=*zXHb180mVZz&@7>_>{5}5C{HXR%8y>VikZJn(JdLke>8L*n z7f-9>#q4)=;)IhwtqtWuy#Qy>T1&ysv4aiL@ne4 z?c7=E)r03x6ADw{*Cdn=dk$td8@n6ri-_Gp)VyzJ&8lAgrkHYrVbW9gruQmwM|tRE z_#*$bp{=`tZUi^IC3o6iM}5PReY>yWujPOuB?2f?QqdoLw3j|#BsTmzo^SzCu^@;j znBu4l@zhRd2lWS-erP3&O^2}JE3x!T6ZnN}ju(^~3HoAgV zXk#?}J=YP2j`9-OqQ8`X!-TZ}u?sLF_`Ya?eySf+Ai9n+wK+hW@9p-OJyPJ5S=hRJ+CAruy6LC8 z024AKr2=X{N-Xw=cRGD39PR#5hp7ZZ+@r410b0A;xR78Z0 zWGUSQ5zU{USVscuMQZw}eo+3t-#s{bv%zip+3fR>r6&@Q$X$`UT>T0hc#z+T23`(` z$4J~g3rGfoSKsGF=vufl-PE&f^F7Em=321DLDXHbP2!8ZZhY+KHsrxnVs8rEkc4tk{Kz|c;yTZ^by10AJqw8!*`c4!O0rGj_XIGPva@865DiOVc+ZnFx^Lew z7VndV2kiq{m2S_211RvoOcp9|04~9abqE(BklayrTYn6sGBD&}xu{#aO<%ucya5_x z5Pii`@6Pn(%FAd|Gc9iK>&h{YF6j24bH+PkBn(s=exJ^C%3d3i@4nM15Yf@D1CLXvigr@i9^ONj}=9Uo|C}%&d9xxF49AHdYRmLF|4l1!*)C^-I}5=v^Q&kwb`PJr-n~DV-XL3h1%|PmJU*b{zS8IgC=xO zvFN{sRkWXdc zUcTBGN?Y$LQ^w4{<`J9}V?Zv>H+hx_XrV$yB~W>M9q5}3d)}B&=7*EJvX3&@HZllN zOE!yUS8m3bo%gz;YIm1l8Q78Ua_%+N_iwSXiF=TxPJ^9lEKkB-tsloWgj|(pU|dSl zyxMQIMQ`qN`O@A63!_Ysl)L3?|L9@X#;_~cx#yKO)_C>3r$BlFi+7*DXv#ObAap7@ z8E=x!<65|^wUsK=`LoxDxQ@r4i%R3PHpYan{{=J@)ee6*l~$1R@h$V;t)Ft!kor&) zqLO08s*6Vz)J^w`;yRMv&m<+$$ex-YzRT7N6YCr!TdEU`|Z#A@eGtWK)A>Q zY1k0yMFOh}HB|=p9K!Zg)-|@5F7-0x!9^^K)UIA3TEcK@O1DOYgHi zt!=~aY|TUl~gx_se8{aMR-@ zYtIyPu8LVz0-6gv_+@yuNBP2Dd)wm4I8Kcb+)BuuJlXbDEAiwB{y{Wqf)l65B1&q% zC!KD(9{ttOV%5y{uo-Z>^BVMC%OGl3Qr>0P)I2;QD(R>`pkPCsOmxvg)Fw8~f3!-u zEPJ2nKqga$u$LsgD>{rp^JIpjelKrgc|6bj;%4O>$OFCjI1VHWbY=0}ySW7{QhZI8 zI6=8rn*n9g(x0}}ii?E8}+7o_y`btu`=Z>L$kaD58@AV0Zs{igku4pizz zq=!3|m_Xq&PiiQO5d_A}%y)O6(VsqkY;%&-b#&GZdKB8s`gJI8!Xd17W8+$Jvq_6x z$-Uj?ZII4Xo!&-bPEQA!*l`CRj&gG6BrCsrKZ)Xth)i#ag18QxW*N)un}eRW-G=)z zfj%v#Iyw*%2Ylq=?z_+;B4`-XqrUn#LxL+-=j=gCUlVMGBOKHFP*3tFpl&nGFM@~^ zMaeLZ<(qoUU$NID{Jh^Q7i7XsJ&>e~9!^*UYK*((F?D5_aDgUt=XbRC{6>F5|3z_K zHja@-z>A6rS~t*Q+*n_oc8YzJMAM6>NjD;Cn9V#oc`r(O<;@>IxcZvc_OHx0akvM)5?h6 z`#-ql61UBo&5th$(`2`5Ew(;^`j@e%1*uEAv6gx-e$Ap#HZ%2ol8!{MU?OGNvRNj= z`%>c(6)Myg9n?WBtIkuMD|c(avP=k0TDOA_abU9HZX zZKf}4QcwY0ur*}o#m2$Hd;Z4f1)zTE$f)5l+_#&>w+myqNoz<#;8AcPcKkkVI|ufu z;8MRAlf=zK&mmI&;-q|&338{S*{UaGq$j?08Hv}Irss4W#pdGMS&$N2zwH7Wpuyt| zy#?*LgYDD}2IHOnh+c8fJ`wIy1exIC?h^kzAmLA$LiSm1nDxqD&5Xp^}qS`0My4Qchj6pY-HOXsx5Oi*oPbc8wn# z8oJhcEU#rQyYJ4+pu`_;jIbMCUS)P?Vz>v5{^(^rpu2lp)Kn(u4I#thlcqBKHAh^N zP#xn&wmWZvwMb2~K;dxyT%j+RXYy|tFIV?emvdNU*POl!gA!eGl=iL8F6%&}nx~EL z0=hm*qs_6@#^9PK1v5WwlSWe6O+aH2U$XnkFOQ()yV*!NB0@mR_tDoNBiN(*al(~T zTmwb4Tg7!G_Y77at(12`E-C;I=yHKRP?N?dqHuW@(0UeQYR`B)S^__0i(bz?sRvt%T z?9t7Py>X|$Hu}WUq|Od{xtX~8&ODw4s8~1t{uHoO|K5>;1NxpoL1U!b$cHj(&CmlG z0y~CT_}ku8+VmyTbi5mbnT{!NdFOUI=M}`6($QQ}-V+=7u@#!yMfRAmxsmigU6GH^@Kz*~N2(rJ#Gc<0EkNZGc)>vG4ql6m|VHfFkVof1`%wNv=zxaTL}9d zd|kBDrXAdHfw)uC(l)&(a%DehAGB-(E))RLcme{<^Z zMLZDAnZ-*<6H08CRlY{ZmCI^j8jgJZlT`B897BLp*u%b1-1Pm%+Ov~RA0k>Fd>Jph zolwKvk(a#8qkPC)7*`*s;?3ck+U2@8IrIa(F0bc^*dDZ3Nk3iRiF;${RgmL) zbP&Y%K5WG@FVwmO$24AFegkDALvr!#+nGSqt8r69ep1LpVa%DJc1b8^4*I4Y6rc-I z$ZstlT;HQwY~GB+ypIA4rAfbs`WSlazf;=c3X4;+s#$9C_0TYm!o6aL&^;_=Gt}~C z(QnExjwECf=?XPlyRK}w_7tQxkdTOUeEUXFd%w9sIdRBJg5fY&Q(xfr_jf3V)930E z)!HXQslc zb;qUD@Xd&9c_<%Q2` z+_l~^kI>%8YS5dB;OFX*ej#t;0t*V^YYGp~J9TP^(_SV7galTcSf|*&HMS~JZjH&c z4p2=ZpqrO$x#UZY{Se(BKv|sIy{A^Zgz#ul{*jyWa8{!5Y!|nb8GB++t)zxq@vq^K9_^eD{v!(z+n=y!jf+xb3wcNx$iOt9VNf)&Gc58mge z-e`i6W}`cD{vPx#ECXHor83Pz82GRwrK#a6N7r4Fj%fCZ>N=5Gw4wN|;`Woe& z{AK%nf+bkRec_W-?M-j;8X@++(vt(j+vRwm-VyL-NWdrbH*V#mP}a(pk5!=PrGFYX zy}71`*#W|3`dg0{5%pA6Y3{+9OW|!R>#b@}lHU=Ca+~`+h<%JnSL`t@PK{<0o`JohAgN;OrX@IP`X? zjNVRlRkRT#`fOu-sQQXwZ6mkIxketgu`_>9N^r8k@p_cutro_G&_u4t#MP3Rr(gSq z8)IJPYf_>XfvKe8ZS4#3IbU=a>Ap(Paf=!mg6g$o^}-1T4?-Bey`O@sy#6BN6N6T( z@2Vk+sqAH2bqKGHiuYG_h%83NPJVGO4u&;t3A+@uCiC^TJV~rpjN3W!jH0#Hy8b`Z z2BK>8ZR@W@#+YY)8S#ROa030xlnw3HyOH7zw?<9wd9gp+^9yO`v%mSfggWNWb#!<6 zSdACODv*JED8s@Ak*l(qPIAvOn&bQ3yAd8EwB&eFpGw8Zq1dL9<8%~3SgMowjQ3WP zBkZO2jM}mqqK8^&Gpdqb_|E+ZsGj;x=eFtF&pAGk=zsge#VmNYZoqW>Z~BB zqmMBB;swISsruP8G*i!*@v7kO{qXP7axBzA<0<2W&$T^@a1eSbX#o|Rf*tW!?ck!V za&hitML|*XZ{1OkQOU`;WbC0G3VvRHVoSkTuQD+33YNat=TgEz6f$`^h)gA=DysMZ%YQxkzyFp2qBzl3sOG_<2)2!Hc!@Skl)CU z^3cRDV4v!z+e?u1ISIcox1LHL{eJ&I^4^|)-F0`+XC)<`@GZLA%3C@#^CEvkF2aoY z=cUc)iT+$&P#*#9bre_OfEl<%-z~VWpY2gxC{11%K~Z6Y9@Odi5xV6-j*JuU@V^8WsDz3T`=QQ3PO2l11r&wgdzDI_0pA%QN$*+hHOB_GK zW>(RSDpNC-5xIZxF7w+9?*n*F3{F=Ctmna;TOD?ucyV@)exY^qMt8F^N8Q^Mmr}-o z2r4m$2^rgSxl}0*O8=cXRGn7It;C??XCtuI-kUKb>7r=bn|#9!h11=Mr^Goz5?iI( zg1|?8Do)bkLV6dhpWF|8=~Y-<5qQ9`6QL95YW0VAtEVA~fO0>FX7pQsq(k`6ln*2O zqEw6QK3f+A2KC^~hkXs=i0xLw$vQE@IT$A17Yws^e3Q`=je+i5{ucexI$vZD+)vT7 zuB2gMhZu`%k%;=!wv}LNoW(qaz;#WNTIrBMGK9&~-Mb4!M(sj0)>#t6YfD0MBvs~K z=ra^wyzFXT7M1q(m$R0PG$}roUc%vv@bEFYG$QAiS#1C43&At6C;6H8U-kt>HXW{UHh5$(ZI!ZWHaiio&(xH<-=gutBtj#myp1s_ z_AyX1p9p%0VpR&Y@Hob;#C^OYJk(3chSfEc-t=0Nk;hRymFE26^WGo0hSMlThGq3? zAowj&x-?x))lxc?!Nb34gNaa7niC18N^xaoA|ZdgEU!5ua0}aCR=vV}#zyWV&PD$6 z@z^Wvv3qj0`5#D>23Z_pr3Xxgw3!InzHzpP%fI9b-|4N_qYLc`YNHyma%R4$6b!t1!Y z>Dvmg)8hC2*A!t@p@U(PnFuq%pNBRBE;u9k{xf`m+eS+3w}nl1>umLU%SZE-QHk?W z>3MUlHfxvx5@^wyOF1?O=Ap-5{7=*k!{|`Y-+g&>*Q_v*)U_>4N7&xX-ZOBh_K99x zAMNI0(DdK03asqy+A9xqPcS{pXiP)!>+#l;%jgPz*{GG+Y7j1~jb4BFP&;j_(;i18 zBDyseK@@uRR{X>zP`y^*qYtHJsghXBrrX+)vL`X@w(E1g^ADELX_&whuULZ{X;RXc z>?x3gN}3*7^HFb`jY-_PLQp=AV*I^>3NEs-0;W$QL-Qo6<(8H-Q4~=HqD|Ia;cp(L zYM7W?e-~a);(5eX{6$FL^u;YlbXXb9vm1@0E`5Q;wj;9FPl{&U52Kz6uCbCBy+xR5 zc=pjLM>p(8y}X^2B*;b0m9Z8D!w1O`CO2-<9w^}Pv@DFZXkVEq8~yS@JzeLTK?((u zilP0A-s4bCCU2&9@K@S9U&-lm z*XY)AF9U<)pMSKV20n74f&w32I*7%PzJm?XVts*`yjH_tnE2JO6?ADBnm}sK5YV zOGe}zX>y_kS>W6_14>TjW$tcLk9?o3n8E3Z`@5@#w-Bul0@c{T&^+0fosSlApKeum zYA!|L4p{DTq!Uhx9X8Zq51oe`$g1QL`IIa2Up~{+&isl4vXd>c8r3xS%zXlJg)dq6 z?WaN=TBn?@Whc6H>D(Fm!|@H9D*lzas|Vb8!7-CB1=%Q%9kGbE3GJ^VE2`t03n%?x5qCgct*dJkt& zSnS*ws^z`k_~@dpcAxgz=j^qRf%R`rP{Y>HKH_BYo2VNqM3j=g^X=sWz7CmO(TI?U zv>qz<_Vu@L-+OpZACNwZx$>Leh^}}zBGaWyyO)UZ1os<_6jS2srj$|;b435K04x3R zwO7|;?_OH&Giloow?~Qlxfe?7FPXXcL~-Dip*F>ubUoLyfxBtk`_np~cq23aOw{1a zVJlkVS3-nUgMTm~n^xVrA@pM_L}0KkXeR5YqFcb~{cO%hjUY>7mXiQzgX!8_dSB$n zAsTgf)mT8Nh1q2Gl~>7*WbNm_`+c;D*F|O%!1G9W!rr`c(tyfl$dUhV;IY+`B1*Rg z2Zfbkol9RtDSSrVV%u7k8Ha*0=4?e0R@fE_C({LXCkD9L{B28ah=bYJr@{ zfwp!$SHWYb;pv`aqf2nGk&bL4!&p)`$AOO#W^6WNNy>_ID{(Sbf)VJwDnm1bPkYZd zq&M_y)<|2R&ihwA>Si8fj84{aXNiEmr;!qoc9@M*s^uosUx_WCU47bv_op+Pk{p|Z z+o2o4V_b$*)5P3c0+|k5l*!GtozsPQfnPO(9#ZmB<1>f-#vEUf{(j);cYQ#nYKsC zz^huY_*T$}*b`X==S1{%@S?VblDKr)Dmfxz_vrUx$cdCphvDrve?kje#{Ywegq5p^+}7hVD|N8>FR`4rxR}x|u=gmIi4_>25}(J0w*=I+YFy@8RC(`R@0B=A6CP zUh(dA)_Ru*%W~W2-c_l+J+&MSZEpvM)tXxp!qu zj@jNPlJwd=&*@fB{RY%_Y_?X_qi0DvJqo}Yzlr;Du}Swv^RDMcz;#Y~hXdXG)#q3V z_f=BKe_1yjK3hf4^QMIuFa`-MxsOk(7X}3RF~7i=+61}9WBw?^$)Kz9VVsVY-;C7D z0X9ZepqHZRDK=+5Nfk6ci?GI%)#s;?j&(`~2{g{*FGIChFmjnS&!LmR&o9t@f4fG} zRr|po3(pE@b^N;Xfs_w%&N6dQ*VD(fHBJ3XgzP7en{mYHreR|I&k4iP^4QQSe4BZa zQvZl00w1?Gi!f9U-)p20y7>choOjO8yX6FHpw*rSiv!QI(yd8zXX{N^Q(Dc{>F~=a zcf_vQFZ(;`@){)tJy)CYfHp}jh`u}a{}%LL?*1F1OChVo&R??COA0y34TN-l*ZF36 zP7-&EQGy4+5-Fe-e?xsm=A@9^ze$R`A7%?T)T3TAUqFj!LvsZfSv1$6``?>*eTTMP zEdGVPAMiHBB#IwoY`Ix0HQwrJ*vp$((6AWa4vHBH(TJmwm~3FY-N;DCLAhET-ro36 zba?yysWNeUKCU3-;Yix@=j+$M&zk2e`+FO;cmxeGUm^x_c3BX%bI}~h>#izE;HPR= zIo4S?adPVlQ$?s#l_8udS3_=xR=oP+_q-aewA?rEYVn}L>C`bgi95Xd3Fr6t>dRvR zE@iwo-S^)YVeH&s-xKQi4bRnvBY`B_N#eyI9fpW=hua*PQ9;Rt59R(3tm`Sa!`r9T z_~v9OY_K0Sgp_HI;BW#y`MQr1o*Q3!ZiR{nLswZ}p>6yX6=($PdLZ-D@?1d$Hd>f0 z#QG_ye63FEupOg|!hzj54AH-K)+=Ssu|I>P)|9za52xr#0OO&8N{thiv9H3y=TzQn zhli+){MJT`Z@Bk$_+3&okZ{3Q_(KCHYHzgsD`!F)KNAFl<=LCp9|%_DHfB{Q_fwcL z=@5098|fdmA^QwmNP$zRoxyd3{gP>lBnCLO-nf6ukpxBs96G+}UqN~0 zxc$``+tm=?4Gsu$xpY}Y7|^H;sKjR^I> z{TdE%!Fc)2S-((<;OPp9e%VFg_gLCOG&7uvXXtSB65P6;aCPc@{E>ehxOovo`)5O1 zRODU#4=*}2-E;7p4*D%m8_B0Jj&vc#c;v+U*%t{RK6MdR)U&^ar|Z#`|F<8_wp_WB zKK`YJvgNJ|6j#juC^hnKeR%J9k0RyK@^wb>nJ-s5knTk{6unQ;5j z`meSwrZ$09pXKVQQS zwTTbXhw)Q^1#Gh&E4MA}v&`y8I5yMtn2FlM9~3SeIU~pra3#}!DKqKlX0pi5W7!+HQT;tb|i=?IEHb8!t_FtD;o|mb)4uhB+0QZ+p|GX0&3`LjsH@At@ zBAu4EqK>{*GI+tPUwf|AMxqAmzpNd$zWiv-6j6ak1608HV?N%keY4UYyx3nL+1_~~ zS5Zr>+(J1@w$hy@{0M%WW}kec+~RfZb9|cMart;CwNWli3e&bD>{Y|fW6#FF3>e&I z*;A8E__X2y87#NwZH8bAwOOVy7?O~6TZbDITmSA>=PD;9sD?5dS33O|+AVW}H!L;W zRHV?moWDxWcDU;F2{GPne1n*;vwVSN^HqohNv5$i%jicEZ?60j;PQKlq*BTtNiy{I zY|^~@6znzVgDd7&TI;(y6F z=jQudjdc0L%Uw!jeL`>ab&QQDdy5n_z*0Efk$y?CDh)$n59vZ_r3UB6i!3jJp~BJ+ zwGwDGeRKI7Lu`aLOFcTkgkJH+BkR`^ke&T!sigf@KD^Vh+lR%kti=)B#a+AQSG7;h zsW`B@JZ2UZH9A92E-IYsVZ>m^Hc&yM@$mEOA7){1jxR0_nfYGt&3eeNFFp*}jYy*k zd~9K1h8YCa!l?|luT*q;!-0MQvwouV)1A!hQyyHJ%BL6rq@AmSdI-iIcd3#I#R!(84El&a)AeFG+ ze69=OMY0{ljr|KyUiV@4eEOrqdbssV@ORqX?W1j%%CBYbB=SjDwz#ogeq(*q#Uzs6 zM%Tyo_)4)|XaYZi3<%lq(tjDblk@u8n&DJC#4cH!GNBJkM;D6&P)#^H&N8NH5b^Wj z?UZXC-)NPyty(GB>O|&&sjjAqQtH;TJVjQ%UFSkm?8&q#u;&iWUF(?kr=4W%VK_^W zS>JM-`Gbk3Kb;m>UyPazb=r%{^I6F~UJ(TPF*se*AhjGON=bPzxVs6C#aBomaDNt{ zH+wpw7*JEbpkI}rELMuyd~u*@Y=I7Bjf2Di?e&k)yLyhM$Q#B?O_}owQbW$B^5}wt zy9oCFT%e-|NRd-X+0Fd;^*wcazrU>bcp3kmd_|6`aq0E1S8xL3xARw8v8HhOnB!@XuqG- zS`~F#x|>lwXI~^_KSD#k|4g`qsO{~*3vaBmnG}{j0tSA^wU~BWLnPuQQGPB{HZ;8a z5mr6!qopt}^n^#Z%8Sh_?iO^wWyy%S)uTK)hf?N(NncwJ|B8ZCy{pWwu8FSC*e+u4 zsSd;v8kYOYa-CZS{Jkn4dw}I3gKoyoIWKTGs;KXYpz2bT#b2Ir#@{w{N&KT2hW6(2 z`JFB1u=T`zXy4P{rOu z9`*cnFn98J43>p2z7moytVzsuvXDZ)oa<^iF0@S5%`8s6aE(LNqS1^$UkwxuhKmtM z8{FV`-r}d+{w9c#EP1o@jr&ERiTW!BWGkrmCAcI6h7kZM+C%T`tbgD2#9n^Hzu51z zK*@J7a^N-T;e27EHH>>F;wsd7m*rg@u}0rLx4X)`sVaWlI{F&^6u*1^;pfn*JiRqS zMU9&+m@#LfXG9KrU8R7L`>XlaQhi*9%8Fes=~+qau}#hR)t^jFP}g7W#={72_GIkP z2v+Wd0n9X7Zf&7Ox6wrtDF z*uUL%svtv&V&f&UE%0$=2KO{eE9J_I)XyouWhF>(dC;G5{CX_1ZrH0j`V;Naui z1>9E`WVf#cn^nkyE4C*a*(nYL%Bs-_25E$ys8WU<->1%756P6nN8%7Cv&dXVwu^K5 zRj&lLho4#B$XEuE&1qw{D%qzqs3g7lXS}eGE%NZ;)-yCht+lRaS>m&ks$^E&w<7Ig z!It>uc0tl&x4DhK`D9rn#jT4q#9NPUn6|b_OnAfx(Lj@+g+Im(g7uY6V?X_jd=u}^ zAK^OD=5{MxXxuzR7CbtuV3dW^=wPiF!~gwgqT><4;&aNk4^UQyWzRX4FitjS=4F?h zhLG;w+e|~#B0GV(YQ0GxHdeN{-WN&c2o!fl$bP~+{penDkPp$dZuw!% zI~UJZ+gxcgIhW(MNYm?ud2|K0u{fu4KgP=P@@~vmS1UJg`we2+`EM`B`HAo3pxO6b z-FQh0g^K2;BJubNcRg0V{1IJW&Yx%c`eAVDohGS%<=``#c<9)N=7YIO*!b(0|I<6c zwVD9*B622k^_p{+RJAf3*&EHclO#<4BIP~T(jcCK&VhE&Uvl?G>^7PX1K*xJ$E~D;ZnLlcC+|?e(~o&vKV{grtq{^hw=F zD}5BVIR37$udJYZ9(youAsz4e%rXUFy>_vv_AX?3L8_EN>t%0!C!yi|%{rD`HA>6_kT}QR{-OmE=pda=pE>;DM`cd9& zE*M3Aet2{J5hePPBoe3Fr|rZUA>LddzXdB8K|Ff6a%r$e#_J;AW!#uNZh#+mpy6~c z)a_k!YVF{NpXR}v9aaKv1*37EY-?KY@7VbH`u0Td8kFhUcxdFcX1ORt4qM3dMg~hh zealzyfPnt-L5a#fW{rOKhNNl}fk;i@(o$r+Tuzy=7f19^+$p|eR_oc_HHpSoEDQu!OiIX#k7tl>Gh6QB)y{gmRIHbGKAOSJCXePhVQ z8+u0&F?QklK`pXv9S21j4E)4?rWAc-&nmn&`fRA(Yd^1GS-p*GQv-USva*__*M_6i zqLj-FtEPgs<|#kSv`w;EC35NRUN`CA_cS{fjS>!>P-MXMM7n*VNmyizixsRrSc&t_-S5oUKw`3W-90?~ z{U8~lY&~5K0xuc+$bVkzeOd9Y|AR8z5A+7LwqwL@($XJs_<4gQqbBW)Luc!1E4kP+ zybt$vS&n&F8Lh&DRoH6?5bIG1KD#&wN{_>TY8(D(!iQ6?cwlG8dIU&YAl^W3J(`A4 z-=AD6$xU!rx*E+8UbQHA<|jt01Gv?_Zfw!=ATeT?GfDvOuT!tI9hyqdz6u8Ic0U)2;R1e8xBHnG^cmwA_rGxV{0wx72qSlg6IS<&vm&QHF=7LZt)E z-^c(W+T-k;IGVQxCYR{g?)SVZKc}Y3ZP#GsDKz*`l=*Umo_g`fTHtP`7yzIAw*e9z zJ=29BC5vd73D$)I&J}hQU)NQj#~=gVJ!fOIbX}S_vC9@Q?}&4CYco+M?UjY&wY&vy zH^zpEzxR()(Q;tEsY=;OL2zOa&b-{fhxSV!hHZ6kh%9LaO0?K^B!5KWBeoaQi@1UL z2j0ZfhB;jw5rxqoiYG@kLby^Kk8BfW44>noEckAIc--^Jm?YM9pAm)KbmMG_lv7_S)d_{b1Z-2Fm7 zRlxT*HHzn?rDpDYvH5Xvmk_JK^z?h<4m;p*N?HUM+CUIEQ}s|n zg&Oo+WvSrgyeM>3y-RP;(A1G0@jxsny?y<0Gq8p-GaW4NU1@YZ<4R)tDw`?qBY4Qg_TrRALuK)WBhDuH7VvlYy@) zmV5o_(pG%VP2mS7v#ryQSq12DGSrBG9w^fF zvKF>CDKMsz2clbU_8tlit>$A?PnNZ&aS-cala9MMs?UFiRJnY|mFsz~e`)gJf`!AJ z>>c^As;KgDh?$~psrRp}*!YoTSnWL#5Y-qLa}~_E)o9-Wjb!& zaX4J^`8Dt{izjr#0>wb{K>9``_uKO~B7P}2h&bF>pY;q-H;jeoLNqcFqgFW5qhli@ z-WeB-6$?a!HXfE4acj$F9M3c(wX>jv{bL%|gv;~?4vANZ(skfA1XSaAOZ6`6}NMabi$|q!yxY78A6RRj|-HM&b@#4T*H$3y9=K-Mh&1{ zCSC5to?ND#`T+#buy&BeXoZIT$vzkKuW<&=>xKfiI)^#hBa*MnPyd9cmf!wZ-xB}! z>Lg&^f3U~_VwYTC^|(?TBnx8%f+RFJyIfDCVD-@@CS`f{lgP0j>-OrR zeB0rZ{nps}q`*7%nYnh+(+c+hK)01stk!D0Rw?%(xZ#YvemAjfX+m@Pih5Rp+u^s$ zTM@|^OQPc3OnPA(}0w=_5njDJ? zyK^Nw7g?<^$F;UFg)Jd^NzeoBtO8d9C6V&vA-NFV(opzM&M!ox}m23hiZA~S|V zErreL;tv|8CJ?9{2)kpy|NYra3pz3Q&TO;0g@mt-tz&T zJJG4kxk5>%v1p|d%angUrIY!?z!Jk9ot2^fVks&_;#@)TZgb`rMp`5kuC_8^kEWI= z&LXm$AboL9eb(VPo-rq5{&+V>%TS|_-fvG>a*&=_o^{YiHQN%?HfG;Etq7$`T8=xE zY4B4~=@+y7$A2n%3{L3n;?7ZIVoGa%ckEF9rPyn@ zOS|N>675d*@pzND?u;W{D1;7RB2*^77CoczIeCD+o(ArKT8Q?UMh?n`8EO9`=>o9y5EuEO%hp3FLwkpVz!tV&6<-8-Fykt+_UfOGSk%n?_G{E zT=Cx6OKR9&M`4-EXT2P(f#%-w__-}Ee`ufCr7=>d$7eR}e%(KN-4l@vB0Hu|&;RDzaZfE}3~usgXQZoA4HD-arsf-=nFvde{cYYD>XjP%L%OA|>lt zJ8v?6rjgV>nuFUzYx0F0>`rZ?LEahy`4(E;fOkWr?h9-Rb}B81-LhEB2WybtPPz|e zV0?%5v1L^&TH%2w>{N__jJU5Q{avA@DcUqO7UqgPW>*O5x=GpDgn?g{o>|*D7AZqk zaPPCQG$_asrptKTR(VfR&Y78&?DQTL5k@FF+k(CPGw5T^WL@EdJMry8)66+KT>ifo zuT#uo^~9@w-;8|@@;9S~4LH1kB`jO?hV}I$!`=A+r(o7V;&TU|Lsc@-lzS>^BqmBI? zV#Xi^vS|N@mTyi2UO`wpW>+=l)bQw)?r$%9Q|`5ARn>q#ws`&aUXhf=LZKN?J_Mz$ z70d8P2lu&N%ENf+sC#@*)eeEov2r1v7GTiFWsoXH}t2myZZ+vnp zSw=prR6$KwwMxiN|6yily7WEeIX&YE99e!3mNJBghnXS5aaoC1zeztVS0H$CN;)(Q zj7NOGP(^=ZBul#Wo5h^vOf7@JJ)=i>q^F?j{;JReCGcRy8gZ;&i$N7y>Pp#wMel>{ z*DDkJwgrIj`~9a9cYEfyt`QYv)vM7Fevo_4Ur-kSUKnx7JL%W-R#|6GlBv6-(ULil z-L;6Bn-X7Nr$yhVbE-s#uMVqp*}8_wC~{YfhzFQKqilI2h?6A(Ss(xgy;`>Ar?2mxx5=@pc?GQ8^E zfEza0yozA5u(qQP=4v*;u(+N_LVCn6Z2rPtN46bo#ZI`sN%{0sz}s(F$2IuhvXAq_ z$Be|=z`gs(B{B#(#XfyW?GFf?mtLgy$W}3?MiL-;Q&6)Dx~c8GT-A+|50=B>+S8q^ zeD1lWz-60%x(?<&Sb@Y0aD38$^ZlxycH)R#-m4OpZ-3s8T`jyjv82R_mhjZUktz2pA>QW_aE9IO z!W&^Phm3^Hcar$nlK*v7^wKIu;Y9GXKEPf+L(=aVmg;#>2B0#Dhg`)g>YEz zv$3k~+7k5DLJu5Bn6^^D3Y1lWSL~v9ntKR&BF}M0&aRtd@Ijgd)C8;G^bmI_WbZ8w zVEUUf*OD=-BngC1?XMaRMZviG!18mra(`VQ3zy2)AL|9{-2eQt4-hLgOb+`~+T!99D4G^Ox349)Tr zhuhA`XIu(QTtpZX4p3yo6HQNE9k!naCIj$51E!fyDpy*BRY$9JFZps}sBYW%{k^_* z{^X`5>-Qz6p5jTzCC2dSCJr$Te~3GV@x)udlQ`6QcPW>iTHfx+2arz}RLdvdxY#aW ze9JNTGsBDS50h7&S(39(U*|T2w(pbxM(NxqW1lxVe zbls%(=f@23=^(CTcD(eeut%78A4b-)~gR1w_Y&$$hM?i_Q^fg)?k%+a=Z%DPgeJPu$rVElg{}c9%#c@ z?D9Ecm06$6)JFRdNVY9?==`nvHEyw=&vZ*fTyb+fPwiL~6wZ=Tf6mqX5gTMnxw!`h zIgRxOGe%EZb^ADkph&dbsb^3pSc8twW`pS0l& zR(Q2f)kBL6!NO*CXh3bFlvo z)lVVrET*3GnPw8He@nhCx)%X(so7b2QkO{Vtbft3eUs@0fMS+aGHUjrp>kz-+`ap# znPGFo#eUz}2x~kd?nrV7CId{l$Z>n4M|WMy6FZ2=1OHqH$b?xy?1r%5wJJTb248*| zNp32F%&efs|KV1;dcwT&hHp|gPJowNe7Yj)M!2N{4_-*vjGuj$p#B1a^+JY=>G?r2 z90#HG_v58p`A9_92kDD@2OQuy_DD!Zno5i)vnz8@Zp>q<=7n|+6eWL)PKPtRx;s>) zH2Y}}jnIx287=Pq<9D~k)qNYebdu#gAww&6j}g?tBw}>MBgf+knYP%dV8lE8gJ=A< z#u-Xujw#ory!*Ra$IRzZUV@I=^w5~a6Glqa4AlgXL!MeD`)BFBvc4X!H7zB?f-;jM zHk;;qStJ(8v@g`+-UwhTigt+tzE%}KPEX;o4~o-_TZE|;j~r_8)b6IC6HId1OX>Fy zuxYD($xc*azC_hwKaB%0oF+F!Y3l*eA>9o4ezZQia=4Z{pIjz}odSj<1Xqgq(I?t# zt&`SXqK0KQFHG*Ch@OxX=Q1DiUss3Q!ds^PF_(DyjfyhSNgX~sy!OM{zV=`*(<{g( zw~aF@%E|eL@B~YuiVs0`==<`wF(nVBeSv0LdY}7?qEAVrk?`9mOx9b>vNC-kR!Tv- zb4u*bU<6V&5B>>@iz}94ifdN2s+DXsFbukSNN&Sk|4mVW#69~*ba*KhyU@QE_fBDU z>+0K~f!C`Jj{rPUteu(5~+k`un$_ zriN`mqa}+K*Xa0%%)5}@Ct~AsC7o<)=zZ$_nuGD84|}7O;ZX1)M0n8WlmtjK|4aKA z>{6YOjx5{&6Rt5)US@%WuMA(IuiS@Y-L~s&MmnnBzrD!nQ|N=lbs4L<_5kk3AJS;3 zN)@PK1mMx@!Po#(`d^q#ni?xoBY(Tpf48ZZ%>QiUDVnBjY@YdU7+ALeACvxSIXSaR zae$X(acR%FRc8~nkRi# zD3BxKb^5>&8MK}yL0)Buq*$M^4G22ie30_zSusMj4$UHQ z3T@(I;xMpZ1_50W?n~%6RF?LP3I`$*D+If!eUq2IO?jz%!#vrFb)zZ>}#FTDY z;;?V0WeZJWc6jRF*IOKVB7q(K9zaJaVMN;W$w`y_d_0^?LX!Q)Yw5j=*!ct3m4Ym> zX`7rdZ0P<;;ERjLGNCR_?#Do`@0wh2zU+&OEn6m+T~MIvw?c?pFBZh(z$}vCw20A` zUnvyusp`3>E_E3B)?F9ndxjM1EWe57c!|$usrFg}58a5v699DS=mOcye3p2YvNm91 z==-NnFS<1LT-ej(F-)_|CSQiZrIDBYR_8m@#a~XiWYH z5Nex4!l`Z4vQ63ZKQa$^DLT`28wf)d47Z&WGdUMA4<8z7bsXXI6Mo$?vYUQtDhEYk zYXUG@Ku}5&s*PP&v{Z`1XJH9~0!HVeL&>)9-eWf)2vAV~O0d)Eqwjg3INBFFCG&Mq zFba|g0Vx2IJl>X4N+#=T1SMoJIb{b{(4<}SVoB=Gsy$AURwjck{n0^=-v}l`3UHCl zeeY(Y5eTL6O_nceMmnQb(QJRMzwen;C6>xQLk0d=*&qg7DVcWKzbCd>v$o1eC>IcJB(e^|V69fc)xmE*BdK0^7UtR-$f7AH=eTKC*U-Pp zK2gg@5V^;-+<8{ppzgl;O~Ur;^c|>2)Fj~2EgwBU@5KdY2*`PgN;sIA6EMGyI)`>Q zB&uZ7V@O{-enrI#{VQ>OdgnQzjk=b!D7D5Gy1P>>o_l<1hRXvH)><1ZmIw7YNg*@f zAOv;RZ}pD#)jrH_OSj)W)GGK6hVqY)7HvNGZeWDOOWbw-hX?=yW5YbBrJ~=tBJ_{Q z-|S#w8qp)~urz_w{tsTFM9}4w2y6Fi96tuFkbZHXmMvuASz)`s`5vVk@$tpL`VZ}XFK#gMz1=MNGCqMs+zg;&A4DCE;Vbe@qqod z#kh*1PVoF?L-5jtp;2yG%&o1VS_QGrMCjNa!5h}!p!~)e- zUYJdQJrF9}@EJ>Aau6rM+SZn)>_^Md7qog=0pshm5Q@=PnDP#P`lF1V-lb`m|2yz`~v`yE7CuAF=wZ<4qVR<8fhE zg$J8hbucE}%{nGm(U@V=X1HjtK|BYh9s>H6(rAI}1y0CJAyc(_?bSwYYQR-vmbL^p zBngVrVK<*{+L^g}RElY2ZITr3$7dwy`0z-aSorDv&IMQZoq1tQ48Oj=FUnN&y{r?> zd7d@b&_)>>w0--jhnw*@9(!`SW+X>S8XpuMdA_wiy&W~$n8n`pQn=*LtLV;hGz4Fi7lc0j3W@9Wim}rlATiF3OL090% z!;V^X)IV^Dgg5A(SD1-FGI?^?C-&+@EGwA1*iZyEbY*kYkqR@|$WmiW0g_`dmtMWk z$#AT*{c-`9{yt9ia8Qug4+Ps5=^)9G=LKuD_KV$1>k(mDV5=2ak6p97!$)UOEK%?JWnfg=n`a1@1Vvt?DTFYd|gOr6GJN z3He!CMEYE|MM^PlNSYI-&su9sUbgkJe@*F+1vRGpjGE?lF_{II#DQgoaDvGjZl5bv z{d(ITkgn<8u=!)i9b-aKyr-F%u;M&aY@4!6Z_~$#AKw?v=+|xV;L64Tz`l59gYNf`GM2tNf%<+(5`=S z`Fv+hDpk0tjZFck*IzV;an~BnT8EQwY2aRmDbJ55VDSc~Mo5<(Zj=mDfM;Dqls1p)$qxA7hV|CvA-%B^jQiO)QCMVe zAS2eIXD=HLA2NY7a*X%l{D90)=O?zKu#UwZvX|W}*wWi;qN*dw9sSVTdFyJ?J1ctP z((!L(__Na&RYvscp$=xQ<8EY3y!1Gzn7$Z8-?Q+M3`7TItJpgx08>+we$!k<3RiY4 zTNzHMcbVrVddP>*4^n~bSeoTTlqzTryb*`C#MR8XxVDgLKX=dUi8s&7#QuDDRKFRE zcuN>RcSY+VI2#yS+u5-E!e7gm<3kTAk!x$^>dTvOSZoHUKw1R6VnSTVZz5ftM8H7N z9__c;8pgu!rc7QouKVuWDW-AiF)S=w!P8nib)Q7g5hPEu{a@c(kz>!oGA%gPs*)s8 zxu28x6BOTtZAL;!(gN#a2W?i{Zkn(%Tm~)n%JI0@s55vhVEus-8~{%nm{?d(Ae>lT zdI3%>nA0v?@`6yV&Xdm#1~~ua_{1K(ei0u5LW#5;x}ZN4O<1sXkit<@6#>m9f6xU- zeucf~ARiE1D}y8r-LgVC{PJ6qVLTlaDn4=L6j0^pkNm6`U8=2flEODsC}(B!AK+5^ zBm(Ot;SlbcapUG>Sf5Vw)HI(e;LYP1Yv3J9fdeeWwfpgE63la@>*I2-L6j2LE2I6q zXCe38fQLz-jC3A>=7JBiN+{^gZd8wQU}5=GtP{eHNxdRXOqT@v?E-I6k2HqT{GQm= zrq?DJv8}x}q${CYk$U-MQ8Zf#`WCeEa7${tUMy^Li63eu>U$%ymc*mFgpk~tz_{X_ zm!D$1zkD)edx%1Ve<*w_*-RN5=o#tdVjr~y#tBfjqdnH`yj-Bq$|%y*=WJZ-CFMUb zZ#_%fc4yusgjbwg7VwzGuZu1yR8)I)e>1I?H0MM|Jmt>zF1tS{kM)H=W3ZIRLcJd4 zb3IKYX=All^*S#)8$+Y8J-OleW7Z4-ODXyxN|kO!GdK>c>e(ssp3z?3OK-v9afsV$*CQwl0xbA1?$tKHix?cHsWi1>kO|~E_(!(Ww5Wip;*G0ftbJXRZhfDgH zcorNaxK2n4X!OT{S@1{@n~{+PDuC|t?vj2mWR|Vk(ko3?JZ)fhFtgNSCHH>HP==K+ zk{R)GwV?H%NrO9FL$v9!R?VN;0FX+28wKR|ki#jAxFjFu6MUUsZ;+KwG?R zmY16y``sLicl|v?MjNoR>otKs^*Up?t}H|oJuxQ%MFLu+hWQ~kb~8z}nF9|iD|?D< zQ&R=w(a(eHtH{&8zKrj0KlG04{a&I^KD+?ubX0XdIz~HVeqpoIZP*Am=i_AqLa9lX zu7yEQMBOi3OM%29Eo*MdPBUj@somg3Q_IH~zb2r=@rIXMl4mn;_o@b)z=X2{f3Mws zA0CFPBltrP71RE`O41pkR& zT>kP!wZE_8ME9|?Q%Jmmf|c*=x=r)d{pFTZ&C~LG@f|#5(|rhf>adx zv>&elWm%*i^f1oA+sjB%-eU&nU+g)U05cyQHX!r9LhB>zb|ozYQXr||Jcv?Ps-W2J z^ya~%n#|*i71=CEbm_KYZ^pNpgVpaYa&fK7_c$Fp+@S=htij2Nif5+Jq5YsHtz7n} zNl?clURto!2V@wksm?Z_h4LAZ9s~owf`xX_WEY*7KSmRNU52-jg;Me^CBj0PKwr;f zvUI(TZM9=#isjf*C3VP@k^7!s1=>cZzoB_aVnrcs&%H}HZ^%t@+k0-Dtq3hv17DS- zm=o|v&HO_tI*Wo;se`17kZ=Aw3v^ z1w#wrxcQAtZEjorktPDe9}UQT-^@bywD(5y zp4-F~pE|bW8*$ymze$2qVlBa)xySUzj!x+G;FyR7X;^QQdv|3hu1tx;4!Cn)h z*~isv!}uPG7%=z|6*FUcL$5$c($)Y>)SBa=2;ZUnXzy`$0hPAr04pT15I=D(b#p6d zzkmWeyW?w7i3w|_HB_$?46E4%gB4*?CtQA(Wc$rsmE(H$o)G(S68YZkNue0+Nv~NDUWy5U4;CSs zi||JN4pE;4BN_{rtJTo7GMo)uPwwTyB|qW7FePF$dj;}xBLZhrL5RF^xnuY!ZmF~+ zE?u8l1@b5ISis9Y{7K|G#DRNM5{S`8*`p33*243?MB$J z2cV@0^v6&^n%4ndfwcavA7T?*j+~@Xurr`M*-*~PI;M>xxs!K|IwLfA8KkH+_aeB@ z_Nc>fUibo!eoPl(*9`GW(w>sKKkhlUSQ~RTuJwM)%fyfKNZ%{4MLt35EnlDoC+hU4 z;K;9Mn3s$o12!jk237HgXv8jzF4>VS>?zakWGp2cQvP;WRt~Mobjyr3Up54{GnHX0 z?lHr+j$;8&GP~U@QULsGgZJ?=5@dn_zeJb_aY2RBR|xiuPC*!tsbwr~{3!RIZ%fjGhj(p%PgN`cR(Ul3MJ_RTX+(t!#af~>rcoYO&3FgWnCvi1> zJXvay?!oHB*HR)(mkvwbwyz@&)83hGLuu$@8uIo+Lzt}3^dT+*w>9w*rca}|QlL&J zoL?N&6G41qA1mhflNCu9G*T@Y({c8ET4$aMam}OpG)pGh{38D+#90P;^F_uIxT8(D zt)9cG2z>|5g%EbJAQiy{#NB7s7m1pciN&)7S?7=h-z}gHw(o{t7}TUYczA2v)?L&8 z4g63Uj04oULnmG1&G6dDvfr)|FcFG?A{f97-|W>`5fi6plpf7zs>U+JcF`by=t0M4 zV8}eoZwgJqH)Z)eoZFaLNHQP5MMWr}{4WM_E_dp|KcxrJ<+ zI-nm*g`C;g_wueXqN50P zeZ~_R5rd^#z<~TSei4&(=Mi~PxgWA?!s$=6xi>)!AM>4>%6aw-Rzbi6LFpx^K5Vtq zno~daB|cO{Kv8rKjqW|LB<<0wvj)6fg`l2)XLBs}3CW*-U;#Q<+hD%#5HGZP9WKQk zA4PxY*{j$GjsRzbgE1snCO_hc1V!HPjv4tJ@rW4EuV^Fq`8_j}O8#3^+ve84EM|t5 zf80=-u*TulJ4|%IlXIQp&LRPIh`=-_eVuz@!ZV{AKa zTkr1iy&t=2&DC0PS_q&^TZ{mJIi)NwqkGaWnA+hSU889o8XWXz`_M2pH~B_ucmu;J02z%qQ@qL|zfy=~O98$u zz+@2fY6gA-ybWeYxc{9eUr}F~vvGW+wcVh%%OuwIarO^!Nry`=FJXNNnd_DiwGyEJ z$)3EISh`k_pL9krbq^{UYu=0T=_Uh~e-CIzH7DZvN%;15ye%r#s*G4lWe_X=f)a

dxIXukd8c$XtF;=TuNX7sB|&r>eJs}}{u zxqmTk12as@1rH6a2zjdT-@KS-O6cKee;i8}FZ~JB69yW}jHfEl23n9B)R=|8u=Mut z9yQS!rrVA4$==?=-=A&bp_ATe8fp(M>+m#R#g5e!BWV#hk3qZG1pLdrbs!1=p= zJ>qK6w9O$A#qo#-kYx4O(|ZhQJUBvsJLwdn&2PJWzpvhXI@sI){z=3Pb)p)2wZp5Y zhd#?>`c^>p85Mylu~tptE5gG{rU_0^XHDN8+Z3z8dtm}!-U#%LwEh$O;&(#veJ9_g zK#GPgiB(*mcwVhM&EU@{epvBbh_ACa(V^0MXvM2mTYr|(e4vc~jbK%e44csc4|X&X zWre3Or9e!HhJ5nk#+GNji_9>HJH-35`*HHbE{*Km^4Ih`vzjwV{<{!h-AW`cL2uf8z26wT#1xba{Bt!bBy~f`t~w5% zr^Y^&Ua9_96^7w`ZyUncSnRLgk<)Q2;Gx$1I>9;I!W^J_DL(zUkB2=^BApTR39ZsB zoo`ub@aFHiyblX@bQBnXn){+=KS(>n-hYH6Dor72RrPACY_M-eRX&X1LnXk2kiZ6m zT?CO*L)t4L6GuLp9;8L!Ey;DExt9ibwMHpF5E4^`N|6ji`Nvj7vM`!&K;CL%J+=1i zP!R>qzVH6Jd}BF48!ycX6)A%-^lKDiqQaq!_(?xpuye^wOy!|RB%n0~McdJ1_b3A~@2=Vo>{QiY*4V11pH!3VALyF zmsU0(RY71*9D#4UPg>T*!4Ljt>Wz6US*#70*09{*)dd#MJAnQ_Vr#dhkA+QDVablw z`W!m%*mCEX1MhO?@B)UOMxB`-aLOp7FkYRZWf=p9jaAM(pi*E}tPyu_4vUgHgSkBy z)80!APuVwFIT(DByJ!PEhaNP{H*G`4;C~8de>h@Mv zZ4_ko5R4FMUBFPm1ze5$-~^~{zuBEvY3gczV1 z$4uk4Ok=51-LU8M^cjCXbDm=I6X4nKzgvJ|;)%`eang^^0x!N;q-4-}N=nL^N#()R z1BZWqU%mS5pYJ=b)pswiOO?9L@!#3rB8h9e9E~ z2tAm~FdewR5m&H?Kp zGY_bH9s=XFMV>hd;ur^}dq94L`#Cn?(cmEa6>Na%;X|?mH^ea>2Y~5=;r)r53Si3^ zI9t?#wOt)g1|yVT0pvfBwUh?leGIa{@dGei5A`$ZLL8&O_@3pTe56AK$NHCtm>Gb; M)78&qol`;+0N4ZnYybcN literal 0 HcmV?d00001 diff --git a/misc/quake3_flat.iconset/icon_512x512@2x.png b/misc/quake3_flat.iconset/icon_512x512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..545fc088235c9ab52a9a747dbfb3a947756ec52d GIT binary patch literal 77303 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%0DKm=@*1#^0ufOIW2z z5kd9UU2I{awMvSL3=~{xYP&&-X<*Q(b33gKM}fG%+zerLkbIT@2q?~?X32zP+x9g4oXg1ElA zC#4LII^G^^HY9IR} zJ@2(o!%`RcXC5U!zd) z`-AHNq9~pjiH}aw(~gKFR@#@2_;W6m`VG~w;{eseFLg45zkYPEg7p7TiZB|mh#c-cy~J#oO^i9pVZ33$BtuBT+7EP!@en6yO^r<=P>{XJW&bWE z3w-n1F}|E8nRyh6Fz=c@5xeG<#7PeuVp@kz>!ZuTtqNxeS&P;3$@dj02<5ZJ3*q(k zXt>ZaB)#NDBYM$HrMrTN&z86=zh^Yy&I(;w`M!#nKHB}H2SEsXB7zoP+tVNB9eTZ( zS#I$IG9JI7gr&ecI39o`+^6uHbO_Hry~akFeq_AgzV+`uZa-;p_p&Yo3Zl7)vm%^XKitvQ5Y`#-_;fcOVLuP%RX1eUL(eIdZw(az9(RfkV z2oydpgNRMc(-&oC&I!&<{b}0D0O@SKmK79RHhV-PU)bKnDLN6XyP14aSlYTi-N{t) z_`n|xu=c%h#Bx_Lx&8QkzP0!DDtT-Jw3U6rZNG(>0I7Wy4InhVJbw;uiM(?_$vDyM z!=;6*!ie4kvaiIj`Mb_Wao)l?duo2WM&`jJ;}fKl*00Apr+t$2bJUCL%Lk_T2|k*A z#@NJSG!VPN7j2jAtW`dVQtJILPj*#-avW@-DvPJns(3p(Cb;55{mV}^%QD46=l>s+aTvtK{_JaPVmKyde_{S(PhoWmAQeBeD`eq>mBOhhbLhtM*=S}8X(LeTfz`}}p zOgFW0B)NCLL5_Vh$LilfAF1kJ_mH}o0k47Mf;jlPBt1~;YI+`%jAwGElo$t5FH&*& z1KWebTR4rXpbhI!5sC2f;w?s^-&BlzF~oL>$8W7W+Ly1roQR~jox4j`t}`hg%0DbA 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 + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + quake3_flat + CFBundleIdentifier + org.ioquake3.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.36 + CFBundleSignature + ???? + CFBundleVersion + 690b281-2013-07-11 + CGDisableCoalescedUpdates + + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + QUAKE III ARENA Copyright © 1999-2000 id Software, Inc. All rights reserved. + NSPrincipalClass + NSApplication + + diff --git a/misc/xcode/ioquake3-Prefix.pch b/misc/xcode/ioquake3-Prefix.pch new file mode 100644 index 00000000..bb5a6981 --- /dev/null +++ b/misc/xcode/ioquake3-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'quake3' target in the 'quake3' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/misc/xcode/ioquake3.xcodeproj/project.pbxproj b/misc/xcode/ioquake3.xcodeproj/project.pbxproj new file mode 100644 index 00000000..e3567eb6 --- /dev/null +++ b/misc/xcode/ioquake3.xcodeproj/project.pbxproj @@ -0,0 +1,1103 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 2772B8021790EBE0004CCF57 /* all ioquake3 */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 2772B8031790EBE0004CCF57 /* Build configuration list for PBXAggregateTarget "all ioquake3" */; + buildPhases = ( + ); + dependencies = ( + 2772B80D1790ECAB004CCF57 /* PBXTargetDependency */, + ); + name = "all ioquake3"; + productName = "all ioquake3"; + }; + 2772B8081790EC7F004CCF57 /* all game */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 2772B8091790EC7F004CCF57 /* Build configuration list for PBXAggregateTarget "all game" */; + buildPhases = ( + ); + dependencies = ( + ); + name = "all game"; + productName = "all game"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 2711BE7A14D13696005EB142 /* sv_bot.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7014D13696005EB142 /* sv_bot.c */; }; + 2711BE7B14D13696005EB142 /* sv_ccmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7114D13696005EB142 /* sv_ccmds.c */; }; + 2711BE7C14D13696005EB142 /* sv_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7214D13696005EB142 /* sv_client.c */; }; + 2711BE7D14D13696005EB142 /* sv_game.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7314D13696005EB142 /* sv_game.c */; }; + 2711BE7E14D13696005EB142 /* sv_init.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7414D13696005EB142 /* sv_init.c */; }; + 2711BE7F14D13696005EB142 /* sv_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7514D13696005EB142 /* sv_main.c */; }; + 2711BE8014D13696005EB142 /* sv_net_chan.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7614D13696005EB142 /* sv_net_chan.c */; }; + 2711BE8214D13696005EB142 /* sv_snapshot.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7814D13696005EB142 /* sv_snapshot.c */; }; + 2711BE8314D13696005EB142 /* sv_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE7914D13696005EB142 /* sv_world.c */; }; + 2711BEA014D136DF005EB142 /* cm_load.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8514D136DF005EB142 /* cm_load.c */; }; + 2711BEA114D136DF005EB142 /* cm_patch.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8714D136DF005EB142 /* cm_patch.c */; }; + 2711BEA214D136DF005EB142 /* cm_polylib.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8914D136DF005EB142 /* cm_polylib.c */; }; + 2711BEA314D136DF005EB142 /* cm_test.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8C14D136DF005EB142 /* cm_test.c */; }; + 2711BEA414D136DF005EB142 /* cm_trace.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8D14D136DF005EB142 /* cm_trace.c */; }; + 2711BEA514D136DF005EB142 /* cmd.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8E14D136DF005EB142 /* cmd.c */; }; + 2711BEA614D136DF005EB142 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE8F14D136DF005EB142 /* common.c */; }; + 2711BEA714D136DF005EB142 /* cvar.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9014D136DF005EB142 /* cvar.c */; }; + 2711BEA814D136DF005EB142 /* files.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9114D136DF005EB142 /* files.c */; }; + 2711BEA914D136DF005EB142 /* huffman.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9214D136DF005EB142 /* huffman.c */; }; + 2711BEAA14D136DF005EB142 /* md4.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9314D136DF005EB142 /* md4.c */; }; + 2711BEAB14D136DF005EB142 /* msg.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9414D136DF005EB142 /* msg.c */; }; + 2711BEAC14D136DF005EB142 /* net_chan.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9514D136DF005EB142 /* net_chan.c */; }; + 2711BEAD14D136DF005EB142 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9814D136DF005EB142 /* unzip.c */; }; + 2711BEAE14D136DF005EB142 /* vm_interpreted.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9A14D136DF005EB142 /* vm_interpreted.c */; }; + 2711BEB214D136DF005EB142 /* vm.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9F14D136DF005EB142 /* vm.c */; }; + 2711BED014D137BC005EB142 /* cl_cgame.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEBD14D137BC005EB142 /* cl_cgame.c */; }; + 2711BED114D137BC005EB142 /* cl_cin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEBE14D137BC005EB142 /* cl_cin.c */; }; + 2711BED214D137BC005EB142 /* cl_console.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEBF14D137BC005EB142 /* cl_console.c */; }; + 2711BED314D137BC005EB142 /* cl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC014D137BC005EB142 /* cl_input.c */; }; + 2711BED414D137BC005EB142 /* cl_keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC114D137BC005EB142 /* cl_keys.c */; }; + 2711BED514D137BC005EB142 /* cl_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC214D137BC005EB142 /* cl_main.c */; }; + 2711BED614D137BC005EB142 /* cl_net_chan.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC314D137BC005EB142 /* cl_net_chan.c */; }; + 2711BED714D137BC005EB142 /* cl_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC414D137BC005EB142 /* cl_parse.c */; }; + 2711BED814D137BC005EB142 /* cl_scrn.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC514D137BC005EB142 /* cl_scrn.c */; }; + 2711BED914D137BC005EB142 /* cl_ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC614D137BC005EB142 /* cl_ui.c */; }; + 2711BEDA14D137BC005EB142 /* snd_adpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BEC914D137BC005EB142 /* snd_adpcm.c */; }; + 2711BEDB14D137BC005EB142 /* snd_dma.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BECA14D137BC005EB142 /* snd_dma.c */; }; + 2711BEDC14D137BC005EB142 /* snd_mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BECC14D137BC005EB142 /* snd_mem.c */; }; + 2711BEDD14D137BC005EB142 /* snd_mix.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BECD14D137BC005EB142 /* snd_mix.c */; }; + 2711BEDE14D137BC005EB142 /* snd_wavelet.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BECF14D137BC005EB142 /* snd_wavelet.c */; }; + 273531F014D1275D00EB7BD6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273531EF14D1275D00EB7BD6 /* Cocoa.framework */; }; + 2735379E14D8F13E000D6E73 /* botlib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2735379B14D8F13E000D6E73 /* botlib.a */; }; + 274FAB79178FA81800B17C7A /* snd_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB78178FA81700B17C7A /* snd_main.c */; }; + 274FAB7B178FA86E00B17C7A /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB7A178FA86E00B17C7A /* md5.c */; }; + 274FAB86178FA97400B17C7A /* ftola.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB7D178FA97100B17C7A /* ftola.c */; }; + 274FAB87178FA98500B17C7A /* snapvector.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB81178FA97100B17C7A /* snapvector.c */; }; + 274FAB88178FA98E00B17C7A /* snd_mixa.s in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB82178FA97100B17C7A /* snd_mixa.s */; }; + 274FAB8A178FA9AA00B17C7A /* matha.s in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB7E178FA97100B17C7A /* matha.s */; }; + 274FABFD178FAC4900B17C7A /* vm_x86.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BE9E14D136DF005EB142 /* vm_x86.c */; }; + 274FABFE178FAC6E00B17C7A /* tr_noise.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD064178E03620093DFC0 /* tr_noise.c */; }; + 274FAC03178FADFC00B17C7A /* libSDL-1.2.0.dylib in Copy Files - Dynamic Libraries */ = {isa = PBXBuildFile; fileRef = 274FAC02178FADCA00B17C7A /* libSDL-1.2.0.dylib */; }; + 2758B913178FB696007F6582 /* libSDLmain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2758B912178FB696007F6582 /* libSDLmain.a */; }; + 2758BB3317905B8F007F6582 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2758BB3217905B8F007F6582 /* IOKit.framework */; }; + 2758BB3417905C17007F6582 /* libSDL-1.2.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 274FAC02178FADCA00B17C7A /* libSDL-1.2.0.dylib */; }; + 2758BB42179070C3007F6582 /* quake3_flat.iconset in Resources */ = {isa = PBXBuildFile; fileRef = 2758BB41179070C3007F6582 /* quake3_flat.iconset */; }; + 2772B8011790EABF004CCF57 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2772B8001790EABF004CCF57 /* libspeex.a */; }; + 278714D917911C1300094CA3 /* libmumblelink.c in Sources */ = {isa = PBXBuildFile; fileRef = 278714D717911C1300094CA3 /* libmumblelink.c */; }; + 27AACFEA178DF8760093DFC0 /* con_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFDE178DF8760093DFC0 /* con_log.c */; }; + 27AACFEC178DF8760093DFC0 /* con_tty.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFE0178DF8760093DFC0 /* con_tty.c */; }; + 27AACFEE178DF8760093DFC0 /* sys_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFE4178DF8760093DFC0 /* sys_main.c */; }; + 27AACFEF178DF8760093DFC0 /* sys_osx.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFE5178DF8760093DFC0 /* sys_osx.m */; }; + 27AACFF0178DF8760093DFC0 /* sys_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFE6178DF8760093DFC0 /* sys_unix.c */; }; + 27AACFFC178E001D0093DFC0 /* cl_avi.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFFB178E001D0093DFC0 /* cl_avi.c */; }; + 27AACFFF178E002B0093DFC0 /* cl_curl.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AACFFD178E002B0093DFC0 /* cl_curl.c */; }; + 27AAD003178E00550093DFC0 /* qal.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD001178E00550093DFC0 /* qal.c */; }; + 27AAD007178E00650093DFC0 /* snd_codec_ogg.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD004178E00650093DFC0 /* snd_codec_ogg.c */; }; + 27AAD008178E00650093DFC0 /* snd_codec_opus.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD005178E00650093DFC0 /* snd_codec_opus.c */; }; + 27AAD009178E00650093DFC0 /* snd_codec_wav.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD006178E00650093DFC0 /* snd_codec_wav.c */; }; + 27AAD00C178E006E0093DFC0 /* snd_codec.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD00A178E006E0093DFC0 /* snd_codec.c */; }; + 27AAD00E178E007B0093DFC0 /* snd_openal.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD00D178E007B0093DFC0 /* snd_openal.c */; }; + 27AAD011178E00AB0093DFC0 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD00F178E00AB0093DFC0 /* ioapi.c */; }; + 27AAD013178E00C30093DFC0 /* net_ip.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD012178E00C30093DFC0 /* net_ip.c */; }; + 27AAD016178E00CE0093DFC0 /* puff.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD014178E00CE0093DFC0 /* puff.c */; }; + 27AAD01B178E00E80093DFC0 /* q_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD017178E00E80093DFC0 /* q_math.c */; }; + 27AAD01C178E00E80093DFC0 /* q_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD019178E00E80093DFC0 /* q_shared.c */; }; + 27AAD02C178E013E0093DFC0 /* sdl_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD028178E013E0093DFC0 /* sdl_input.c */; }; + 27AAD02D178E013E0093DFC0 /* sdl_snd.c in Sources */ = {isa = PBXBuildFile; fileRef = 27AAD029178E013E0093DFC0 /* sdl_snd.c */; }; + 27AAD06F178E04FF0093DFC0 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27AAD06E178E04FF0093DFC0 /* OpenAL.framework */; }; + 27AAD071178E05290093DFC0 /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 27AAD070178E05290093DFC0 /* libcurl.dylib */; }; + 27AAD073178E052F0093DFC0 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 27AAD072178E052F0093DFC0 /* libz.dylib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2772B80C1790ECAB004CCF57 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 273531E214D1275D00EB7BD6 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 273531EA14D1275D00EB7BD6; + remoteInfo = ioquake3; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 274FABFF178FAD9A00B17C7A /* Copy Files - Dynamic Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 274FAC03178FADFC00B17C7A /* libSDL-1.2.0.dylib in Copy Files - Dynamic Libraries */, + ); + name = "Copy Files - Dynamic Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 2711BE6D14D13677005EB142 /* ui_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_public.h; sourceTree = ""; }; + 2711BE6F14D13696005EB142 /* server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = server.h; path = server/server.h; sourceTree = ""; }; + 2711BE7014D13696005EB142 /* sv_bot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_bot.c; path = server/sv_bot.c; sourceTree = ""; }; + 2711BE7114D13696005EB142 /* sv_ccmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_ccmds.c; path = server/sv_ccmds.c; sourceTree = ""; }; + 2711BE7214D13696005EB142 /* sv_client.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_client.c; path = server/sv_client.c; sourceTree = ""; }; + 2711BE7314D13696005EB142 /* sv_game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_game.c; path = server/sv_game.c; sourceTree = ""; }; + 2711BE7414D13696005EB142 /* sv_init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_init.c; path = server/sv_init.c; sourceTree = ""; }; + 2711BE7514D13696005EB142 /* sv_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_main.c; path = server/sv_main.c; sourceTree = ""; }; + 2711BE7614D13696005EB142 /* sv_net_chan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_net_chan.c; path = server/sv_net_chan.c; sourceTree = ""; }; + 2711BE7714D13696005EB142 /* sv_rankings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_rankings.c; path = server/sv_rankings.c; sourceTree = ""; }; + 2711BE7814D13696005EB142 /* sv_snapshot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_snapshot.c; path = server/sv_snapshot.c; sourceTree = ""; }; + 2711BE7914D13696005EB142 /* sv_world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sv_world.c; path = server/sv_world.c; sourceTree = ""; }; + 2711BE8514D136DF005EB142 /* cm_load.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cm_load.c; sourceTree = ""; }; + 2711BE8614D136DF005EB142 /* cm_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cm_local.h; sourceTree = ""; }; + 2711BE8714D136DF005EB142 /* cm_patch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cm_patch.c; sourceTree = ""; }; + 2711BE8814D136DF005EB142 /* cm_patch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cm_patch.h; sourceTree = ""; }; + 2711BE8914D136DF005EB142 /* cm_polylib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cm_polylib.c; sourceTree = ""; }; + 2711BE8A14D136DF005EB142 /* cm_polylib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cm_polylib.h; sourceTree = ""; }; + 2711BE8B14D136DF005EB142 /* cm_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cm_public.h; sourceTree = ""; }; + 2711BE8C14D136DF005EB142 /* cm_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cm_test.c; sourceTree = ""; }; + 2711BE8D14D136DF005EB142 /* cm_trace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cm_trace.c; sourceTree = ""; }; + 2711BE8E14D136DF005EB142 /* cmd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cmd.c; sourceTree = ""; }; + 2711BE8F14D136DF005EB142 /* common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = common.c; sourceTree = ""; }; + 2711BE9014D136DF005EB142 /* cvar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cvar.c; sourceTree = ""; }; + 2711BE9114D136DF005EB142 /* files.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = files.c; sourceTree = ""; }; + 2711BE9214D136DF005EB142 /* huffman.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = huffman.c; sourceTree = ""; }; + 2711BE9314D136DF005EB142 /* md4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md4.c; sourceTree = ""; }; + 2711BE9414D136DF005EB142 /* msg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msg.c; sourceTree = ""; }; + 2711BE9514D136DF005EB142 /* net_chan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = net_chan.c; sourceTree = ""; }; + 2711BE9614D136DF005EB142 /* qcommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qcommon.h; sourceTree = ""; }; + 2711BE9714D136DF005EB142 /* qfiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qfiles.h; sourceTree = ""; }; + 2711BE9814D136DF005EB142 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; + 2711BE9914D136DF005EB142 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + 2711BE9A14D136DF005EB142 /* vm_interpreted.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vm_interpreted.c; sourceTree = ""; }; + 2711BE9B14D136DF005EB142 /* vm_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vm_local.h; sourceTree = ""; }; + 2711BE9E14D136DF005EB142 /* vm_x86.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vm_x86.c; sourceTree = ""; }; + 2711BE9F14D136DF005EB142 /* vm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vm.c; sourceTree = ""; }; + 2711BEB414D1377B005EB142 /* bg_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bg_public.h; sourceTree = ""; }; + 2711BEB514D1377B005EB142 /* g_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g_public.h; sourceTree = ""; }; + 2711BEBD14D137BC005EB142 /* cl_cgame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_cgame.c; sourceTree = ""; }; + 2711BEBE14D137BC005EB142 /* cl_cin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_cin.c; sourceTree = ""; }; + 2711BEBF14D137BC005EB142 /* cl_console.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_console.c; sourceTree = ""; }; + 2711BEC014D137BC005EB142 /* cl_input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_input.c; sourceTree = ""; }; + 2711BEC114D137BC005EB142 /* cl_keys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_keys.c; sourceTree = ""; }; + 2711BEC214D137BC005EB142 /* cl_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_main.c; sourceTree = ""; }; + 2711BEC314D137BC005EB142 /* cl_net_chan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_net_chan.c; sourceTree = ""; }; + 2711BEC414D137BC005EB142 /* cl_parse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_parse.c; sourceTree = ""; }; + 2711BEC514D137BC005EB142 /* cl_scrn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_scrn.c; sourceTree = ""; }; + 2711BEC614D137BC005EB142 /* cl_ui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_ui.c; sourceTree = ""; }; + 2711BEC714D137BC005EB142 /* client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = ""; }; + 2711BEC814D137BC005EB142 /* keys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keys.h; sourceTree = ""; }; + 2711BEC914D137BC005EB142 /* snd_adpcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_adpcm.c; sourceTree = ""; }; + 2711BECA14D137BC005EB142 /* snd_dma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_dma.c; sourceTree = ""; }; + 2711BECB14D137BC005EB142 /* snd_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = snd_local.h; sourceTree = ""; }; + 2711BECC14D137BC005EB142 /* snd_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_mem.c; sourceTree = ""; }; + 2711BECD14D137BC005EB142 /* snd_mix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_mix.c; sourceTree = ""; }; + 2711BECE14D137BC005EB142 /* snd_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = snd_public.h; sourceTree = ""; }; + 2711BECF14D137BC005EB142 /* snd_wavelet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_wavelet.c; sourceTree = ""; }; + 2711BEE014D137F4005EB142 /* cg_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cg_public.h; sourceTree = ""; }; + 273531EB14D1275D00EB7BD6 /* ioquake3.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ioquake3.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 273531EF14D1275D00EB7BD6 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 273531F714D1275D00EB7BD6 /* ioquake3-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ioquake3-Info.plist"; sourceTree = ""; }; + 273531FD14D1275D00EB7BD6 /* ioquake3-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ioquake3-Prefix.pch"; sourceTree = ""; }; + 2735379B14D8F13E000D6E73 /* botlib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = botlib.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 274FAB78178FA81700B17C7A /* snd_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_main.c; sourceTree = ""; }; + 274FAB7A178FA86E00B17C7A /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md5.c; sourceTree = ""; }; + 274FAB7D178FA97100B17C7A /* ftola.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ftola.c; sourceTree = ""; }; + 274FAB7E178FA97100B17C7A /* matha.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = matha.s; sourceTree = ""; }; + 274FAB7F178FA97100B17C7A /* qasm-inline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "qasm-inline.h"; sourceTree = ""; }; + 274FAB80178FA97100B17C7A /* qasm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = qasm.h; sourceTree = ""; }; + 274FAB81178FA97100B17C7A /* snapvector.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = snapvector.c; sourceTree = ""; }; + 274FAB82178FA97100B17C7A /* snd_mixa.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = snd_mixa.s; sourceTree = ""; }; + 274FAB83178FA97100B17C7A /* ftola.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = ftola.asm; sourceTree = ""; }; + 274FAB84178FA97100B17C7A /* snapvector.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = snapvector.asm; sourceTree = ""; }; + 274FAB85178FA97100B17C7A /* vm_x86_64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = vm_x86_64.asm; sourceTree = ""; }; + 274FAC02178FADCA00B17C7A /* libSDL-1.2.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL-1.2.0.dylib"; path = "../../code/libs/macosx/libSDL-1.2.0.dylib"; sourceTree = SOURCE_ROOT; }; + 274FAC89178FB20C00B17C7A /* renderer_opengl1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = renderer_opengl1.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2758B912178FB696007F6582 /* libSDLmain.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSDLmain.a; path = ../../code/libs/macosx/libSDLmain.a; sourceTree = SOURCE_ROOT; }; + 2758BA49178FD062007F6582 /* renderer_opengl2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = renderer_opengl2.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2758BB3217905B8F007F6582 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 2758BB41179070C3007F6582 /* quake3_flat.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; name = quake3_flat.iconset; path = ../quake3_flat.iconset; sourceTree = ""; }; + 2772B8001790EABF004CCF57 /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libspeex.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2772B8401790F05B004CCF57 /* cgame.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = cgame.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2772B8411790F05B004CCF57 /* game.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = game.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2772B8421790F05B004CCF57 /* q3_ui.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = q3_ui.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2772B8431790F05B004CCF57 /* ui.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = ui.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 278714D717911C1300094CA3 /* libmumblelink.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = libmumblelink.c; sourceTree = ""; }; + 278714D817911C1300094CA3 /* libmumblelink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libmumblelink.h; sourceTree = ""; }; + 27AACFDE178DF8760093DFC0 /* con_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = con_log.c; sourceTree = ""; }; + 27AACFDF178DF8760093DFC0 /* con_passive.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = con_passive.c; sourceTree = ""; }; + 27AACFE0178DF8760093DFC0 /* con_tty.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = con_tty.c; sourceTree = ""; }; + 27AACFE1178DF8760093DFC0 /* con_win32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = con_win32.c; sourceTree = ""; }; + 27AACFE2178DF8760093DFC0 /* sys_loadlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sys_loadlib.h; sourceTree = ""; }; + 27AACFE3178DF8760093DFC0 /* sys_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sys_local.h; sourceTree = ""; }; + 27AACFE4178DF8760093DFC0 /* sys_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sys_main.c; sourceTree = ""; }; + 27AACFE5178DF8760093DFC0 /* sys_osx.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = sys_osx.m; sourceTree = ""; }; + 27AACFE6178DF8760093DFC0 /* sys_unix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sys_unix.c; sourceTree = ""; }; + 27AACFE7178DF8760093DFC0 /* sys_win32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sys_win32.c; sourceTree = ""; }; + 27AACFE8178DF8760093DFC0 /* win_resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = win_resource.h; sourceTree = ""; }; + 27AACFE9178DF8760093DFC0 /* win_resource.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = win_resource.rc; sourceTree = ""; }; + 27AACFFB178E001D0093DFC0 /* cl_avi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_avi.c; sourceTree = ""; }; + 27AACFFD178E002B0093DFC0 /* cl_curl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cl_curl.c; sourceTree = ""; }; + 27AACFFE178E002B0093DFC0 /* cl_curl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cl_curl.h; sourceTree = ""; }; + 27AAD000178E00430093DFC0 /* keycodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = keycodes.h; sourceTree = ""; }; + 27AAD001178E00550093DFC0 /* qal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qal.c; sourceTree = ""; }; + 27AAD002178E00550093DFC0 /* qal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qal.h; sourceTree = ""; }; + 27AAD004178E00650093DFC0 /* snd_codec_ogg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_codec_ogg.c; sourceTree = ""; }; + 27AAD005178E00650093DFC0 /* snd_codec_opus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_codec_opus.c; sourceTree = ""; }; + 27AAD006178E00650093DFC0 /* snd_codec_wav.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_codec_wav.c; sourceTree = ""; }; + 27AAD00A178E006E0093DFC0 /* snd_codec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_codec.c; sourceTree = ""; }; + 27AAD00B178E006E0093DFC0 /* snd_codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = snd_codec.h; sourceTree = ""; }; + 27AAD00D178E007B0093DFC0 /* snd_openal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = snd_openal.c; sourceTree = ""; }; + 27AAD00F178E00AB0093DFC0 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; + 27AAD010178E00AB0093DFC0 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + 27AAD012178E00C30093DFC0 /* net_ip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = net_ip.c; sourceTree = ""; }; + 27AAD014178E00CE0093DFC0 /* puff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = puff.c; sourceTree = ""; }; + 27AAD015178E00CE0093DFC0 /* puff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = puff.h; sourceTree = ""; }; + 27AAD017178E00E80093DFC0 /* q_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_math.c; sourceTree = ""; }; + 27AAD018178E00E80093DFC0 /* q_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = q_platform.h; sourceTree = ""; }; + 27AAD019178E00E80093DFC0 /* q_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_shared.c; sourceTree = ""; }; + 27AAD01A178E00E80093DFC0 /* q_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = q_shared.h; sourceTree = ""; }; + 27AAD01D178E00F00093DFC0 /* surfaceflags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = surfaceflags.h; sourceTree = ""; }; + 27AAD01E178E01160093DFC0 /* vm_none.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vm_none.c; sourceTree = ""; }; + 27AAD01F178E01160093DFC0 /* vm_powerpc_asm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vm_powerpc_asm.c; sourceTree = ""; }; + 27AAD020178E01160093DFC0 /* vm_powerpc_asm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_powerpc_asm.h; sourceTree = ""; }; + 27AAD021178E01160093DFC0 /* vm_powerpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vm_powerpc.c; sourceTree = ""; }; + 27AAD022178E01160093DFC0 /* vm_sparc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vm_sparc.c; sourceTree = ""; }; + 27AAD023178E01160093DFC0 /* vm_sparc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vm_sparc.h; sourceTree = ""; }; + 27AAD025178E013E0093DFC0 /* sdl_gamma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_gamma.c; sourceTree = ""; }; + 27AAD026178E013E0093DFC0 /* sdl_glimp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_glimp.c; sourceTree = ""; }; + 27AAD027178E013E0093DFC0 /* sdl_icon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sdl_icon.h; sourceTree = ""; }; + 27AAD028178E013E0093DFC0 /* sdl_input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_input.c; sourceTree = ""; }; + 27AAD029178E013E0093DFC0 /* sdl_snd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_snd.c; sourceTree = ""; }; + 27AAD030178E02D20093DFC0 /* begin_code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = begin_code.h; sourceTree = ""; }; + 27AAD031178E02D20093DFC0 /* close_code.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = close_code.h; sourceTree = ""; }; + 27AAD032178E02D20093DFC0 /* SDL_active.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_active.h; sourceTree = ""; }; + 27AAD033178E02D20093DFC0 /* SDL_audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_audio.h; sourceTree = ""; }; + 27AAD034178E02D20093DFC0 /* SDL_byteorder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_byteorder.h; sourceTree = ""; }; + 27AAD035178E02D20093DFC0 /* SDL_cdrom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cdrom.h; sourceTree = ""; }; + 27AAD036178E02D20093DFC0 /* SDL_config_amiga.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_amiga.h; sourceTree = ""; }; + 27AAD037178E02D20093DFC0 /* SDL_config_dreamcast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_dreamcast.h; sourceTree = ""; }; + 27AAD038178E02D20093DFC0 /* SDL_config_macos.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_macos.h; sourceTree = ""; }; + 27AAD039178E02D20093DFC0 /* SDL_config_macosx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_macosx.h; sourceTree = ""; }; + 27AAD03A178E02D20093DFC0 /* SDL_config_minimal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_minimal.h; sourceTree = ""; }; + 27AAD03B178E02D20093DFC0 /* SDL_config_nds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_nds.h; sourceTree = ""; }; + 27AAD03C178E02D20093DFC0 /* SDL_config_os2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_os2.h; sourceTree = ""; }; + 27AAD03D178E02D20093DFC0 /* SDL_config_symbian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_symbian.h; sourceTree = ""; }; + 27AAD03E178E02D20093DFC0 /* SDL_config_win32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config_win32.h; sourceTree = ""; }; + 27AAD03F178E02D20093DFC0 /* SDL_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_config.h; sourceTree = ""; }; + 27AAD040178E02D20093DFC0 /* SDL_copying.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_copying.h; sourceTree = ""; }; + 27AAD041178E02D20093DFC0 /* SDL_cpuinfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_cpuinfo.h; sourceTree = ""; }; + 27AAD042178E02D20093DFC0 /* SDL_endian.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_endian.h; sourceTree = ""; }; + 27AAD043178E02D20093DFC0 /* SDL_error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_error.h; sourceTree = ""; }; + 27AAD044178E02D20093DFC0 /* SDL_events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_events.h; sourceTree = ""; }; + 27AAD045178E02D20093DFC0 /* SDL_getenv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_getenv.h; sourceTree = ""; }; + 27AAD046178E02D20093DFC0 /* SDL_joystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_joystick.h; sourceTree = ""; }; + 27AAD047178E02D20093DFC0 /* SDL_keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard.h; sourceTree = ""; }; + 27AAD048178E02D20093DFC0 /* SDL_keysym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_keysym.h; sourceTree = ""; }; + 27AAD049178E02D20093DFC0 /* SDL_loadso.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_loadso.h; sourceTree = ""; }; + 27AAD04A178E02D20093DFC0 /* SDL_main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_main.h; sourceTree = ""; }; + 27AAD04B178E02D20093DFC0 /* SDL_mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mouse.h; sourceTree = ""; }; + 27AAD04C178E02D20093DFC0 /* SDL_mutex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mutex.h; sourceTree = ""; }; + 27AAD04D178E02D20093DFC0 /* SDL_name.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_name.h; sourceTree = ""; }; + 27AAD04E178E02D20093DFC0 /* SDL_opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_opengl.h; sourceTree = ""; }; + 27AAD04F178E02D20093DFC0 /* SDL_platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_platform.h; sourceTree = ""; }; + 27AAD050178E02D20093DFC0 /* SDL_quit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_quit.h; sourceTree = ""; }; + 27AAD051178E02D20093DFC0 /* SDL_rwops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_rwops.h; sourceTree = ""; }; + 27AAD052178E02D20093DFC0 /* SDL_stdinc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_stdinc.h; sourceTree = ""; }; + 27AAD053178E02D20093DFC0 /* SDL_syswm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syswm.h; sourceTree = ""; }; + 27AAD054178E02D20093DFC0 /* SDL_thread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = ""; }; + 27AAD055178E02D20093DFC0 /* SDL_timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_timer.h; sourceTree = ""; }; + 27AAD056178E02D20093DFC0 /* SDL_types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_types.h; sourceTree = ""; }; + 27AAD057178E02D20093DFC0 /* SDL_version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_version.h; sourceTree = ""; }; + 27AAD058178E02D20093DFC0 /* SDL_video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_video.h; sourceTree = ""; }; + 27AAD059178E02D20093DFC0 /* SDL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; + 27AAD05B178E03620093DFC0 /* iqm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iqm.h; sourceTree = ""; }; + 27AAD05C178E03620093DFC0 /* qgl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qgl.h; sourceTree = ""; }; + 27AAD05D178E03620093DFC0 /* tr_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_common.h; sourceTree = ""; }; + 27AAD05E178E03620093DFC0 /* tr_font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_font.c; sourceTree = ""; }; + 27AAD05F178E03620093DFC0 /* tr_image_bmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_bmp.c; sourceTree = ""; }; + 27AAD060178E03620093DFC0 /* tr_image_jpg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_jpg.c; sourceTree = ""; }; + 27AAD061178E03620093DFC0 /* tr_image_pcx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_pcx.c; sourceTree = ""; }; + 27AAD062178E03620093DFC0 /* tr_image_png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_png.c; sourceTree = ""; }; + 27AAD063178E03620093DFC0 /* tr_image_tga.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_tga.c; sourceTree = ""; }; + 27AAD064178E03620093DFC0 /* tr_noise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_noise.c; sourceTree = ""; }; + 27AAD065178E03620093DFC0 /* tr_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_public.h; sourceTree = ""; }; + 27AAD066178E03620093DFC0 /* tr_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_types.h; sourceTree = ""; }; + 27AAD06E178E04FF0093DFC0 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + 27AAD070178E05290093DFC0 /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; + 27AAD072178E052F0093DFC0 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 27B0E9EF1743E0A800DB1F32 /* null_client.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_client.c; sourceTree = ""; }; + 27B0E9F01743E0A800DB1F32 /* null_glimp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_glimp.c; sourceTree = ""; }; + 27B0E9F11743E0A800DB1F32 /* null_input.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_input.c; sourceTree = ""; }; + 27B0E9F21743E0A800DB1F32 /* null_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_main.c; sourceTree = ""; }; + 27B0E9F31743E0A800DB1F32 /* null_net.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_net.c; sourceTree = ""; }; + 27B0E9F41743E0A800DB1F32 /* null_snddma.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = null_snddma.c; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 273531E814D1275D00EB7BD6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 273531F014D1275D00EB7BD6 /* Cocoa.framework in Frameworks */, + 2758BB3317905B8F007F6582 /* IOKit.framework in Frameworks */, + 27AAD06F178E04FF0093DFC0 /* OpenAL.framework in Frameworks */, + 2735379E14D8F13E000D6E73 /* botlib.a in Frameworks */, + 2772B8011790EABF004CCF57 /* libspeex.a in Frameworks */, + 2758B913178FB696007F6582 /* libSDLmain.a in Frameworks */, + 27AAD071178E05290093DFC0 /* libcurl.dylib in Frameworks */, + 2758BB3417905C17007F6582 /* libSDL-1.2.0.dylib in Frameworks */, + 27AAD073178E052F0093DFC0 /* libz.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2711BCC414D12CC6005EB142 /* Libraries */ = { + isa = PBXGroup; + children = ( + 2772B8401790F05B004CCF57 /* cgame.dylib */, + 2772B8411790F05B004CCF57 /* game.dylib */, + 2772B8421790F05B004CCF57 /* q3_ui.dylib */, + 2772B8431790F05B004CCF57 /* ui.dylib */, + 274FAC89178FB20C00B17C7A /* renderer_opengl1.dylib */, + 2758BA49178FD062007F6582 /* renderer_opengl2.dylib */, + 27AAD070178E05290093DFC0 /* libcurl.dylib */, + 27AAD072178E052F0093DFC0 /* libz.dylib */, + 2735379B14D8F13E000D6E73 /* botlib.a */, + 2772B8001790EABF004CCF57 /* libspeex.a */, + 2758B912178FB696007F6582 /* libSDLmain.a */, + 274FAC02178FADCA00B17C7A /* libSDL-1.2.0.dylib */, + ); + name = Libraries; + path = ../..; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2711BE6A14D1364A005EB142 /* code */ = { + isa = PBXGroup; + children = ( + 274FAB7C178FA96100B17C7A /* asm */, + 2711BEDF14D137DD005EB142 /* cgame */, + 2711BEBC14D1379D005EB142 /* client */, + 2711BEB314D1375A005EB142 /* game */, + 27B0E9EE1743E09600DB1F32 /* null */, + 2711BE8414D136C3005EB142 /* qcommon */, + 27AAD05A178E03520093DFC0 /* renderercommon */, + 27AAD024178E01260093DFC0 /* sdl */, + 27AAD02E178E02AF0093DFC0 /* SDL12 */, + 2711BE6E14D1367A005EB142 /* server */, + 27AACFDD178DF85B0093DFC0 /* sys */, + 2711BE6B14D1365F005EB142 /* ui */, + ); + name = code; + path = ../../code; + sourceTree = ""; + }; + 2711BE6B14D1365F005EB142 /* ui */ = { + isa = PBXGroup; + children = ( + 2711BE6D14D13677005EB142 /* ui_public.h */, + ); + path = ui; + sourceTree = ""; + }; + 2711BE6E14D1367A005EB142 /* server */ = { + isa = PBXGroup; + children = ( + 2711BE6F14D13696005EB142 /* server.h */, + 2711BE7014D13696005EB142 /* sv_bot.c */, + 2711BE7114D13696005EB142 /* sv_ccmds.c */, + 2711BE7214D13696005EB142 /* sv_client.c */, + 2711BE7314D13696005EB142 /* sv_game.c */, + 2711BE7414D13696005EB142 /* sv_init.c */, + 2711BE7514D13696005EB142 /* sv_main.c */, + 2711BE7614D13696005EB142 /* sv_net_chan.c */, + 2711BE7714D13696005EB142 /* sv_rankings.c */, + 2711BE7814D13696005EB142 /* sv_snapshot.c */, + 2711BE7914D13696005EB142 /* sv_world.c */, + ); + name = server; + sourceTree = ""; + }; + 2711BE8414D136C3005EB142 /* qcommon */ = { + isa = PBXGroup; + children = ( + 2711BE8514D136DF005EB142 /* cm_load.c */, + 2711BE8614D136DF005EB142 /* cm_local.h */, + 2711BE8714D136DF005EB142 /* cm_patch.c */, + 2711BE8814D136DF005EB142 /* cm_patch.h */, + 2711BE8914D136DF005EB142 /* cm_polylib.c */, + 2711BE8A14D136DF005EB142 /* cm_polylib.h */, + 2711BE8B14D136DF005EB142 /* cm_public.h */, + 2711BE8C14D136DF005EB142 /* cm_test.c */, + 2711BE8D14D136DF005EB142 /* cm_trace.c */, + 2711BE8E14D136DF005EB142 /* cmd.c */, + 2711BE8F14D136DF005EB142 /* common.c */, + 2711BE9014D136DF005EB142 /* cvar.c */, + 2711BE9114D136DF005EB142 /* files.c */, + 2711BE9214D136DF005EB142 /* huffman.c */, + 27AAD00F178E00AB0093DFC0 /* ioapi.c */, + 27AAD010178E00AB0093DFC0 /* ioapi.h */, + 2711BE9314D136DF005EB142 /* md4.c */, + 274FAB7A178FA86E00B17C7A /* md5.c */, + 2711BE9414D136DF005EB142 /* msg.c */, + 2711BE9514D136DF005EB142 /* net_chan.c */, + 27AAD012178E00C30093DFC0 /* net_ip.c */, + 27AAD014178E00CE0093DFC0 /* puff.c */, + 27AAD015178E00CE0093DFC0 /* puff.h */, + 27AAD017178E00E80093DFC0 /* q_math.c */, + 27AAD018178E00E80093DFC0 /* q_platform.h */, + 27AAD019178E00E80093DFC0 /* q_shared.c */, + 27AAD01A178E00E80093DFC0 /* q_shared.h */, + 2711BE9614D136DF005EB142 /* qcommon.h */, + 2711BE9714D136DF005EB142 /* qfiles.h */, + 27AAD01D178E00F00093DFC0 /* surfaceflags.h */, + 2711BE9814D136DF005EB142 /* unzip.c */, + 2711BE9914D136DF005EB142 /* unzip.h */, + 2711BE9A14D136DF005EB142 /* vm_interpreted.c */, + 2711BE9B14D136DF005EB142 /* vm_local.h */, + 27AAD01E178E01160093DFC0 /* vm_none.c */, + 27AAD01F178E01160093DFC0 /* vm_powerpc_asm.c */, + 27AAD020178E01160093DFC0 /* vm_powerpc_asm.h */, + 27AAD021178E01160093DFC0 /* vm_powerpc.c */, + 27AAD022178E01160093DFC0 /* vm_sparc.c */, + 27AAD023178E01160093DFC0 /* vm_sparc.h */, + 2711BE9E14D136DF005EB142 /* vm_x86.c */, + 2711BE9F14D136DF005EB142 /* vm.c */, + ); + path = qcommon; + sourceTree = ""; + }; + 2711BEB314D1375A005EB142 /* game */ = { + isa = PBXGroup; + children = ( + 2711BEB414D1377B005EB142 /* bg_public.h */, + 2711BEB514D1377B005EB142 /* g_public.h */, + ); + path = game; + sourceTree = ""; + }; + 2711BEBC14D1379D005EB142 /* client */ = { + isa = PBXGroup; + children = ( + 27AACFFB178E001D0093DFC0 /* cl_avi.c */, + 2711BEBD14D137BC005EB142 /* cl_cgame.c */, + 2711BEBE14D137BC005EB142 /* cl_cin.c */, + 2711BEBF14D137BC005EB142 /* cl_console.c */, + 27AACFFD178E002B0093DFC0 /* cl_curl.c */, + 27AACFFE178E002B0093DFC0 /* cl_curl.h */, + 2711BEC014D137BC005EB142 /* cl_input.c */, + 2711BEC114D137BC005EB142 /* cl_keys.c */, + 2711BEC214D137BC005EB142 /* cl_main.c */, + 2711BEC314D137BC005EB142 /* cl_net_chan.c */, + 2711BEC414D137BC005EB142 /* cl_parse.c */, + 2711BEC514D137BC005EB142 /* cl_scrn.c */, + 2711BEC614D137BC005EB142 /* cl_ui.c */, + 2711BEC714D137BC005EB142 /* client.h */, + 27AAD000178E00430093DFC0 /* keycodes.h */, + 2711BEC814D137BC005EB142 /* keys.h */, + 278714D717911C1300094CA3 /* libmumblelink.c */, + 278714D817911C1300094CA3 /* libmumblelink.h */, + 27AAD001178E00550093DFC0 /* qal.c */, + 27AAD002178E00550093DFC0 /* qal.h */, + 2711BEC914D137BC005EB142 /* snd_adpcm.c */, + 27AAD004178E00650093DFC0 /* snd_codec_ogg.c */, + 27AAD005178E00650093DFC0 /* snd_codec_opus.c */, + 27AAD006178E00650093DFC0 /* snd_codec_wav.c */, + 27AAD00A178E006E0093DFC0 /* snd_codec.c */, + 27AAD00B178E006E0093DFC0 /* snd_codec.h */, + 2711BECA14D137BC005EB142 /* snd_dma.c */, + 2711BECB14D137BC005EB142 /* snd_local.h */, + 274FAB78178FA81700B17C7A /* snd_main.c */, + 2711BECC14D137BC005EB142 /* snd_mem.c */, + 2711BECD14D137BC005EB142 /* snd_mix.c */, + 27AAD00D178E007B0093DFC0 /* snd_openal.c */, + 2711BECE14D137BC005EB142 /* snd_public.h */, + 2711BECF14D137BC005EB142 /* snd_wavelet.c */, + ); + path = client; + sourceTree = ""; + }; + 2711BEDF14D137DD005EB142 /* cgame */ = { + isa = PBXGroup; + children = ( + 2711BEE014D137F4005EB142 /* cg_public.h */, + ); + path = cgame; + sourceTree = ""; + }; + 273531E014D1275D00EB7BD6 = { + isa = PBXGroup; + children = ( + 2711BE6A14D1364A005EB142 /* code */, + 273531F614D1275D00EB7BD6 /* Supporting Files */, + 273531EE14D1275D00EB7BD6 /* Frameworks */, + 2711BCC414D12CC6005EB142 /* Libraries */, + 273531EC14D1275D00EB7BD6 /* Products */, + ); + sourceTree = ""; + }; + 273531EC14D1275D00EB7BD6 /* Products */ = { + isa = PBXGroup; + children = ( + 273531EB14D1275D00EB7BD6 /* ioquake3.app */, + ); + name = Products; + sourceTree = ""; + }; + 273531EE14D1275D00EB7BD6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 273531EF14D1275D00EB7BD6 /* Cocoa.framework */, + 2758BB3217905B8F007F6582 /* IOKit.framework */, + 27AAD06E178E04FF0093DFC0 /* OpenAL.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 273531F614D1275D00EB7BD6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 2758BB41179070C3007F6582 /* quake3_flat.iconset */, + 273531F714D1275D00EB7BD6 /* ioquake3-Info.plist */, + 273531FD14D1275D00EB7BD6 /* ioquake3-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 274FAB7C178FA96100B17C7A /* asm */ = { + isa = PBXGroup; + children = ( + 274FAB7D178FA97100B17C7A /* ftola.c */, + 274FAB7E178FA97100B17C7A /* matha.s */, + 274FAB7F178FA97100B17C7A /* qasm-inline.h */, + 274FAB80178FA97100B17C7A /* qasm.h */, + 274FAB81178FA97100B17C7A /* snapvector.c */, + 274FAB82178FA97100B17C7A /* snd_mixa.s */, + 274FAB83178FA97100B17C7A /* ftola.asm */, + 274FAB84178FA97100B17C7A /* snapvector.asm */, + 274FAB85178FA97100B17C7A /* vm_x86_64.asm */, + ); + path = asm; + sourceTree = ""; + }; + 27AACFDD178DF85B0093DFC0 /* sys */ = { + isa = PBXGroup; + children = ( + 27AACFDE178DF8760093DFC0 /* con_log.c */, + 27AACFDF178DF8760093DFC0 /* con_passive.c */, + 27AACFE0178DF8760093DFC0 /* con_tty.c */, + 27AACFE1178DF8760093DFC0 /* con_win32.c */, + 27AACFE2178DF8760093DFC0 /* sys_loadlib.h */, + 27AACFE3178DF8760093DFC0 /* sys_local.h */, + 27AACFE4178DF8760093DFC0 /* sys_main.c */, + 27AACFE5178DF8760093DFC0 /* sys_osx.m */, + 27AACFE6178DF8760093DFC0 /* sys_unix.c */, + 27AACFE7178DF8760093DFC0 /* sys_win32.c */, + 27AACFE8178DF8760093DFC0 /* win_resource.h */, + 27AACFE9178DF8760093DFC0 /* win_resource.rc */, + ); + path = sys; + sourceTree = ""; + }; + 27AAD024178E01260093DFC0 /* sdl */ = { + isa = PBXGroup; + children = ( + 27AAD025178E013E0093DFC0 /* sdl_gamma.c */, + 27AAD026178E013E0093DFC0 /* sdl_glimp.c */, + 27AAD027178E013E0093DFC0 /* sdl_icon.h */, + 27AAD028178E013E0093DFC0 /* sdl_input.c */, + 27AAD029178E013E0093DFC0 /* sdl_snd.c */, + ); + path = sdl; + sourceTree = ""; + }; + 27AAD02E178E02AF0093DFC0 /* SDL12 */ = { + isa = PBXGroup; + children = ( + 27AAD02F178E02BE0093DFC0 /* include */, + ); + path = SDL12; + sourceTree = ""; + }; + 27AAD02F178E02BE0093DFC0 /* include */ = { + isa = PBXGroup; + children = ( + 27AAD030178E02D20093DFC0 /* begin_code.h */, + 27AAD031178E02D20093DFC0 /* close_code.h */, + 27AAD032178E02D20093DFC0 /* SDL_active.h */, + 27AAD033178E02D20093DFC0 /* SDL_audio.h */, + 27AAD034178E02D20093DFC0 /* SDL_byteorder.h */, + 27AAD035178E02D20093DFC0 /* SDL_cdrom.h */, + 27AAD036178E02D20093DFC0 /* SDL_config_amiga.h */, + 27AAD037178E02D20093DFC0 /* SDL_config_dreamcast.h */, + 27AAD038178E02D20093DFC0 /* SDL_config_macos.h */, + 27AAD039178E02D20093DFC0 /* SDL_config_macosx.h */, + 27AAD03A178E02D20093DFC0 /* SDL_config_minimal.h */, + 27AAD03B178E02D20093DFC0 /* SDL_config_nds.h */, + 27AAD03C178E02D20093DFC0 /* SDL_config_os2.h */, + 27AAD03D178E02D20093DFC0 /* SDL_config_symbian.h */, + 27AAD03E178E02D20093DFC0 /* SDL_config_win32.h */, + 27AAD03F178E02D20093DFC0 /* SDL_config.h */, + 27AAD040178E02D20093DFC0 /* SDL_copying.h */, + 27AAD041178E02D20093DFC0 /* SDL_cpuinfo.h */, + 27AAD042178E02D20093DFC0 /* SDL_endian.h */, + 27AAD043178E02D20093DFC0 /* SDL_error.h */, + 27AAD044178E02D20093DFC0 /* SDL_events.h */, + 27AAD045178E02D20093DFC0 /* SDL_getenv.h */, + 27AAD046178E02D20093DFC0 /* SDL_joystick.h */, + 27AAD047178E02D20093DFC0 /* SDL_keyboard.h */, + 27AAD048178E02D20093DFC0 /* SDL_keysym.h */, + 27AAD049178E02D20093DFC0 /* SDL_loadso.h */, + 27AAD04A178E02D20093DFC0 /* SDL_main.h */, + 27AAD04B178E02D20093DFC0 /* SDL_mouse.h */, + 27AAD04C178E02D20093DFC0 /* SDL_mutex.h */, + 27AAD04D178E02D20093DFC0 /* SDL_name.h */, + 27AAD04E178E02D20093DFC0 /* SDL_opengl.h */, + 27AAD04F178E02D20093DFC0 /* SDL_platform.h */, + 27AAD050178E02D20093DFC0 /* SDL_quit.h */, + 27AAD051178E02D20093DFC0 /* SDL_rwops.h */, + 27AAD052178E02D20093DFC0 /* SDL_stdinc.h */, + 27AAD053178E02D20093DFC0 /* SDL_syswm.h */, + 27AAD054178E02D20093DFC0 /* SDL_thread.h */, + 27AAD055178E02D20093DFC0 /* SDL_timer.h */, + 27AAD056178E02D20093DFC0 /* SDL_types.h */, + 27AAD057178E02D20093DFC0 /* SDL_version.h */, + 27AAD058178E02D20093DFC0 /* SDL_video.h */, + 27AAD059178E02D20093DFC0 /* SDL.h */, + ); + path = include; + sourceTree = ""; + }; + 27AAD05A178E03520093DFC0 /* renderercommon */ = { + isa = PBXGroup; + children = ( + 27AAD05B178E03620093DFC0 /* iqm.h */, + 27AAD05C178E03620093DFC0 /* qgl.h */, + 27AAD05D178E03620093DFC0 /* tr_common.h */, + 27AAD05E178E03620093DFC0 /* tr_font.c */, + 27AAD05F178E03620093DFC0 /* tr_image_bmp.c */, + 27AAD060178E03620093DFC0 /* tr_image_jpg.c */, + 27AAD061178E03620093DFC0 /* tr_image_pcx.c */, + 27AAD062178E03620093DFC0 /* tr_image_png.c */, + 27AAD063178E03620093DFC0 /* tr_image_tga.c */, + 27AAD064178E03620093DFC0 /* tr_noise.c */, + 27AAD065178E03620093DFC0 /* tr_public.h */, + 27AAD066178E03620093DFC0 /* tr_types.h */, + ); + path = renderercommon; + sourceTree = ""; + }; + 27B0E9EE1743E09600DB1F32 /* null */ = { + isa = PBXGroup; + children = ( + 27B0E9EF1743E0A800DB1F32 /* null_client.c */, + 27B0E9F01743E0A800DB1F32 /* null_glimp.c */, + 27B0E9F11743E0A800DB1F32 /* null_input.c */, + 27B0E9F21743E0A800DB1F32 /* null_main.c */, + 27B0E9F31743E0A800DB1F32 /* null_net.c */, + 27B0E9F41743E0A800DB1F32 /* null_snddma.c */, + ); + path = null; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 273531EA14D1275D00EB7BD6 /* ioquake3 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2735320914D1275D00EB7BD6 /* Build configuration list for PBXNativeTarget "ioquake3" */; + buildPhases = ( + 273531E714D1275D00EB7BD6 /* Sources */, + 273531E814D1275D00EB7BD6 /* Frameworks */, + 274FABFF178FAD9A00B17C7A /* Copy Files - Dynamic Libraries */, + 274FAC8C178FB4C500B17C7A /* Run Script - Bump Version Number */, + 2758BB35179061C1007F6582 /* Run Script - Copy Renderer & Game Dynamic Libraries, Symlink Architecture */, + 273531E914D1275D00EB7BD6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ioquake3; + productName = quake3; + productReference = 273531EB14D1275D00EB7BD6 /* ioquake3.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 273531E214D1275D00EB7BD6 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = io; + LastUpgradeCheck = 0500; + ORGANIZATIONNAME = ioquake; + }; + buildConfigurationList = 273531E514D1275D00EB7BD6 /* Build configuration list for PBXProject "ioquake3" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 273531E014D1275D00EB7BD6; + productRefGroup = 273531EC14D1275D00EB7BD6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 273531EA14D1275D00EB7BD6 /* ioquake3 */, + 2772B8021790EBE0004CCF57 /* all ioquake3 */, + 2772B8081790EC7F004CCF57 /* all game */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 273531E914D1275D00EB7BD6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2758BB42179070C3007F6582 /* quake3_flat.iconset in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 274FAC8C178FB4C500B17C7A /* Run Script - Bump Version Number */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script - Bump Version Number"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#\n# update the version from q_shared.h\n#\nPRODUCT_VERSION_FILE=\"${SRCROOT}/../../code/qcommon/q_shared.h\"\nPRODUCT_VERSION=`cat \"${PRODUCT_VERSION_FILE}\" | grep \"#define PRODUCT_VERSION\" | awk '{print $3}' | sed 's/\\\"//;s/\\\"$//'`\nGIT_VERSION=\"\"\n\nif [ \"${PRODUCT_VERSION}\" != \"\" ]; then\n /usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $PRODUCT_VERSION\" \"${INFOPLIST_FILE}\"\nfi\n\n#\n# update the git version\n#\nif [ -e \"${SRCROOT}/../../.git\" ]; then\n GIT_VERSION=`git show -s --pretty=format:%h-%ad --date=short`\n\n if [ \"${GIT_VERSION}\" != \"\" ]; then\n /usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $GIT_VERSION\" \"${INFOPLIST_FILE}\"\n fi\nfi\n"; + }; + 2758BB35179061C1007F6582 /* Run Script - Copy Renderer & Game Dynamic Libraries, Symlink Architecture */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script - Copy Renderer & Game Dynamic Libraries, Symlink Architecture"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#\n# copy the renderer & game dynamic libraries to their appropriate locations within the application bundle\n# symlink appropriate architecture names for universal (fat) binary support\n# TODO: missionpack support\n#\nBUILD=\"${BUILT_PRODUCTS_DIR}\"\nMACOS=\"${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}\"\nCGAME=\"cgame\"\nGAME=\"game\"\nQ3UI=\"q3_ui\"\nUI=\"ui\"\nBASEQ3=\"baseq3\"\nMISSIONPACK=\"missionpack\"\nRENDERER_OPENGL1=\"renderer_opengl1\"\nRENDERER_OPENGL2=\"renderer_opengl2\"\n\nfunction symlinkArch()\n{\n EXT=\"dylib\"\n SEP=\"${3}\"\n SRCFILE=\"${1}\"\n DSTFILE=\"${2}${SEP}\"\n DSTPATH=\"${4}\"\n\n if [ ! -e \"${DSTPATH}/${SRCFILE}.${EXT}\" ]; then\n echo \"**** ERROR: missing ${SRCFILE}.${EXT} from ${MACOS}\"\n exit 1\n fi\n\n if [ ! -d \"${DSTPATH}\" ]; then\n echo \"**** ERROR: path not found ${DSTPATH}\"\n exit 1\n fi\n\n pushd \"${DSTPATH}\" > /dev/null\n\n IS32=`file \"${SRCFILE}.${EXT}\" | grep \"i386\" | awk '{print $NF}'`\n IS64=`file \"${SRCFILE}.${EXT}\" | grep \"x86_64\" | awk '{print $NF}'`\n\n if [ \"${IS32}\" == \"i386\" ]; then\n if [ ! -L \"${DSTFILE}x86.${EXT}\" ]; then\n ln -s \"${SRCFILE}.${EXT}\" \"${DSTFILE}x86.${EXT}\"\n fi\n elif [ -L \"${DSTFILE}x86.${EXT}\" ]; then\n rm \"${DSTFILE}x86.${EXT}\"\n fi\n\n if [ \"${IS64}\" == \"x86_64\" ]; then\n if [ ! -L \"${DSTFILE}x86_64.${EXT}\" ]; then\n ln -s \"${SRCFILE}.${EXT}\" \"${DSTFILE}x86_64.${EXT}\"\n fi\n elif [ -L \"${DSTFILE}x86_64.${EXT}\" ]; then\n rm \"${DSTFILE}x86_64.${EXT}\"\n fi\n\n popd > /dev/null\n}\n\nfunction checkBuildFile()\n{\n if [ ! -e \"${BUILD}/${1}\" ]; then\n echo \"**** ERROR: file not found '${BUILD}/${1}'\"\n exit 1\n fi\n}\n\nfunction checkMacOS()\n{\n if [ ! -d \"${MACOS}\" ]; then\n echo \"**** ERROR: missing executable folder path '${EXECUTABLE_FOLDER_PATH}'\"\n exit 1\n fi\n}\n\nfunction safeCopyBuildFileToFolder\n{\n if [ ! -e \"${BUILD}/${1}\" ]; then\n echo \"**** ERROR: file not found '${1}' in build folder '${BUILD}'\"\n exit 1\n fi\n\n if [ ! -d \"${2}\" ]; then\n echo \"**** ERROR: destination folder not found '${2}'\"\n exit 1\n fi\n\n cp -pr \"${BUILD}/${1}\" \"${2}\"\n}\n\nfunction copyToMacOS()\n{\n checkBuildFile \"${1}\"\n checkMacOS\n\n safeCopyBuildFileToFolder \"${1}\" \"${MACOS}\"\n}\n\nfunction copyToBaseQ3()\n{\n checkBuildFile \"${1}\"\n checkMacOS\n\n if [ ! -d \"${MACOS}/${BASEQ3}\" ]; then\n mkdir \"${MACOS}/${BASEQ3}\"\n fi\n\n safeCopyBuildFileToFolder \"${1}\" \"${MACOS}/${BASEQ3}\"\n}\n\nfunction copyToMissionPack()\n{\n checkBuildFile \"${1}\"\n checkMacOS\n\n if [ ! -d \"${MACOS}/${MISSIONPACK}\" ]; then\n mkdir \"${MACOS}/${MISSIONPACK}\"\n fi\n\n safeCopyBuildFileToFolder \"${1}\" \"${MACOS}/${MISSIONPACK}\"\n}\n\ncopyToMacOS \"${RENDERER_OPENGL1}.dylib\"\ncopyToMacOS \"${RENDERER_OPENGL2}.dylib\"\n\nsymlinkArch \"${RENDERER_OPENGL1}\" \"${RENDERER_OPENGL1}\" \"_\" \"${MACOS}\"\nsymlinkArch \"${RENDERER_OPENGL2}\" \"${RENDERER_OPENGL2}\" \"_\" \"${MACOS}\" \n\ncopyToBaseQ3 \"${CGAME}.dylib\"\nsymlinkArch \"${CGAME}\" \"${CGAME}\" \"\" \"${MACOS}/${BASEQ3}\"\n\ncopyToBaseQ3 \"${GAME}.dylib\"\nsymlinkArch \"${GAME}\" \"${GAME}\" \"\" \"${MACOS}/${BASEQ3}\"\n\ncopyToBaseQ3 \"${Q3UI}.dylib\"\nsymlinkArch \"${Q3UI}\" \"${UI}\" \"\" \"${MACOS}/${BASEQ3}\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 273531E714D1275D00EB7BD6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2711BE7A14D13696005EB142 /* sv_bot.c in Sources */, + 2711BE7B14D13696005EB142 /* sv_ccmds.c in Sources */, + 2711BE7C14D13696005EB142 /* sv_client.c in Sources */, + 2711BE7D14D13696005EB142 /* sv_game.c in Sources */, + 2711BE7E14D13696005EB142 /* sv_init.c in Sources */, + 2711BE7F14D13696005EB142 /* sv_main.c in Sources */, + 2711BE8014D13696005EB142 /* sv_net_chan.c in Sources */, + 2711BE8214D13696005EB142 /* sv_snapshot.c in Sources */, + 2711BE8314D13696005EB142 /* sv_world.c in Sources */, + 2711BEA014D136DF005EB142 /* cm_load.c in Sources */, + 2711BEA114D136DF005EB142 /* cm_patch.c in Sources */, + 2711BEA214D136DF005EB142 /* cm_polylib.c in Sources */, + 2711BEA314D136DF005EB142 /* cm_test.c in Sources */, + 2711BEA414D136DF005EB142 /* cm_trace.c in Sources */, + 2711BEA514D136DF005EB142 /* cmd.c in Sources */, + 2711BEA614D136DF005EB142 /* common.c in Sources */, + 2711BEA714D136DF005EB142 /* cvar.c in Sources */, + 2711BEA814D136DF005EB142 /* files.c in Sources */, + 2711BEA914D136DF005EB142 /* huffman.c in Sources */, + 2711BEAA14D136DF005EB142 /* md4.c in Sources */, + 2711BEAB14D136DF005EB142 /* msg.c in Sources */, + 2711BEAC14D136DF005EB142 /* net_chan.c in Sources */, + 2711BEAD14D136DF005EB142 /* unzip.c in Sources */, + 2711BEAE14D136DF005EB142 /* vm_interpreted.c in Sources */, + 2711BEB214D136DF005EB142 /* vm.c in Sources */, + 2711BED014D137BC005EB142 /* cl_cgame.c in Sources */, + 2711BED114D137BC005EB142 /* cl_cin.c in Sources */, + 2711BED214D137BC005EB142 /* cl_console.c in Sources */, + 2711BED314D137BC005EB142 /* cl_input.c in Sources */, + 2711BED414D137BC005EB142 /* cl_keys.c in Sources */, + 2711BED514D137BC005EB142 /* cl_main.c in Sources */, + 2711BED614D137BC005EB142 /* cl_net_chan.c in Sources */, + 2711BED714D137BC005EB142 /* cl_parse.c in Sources */, + 2711BED814D137BC005EB142 /* cl_scrn.c in Sources */, + 2711BED914D137BC005EB142 /* cl_ui.c in Sources */, + 2711BEDA14D137BC005EB142 /* snd_adpcm.c in Sources */, + 2711BEDB14D137BC005EB142 /* snd_dma.c in Sources */, + 2711BEDC14D137BC005EB142 /* snd_mem.c in Sources */, + 2711BEDD14D137BC005EB142 /* snd_mix.c in Sources */, + 2711BEDE14D137BC005EB142 /* snd_wavelet.c in Sources */, + 27AACFEA178DF8760093DFC0 /* con_log.c in Sources */, + 27AACFEC178DF8760093DFC0 /* con_tty.c in Sources */, + 27AACFEE178DF8760093DFC0 /* sys_main.c in Sources */, + 27AACFEF178DF8760093DFC0 /* sys_osx.m in Sources */, + 27AACFF0178DF8760093DFC0 /* sys_unix.c in Sources */, + 27AACFFC178E001D0093DFC0 /* cl_avi.c in Sources */, + 27AACFFF178E002B0093DFC0 /* cl_curl.c in Sources */, + 27AAD003178E00550093DFC0 /* qal.c in Sources */, + 27AAD007178E00650093DFC0 /* snd_codec_ogg.c in Sources */, + 27AAD008178E00650093DFC0 /* snd_codec_opus.c in Sources */, + 27AAD009178E00650093DFC0 /* snd_codec_wav.c in Sources */, + 27AAD00C178E006E0093DFC0 /* snd_codec.c in Sources */, + 27AAD00E178E007B0093DFC0 /* snd_openal.c in Sources */, + 27AAD011178E00AB0093DFC0 /* ioapi.c in Sources */, + 27AAD013178E00C30093DFC0 /* net_ip.c in Sources */, + 27AAD016178E00CE0093DFC0 /* puff.c in Sources */, + 27AAD01B178E00E80093DFC0 /* q_math.c in Sources */, + 27AAD01C178E00E80093DFC0 /* q_shared.c in Sources */, + 27AAD02C178E013E0093DFC0 /* sdl_input.c in Sources */, + 27AAD02D178E013E0093DFC0 /* sdl_snd.c in Sources */, + 274FAB79178FA81800B17C7A /* snd_main.c in Sources */, + 274FAB7B178FA86E00B17C7A /* md5.c in Sources */, + 274FAB86178FA97400B17C7A /* ftola.c in Sources */, + 274FAB87178FA98500B17C7A /* snapvector.c in Sources */, + 274FAB88178FA98E00B17C7A /* snd_mixa.s in Sources */, + 274FAB8A178FA9AA00B17C7A /* matha.s in Sources */, + 274FABFD178FAC4900B17C7A /* vm_x86.c in Sources */, + 274FABFE178FAC6E00B17C7A /* tr_noise.c in Sources */, + 278714D917911C1300094CA3 /* libmumblelink.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 2772B80D1790ECAB004CCF57 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 273531EA14D1275D00EB7BD6 /* ioquake3 */; + targetProxy = 2772B80C1790ECAB004CCF57 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2735320714D1275D00EB7BD6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + MACOS_X, + BOTLIB, + MISSIONPACK, + "USE_OPENAL=1", + "USE_OPENAL_DLOPEN=1", + "USE_CURL=1", + "USE_CURL_DLOPEN=1", + "NO_USE_CODEC_VORBIS=0", + "NO_USE_CODEC_OPUS=1", + "NO_USE_MUMBLE=1", + "USE_VOIP=1", + "NO_USE_FREETYPE=0", + "NO_USE_INTERNAL_SPEEX=1", + "NO_USE_INTERNAL_OGG=1", + "NO_USE_INTERNAL_OPUS=1", + "NO_USE_INTERNAL_ZLIB=1", + "NO_USE_INTERNAL_JPEG=1", + "USE_LOCAL_HEADERS=1", + "USE_RENDERER_DLOPEN=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 2735320814D1275D00EB7BD6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + MACOS_X, + BOTLIB, + MISSIONPACK, + "USE_CURL=1", + "USE_CURL_DLOPEN=1", + "USE_OPENAL=1", + "USE_OPENAL_DLOPEN=1", + "USE_VOIP=1", + "USE_LOCAL_HEADERS=1", + "USE_RENDERER_DLOPEN=1", + ); + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 2735320A14D1275D00EB7BD6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "ioquake3-Prefix.pch"; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/jpeg-8c\"", + "\"$(SRCROOT)/../../code/libspeex/include\"", + "\"$(SRCROOT)/../../code/opus-1.0.2/include\"", + "\"$(SRCROOT)/../../code/opusfile-0.2/include\"", + "\"$(SRCROOT)/../../code/libogg-1.3.0/include\"", + ); + INFOPLIST_FILE = "ioquake3-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../code/libs/macosx\"", + "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-dqrqeayrbnbwitdwenoviousqwyc/Build/Products/Debug\"", + "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-bwsysqgnnblpppgnczkimhgcpjhj/Build/Products/Debug\"", + ); + MACOSX_DEPLOYMENT_TARGET = 10.4; + PRODUCT_NAME = ioquake3; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 2735320B14D1275D00EB7BD6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "ioquake3-Prefix.pch"; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/jpeg-8c\"", + "\"$(SRCROOT)/../../code/libspeex/include\"", + "\"$(SRCROOT)/../../code/opus-1.0.2/include\"", + "\"$(SRCROOT)/../../code/opusfile-0.2/include\"", + "\"$(SRCROOT)/../../code/libogg-1.3.0/include\"", + ); + INFOPLIST_FILE = "ioquake3-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../code/libs/macosx\"", + "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-dqrqeayrbnbwitdwenoviousqwyc/Build/Products/Debug\"", + "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-bwsysqgnnblpppgnczkimhgcpjhj/Build/Products/Debug\"", + ); + MACOSX_DEPLOYMENT_TARGET = 10.4; + PRODUCT_NAME = ioquake3; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 2772B8041790EBE0004CCF57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 2772B8051790EBE0004CCF57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 2772B80A1790EC7F004CCF57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 2772B80B1790EC7F004CCF57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 273531E514D1275D00EB7BD6 /* Build configuration list for PBXProject "ioquake3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2735320714D1275D00EB7BD6 /* Debug */, + 2735320814D1275D00EB7BD6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2735320914D1275D00EB7BD6 /* Build configuration list for PBXNativeTarget "ioquake3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2735320A14D1275D00EB7BD6 /* Debug */, + 2735320B14D1275D00EB7BD6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2772B8031790EBE0004CCF57 /* Build configuration list for PBXAggregateTarget "all ioquake3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2772B8041790EBE0004CCF57 /* Debug */, + 2772B8051790EBE0004CCF57 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2772B8091790EC7F004CCF57 /* Build configuration list for PBXAggregateTarget "all game" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2772B80A1790EC7F004CCF57 /* Debug */, + 2772B80B1790EC7F004CCF57 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 273531E214D1275D00EB7BD6 /* Project object */; +} diff --git a/misc/xcode/ioquake3.xcworkspace/contents.xcworkspacedata b/misc/xcode/ioquake3.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..6917d587 --- /dev/null +++ b/misc/xcode/ioquake3.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/misc/xcode/jpeg8.xcodeproj/project.pbxproj b/misc/xcode/jpeg8.xcodeproj/project.pbxproj new file mode 100644 index 00000000..f9d7acf2 --- /dev/null +++ b/misc/xcode/jpeg8.xcodeproj/project.pbxproj @@ -0,0 +1,425 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 274FABC6178FAB9600B17C7A /* jaricom.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB8F178FAB9600B17C7A /* jaricom.c */; }; + 274FABC7178FAB9600B17C7A /* jcapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB90178FAB9600B17C7A /* jcapimin.c */; }; + 274FABC8178FAB9600B17C7A /* jcapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB91178FAB9600B17C7A /* jcapistd.c */; }; + 274FABC9178FAB9600B17C7A /* jcarith.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB92178FAB9600B17C7A /* jcarith.c */; }; + 274FABCA178FAB9600B17C7A /* jccoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB93178FAB9600B17C7A /* jccoefct.c */; }; + 274FABCB178FAB9600B17C7A /* jccolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB94178FAB9600B17C7A /* jccolor.c */; }; + 274FABCC178FAB9600B17C7A /* jcdctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB95178FAB9600B17C7A /* jcdctmgr.c */; }; + 274FABCD178FAB9600B17C7A /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB96178FAB9600B17C7A /* jchuff.c */; }; + 274FABCE178FAB9600B17C7A /* jcinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB97178FAB9600B17C7A /* jcinit.c */; }; + 274FABCF178FAB9600B17C7A /* jcmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB98178FAB9600B17C7A /* jcmainct.c */; }; + 274FABD0178FAB9600B17C7A /* jcmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB99178FAB9600B17C7A /* jcmarker.c */; }; + 274FABD1178FAB9600B17C7A /* jcmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB9A178FAB9600B17C7A /* jcmaster.c */; }; + 274FABD2178FAB9600B17C7A /* jcomapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB9B178FAB9600B17C7A /* jcomapi.c */; }; + 274FABD4178FAB9600B17C7A /* jcparam.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB9D178FAB9600B17C7A /* jcparam.c */; }; + 274FABD5178FAB9600B17C7A /* jcprepct.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB9E178FAB9600B17C7A /* jcprepct.c */; }; + 274FABD6178FAB9600B17C7A /* jcsample.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAB9F178FAB9600B17C7A /* jcsample.c */; }; + 274FABD7178FAB9600B17C7A /* jctrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA0178FAB9600B17C7A /* jctrans.c */; }; + 274FABD8178FAB9600B17C7A /* jdapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA1178FAB9600B17C7A /* jdapimin.c */; }; + 274FABD9178FAB9600B17C7A /* jdapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA2178FAB9600B17C7A /* jdapistd.c */; }; + 274FABDA178FAB9600B17C7A /* jdarith.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA3178FAB9600B17C7A /* jdarith.c */; }; + 274FABDB178FAB9600B17C7A /* jdatadst.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA4178FAB9600B17C7A /* jdatadst.c */; }; + 274FABDC178FAB9600B17C7A /* jdatasrc.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA5178FAB9600B17C7A /* jdatasrc.c */; }; + 274FABDD178FAB9600B17C7A /* jdcoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA6178FAB9600B17C7A /* jdcoefct.c */; }; + 274FABDE178FAB9600B17C7A /* jdcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA7178FAB9600B17C7A /* jdcolor.c */; }; + 274FABE0178FAB9600B17C7A /* jddctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABA9178FAB9600B17C7A /* jddctmgr.c */; }; + 274FABE1178FAB9600B17C7A /* jdhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABAA178FAB9600B17C7A /* jdhuff.c */; }; + 274FABE2178FAB9600B17C7A /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABAB178FAB9600B17C7A /* jdinput.c */; }; + 274FABE3178FAB9600B17C7A /* jdmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABAC178FAB9600B17C7A /* jdmainct.c */; }; + 274FABE4178FAB9600B17C7A /* jdmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABAD178FAB9600B17C7A /* jdmarker.c */; }; + 274FABE5178FAB9600B17C7A /* jdmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABAE178FAB9600B17C7A /* jdmaster.c */; }; + 274FABE6178FAB9600B17C7A /* jdmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABAF178FAB9600B17C7A /* jdmerge.c */; }; + 274FABE7178FAB9600B17C7A /* jdpostct.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB0178FAB9600B17C7A /* jdpostct.c */; }; + 274FABE8178FAB9600B17C7A /* jdsample.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB1178FAB9600B17C7A /* jdsample.c */; }; + 274FABE9178FAB9600B17C7A /* jdtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB2178FAB9600B17C7A /* jdtrans.c */; }; + 274FABEA178FAB9600B17C7A /* jerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB3178FAB9600B17C7A /* jerror.c */; }; + 274FABEC178FAB9600B17C7A /* jfdctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB5178FAB9600B17C7A /* jfdctflt.c */; }; + 274FABED178FAB9600B17C7A /* jfdctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB6178FAB9600B17C7A /* jfdctfst.c */; }; + 274FABEE178FAB9700B17C7A /* jfdctint.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB7178FAB9600B17C7A /* jfdctint.c */; }; + 274FABEF178FAB9700B17C7A /* jidctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB8178FAB9600B17C7A /* jidctflt.c */; }; + 274FABF0178FAB9700B17C7A /* jidctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABB9178FAB9600B17C7A /* jidctfst.c */; }; + 274FABF1178FAB9700B17C7A /* jidctint.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABBA178FAB9600B17C7A /* jidctint.c */; }; + 274FABF3178FAB9700B17C7A /* jmemmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABBC178FAB9600B17C7A /* jmemmgr.c */; }; + 274FABF4178FAB9700B17C7A /* jmemnobs.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABBD178FAB9600B17C7A /* jmemnobs.c */; }; + 274FABF9178FAB9700B17C7A /* jquant1.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABC2178FAB9600B17C7A /* jquant1.c */; }; + 274FABFA178FAB9700B17C7A /* jquant2.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABC3178FAB9600B17C7A /* jquant2.c */; }; + 274FABFB178FAB9700B17C7A /* jutils.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FABC4178FAB9600B17C7A /* jutils.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2737EBE214D13F2300675E9F /* libjpeg8.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjpeg8.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 274FAB8F178FAB9600B17C7A /* jaricom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jaricom.c; sourceTree = ""; }; + 274FAB90178FAB9600B17C7A /* jcapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcapimin.c; sourceTree = ""; }; + 274FAB91178FAB9600B17C7A /* jcapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcapistd.c; sourceTree = ""; }; + 274FAB92178FAB9600B17C7A /* jcarith.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcarith.c; sourceTree = ""; }; + 274FAB93178FAB9600B17C7A /* jccoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jccoefct.c; sourceTree = ""; }; + 274FAB94178FAB9600B17C7A /* jccolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jccolor.c; sourceTree = ""; }; + 274FAB95178FAB9600B17C7A /* jcdctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcdctmgr.c; sourceTree = ""; }; + 274FAB96178FAB9600B17C7A /* jchuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jchuff.c; sourceTree = ""; }; + 274FAB97178FAB9600B17C7A /* jcinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcinit.c; sourceTree = ""; }; + 274FAB98178FAB9600B17C7A /* jcmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcmainct.c; sourceTree = ""; }; + 274FAB99178FAB9600B17C7A /* jcmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcmarker.c; sourceTree = ""; }; + 274FAB9A178FAB9600B17C7A /* jcmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcmaster.c; sourceTree = ""; }; + 274FAB9B178FAB9600B17C7A /* jcomapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcomapi.c; sourceTree = ""; }; + 274FAB9C178FAB9600B17C7A /* jconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jconfig.h; sourceTree = ""; }; + 274FAB9D178FAB9600B17C7A /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcparam.c; sourceTree = ""; }; + 274FAB9E178FAB9600B17C7A /* jcprepct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcprepct.c; sourceTree = ""; }; + 274FAB9F178FAB9600B17C7A /* jcsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jcsample.c; sourceTree = ""; }; + 274FABA0178FAB9600B17C7A /* jctrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jctrans.c; sourceTree = ""; }; + 274FABA1178FAB9600B17C7A /* jdapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdapimin.c; sourceTree = ""; }; + 274FABA2178FAB9600B17C7A /* jdapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdapistd.c; sourceTree = ""; }; + 274FABA3178FAB9600B17C7A /* jdarith.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdarith.c; sourceTree = ""; }; + 274FABA4178FAB9600B17C7A /* jdatadst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdatadst.c; sourceTree = ""; }; + 274FABA5178FAB9600B17C7A /* jdatasrc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdatasrc.c; sourceTree = ""; }; + 274FABA6178FAB9600B17C7A /* jdcoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdcoefct.c; sourceTree = ""; }; + 274FABA7178FAB9600B17C7A /* jdcolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdcolor.c; sourceTree = ""; }; + 274FABA8178FAB9600B17C7A /* jdct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jdct.h; sourceTree = ""; }; + 274FABA9178FAB9600B17C7A /* jddctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jddctmgr.c; sourceTree = ""; }; + 274FABAA178FAB9600B17C7A /* jdhuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdhuff.c; sourceTree = ""; }; + 274FABAB178FAB9600B17C7A /* jdinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdinput.c; sourceTree = ""; }; + 274FABAC178FAB9600B17C7A /* jdmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdmainct.c; sourceTree = ""; }; + 274FABAD178FAB9600B17C7A /* jdmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdmarker.c; sourceTree = ""; }; + 274FABAE178FAB9600B17C7A /* jdmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdmaster.c; sourceTree = ""; }; + 274FABAF178FAB9600B17C7A /* jdmerge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdmerge.c; sourceTree = ""; }; + 274FABB0178FAB9600B17C7A /* jdpostct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdpostct.c; sourceTree = ""; }; + 274FABB1178FAB9600B17C7A /* jdsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdsample.c; sourceTree = ""; }; + 274FABB2178FAB9600B17C7A /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jdtrans.c; sourceTree = ""; }; + 274FABB3178FAB9600B17C7A /* jerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jerror.c; sourceTree = ""; }; + 274FABB4178FAB9600B17C7A /* jerror.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jerror.h; sourceTree = ""; }; + 274FABB5178FAB9600B17C7A /* jfdctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jfdctflt.c; sourceTree = ""; }; + 274FABB6178FAB9600B17C7A /* jfdctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jfdctfst.c; sourceTree = ""; }; + 274FABB7178FAB9600B17C7A /* jfdctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jfdctint.c; sourceTree = ""; }; + 274FABB8178FAB9600B17C7A /* jidctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jidctflt.c; sourceTree = ""; }; + 274FABB9178FAB9600B17C7A /* jidctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jidctfst.c; sourceTree = ""; }; + 274FABBA178FAB9600B17C7A /* jidctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jidctint.c; sourceTree = ""; }; + 274FABBB178FAB9600B17C7A /* jinclude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jinclude.h; sourceTree = ""; }; + 274FABBC178FAB9600B17C7A /* jmemmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jmemmgr.c; sourceTree = ""; }; + 274FABBD178FAB9600B17C7A /* jmemnobs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jmemnobs.c; sourceTree = ""; }; + 274FABBE178FAB9600B17C7A /* jmemsys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jmemsys.h; sourceTree = ""; }; + 274FABBF178FAB9600B17C7A /* jmorecfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jmorecfg.h; sourceTree = ""; }; + 274FABC0178FAB9600B17C7A /* jpegint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jpegint.h; sourceTree = ""; }; + 274FABC1178FAB9600B17C7A /* jpeglib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jpeglib.h; sourceTree = ""; }; + 274FABC2178FAB9600B17C7A /* jquant1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jquant1.c; sourceTree = ""; }; + 274FABC3178FAB9600B17C7A /* jquant2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jquant2.c; sourceTree = ""; }; + 274FABC4178FAB9600B17C7A /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jutils.c; sourceTree = ""; }; + 274FABC5178FAB9600B17C7A /* jversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jversion.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2737EBDF14D13F2300675E9F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2737EBD714D13F2300675E9F = { + isa = PBXGroup; + children = ( + 2737EBE914D13F3000675E9F /* code */, + 2737EBE314D13F2300675E9F /* Products */, + ); + sourceTree = ""; + }; + 2737EBE314D13F2300675E9F /* Products */ = { + isa = PBXGroup; + children = ( + 2737EBE214D13F2300675E9F /* libjpeg8.a */, + ); + name = Products; + sourceTree = ""; + }; + 2737EBE914D13F3000675E9F /* code */ = { + isa = PBXGroup; + children = ( + 2737EBEE14D13F5900675E9F /* jpeg-8c */, + ); + name = code; + path = ../../code; + sourceTree = SOURCE_ROOT; + }; + 2737EBEE14D13F5900675E9F /* jpeg-8c */ = { + isa = PBXGroup; + children = ( + 274FAB8F178FAB9600B17C7A /* jaricom.c */, + 274FAB90178FAB9600B17C7A /* jcapimin.c */, + 274FAB91178FAB9600B17C7A /* jcapistd.c */, + 274FAB92178FAB9600B17C7A /* jcarith.c */, + 274FAB93178FAB9600B17C7A /* jccoefct.c */, + 274FAB94178FAB9600B17C7A /* jccolor.c */, + 274FAB95178FAB9600B17C7A /* jcdctmgr.c */, + 274FAB96178FAB9600B17C7A /* jchuff.c */, + 274FAB97178FAB9600B17C7A /* jcinit.c */, + 274FAB98178FAB9600B17C7A /* jcmainct.c */, + 274FAB99178FAB9600B17C7A /* jcmarker.c */, + 274FAB9A178FAB9600B17C7A /* jcmaster.c */, + 274FAB9B178FAB9600B17C7A /* jcomapi.c */, + 274FAB9C178FAB9600B17C7A /* jconfig.h */, + 274FAB9D178FAB9600B17C7A /* jcparam.c */, + 274FAB9E178FAB9600B17C7A /* jcprepct.c */, + 274FAB9F178FAB9600B17C7A /* jcsample.c */, + 274FABA0178FAB9600B17C7A /* jctrans.c */, + 274FABA1178FAB9600B17C7A /* jdapimin.c */, + 274FABA2178FAB9600B17C7A /* jdapistd.c */, + 274FABA3178FAB9600B17C7A /* jdarith.c */, + 274FABA4178FAB9600B17C7A /* jdatadst.c */, + 274FABA5178FAB9600B17C7A /* jdatasrc.c */, + 274FABA6178FAB9600B17C7A /* jdcoefct.c */, + 274FABA7178FAB9600B17C7A /* jdcolor.c */, + 274FABA8178FAB9600B17C7A /* jdct.h */, + 274FABA9178FAB9600B17C7A /* jddctmgr.c */, + 274FABAA178FAB9600B17C7A /* jdhuff.c */, + 274FABAB178FAB9600B17C7A /* jdinput.c */, + 274FABAC178FAB9600B17C7A /* jdmainct.c */, + 274FABAD178FAB9600B17C7A /* jdmarker.c */, + 274FABAE178FAB9600B17C7A /* jdmaster.c */, + 274FABAF178FAB9600B17C7A /* jdmerge.c */, + 274FABB0178FAB9600B17C7A /* jdpostct.c */, + 274FABB1178FAB9600B17C7A /* jdsample.c */, + 274FABB2178FAB9600B17C7A /* jdtrans.c */, + 274FABB3178FAB9600B17C7A /* jerror.c */, + 274FABB4178FAB9600B17C7A /* jerror.h */, + 274FABB5178FAB9600B17C7A /* jfdctflt.c */, + 274FABB6178FAB9600B17C7A /* jfdctfst.c */, + 274FABB7178FAB9600B17C7A /* jfdctint.c */, + 274FABB8178FAB9600B17C7A /* jidctflt.c */, + 274FABB9178FAB9600B17C7A /* jidctfst.c */, + 274FABBA178FAB9600B17C7A /* jidctint.c */, + 274FABBB178FAB9600B17C7A /* jinclude.h */, + 274FABBC178FAB9600B17C7A /* jmemmgr.c */, + 274FABBD178FAB9600B17C7A /* jmemnobs.c */, + 274FABBE178FAB9600B17C7A /* jmemsys.h */, + 274FABBF178FAB9600B17C7A /* jmorecfg.h */, + 274FABC0178FAB9600B17C7A /* jpegint.h */, + 274FABC1178FAB9600B17C7A /* jpeglib.h */, + 274FABC2178FAB9600B17C7A /* jquant1.c */, + 274FABC3178FAB9600B17C7A /* jquant2.c */, + 274FABC4178FAB9600B17C7A /* jutils.c */, + 274FABC5178FAB9600B17C7A /* jversion.h */, + ); + path = "jpeg-8c"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2737EBE114D13F2300675E9F /* jpeg8 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2737EBE614D13F2300675E9F /* Build configuration list for PBXNativeTarget "jpeg8" */; + buildPhases = ( + 2737EBDE14D13F2300675E9F /* Sources */, + 2737EBDF14D13F2300675E9F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = jpeg8; + productName = jpeg6; + productReference = 2737EBE214D13F2300675E9F /* libjpeg8.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2737EBD914D13F2300675E9F /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = io; + LastUpgradeCheck = 0500; + ORGANIZATIONNAME = ioquake; + }; + buildConfigurationList = 2737EBDC14D13F2300675E9F /* Build configuration list for PBXProject "jpeg8" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 2737EBD714D13F2300675E9F; + productRefGroup = 2737EBE314D13F2300675E9F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2737EBE114D13F2300675E9F /* jpeg8 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 2737EBDE14D13F2300675E9F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 274FABC6178FAB9600B17C7A /* jaricom.c in Sources */, + 274FABC7178FAB9600B17C7A /* jcapimin.c in Sources */, + 274FABC8178FAB9600B17C7A /* jcapistd.c in Sources */, + 274FABC9178FAB9600B17C7A /* jcarith.c in Sources */, + 274FABCA178FAB9600B17C7A /* jccoefct.c in Sources */, + 274FABCB178FAB9600B17C7A /* jccolor.c in Sources */, + 274FABCC178FAB9600B17C7A /* jcdctmgr.c in Sources */, + 274FABCD178FAB9600B17C7A /* jchuff.c in Sources */, + 274FABCE178FAB9600B17C7A /* jcinit.c in Sources */, + 274FABCF178FAB9600B17C7A /* jcmainct.c in Sources */, + 274FABD0178FAB9600B17C7A /* jcmarker.c in Sources */, + 274FABD1178FAB9600B17C7A /* jcmaster.c in Sources */, + 274FABD2178FAB9600B17C7A /* jcomapi.c in Sources */, + 274FABD4178FAB9600B17C7A /* jcparam.c in Sources */, + 274FABD5178FAB9600B17C7A /* jcprepct.c in Sources */, + 274FABD6178FAB9600B17C7A /* jcsample.c in Sources */, + 274FABD7178FAB9600B17C7A /* jctrans.c in Sources */, + 274FABD8178FAB9600B17C7A /* jdapimin.c in Sources */, + 274FABD9178FAB9600B17C7A /* jdapistd.c in Sources */, + 274FABDA178FAB9600B17C7A /* jdarith.c in Sources */, + 274FABDB178FAB9600B17C7A /* jdatadst.c in Sources */, + 274FABDC178FAB9600B17C7A /* jdatasrc.c in Sources */, + 274FABDD178FAB9600B17C7A /* jdcoefct.c in Sources */, + 274FABDE178FAB9600B17C7A /* jdcolor.c in Sources */, + 274FABE0178FAB9600B17C7A /* jddctmgr.c in Sources */, + 274FABE1178FAB9600B17C7A /* jdhuff.c in Sources */, + 274FABE2178FAB9600B17C7A /* jdinput.c in Sources */, + 274FABE3178FAB9600B17C7A /* jdmainct.c in Sources */, + 274FABE4178FAB9600B17C7A /* jdmarker.c in Sources */, + 274FABE5178FAB9600B17C7A /* jdmaster.c in Sources */, + 274FABE6178FAB9600B17C7A /* jdmerge.c in Sources */, + 274FABE7178FAB9600B17C7A /* jdpostct.c in Sources */, + 274FABE8178FAB9600B17C7A /* jdsample.c in Sources */, + 274FABE9178FAB9600B17C7A /* jdtrans.c in Sources */, + 274FABEA178FAB9600B17C7A /* jerror.c in Sources */, + 274FABEC178FAB9600B17C7A /* jfdctflt.c in Sources */, + 274FABED178FAB9600B17C7A /* jfdctfst.c in Sources */, + 274FABEE178FAB9700B17C7A /* jfdctint.c in Sources */, + 274FABEF178FAB9700B17C7A /* jidctflt.c in Sources */, + 274FABF0178FAB9700B17C7A /* jidctfst.c in Sources */, + 274FABF1178FAB9700B17C7A /* jidctint.c in Sources */, + 274FABF3178FAB9700B17C7A /* jmemmgr.c in Sources */, + 274FABF4178FAB9700B17C7A /* jmemnobs.c in Sources */, + 274FABF9178FAB9700B17C7A /* jquant1.c in Sources */, + 274FABFA178FAB9700B17C7A /* jquant2.c in Sources */, + 274FABFB178FAB9700B17C7A /* jutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2737EBE414D13F2300675E9F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = $SRCROOT/../macosx; + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 2737EBE514D13F2300675E9F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = $SRCROOT/../macosx; + INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)"; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 2737EBE714D13F2300675E9F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = jpeg8; + }; + name = Debug; + }; + 2737EBE814D13F2300675E9F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = jpeg8; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2737EBDC14D13F2300675E9F /* Build configuration list for PBXProject "jpeg8" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2737EBE414D13F2300675E9F /* Debug */, + 2737EBE514D13F2300675E9F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2737EBE614D13F2300675E9F /* Build configuration list for PBXNativeTarget "jpeg8" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2737EBE714D13F2300675E9F /* Debug */, + 2737EBE814D13F2300675E9F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2737EBD914D13F2300675E9F /* Project object */; +} diff --git a/misc/xcode/q3_ui.xcodeproj/project.pbxproj b/misc/xcode/q3_ui.xcodeproj/project.pbxproj new file mode 100644 index 00000000..77e3bd1d --- /dev/null +++ b/misc/xcode/q3_ui.xcodeproj/project.pbxproj @@ -0,0 +1,461 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2711BDBC14D13007005EB142 /* ui_syscalls.c in Sources */ = {isa = PBXBuildFile; fileRef = 2711BDBB14D13007005EB142 /* ui_syscalls.c */; }; + 2772B7BB1790E7C6004CCF57 /* ui_addbots.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B78D1790E7C6004CCF57 /* ui_addbots.c */; }; + 2772B7BC1790E7C6004CCF57 /* ui_atoms.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B78E1790E7C6004CCF57 /* ui_atoms.c */; }; + 2772B7BD1790E7C6004CCF57 /* ui_cdkey.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B78F1790E7C6004CCF57 /* ui_cdkey.c */; }; + 2772B7BE1790E7C6004CCF57 /* ui_cinematics.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7901790E7C6004CCF57 /* ui_cinematics.c */; }; + 2772B7BF1790E7C6004CCF57 /* ui_confirm.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7911790E7C6004CCF57 /* ui_confirm.c */; }; + 2772B7C01790E7C6004CCF57 /* ui_connect.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7921790E7C6004CCF57 /* ui_connect.c */; }; + 2772B7C11790E7C6004CCF57 /* ui_controls2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7931790E7C6004CCF57 /* ui_controls2.c */; }; + 2772B7C21790E7C6004CCF57 /* ui_credits.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7941790E7C6004CCF57 /* ui_credits.c */; }; + 2772B7C31790E7C6004CCF57 /* ui_demo2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7951790E7C6004CCF57 /* ui_demo2.c */; }; + 2772B7C41790E7C6004CCF57 /* ui_display.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7961790E7C6004CCF57 /* ui_display.c */; }; + 2772B7C51790E7C6004CCF57 /* ui_gameinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7971790E7C6004CCF57 /* ui_gameinfo.c */; }; + 2772B7C61790E7C6004CCF57 /* ui_ingame.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7981790E7C6004CCF57 /* ui_ingame.c */; }; + 2772B7C71790E7C6004CCF57 /* ui_loadconfig.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7991790E7C6004CCF57 /* ui_loadconfig.c */; }; + 2772B7CA1790E7C6004CCF57 /* ui_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B79C1790E7C6004CCF57 /* ui_main.c */; }; + 2772B7CB1790E7C6004CCF57 /* ui_menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B79D1790E7C6004CCF57 /* ui_menu.c */; }; + 2772B7CC1790E7C6004CCF57 /* ui_mfield.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B79E1790E7C6004CCF57 /* ui_mfield.c */; }; + 2772B7CD1790E7C6004CCF57 /* ui_mods.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B79F1790E7C6004CCF57 /* ui_mods.c */; }; + 2772B7CE1790E7C6004CCF57 /* ui_network.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A01790E7C6004CCF57 /* ui_network.c */; }; + 2772B7CF1790E7C6004CCF57 /* ui_options.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A11790E7C6004CCF57 /* ui_options.c */; }; + 2772B7D01790E7C6004CCF57 /* ui_playermodel.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A21790E7C6004CCF57 /* ui_playermodel.c */; }; + 2772B7D11790E7C6004CCF57 /* ui_players.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A31790E7C6004CCF57 /* ui_players.c */; }; + 2772B7D21790E7C6004CCF57 /* ui_playersettings.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A41790E7C6004CCF57 /* ui_playersettings.c */; }; + 2772B7D31790E7C6004CCF57 /* ui_preferences.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A51790E7C6004CCF57 /* ui_preferences.c */; }; + 2772B7D41790E7C6004CCF57 /* ui_qmenu.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A61790E7C6004CCF57 /* ui_qmenu.c */; }; + 2772B7D71790E7C6004CCF57 /* ui_removebots.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7A91790E7C6004CCF57 /* ui_removebots.c */; }; + 2772B7D81790E7C6004CCF57 /* ui_saveconfig.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7AA1790E7C6004CCF57 /* ui_saveconfig.c */; }; + 2772B7D91790E7C6004CCF57 /* ui_serverinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7AB1790E7C6004CCF57 /* ui_serverinfo.c */; }; + 2772B7DA1790E7C6004CCF57 /* ui_servers2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7AC1790E7C6004CCF57 /* ui_servers2.c */; }; + 2772B7DB1790E7C6004CCF57 /* ui_setup.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7AD1790E7C6004CCF57 /* ui_setup.c */; }; + 2772B7DD1790E7C6004CCF57 /* ui_sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7AF1790E7C6004CCF57 /* ui_sound.c */; }; + 2772B7DE1790E7C6004CCF57 /* ui_sparena.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B01790E7C6004CCF57 /* ui_sparena.c */; }; + 2772B7E01790E7C6004CCF57 /* ui_specifyserver.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B21790E7C6004CCF57 /* ui_specifyserver.c */; }; + 2772B7E11790E7C6004CCF57 /* ui_splevel.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B31790E7C6004CCF57 /* ui_splevel.c */; }; + 2772B7E21790E7C6004CCF57 /* ui_sppostgame.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B41790E7C6004CCF57 /* ui_sppostgame.c */; }; + 2772B7E31790E7C6004CCF57 /* ui_spreset.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B51790E7C6004CCF57 /* ui_spreset.c */; }; + 2772B7E41790E7C6004CCF57 /* ui_spskill.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B61790E7C6004CCF57 /* ui_spskill.c */; }; + 2772B7E51790E7C6004CCF57 /* ui_startserver.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B71790E7C6004CCF57 /* ui_startserver.c */; }; + 2772B7E61790E7C6004CCF57 /* ui_team.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B81790E7C6004CCF57 /* ui_team.c */; }; + 2772B7E71790E7C6004CCF57 /* ui_teamorders.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7B91790E7C6004CCF57 /* ui_teamorders.c */; }; + 2772B7E81790E7C6004CCF57 /* ui_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7BA1790E7C6004CCF57 /* ui_video.c */; }; + 2772B7EC1790E800004CCF57 /* bg_lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7E91790E800004CCF57 /* bg_lib.c */; }; + 2772B7EE1790E800004CCF57 /* bg_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7EB1790E800004CCF57 /* bg_misc.c */; }; + 2772B7F31790E835004CCF57 /* q_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7F01790E835004CCF57 /* q_math.c */; }; + 2772B7F41790E835004CCF57 /* q_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B7F11790E835004CCF57 /* q_shared.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2711BDBB14D13007005EB142 /* ui_syscalls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_syscalls.c; sourceTree = ""; }; + 273531C714D1270700EB7BD6 /* q3_ui.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = q3_ui.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2772B78D1790E7C6004CCF57 /* ui_addbots.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_addbots.c; sourceTree = ""; }; + 2772B78E1790E7C6004CCF57 /* ui_atoms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_atoms.c; sourceTree = ""; }; + 2772B78F1790E7C6004CCF57 /* ui_cdkey.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_cdkey.c; sourceTree = ""; }; + 2772B7901790E7C6004CCF57 /* ui_cinematics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_cinematics.c; sourceTree = ""; }; + 2772B7911790E7C6004CCF57 /* ui_confirm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_confirm.c; sourceTree = ""; }; + 2772B7921790E7C6004CCF57 /* ui_connect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_connect.c; sourceTree = ""; }; + 2772B7931790E7C6004CCF57 /* ui_controls2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_controls2.c; sourceTree = ""; }; + 2772B7941790E7C6004CCF57 /* ui_credits.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_credits.c; sourceTree = ""; }; + 2772B7951790E7C6004CCF57 /* ui_demo2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_demo2.c; sourceTree = ""; }; + 2772B7961790E7C6004CCF57 /* ui_display.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_display.c; sourceTree = ""; }; + 2772B7971790E7C6004CCF57 /* ui_gameinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_gameinfo.c; sourceTree = ""; }; + 2772B7981790E7C6004CCF57 /* ui_ingame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_ingame.c; sourceTree = ""; }; + 2772B7991790E7C6004CCF57 /* ui_loadconfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_loadconfig.c; sourceTree = ""; }; + 2772B79A1790E7C6004CCF57 /* ui_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_local.h; sourceTree = ""; }; + 2772B79B1790E7C6004CCF57 /* ui_login.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_login.c; sourceTree = ""; }; + 2772B79C1790E7C6004CCF57 /* ui_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_main.c; sourceTree = ""; }; + 2772B79D1790E7C6004CCF57 /* ui_menu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_menu.c; sourceTree = ""; }; + 2772B79E1790E7C6004CCF57 /* ui_mfield.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_mfield.c; sourceTree = ""; }; + 2772B79F1790E7C6004CCF57 /* ui_mods.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_mods.c; sourceTree = ""; }; + 2772B7A01790E7C6004CCF57 /* ui_network.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_network.c; sourceTree = ""; }; + 2772B7A11790E7C6004CCF57 /* ui_options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_options.c; sourceTree = ""; }; + 2772B7A21790E7C6004CCF57 /* ui_playermodel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_playermodel.c; sourceTree = ""; }; + 2772B7A31790E7C6004CCF57 /* ui_players.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_players.c; sourceTree = ""; }; + 2772B7A41790E7C6004CCF57 /* ui_playersettings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_playersettings.c; sourceTree = ""; }; + 2772B7A51790E7C6004CCF57 /* ui_preferences.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_preferences.c; sourceTree = ""; }; + 2772B7A61790E7C6004CCF57 /* ui_qmenu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_qmenu.c; sourceTree = ""; }; + 2772B7A71790E7C6004CCF57 /* ui_rankings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_rankings.c; sourceTree = ""; }; + 2772B7A81790E7C6004CCF57 /* ui_rankstatus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_rankstatus.c; sourceTree = ""; }; + 2772B7A91790E7C6004CCF57 /* ui_removebots.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_removebots.c; sourceTree = ""; }; + 2772B7AA1790E7C6004CCF57 /* ui_saveconfig.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_saveconfig.c; sourceTree = ""; }; + 2772B7AB1790E7C6004CCF57 /* ui_serverinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_serverinfo.c; sourceTree = ""; }; + 2772B7AC1790E7C6004CCF57 /* ui_servers2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_servers2.c; sourceTree = ""; }; + 2772B7AD1790E7C6004CCF57 /* ui_setup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_setup.c; sourceTree = ""; }; + 2772B7AE1790E7C6004CCF57 /* ui_signup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_signup.c; sourceTree = ""; }; + 2772B7AF1790E7C6004CCF57 /* ui_sound.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_sound.c; sourceTree = ""; }; + 2772B7B01790E7C6004CCF57 /* ui_sparena.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_sparena.c; sourceTree = ""; }; + 2772B7B11790E7C6004CCF57 /* ui_specifyleague.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_specifyleague.c; sourceTree = ""; }; + 2772B7B21790E7C6004CCF57 /* ui_specifyserver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_specifyserver.c; sourceTree = ""; }; + 2772B7B31790E7C6004CCF57 /* ui_splevel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_splevel.c; sourceTree = ""; }; + 2772B7B41790E7C6004CCF57 /* ui_sppostgame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_sppostgame.c; sourceTree = ""; }; + 2772B7B51790E7C6004CCF57 /* ui_spreset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_spreset.c; sourceTree = ""; }; + 2772B7B61790E7C6004CCF57 /* ui_spskill.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_spskill.c; sourceTree = ""; }; + 2772B7B71790E7C6004CCF57 /* ui_startserver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_startserver.c; sourceTree = ""; }; + 2772B7B81790E7C6004CCF57 /* ui_team.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_team.c; sourceTree = ""; }; + 2772B7B91790E7C6004CCF57 /* ui_teamorders.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_teamorders.c; sourceTree = ""; }; + 2772B7BA1790E7C6004CCF57 /* ui_video.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_video.c; sourceTree = ""; }; + 2772B7E91790E800004CCF57 /* bg_lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bg_lib.c; sourceTree = ""; }; + 2772B7EA1790E800004CCF57 /* bg_lib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bg_lib.h; sourceTree = ""; }; + 2772B7EB1790E800004CCF57 /* bg_misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bg_misc.c; sourceTree = ""; }; + 2772B7F01790E835004CCF57 /* q_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_math.c; sourceTree = ""; }; + 2772B7F11790E835004CCF57 /* q_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_shared.c; sourceTree = ""; }; + 2772B7F21790E835004CCF57 /* q_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = q_shared.h; sourceTree = ""; }; + 2772B7F71790E865004CCF57 /* keycodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keycodes.h; sourceTree = ""; }; + 2772B7F91790E904004CCF57 /* bg_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bg_public.h; sourceTree = ""; }; + 2772B7FC1790E9B6004CCF57 /* tr_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_types.h; sourceTree = ""; }; + 2772B7FE1790E9C5004CCF57 /* ui_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_public.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 273531C414D1270700EB7BD6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2711BDB614D12FCF005EB142 /* code */ = { + isa = PBXGroup; + children = ( + 2772B7F61790E851004CCF57 /* client */, + 2711BDB914D12FE9005EB142 /* game */, + 2711BDB814D12FE3005EB142 /* q3_ui */, + 2772B7EF1790E819004CCF57 /* qcommon */, + 2772B7FB1790E994004CCF57 /* renderercommon */, + 2711BDB714D12FDD005EB142 /* ui */, + ); + name = code; + path = ../../code; + sourceTree = SOURCE_ROOT; + }; + 2711BDB714D12FDD005EB142 /* ui */ = { + isa = PBXGroup; + children = ( + 2772B7FE1790E9C5004CCF57 /* ui_public.h */, + 2711BDBB14D13007005EB142 /* ui_syscalls.c */, + ); + path = ui; + sourceTree = ""; + }; + 2711BDB814D12FE3005EB142 /* q3_ui */ = { + isa = PBXGroup; + children = ( + 2772B78D1790E7C6004CCF57 /* ui_addbots.c */, + 2772B78E1790E7C6004CCF57 /* ui_atoms.c */, + 2772B78F1790E7C6004CCF57 /* ui_cdkey.c */, + 2772B7901790E7C6004CCF57 /* ui_cinematics.c */, + 2772B7911790E7C6004CCF57 /* ui_confirm.c */, + 2772B7921790E7C6004CCF57 /* ui_connect.c */, + 2772B7931790E7C6004CCF57 /* ui_controls2.c */, + 2772B7941790E7C6004CCF57 /* ui_credits.c */, + 2772B7951790E7C6004CCF57 /* ui_demo2.c */, + 2772B7961790E7C6004CCF57 /* ui_display.c */, + 2772B7971790E7C6004CCF57 /* ui_gameinfo.c */, + 2772B7981790E7C6004CCF57 /* ui_ingame.c */, + 2772B7991790E7C6004CCF57 /* ui_loadconfig.c */, + 2772B79A1790E7C6004CCF57 /* ui_local.h */, + 2772B79B1790E7C6004CCF57 /* ui_login.c */, + 2772B79C1790E7C6004CCF57 /* ui_main.c */, + 2772B79D1790E7C6004CCF57 /* ui_menu.c */, + 2772B79E1790E7C6004CCF57 /* ui_mfield.c */, + 2772B79F1790E7C6004CCF57 /* ui_mods.c */, + 2772B7A01790E7C6004CCF57 /* ui_network.c */, + 2772B7A11790E7C6004CCF57 /* ui_options.c */, + 2772B7A21790E7C6004CCF57 /* ui_playermodel.c */, + 2772B7A31790E7C6004CCF57 /* ui_players.c */, + 2772B7A41790E7C6004CCF57 /* ui_playersettings.c */, + 2772B7A51790E7C6004CCF57 /* ui_preferences.c */, + 2772B7A61790E7C6004CCF57 /* ui_qmenu.c */, + 2772B7A71790E7C6004CCF57 /* ui_rankings.c */, + 2772B7A81790E7C6004CCF57 /* ui_rankstatus.c */, + 2772B7A91790E7C6004CCF57 /* ui_removebots.c */, + 2772B7AA1790E7C6004CCF57 /* ui_saveconfig.c */, + 2772B7AB1790E7C6004CCF57 /* ui_serverinfo.c */, + 2772B7AC1790E7C6004CCF57 /* ui_servers2.c */, + 2772B7AD1790E7C6004CCF57 /* ui_setup.c */, + 2772B7AE1790E7C6004CCF57 /* ui_signup.c */, + 2772B7AF1790E7C6004CCF57 /* ui_sound.c */, + 2772B7B01790E7C6004CCF57 /* ui_sparena.c */, + 2772B7B11790E7C6004CCF57 /* ui_specifyleague.c */, + 2772B7B21790E7C6004CCF57 /* ui_specifyserver.c */, + 2772B7B31790E7C6004CCF57 /* ui_splevel.c */, + 2772B7B41790E7C6004CCF57 /* ui_sppostgame.c */, + 2772B7B51790E7C6004CCF57 /* ui_spreset.c */, + 2772B7B61790E7C6004CCF57 /* ui_spskill.c */, + 2772B7B71790E7C6004CCF57 /* ui_startserver.c */, + 2772B7B81790E7C6004CCF57 /* ui_team.c */, + 2772B7B91790E7C6004CCF57 /* ui_teamorders.c */, + 2772B7BA1790E7C6004CCF57 /* ui_video.c */, + ); + path = q3_ui; + sourceTree = ""; + }; + 2711BDB914D12FE9005EB142 /* game */ = { + isa = PBXGroup; + children = ( + 2772B7E91790E800004CCF57 /* bg_lib.c */, + 2772B7EA1790E800004CCF57 /* bg_lib.h */, + 2772B7EB1790E800004CCF57 /* bg_misc.c */, + 2772B7F91790E904004CCF57 /* bg_public.h */, + ); + path = game; + sourceTree = ""; + }; + 273531BC14D1270700EB7BD6 = { + isa = PBXGroup; + children = ( + 2711BDB614D12FCF005EB142 /* code */, + 273531C814D1270700EB7BD6 /* Products */, + ); + sourceTree = ""; + }; + 273531C814D1270700EB7BD6 /* Products */ = { + isa = PBXGroup; + children = ( + 273531C714D1270700EB7BD6 /* q3_ui.dylib */, + ); + name = Products; + sourceTree = ""; + }; + 2772B7EF1790E819004CCF57 /* qcommon */ = { + isa = PBXGroup; + children = ( + 2772B7F01790E835004CCF57 /* q_math.c */, + 2772B7F11790E835004CCF57 /* q_shared.c */, + 2772B7F21790E835004CCF57 /* q_shared.h */, + ); + path = qcommon; + sourceTree = ""; + }; + 2772B7F61790E851004CCF57 /* client */ = { + isa = PBXGroup; + children = ( + 2772B7F71790E865004CCF57 /* keycodes.h */, + ); + path = client; + sourceTree = ""; + }; + 2772B7FB1790E994004CCF57 /* renderercommon */ = { + isa = PBXGroup; + children = ( + 2772B7FC1790E9B6004CCF57 /* tr_types.h */, + ); + path = renderercommon; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 273531C614D1270700EB7BD6 /* q3_ui */ = { + isa = PBXNativeTarget; + buildConfigurationList = 273531CB14D1270700EB7BD6 /* Build configuration list for PBXNativeTarget "q3_ui" */; + buildPhases = ( + 273531C314D1270700EB7BD6 /* Sources */, + 273531C414D1270700EB7BD6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = q3_ui; + productName = q3_ui; + productReference = 273531C714D1270700EB7BD6 /* q3_ui.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 273531BE14D1270700EB7BD6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0500; + }; + buildConfigurationList = 273531C114D1270700EB7BD6 /* Build configuration list for PBXProject "q3_ui" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 273531BC14D1270700EB7BD6; + productRefGroup = 273531C814D1270700EB7BD6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 273531C614D1270700EB7BD6 /* q3_ui */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 273531C314D1270700EB7BD6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2711BDBC14D13007005EB142 /* ui_syscalls.c in Sources */, + 2772B7BB1790E7C6004CCF57 /* ui_addbots.c in Sources */, + 2772B7BC1790E7C6004CCF57 /* ui_atoms.c in Sources */, + 2772B7BD1790E7C6004CCF57 /* ui_cdkey.c in Sources */, + 2772B7BE1790E7C6004CCF57 /* ui_cinematics.c in Sources */, + 2772B7BF1790E7C6004CCF57 /* ui_confirm.c in Sources */, + 2772B7C01790E7C6004CCF57 /* ui_connect.c in Sources */, + 2772B7C11790E7C6004CCF57 /* ui_controls2.c in Sources */, + 2772B7C21790E7C6004CCF57 /* ui_credits.c in Sources */, + 2772B7C31790E7C6004CCF57 /* ui_demo2.c in Sources */, + 2772B7C41790E7C6004CCF57 /* ui_display.c in Sources */, + 2772B7C51790E7C6004CCF57 /* ui_gameinfo.c in Sources */, + 2772B7C61790E7C6004CCF57 /* ui_ingame.c in Sources */, + 2772B7C71790E7C6004CCF57 /* ui_loadconfig.c in Sources */, + 2772B7CA1790E7C6004CCF57 /* ui_main.c in Sources */, + 2772B7CB1790E7C6004CCF57 /* ui_menu.c in Sources */, + 2772B7CC1790E7C6004CCF57 /* ui_mfield.c in Sources */, + 2772B7CD1790E7C6004CCF57 /* ui_mods.c in Sources */, + 2772B7CE1790E7C6004CCF57 /* ui_network.c in Sources */, + 2772B7CF1790E7C6004CCF57 /* ui_options.c in Sources */, + 2772B7D01790E7C6004CCF57 /* ui_playermodel.c in Sources */, + 2772B7D11790E7C6004CCF57 /* ui_players.c in Sources */, + 2772B7D21790E7C6004CCF57 /* ui_playersettings.c in Sources */, + 2772B7D31790E7C6004CCF57 /* ui_preferences.c in Sources */, + 2772B7D41790E7C6004CCF57 /* ui_qmenu.c in Sources */, + 2772B7D71790E7C6004CCF57 /* ui_removebots.c in Sources */, + 2772B7D81790E7C6004CCF57 /* ui_saveconfig.c in Sources */, + 2772B7D91790E7C6004CCF57 /* ui_serverinfo.c in Sources */, + 2772B7DA1790E7C6004CCF57 /* ui_servers2.c in Sources */, + 2772B7DB1790E7C6004CCF57 /* ui_setup.c in Sources */, + 2772B7DD1790E7C6004CCF57 /* ui_sound.c in Sources */, + 2772B7DE1790E7C6004CCF57 /* ui_sparena.c in Sources */, + 2772B7E01790E7C6004CCF57 /* ui_specifyserver.c in Sources */, + 2772B7E11790E7C6004CCF57 /* ui_splevel.c in Sources */, + 2772B7E21790E7C6004CCF57 /* ui_sppostgame.c in Sources */, + 2772B7E31790E7C6004CCF57 /* ui_spreset.c in Sources */, + 2772B7E41790E7C6004CCF57 /* ui_spskill.c in Sources */, + 2772B7E51790E7C6004CCF57 /* ui_startserver.c in Sources */, + 2772B7E61790E7C6004CCF57 /* ui_team.c in Sources */, + 2772B7E71790E7C6004CCF57 /* ui_teamorders.c in Sources */, + 2772B7E81790E7C6004CCF57 /* ui_video.c in Sources */, + 2772B7EC1790E800004CCF57 /* bg_lib.c in Sources */, + 2772B7EE1790E800004CCF57 /* bg_misc.c in Sources */, + 2772B7F31790E835004CCF57 /* q_math.c in Sources */, + 2772B7F41790E835004CCF57 /* q_shared.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 273531C914D1270700EB7BD6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 273531CA14D1270700EB7BD6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 273531CC14D1270700EB7BD6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 273531CD14D1270700EB7BD6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 273531C114D1270700EB7BD6 /* Build configuration list for PBXProject "q3_ui" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273531C914D1270700EB7BD6 /* Debug */, + 273531CA14D1270700EB7BD6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 273531CB14D1270700EB7BD6 /* Build configuration list for PBXNativeTarget "q3_ui" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273531CC14D1270700EB7BD6 /* Debug */, + 273531CD14D1270700EB7BD6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 273531BE14D1270700EB7BD6 /* Project object */; +} diff --git a/misc/xcode/renderer_opengl1.xcodeproj/project.pbxproj b/misc/xcode/renderer_opengl1.xcodeproj/project.pbxproj new file mode 100644 index 00000000..b7d432ff --- /dev/null +++ b/misc/xcode/renderer_opengl1.xcodeproj/project.pbxproj @@ -0,0 +1,435 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 274FAC3E178FAF6900B17C7A /* tr_animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC26178FAF6900B17C7A /* tr_animation.c */; }; + 274FAC3F178FAF6900B17C7A /* tr_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC27178FAF6900B17C7A /* tr_backend.c */; }; + 274FAC40178FAF6900B17C7A /* tr_bsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC28178FAF6900B17C7A /* tr_bsp.c */; }; + 274FAC41178FAF6900B17C7A /* tr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC29178FAF6900B17C7A /* tr_cmds.c */; }; + 274FAC42178FAF6900B17C7A /* tr_curve.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC2A178FAF6900B17C7A /* tr_curve.c */; }; + 274FAC43178FAF6900B17C7A /* tr_flares.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC2B178FAF6900B17C7A /* tr_flares.c */; }; + 274FAC44178FAF6900B17C7A /* tr_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC2C178FAF6900B17C7A /* tr_image.c */; }; + 274FAC45178FAF6900B17C7A /* tr_init.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC2D178FAF6900B17C7A /* tr_init.c */; }; + 274FAC46178FAF6900B17C7A /* tr_light.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC2E178FAF6900B17C7A /* tr_light.c */; }; + 274FAC48178FAF6900B17C7A /* tr_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC30178FAF6900B17C7A /* tr_main.c */; }; + 274FAC49178FAF6900B17C7A /* tr_marks.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC31178FAF6900B17C7A /* tr_marks.c */; }; + 274FAC4A178FAF6900B17C7A /* tr_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC32178FAF6900B17C7A /* tr_mesh.c */; }; + 274FAC4B178FAF6900B17C7A /* tr_model_iqm.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC33178FAF6900B17C7A /* tr_model_iqm.c */; }; + 274FAC4C178FAF6900B17C7A /* tr_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC34178FAF6900B17C7A /* tr_model.c */; }; + 274FAC4D178FAF6900B17C7A /* tr_scene.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC35178FAF6900B17C7A /* tr_scene.c */; }; + 274FAC4E178FAF6900B17C7A /* tr_shade_calc.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC36178FAF6900B17C7A /* tr_shade_calc.c */; }; + 274FAC4F178FAF6900B17C7A /* tr_shade.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC37178FAF6900B17C7A /* tr_shade.c */; }; + 274FAC50178FAF6900B17C7A /* tr_shader.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC38178FAF6900B17C7A /* tr_shader.c */; }; + 274FAC51178FAF6900B17C7A /* tr_shadows.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC39178FAF6900B17C7A /* tr_shadows.c */; }; + 274FAC52178FAF6900B17C7A /* tr_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC3A178FAF6900B17C7A /* tr_sky.c */; }; + 274FAC53178FAF6900B17C7A /* tr_subs.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC3B178FAF6900B17C7A /* tr_subs.c */; }; + 274FAC54178FAF6900B17C7A /* tr_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC3C178FAF6900B17C7A /* tr_surface.c */; }; + 274FAC55178FAF6900B17C7A /* tr_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC3D178FAF6900B17C7A /* tr_world.c */; }; + 274FAC59178FAF8E00B17C7A /* sdl_gamma.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC57178FAF8E00B17C7A /* sdl_gamma.c */; }; + 274FAC5A178FAF8E00B17C7A /* sdl_glimp.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC58178FAF8E00B17C7A /* sdl_glimp.c */; }; + 274FAC62178FB14500B17C7A /* puff.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC5C178FB14500B17C7A /* puff.c */; }; + 274FAC64178FB14500B17C7A /* q_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC5E178FB14500B17C7A /* q_math.c */; }; + 274FAC65178FB14500B17C7A /* q_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC5F178FB14500B17C7A /* q_shared.c */; }; + 274FAC6B178FB17E00B17C7A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274FAC6A178FB17E00B17C7A /* OpenGL.framework */; }; + 274FAC6D178FB19200B17C7A /* libSDL-1.2.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 274FAC6C178FB19200B17C7A /* libSDL-1.2.0.dylib */; }; + 274FAC7E178FB1C800B17C7A /* tr_font.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC72178FB1C800B17C7A /* tr_font.c */; }; + 274FAC7F178FB1C800B17C7A /* tr_image_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC73178FB1C800B17C7A /* tr_image_bmp.c */; }; + 274FAC80178FB1C800B17C7A /* tr_image_jpg.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC74178FB1C800B17C7A /* tr_image_jpg.c */; }; + 274FAC81178FB1C800B17C7A /* tr_image_pcx.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC75178FB1C800B17C7A /* tr_image_pcx.c */; }; + 274FAC82178FB1C800B17C7A /* tr_image_png.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC76178FB1C800B17C7A /* tr_image_png.c */; }; + 274FAC83178FB1C800B17C7A /* tr_image_tga.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC77178FB1C800B17C7A /* tr_image_tga.c */; }; + 274FAC84178FB1C800B17C7A /* tr_noise.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FAC78178FB1C800B17C7A /* tr_noise.c */; }; + 274FAC88178FB1D600B17C7A /* libjpeg8.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 274FAC87178FB1D600B17C7A /* libjpeg8.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 274FAC0D178FAEFC00B17C7A /* renderer_opengl1.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = renderer_opengl1.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 274FAC26178FAF6900B17C7A /* tr_animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_animation.c; sourceTree = ""; }; + 274FAC27178FAF6900B17C7A /* tr_backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_backend.c; sourceTree = ""; }; + 274FAC28178FAF6900B17C7A /* tr_bsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_bsp.c; sourceTree = ""; }; + 274FAC29178FAF6900B17C7A /* tr_cmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_cmds.c; sourceTree = ""; }; + 274FAC2A178FAF6900B17C7A /* tr_curve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_curve.c; sourceTree = ""; }; + 274FAC2B178FAF6900B17C7A /* tr_flares.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_flares.c; sourceTree = ""; }; + 274FAC2C178FAF6900B17C7A /* tr_image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image.c; sourceTree = ""; }; + 274FAC2D178FAF6900B17C7A /* tr_init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_init.c; sourceTree = ""; }; + 274FAC2E178FAF6900B17C7A /* tr_light.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_light.c; sourceTree = ""; }; + 274FAC2F178FAF6900B17C7A /* tr_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_local.h; sourceTree = ""; }; + 274FAC30178FAF6900B17C7A /* tr_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_main.c; sourceTree = ""; }; + 274FAC31178FAF6900B17C7A /* tr_marks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_marks.c; sourceTree = ""; }; + 274FAC32178FAF6900B17C7A /* tr_mesh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_mesh.c; sourceTree = ""; }; + 274FAC33178FAF6900B17C7A /* tr_model_iqm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_model_iqm.c; sourceTree = ""; }; + 274FAC34178FAF6900B17C7A /* tr_model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_model.c; sourceTree = ""; }; + 274FAC35178FAF6900B17C7A /* tr_scene.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_scene.c; sourceTree = ""; }; + 274FAC36178FAF6900B17C7A /* tr_shade_calc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shade_calc.c; sourceTree = ""; }; + 274FAC37178FAF6900B17C7A /* tr_shade.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shade.c; sourceTree = ""; }; + 274FAC38178FAF6900B17C7A /* tr_shader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shader.c; sourceTree = ""; }; + 274FAC39178FAF6900B17C7A /* tr_shadows.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shadows.c; sourceTree = ""; }; + 274FAC3A178FAF6900B17C7A /* tr_sky.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_sky.c; sourceTree = ""; }; + 274FAC3B178FAF6900B17C7A /* tr_subs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_subs.c; sourceTree = ""; }; + 274FAC3C178FAF6900B17C7A /* tr_surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_surface.c; sourceTree = ""; }; + 274FAC3D178FAF6900B17C7A /* tr_world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_world.c; sourceTree = ""; }; + 274FAC57178FAF8E00B17C7A /* sdl_gamma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_gamma.c; sourceTree = ""; }; + 274FAC58178FAF8E00B17C7A /* sdl_glimp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_glimp.c; sourceTree = ""; }; + 274FAC5C178FB14500B17C7A /* puff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = puff.c; sourceTree = ""; }; + 274FAC5D178FB14500B17C7A /* puff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = puff.h; sourceTree = ""; }; + 274FAC5E178FB14500B17C7A /* q_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_math.c; sourceTree = ""; }; + 274FAC5F178FB14500B17C7A /* q_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_shared.c; sourceTree = ""; }; + 274FAC60178FB14500B17C7A /* q_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = q_shared.h; sourceTree = ""; }; + 274FAC61178FB14500B17C7A /* qcommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qcommon.h; sourceTree = ""; }; + 274FAC6A178FB17E00B17C7A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + 274FAC6C178FB19200B17C7A /* libSDL-1.2.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL-1.2.0.dylib"; path = "../../code/libs/macosx/libSDL-1.2.0.dylib"; sourceTree = SOURCE_ROOT; }; + 274FAC6F178FB1C800B17C7A /* iqm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iqm.h; sourceTree = ""; }; + 274FAC70178FB1C800B17C7A /* qgl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qgl.h; sourceTree = ""; }; + 274FAC71178FB1C800B17C7A /* tr_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_common.h; sourceTree = ""; }; + 274FAC72178FB1C800B17C7A /* tr_font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_font.c; sourceTree = ""; }; + 274FAC73178FB1C800B17C7A /* tr_image_bmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_bmp.c; sourceTree = ""; }; + 274FAC74178FB1C800B17C7A /* tr_image_jpg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_jpg.c; sourceTree = ""; }; + 274FAC75178FB1C800B17C7A /* tr_image_pcx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_pcx.c; sourceTree = ""; }; + 274FAC76178FB1C800B17C7A /* tr_image_png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_png.c; sourceTree = ""; }; + 274FAC77178FB1C800B17C7A /* tr_image_tga.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_tga.c; sourceTree = ""; }; + 274FAC78178FB1C800B17C7A /* tr_noise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_noise.c; sourceTree = ""; }; + 274FAC79178FB1C800B17C7A /* tr_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_public.h; sourceTree = ""; }; + 274FAC7A178FB1C800B17C7A /* tr_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_types.h; sourceTree = ""; }; + 274FAC87178FB1D600B17C7A /* libjpeg8.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libjpeg8.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 274FAC0A178FAEFC00B17C7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 274FAC88178FB1D600B17C7A /* libjpeg8.a in Frameworks */, + 274FAC6B178FB17E00B17C7A /* OpenGL.framework in Frameworks */, + 274FAC6D178FB19200B17C7A /* libSDL-1.2.0.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 274FAC04178FAEFC00B17C7A = { + isa = PBXGroup; + children = ( + 274FAC24178FAF3900B17C7A /* code */, + 274FAC68178FB15500B17C7A /* Frameworks */, + 274FAC69178FB15C00B17C7A /* Libraries */, + 274FAC0E178FAEFC00B17C7A /* Products */, + ); + sourceTree = ""; + }; + 274FAC0E178FAEFC00B17C7A /* Products */ = { + isa = PBXGroup; + children = ( + 274FAC0D178FAEFC00B17C7A /* renderer_opengl1.dylib */, + ); + name = Products; + sourceTree = ""; + }; + 274FAC24178FAF3900B17C7A /* code */ = { + isa = PBXGroup; + children = ( + 274FAC5B178FB11D00B17C7A /* qcommon */, + 274FAC6E178FB1AE00B17C7A /* renderercommon */, + 274FAC25178FAF4900B17C7A /* renderergl1 */, + 274FAC56178FAF7900B17C7A /* sdl */, + ); + name = code; + path = ../../code; + sourceTree = SOURCE_ROOT; + }; + 274FAC25178FAF4900B17C7A /* renderergl1 */ = { + isa = PBXGroup; + children = ( + 274FAC26178FAF6900B17C7A /* tr_animation.c */, + 274FAC27178FAF6900B17C7A /* tr_backend.c */, + 274FAC28178FAF6900B17C7A /* tr_bsp.c */, + 274FAC29178FAF6900B17C7A /* tr_cmds.c */, + 274FAC2A178FAF6900B17C7A /* tr_curve.c */, + 274FAC2B178FAF6900B17C7A /* tr_flares.c */, + 274FAC2C178FAF6900B17C7A /* tr_image.c */, + 274FAC2D178FAF6900B17C7A /* tr_init.c */, + 274FAC2E178FAF6900B17C7A /* tr_light.c */, + 274FAC2F178FAF6900B17C7A /* tr_local.h */, + 274FAC30178FAF6900B17C7A /* tr_main.c */, + 274FAC31178FAF6900B17C7A /* tr_marks.c */, + 274FAC32178FAF6900B17C7A /* tr_mesh.c */, + 274FAC33178FAF6900B17C7A /* tr_model_iqm.c */, + 274FAC34178FAF6900B17C7A /* tr_model.c */, + 274FAC35178FAF6900B17C7A /* tr_scene.c */, + 274FAC36178FAF6900B17C7A /* tr_shade_calc.c */, + 274FAC37178FAF6900B17C7A /* tr_shade.c */, + 274FAC38178FAF6900B17C7A /* tr_shader.c */, + 274FAC39178FAF6900B17C7A /* tr_shadows.c */, + 274FAC3A178FAF6900B17C7A /* tr_sky.c */, + 274FAC3B178FAF6900B17C7A /* tr_subs.c */, + 274FAC3C178FAF6900B17C7A /* tr_surface.c */, + 274FAC3D178FAF6900B17C7A /* tr_world.c */, + ); + path = renderergl1; + sourceTree = ""; + }; + 274FAC56178FAF7900B17C7A /* sdl */ = { + isa = PBXGroup; + children = ( + 274FAC57178FAF8E00B17C7A /* sdl_gamma.c */, + 274FAC58178FAF8E00B17C7A /* sdl_glimp.c */, + ); + path = sdl; + sourceTree = ""; + }; + 274FAC5B178FB11D00B17C7A /* qcommon */ = { + isa = PBXGroup; + children = ( + 274FAC5C178FB14500B17C7A /* puff.c */, + 274FAC5D178FB14500B17C7A /* puff.h */, + 274FAC5E178FB14500B17C7A /* q_math.c */, + 274FAC5F178FB14500B17C7A /* q_shared.c */, + 274FAC60178FB14500B17C7A /* q_shared.h */, + 274FAC61178FB14500B17C7A /* qcommon.h */, + ); + path = qcommon; + sourceTree = ""; + }; + 274FAC68178FB15500B17C7A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 274FAC6A178FB17E00B17C7A /* OpenGL.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 274FAC69178FB15C00B17C7A /* Libraries */ = { + isa = PBXGroup; + children = ( + 274FAC87178FB1D600B17C7A /* libjpeg8.a */, + 274FAC6C178FB19200B17C7A /* libSDL-1.2.0.dylib */, + ); + name = Libraries; + sourceTree = ""; + }; + 274FAC6E178FB1AE00B17C7A /* renderercommon */ = { + isa = PBXGroup; + children = ( + 274FAC6F178FB1C800B17C7A /* iqm.h */, + 274FAC70178FB1C800B17C7A /* qgl.h */, + 274FAC71178FB1C800B17C7A /* tr_common.h */, + 274FAC72178FB1C800B17C7A /* tr_font.c */, + 274FAC73178FB1C800B17C7A /* tr_image_bmp.c */, + 274FAC74178FB1C800B17C7A /* tr_image_jpg.c */, + 274FAC75178FB1C800B17C7A /* tr_image_pcx.c */, + 274FAC76178FB1C800B17C7A /* tr_image_png.c */, + 274FAC77178FB1C800B17C7A /* tr_image_tga.c */, + 274FAC78178FB1C800B17C7A /* tr_noise.c */, + 274FAC79178FB1C800B17C7A /* tr_public.h */, + 274FAC7A178FB1C800B17C7A /* tr_types.h */, + ); + path = renderercommon; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 274FAC0C178FAEFC00B17C7A /* renderer_opengl1 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 274FAC11178FAEFC00B17C7A /* Build configuration list for PBXNativeTarget "renderer_opengl1" */; + buildPhases = ( + 274FAC09178FAEFC00B17C7A /* Sources */, + 274FAC0A178FAEFC00B17C7A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = renderer_opengl1; + productName = renderer_opengl1; + productReference = 274FAC0D178FAEFC00B17C7A /* renderer_opengl1.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 274FAC05178FAEFC00B17C7A /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = io; + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = ioquake; + }; + buildConfigurationList = 274FAC08178FAEFC00B17C7A /* Build configuration list for PBXProject "renderer_opengl1" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 274FAC04178FAEFC00B17C7A; + productRefGroup = 274FAC0E178FAEFC00B17C7A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 274FAC0C178FAEFC00B17C7A /* renderer_opengl1 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 274FAC09178FAEFC00B17C7A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 274FAC3E178FAF6900B17C7A /* tr_animation.c in Sources */, + 274FAC3F178FAF6900B17C7A /* tr_backend.c in Sources */, + 274FAC40178FAF6900B17C7A /* tr_bsp.c in Sources */, + 274FAC41178FAF6900B17C7A /* tr_cmds.c in Sources */, + 274FAC42178FAF6900B17C7A /* tr_curve.c in Sources */, + 274FAC43178FAF6900B17C7A /* tr_flares.c in Sources */, + 274FAC44178FAF6900B17C7A /* tr_image.c in Sources */, + 274FAC45178FAF6900B17C7A /* tr_init.c in Sources */, + 274FAC46178FAF6900B17C7A /* tr_light.c in Sources */, + 274FAC48178FAF6900B17C7A /* tr_main.c in Sources */, + 274FAC49178FAF6900B17C7A /* tr_marks.c in Sources */, + 274FAC4A178FAF6900B17C7A /* tr_mesh.c in Sources */, + 274FAC4B178FAF6900B17C7A /* tr_model_iqm.c in Sources */, + 274FAC4C178FAF6900B17C7A /* tr_model.c in Sources */, + 274FAC4D178FAF6900B17C7A /* tr_scene.c in Sources */, + 274FAC4E178FAF6900B17C7A /* tr_shade_calc.c in Sources */, + 274FAC4F178FAF6900B17C7A /* tr_shade.c in Sources */, + 274FAC50178FAF6900B17C7A /* tr_shader.c in Sources */, + 274FAC51178FAF6900B17C7A /* tr_shadows.c in Sources */, + 274FAC52178FAF6900B17C7A /* tr_sky.c in Sources */, + 274FAC53178FAF6900B17C7A /* tr_subs.c in Sources */, + 274FAC54178FAF6900B17C7A /* tr_surface.c in Sources */, + 274FAC55178FAF6900B17C7A /* tr_world.c in Sources */, + 274FAC59178FAF8E00B17C7A /* sdl_gamma.c in Sources */, + 274FAC5A178FAF8E00B17C7A /* sdl_glimp.c in Sources */, + 274FAC62178FB14500B17C7A /* puff.c in Sources */, + 274FAC64178FB14500B17C7A /* q_math.c in Sources */, + 274FAC65178FB14500B17C7A /* q_shared.c in Sources */, + 274FAC7E178FB1C800B17C7A /* tr_font.c in Sources */, + 274FAC7F178FB1C800B17C7A /* tr_image_bmp.c in Sources */, + 274FAC80178FB1C800B17C7A /* tr_image_jpg.c in Sources */, + 274FAC81178FB1C800B17C7A /* tr_image_pcx.c in Sources */, + 274FAC82178FB1C800B17C7A /* tr_image_png.c in Sources */, + 274FAC83178FB1C800B17C7A /* tr_image_tga.c in Sources */, + 274FAC84178FB1C800B17C7A /* tr_noise.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 274FAC0F178FAEFC00B17C7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USE_LOCAL_HEADERS=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 274FAC10178FAEFC00B17C7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "USE_LOCAL_HEADERS=1"; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 274FAC12178FAEFC00B17C7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/jpeg-8c\"", + "\"$(SRCROOT)/../../code/SDL12/include\"", + ); + LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../code/libs/macosx\""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 274FAC13178FAEFC00B17C7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/jpeg-8c\"", + "\"$(SRCROOT)/../../code/SDL12/include\"", + ); + LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../code/libs/macosx\""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 274FAC08178FAEFC00B17C7A /* Build configuration list for PBXProject "renderer_opengl1" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 274FAC0F178FAEFC00B17C7A /* Debug */, + 274FAC10178FAEFC00B17C7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 274FAC11178FAEFC00B17C7A /* Build configuration list for PBXNativeTarget "renderer_opengl1" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 274FAC12178FAEFC00B17C7A /* Debug */, + 274FAC13178FAEFC00B17C7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 274FAC05178FAEFC00B17C7A /* Project object */; +} diff --git a/misc/xcode/renderer_opengl2.xcodeproj/project.pbxproj b/misc/xcode/renderer_opengl2.xcodeproj/project.pbxproj new file mode 100644 index 00000000..e7dc862f --- /dev/null +++ b/misc/xcode/renderer_opengl2.xcodeproj/project.pbxproj @@ -0,0 +1,684 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2758B918178FBB4B007F6582 /* sdl_gamma.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B916178FBB4B007F6582 /* sdl_gamma.c */; }; + 2758B919178FBB4B007F6582 /* sdl_glimp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B917178FBB4B007F6582 /* sdl_glimp.c */; }; + 2758B981178FBB77007F6582 /* tr_animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B95F178FBB77007F6582 /* tr_animation.c */; }; + 2758B982178FBB77007F6582 /* tr_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B960178FBB77007F6582 /* tr_backend.c */; }; + 2758B983178FBB77007F6582 /* tr_bsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B961178FBB77007F6582 /* tr_bsp.c */; }; + 2758B984178FBB77007F6582 /* tr_cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B962178FBB77007F6582 /* tr_cmds.c */; }; + 2758B985178FBB77007F6582 /* tr_curve.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B963178FBB77007F6582 /* tr_curve.c */; }; + 2758B986178FBB77007F6582 /* tr_extensions.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B964178FBB77007F6582 /* tr_extensions.c */; }; + 2758B987178FBB77007F6582 /* tr_extramath.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B965178FBB77007F6582 /* tr_extramath.c */; }; + 2758B98A178FBB77007F6582 /* tr_fbo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B968178FBB77007F6582 /* tr_fbo.c */; }; + 2758B98C178FBB77007F6582 /* tr_flares.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B96A178FBB77007F6582 /* tr_flares.c */; }; + 2758B98D178FBB77007F6582 /* tr_glsl.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B96B178FBB77007F6582 /* tr_glsl.c */; }; + 2758B98E178FBB77007F6582 /* tr_image.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B96C178FBB77007F6582 /* tr_image.c */; }; + 2758B98F178FBB77007F6582 /* tr_init.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B96D178FBB77007F6582 /* tr_init.c */; }; + 2758B990178FBB77007F6582 /* tr_light.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B96E178FBB77007F6582 /* tr_light.c */; }; + 2758B992178FBB77007F6582 /* tr_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B970178FBB77007F6582 /* tr_main.c */; }; + 2758B993178FBB77007F6582 /* tr_marks.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B971178FBB77007F6582 /* tr_marks.c */; }; + 2758B994178FBB77007F6582 /* tr_mesh.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B972178FBB77007F6582 /* tr_mesh.c */; }; + 2758B995178FBB77007F6582 /* tr_model_iqm.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B973178FBB77007F6582 /* tr_model_iqm.c */; }; + 2758B996178FBB77007F6582 /* tr_model.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B974178FBB77007F6582 /* tr_model.c */; }; + 2758B997178FBB77007F6582 /* tr_postprocess.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B975178FBB77007F6582 /* tr_postprocess.c */; }; + 2758B999178FBB77007F6582 /* tr_scene.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B977178FBB77007F6582 /* tr_scene.c */; }; + 2758B99A178FBB77007F6582 /* tr_shade_calc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B978178FBB77007F6582 /* tr_shade_calc.c */; }; + 2758B99B178FBB77007F6582 /* tr_shade.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B979178FBB77007F6582 /* tr_shade.c */; }; + 2758B99C178FBB77007F6582 /* tr_shader.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B97A178FBB77007F6582 /* tr_shader.c */; }; + 2758B99D178FBB77007F6582 /* tr_shadows.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B97B178FBB77007F6582 /* tr_shadows.c */; }; + 2758B99E178FBB77007F6582 /* tr_sky.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B97C178FBB77007F6582 /* tr_sky.c */; }; + 2758B99F178FBB77007F6582 /* tr_subs.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B97D178FBB77007F6582 /* tr_subs.c */; }; + 2758B9A0178FBB77007F6582 /* tr_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B97E178FBB77007F6582 /* tr_surface.c */; }; + 2758B9A1178FBB77007F6582 /* tr_vbo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B97F178FBB77007F6582 /* tr_vbo.c */; }; + 2758B9A2178FBB77007F6582 /* tr_world.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B980178FBB77007F6582 /* tr_world.c */; }; + 2758B9B3178FBB8E007F6582 /* tr_font.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9A7178FBB8E007F6582 /* tr_font.c */; }; + 2758B9B4178FBB8E007F6582 /* tr_image_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9A8178FBB8E007F6582 /* tr_image_bmp.c */; }; + 2758B9B5178FBB8E007F6582 /* tr_image_jpg.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9A9178FBB8E007F6582 /* tr_image_jpg.c */; }; + 2758B9B6178FBB8E007F6582 /* tr_image_pcx.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9AA178FBB8E007F6582 /* tr_image_pcx.c */; }; + 2758B9B7178FBB8E007F6582 /* tr_image_png.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9AB178FBB8E007F6582 /* tr_image_png.c */; }; + 2758B9B8178FBB8E007F6582 /* tr_image_tga.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9AC178FBB8E007F6582 /* tr_image_tga.c */; }; + 2758B9B9178FBB8E007F6582 /* tr_noise.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9AD178FBB8E007F6582 /* tr_noise.c */; }; + 2758B9C3178FBBAC007F6582 /* puff.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9BD178FBBAC007F6582 /* puff.c */; }; + 2758B9C5178FBBAC007F6582 /* q_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9BF178FBBAC007F6582 /* q_math.c */; }; + 2758B9C6178FBBAC007F6582 /* q_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9C0178FBBAC007F6582 /* q_shared.c */; }; + 2758B9CC178FBC8B007F6582 /* libjpeg8.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2758B9CB178FBC8B007F6582 /* libjpeg8.a */; }; + 2758B9CE178FBCBC007F6582 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2758B9CD178FBCBC007F6582 /* OpenGL.framework */; }; + 2758B9D0178FBCDC007F6582 /* libSDL-1.2.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2758B9CF178FBCDC007F6582 /* libSDL-1.2.0.dylib */; }; + 2758BA2C178FCFC0007F6582 /* bokeh_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9F3178FCFC0007F6582 /* bokeh_fp.c */; }; + 2758BA2D178FCFC0007F6582 /* bokeh_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9F5178FCFC0007F6582 /* bokeh_vp.c */; }; + 2758BA2E178FCFC0007F6582 /* calclevels4x_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9F7178FCFC0007F6582 /* calclevels4x_fp.c */; }; + 2758BA2F178FCFC0007F6582 /* calclevels4x_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9F9178FCFC0007F6582 /* calclevels4x_vp.c */; }; + 2758BA30178FCFC0007F6582 /* depthblur_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9FB178FCFC0007F6582 /* depthblur_fp.c */; }; + 2758BA31178FCFC0007F6582 /* depthblur_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9FD178FCFC0007F6582 /* depthblur_vp.c */; }; + 2758BA32178FCFC0007F6582 /* dlight_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758B9FF178FCFC0007F6582 /* dlight_fp.c */; }; + 2758BA33178FCFC0007F6582 /* dlight_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA01178FCFC0007F6582 /* dlight_vp.c */; }; + 2758BA34178FCFC0007F6582 /* down4x_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA03178FCFC0007F6582 /* down4x_fp.c */; }; + 2758BA35178FCFC0007F6582 /* down4x_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA05178FCFC0007F6582 /* down4x_vp.c */; }; + 2758BA36178FCFC0007F6582 /* fogpass_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA07178FCFC0007F6582 /* fogpass_fp.c */; }; + 2758BA37178FCFC0007F6582 /* fogpass_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA09178FCFC0007F6582 /* fogpass_vp.c */; }; + 2758BA38178FCFC0007F6582 /* generic_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA0C178FCFC0007F6582 /* generic_fp.c */; }; + 2758BA39178FCFC0007F6582 /* generic_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA0E178FCFC0007F6582 /* generic_vp.c */; }; + 2758BA3A178FCFC0007F6582 /* lightall_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA10178FCFC0007F6582 /* lightall_fp.c */; }; + 2758BA3B178FCFC1007F6582 /* lightall_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA12178FCFC0007F6582 /* lightall_vp.c */; }; + 2758BA3C178FCFC1007F6582 /* pshadow_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA14178FCFC0007F6582 /* pshadow_fp.c */; }; + 2758BA3D178FCFC1007F6582 /* pshadow_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA16178FCFC0007F6582 /* pshadow_vp.c */; }; + 2758BA3E178FCFC1007F6582 /* shadowfill_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA18178FCFC0007F6582 /* shadowfill_fp.c */; }; + 2758BA3F178FCFC1007F6582 /* shadowfill_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA1A178FCFC0007F6582 /* shadowfill_vp.c */; }; + 2758BA40178FCFC1007F6582 /* shadowmask_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA1C178FCFC0007F6582 /* shadowmask_fp.c */; }; + 2758BA41178FCFC1007F6582 /* shadowmask_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA1E178FCFC0007F6582 /* shadowmask_vp.c */; }; + 2758BA42178FCFC1007F6582 /* ssao_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA20178FCFC0007F6582 /* ssao_fp.c */; }; + 2758BA43178FCFC1007F6582 /* ssao_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA22178FCFC0007F6582 /* ssao_vp.c */; }; + 2758BA44178FCFC1007F6582 /* texturecolor_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA24178FCFC0007F6582 /* texturecolor_fp.c */; }; + 2758BA45178FCFC1007F6582 /* texturecolor_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA26178FCFC0007F6582 /* texturecolor_vp.c */; }; + 2758BA46178FCFC1007F6582 /* tonemap_fp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA28178FCFC0007F6582 /* tonemap_fp.c */; }; + 2758BA47178FCFC1007F6582 /* tonemap_vp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA2A178FCFC0007F6582 /* tonemap_vp.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 274FAC1D178FAF0C00B17C7A /* renderer_opengl2.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = renderer_opengl2.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2758B916178FBB4B007F6582 /* sdl_gamma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_gamma.c; sourceTree = ""; }; + 2758B917178FBB4B007F6582 /* sdl_glimp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sdl_glimp.c; sourceTree = ""; }; + 2758B95F178FBB77007F6582 /* tr_animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_animation.c; sourceTree = ""; }; + 2758B960178FBB77007F6582 /* tr_backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_backend.c; sourceTree = ""; }; + 2758B961178FBB77007F6582 /* tr_bsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_bsp.c; sourceTree = ""; }; + 2758B962178FBB77007F6582 /* tr_cmds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_cmds.c; sourceTree = ""; }; + 2758B963178FBB77007F6582 /* tr_curve.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_curve.c; sourceTree = ""; }; + 2758B964178FBB77007F6582 /* tr_extensions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_extensions.c; sourceTree = ""; }; + 2758B965178FBB77007F6582 /* tr_extramath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_extramath.c; sourceTree = ""; }; + 2758B966178FBB77007F6582 /* tr_extramath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_extramath.h; sourceTree = ""; }; + 2758B967178FBB77007F6582 /* tr_extratypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_extratypes.h; sourceTree = ""; }; + 2758B968178FBB77007F6582 /* tr_fbo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_fbo.c; sourceTree = ""; }; + 2758B969178FBB77007F6582 /* tr_fbo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_fbo.h; sourceTree = ""; }; + 2758B96A178FBB77007F6582 /* tr_flares.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_flares.c; sourceTree = ""; }; + 2758B96B178FBB77007F6582 /* tr_glsl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_glsl.c; sourceTree = ""; }; + 2758B96C178FBB77007F6582 /* tr_image.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image.c; sourceTree = ""; }; + 2758B96D178FBB77007F6582 /* tr_init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_init.c; sourceTree = ""; }; + 2758B96E178FBB77007F6582 /* tr_light.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_light.c; sourceTree = ""; }; + 2758B96F178FBB77007F6582 /* tr_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_local.h; sourceTree = ""; }; + 2758B970178FBB77007F6582 /* tr_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_main.c; sourceTree = ""; }; + 2758B971178FBB77007F6582 /* tr_marks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_marks.c; sourceTree = ""; }; + 2758B972178FBB77007F6582 /* tr_mesh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_mesh.c; sourceTree = ""; }; + 2758B973178FBB77007F6582 /* tr_model_iqm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_model_iqm.c; sourceTree = ""; }; + 2758B974178FBB77007F6582 /* tr_model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_model.c; sourceTree = ""; }; + 2758B975178FBB77007F6582 /* tr_postprocess.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_postprocess.c; sourceTree = ""; }; + 2758B976178FBB77007F6582 /* tr_postprocess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_postprocess.h; sourceTree = ""; }; + 2758B977178FBB77007F6582 /* tr_scene.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_scene.c; sourceTree = ""; }; + 2758B978178FBB77007F6582 /* tr_shade_calc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shade_calc.c; sourceTree = ""; }; + 2758B979178FBB77007F6582 /* tr_shade.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shade.c; sourceTree = ""; }; + 2758B97A178FBB77007F6582 /* tr_shader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shader.c; sourceTree = ""; }; + 2758B97B178FBB77007F6582 /* tr_shadows.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_shadows.c; sourceTree = ""; }; + 2758B97C178FBB77007F6582 /* tr_sky.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_sky.c; sourceTree = ""; }; + 2758B97D178FBB77007F6582 /* tr_subs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_subs.c; sourceTree = ""; }; + 2758B97E178FBB77007F6582 /* tr_surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_surface.c; sourceTree = ""; }; + 2758B97F178FBB77007F6582 /* tr_vbo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_vbo.c; sourceTree = ""; }; + 2758B980178FBB77007F6582 /* tr_world.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_world.c; sourceTree = ""; }; + 2758B9A4178FBB8E007F6582 /* iqm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iqm.h; sourceTree = ""; }; + 2758B9A5178FBB8E007F6582 /* qgl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qgl.h; sourceTree = ""; }; + 2758B9A6178FBB8E007F6582 /* tr_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_common.h; sourceTree = ""; }; + 2758B9A7178FBB8E007F6582 /* tr_font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_font.c; sourceTree = ""; }; + 2758B9A8178FBB8E007F6582 /* tr_image_bmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_bmp.c; sourceTree = ""; }; + 2758B9A9178FBB8E007F6582 /* tr_image_jpg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_jpg.c; sourceTree = ""; }; + 2758B9AA178FBB8E007F6582 /* tr_image_pcx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_pcx.c; sourceTree = ""; }; + 2758B9AB178FBB8E007F6582 /* tr_image_png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_png.c; sourceTree = ""; }; + 2758B9AC178FBB8E007F6582 /* tr_image_tga.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_image_tga.c; sourceTree = ""; }; + 2758B9AD178FBB8E007F6582 /* tr_noise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tr_noise.c; sourceTree = ""; }; + 2758B9AE178FBB8E007F6582 /* tr_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_public.h; sourceTree = ""; }; + 2758B9AF178FBB8E007F6582 /* tr_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_types.h; sourceTree = ""; }; + 2758B9BD178FBBAC007F6582 /* puff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = puff.c; sourceTree = ""; }; + 2758B9BE178FBBAC007F6582 /* puff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = puff.h; sourceTree = ""; }; + 2758B9BF178FBBAC007F6582 /* q_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_math.c; sourceTree = ""; }; + 2758B9C0178FBBAC007F6582 /* q_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_shared.c; sourceTree = ""; }; + 2758B9C1178FBBAC007F6582 /* q_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = q_shared.h; sourceTree = ""; }; + 2758B9C2178FBBAC007F6582 /* qcommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qcommon.h; sourceTree = ""; }; + 2758B9CB178FBC8B007F6582 /* libjpeg8.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libjpeg8.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2758B9CD178FBCBC007F6582 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + 2758B9CF178FBCDC007F6582 /* libSDL-1.2.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL-1.2.0.dylib"; path = "../../code/libs/macosx/libSDL-1.2.0.dylib"; sourceTree = SOURCE_ROOT; }; + 2758B9F3178FCFC0007F6582 /* bokeh_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bokeh_fp.c; sourceTree = ""; }; + 2758B9F4178FCFC0007F6582 /* bokeh_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bokeh_fp.glsl; sourceTree = ""; }; + 2758B9F5178FCFC0007F6582 /* bokeh_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bokeh_vp.c; sourceTree = ""; }; + 2758B9F6178FCFC0007F6582 /* bokeh_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bokeh_vp.glsl; sourceTree = ""; }; + 2758B9F7178FCFC0007F6582 /* calclevels4x_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = calclevels4x_fp.c; sourceTree = ""; }; + 2758B9F8178FCFC0007F6582 /* calclevels4x_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = calclevels4x_fp.glsl; sourceTree = ""; }; + 2758B9F9178FCFC0007F6582 /* calclevels4x_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = calclevels4x_vp.c; sourceTree = ""; }; + 2758B9FA178FCFC0007F6582 /* calclevels4x_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = calclevels4x_vp.glsl; sourceTree = ""; }; + 2758B9FB178FCFC0007F6582 /* depthblur_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = depthblur_fp.c; sourceTree = ""; }; + 2758B9FC178FCFC0007F6582 /* depthblur_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = depthblur_fp.glsl; sourceTree = ""; }; + 2758B9FD178FCFC0007F6582 /* depthblur_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = depthblur_vp.c; sourceTree = ""; }; + 2758B9FE178FCFC0007F6582 /* depthblur_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = depthblur_vp.glsl; sourceTree = ""; }; + 2758B9FF178FCFC0007F6582 /* dlight_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlight_fp.c; sourceTree = ""; }; + 2758BA00178FCFC0007F6582 /* dlight_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dlight_fp.glsl; sourceTree = ""; }; + 2758BA01178FCFC0007F6582 /* dlight_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dlight_vp.c; sourceTree = ""; }; + 2758BA02178FCFC0007F6582 /* dlight_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dlight_vp.glsl; sourceTree = ""; }; + 2758BA03178FCFC0007F6582 /* down4x_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = down4x_fp.c; sourceTree = ""; }; + 2758BA04178FCFC0007F6582 /* down4x_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = down4x_fp.glsl; sourceTree = ""; }; + 2758BA05178FCFC0007F6582 /* down4x_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = down4x_vp.c; sourceTree = ""; }; + 2758BA06178FCFC0007F6582 /* down4x_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = down4x_vp.glsl; sourceTree = ""; }; + 2758BA07178FCFC0007F6582 /* fogpass_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fogpass_fp.c; sourceTree = ""; }; + 2758BA08178FCFC0007F6582 /* fogpass_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fogpass_fp.glsl; sourceTree = ""; }; + 2758BA09178FCFC0007F6582 /* fogpass_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fogpass_vp.c; sourceTree = ""; }; + 2758BA0A178FCFC0007F6582 /* fogpass_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fogpass_vp.glsl; sourceTree = ""; }; + 2758BA0B178FCFC0007F6582 /* gen.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = gen.sh; sourceTree = ""; }; + 2758BA0C178FCFC0007F6582 /* generic_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = generic_fp.c; sourceTree = ""; }; + 2758BA0D178FCFC0007F6582 /* generic_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = generic_fp.glsl; sourceTree = ""; }; + 2758BA0E178FCFC0007F6582 /* generic_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = generic_vp.c; sourceTree = ""; }; + 2758BA0F178FCFC0007F6582 /* generic_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = generic_vp.glsl; sourceTree = ""; }; + 2758BA10178FCFC0007F6582 /* lightall_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lightall_fp.c; sourceTree = ""; }; + 2758BA11178FCFC0007F6582 /* lightall_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lightall_fp.glsl; sourceTree = ""; }; + 2758BA12178FCFC0007F6582 /* lightall_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lightall_vp.c; sourceTree = ""; }; + 2758BA13178FCFC0007F6582 /* lightall_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lightall_vp.glsl; sourceTree = ""; }; + 2758BA14178FCFC0007F6582 /* pshadow_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pshadow_fp.c; sourceTree = ""; }; + 2758BA15178FCFC0007F6582 /* pshadow_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pshadow_fp.glsl; sourceTree = ""; }; + 2758BA16178FCFC0007F6582 /* pshadow_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pshadow_vp.c; sourceTree = ""; }; + 2758BA17178FCFC0007F6582 /* pshadow_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pshadow_vp.glsl; sourceTree = ""; }; + 2758BA18178FCFC0007F6582 /* shadowfill_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shadowfill_fp.c; sourceTree = ""; }; + 2758BA19178FCFC0007F6582 /* shadowfill_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shadowfill_fp.glsl; sourceTree = ""; }; + 2758BA1A178FCFC0007F6582 /* shadowfill_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shadowfill_vp.c; sourceTree = ""; }; + 2758BA1B178FCFC0007F6582 /* shadowfill_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shadowfill_vp.glsl; sourceTree = ""; }; + 2758BA1C178FCFC0007F6582 /* shadowmask_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shadowmask_fp.c; sourceTree = ""; }; + 2758BA1D178FCFC0007F6582 /* shadowmask_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shadowmask_fp.glsl; sourceTree = ""; }; + 2758BA1E178FCFC0007F6582 /* shadowmask_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shadowmask_vp.c; sourceTree = ""; }; + 2758BA1F178FCFC0007F6582 /* shadowmask_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shadowmask_vp.glsl; sourceTree = ""; }; + 2758BA20178FCFC0007F6582 /* ssao_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ssao_fp.c; sourceTree = ""; }; + 2758BA21178FCFC0007F6582 /* ssao_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ssao_fp.glsl; sourceTree = ""; }; + 2758BA22178FCFC0007F6582 /* ssao_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ssao_vp.c; sourceTree = ""; }; + 2758BA23178FCFC0007F6582 /* ssao_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ssao_vp.glsl; sourceTree = ""; }; + 2758BA24178FCFC0007F6582 /* texturecolor_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = texturecolor_fp.c; sourceTree = ""; }; + 2758BA25178FCFC0007F6582 /* texturecolor_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = texturecolor_fp.glsl; sourceTree = ""; }; + 2758BA26178FCFC0007F6582 /* texturecolor_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = texturecolor_vp.c; sourceTree = ""; }; + 2758BA27178FCFC0007F6582 /* texturecolor_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = texturecolor_vp.glsl; sourceTree = ""; }; + 2758BA28178FCFC0007F6582 /* tonemap_fp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tonemap_fp.c; sourceTree = ""; }; + 2758BA29178FCFC0007F6582 /* tonemap_fp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tonemap_fp.glsl; sourceTree = ""; }; + 2758BA2A178FCFC0007F6582 /* tonemap_vp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tonemap_vp.c; sourceTree = ""; }; + 2758BA2B178FCFC0007F6582 /* tonemap_vp.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tonemap_vp.glsl; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 274FAC1A178FAF0C00B17C7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2758B9CC178FBC8B007F6582 /* libjpeg8.a in Frameworks */, + 2758B9CE178FBCBC007F6582 /* OpenGL.framework in Frameworks */, + 2758B9D0178FBCDC007F6582 /* libSDL-1.2.0.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 274FAC14178FAF0C00B17C7A = { + isa = PBXGroup; + children = ( + 2758B914178FBAFB007F6582 /* code */, + 2758B9C9178FBC6F007F6582 /* Frameworks */, + 2758B9CA178FBC7B007F6582 /* Libraries */, + 274FAC1E178FAF0C00B17C7A /* Products */, + ); + sourceTree = ""; + }; + 274FAC1E178FAF0C00B17C7A /* Products */ = { + isa = PBXGroup; + children = ( + 274FAC1D178FAF0C00B17C7A /* renderer_opengl2.dylib */, + ); + name = Products; + sourceTree = ""; + }; + 2758B914178FBAFB007F6582 /* code */ = { + isa = PBXGroup; + children = ( + 2758B9BC178FBB96007F6582 /* qcommon */, + 2758B9A3178FBB7B007F6582 /* renderercommon */, + 2758B91A178FBB51007F6582 /* renderergl2 */, + 2758B915178FBB33007F6582 /* sdl */, + ); + name = code; + path = ../../code; + sourceTree = SOURCE_ROOT; + }; + 2758B915178FBB33007F6582 /* sdl */ = { + isa = PBXGroup; + children = ( + 2758B916178FBB4B007F6582 /* sdl_gamma.c */, + 2758B917178FBB4B007F6582 /* sdl_glimp.c */, + ); + path = sdl; + sourceTree = ""; + }; + 2758B91A178FBB51007F6582 /* renderergl2 */ = { + isa = PBXGroup; + children = ( + 2758B9D1178FBD4E007F6582 /* glsl */, + 2758B95F178FBB77007F6582 /* tr_animation.c */, + 2758B960178FBB77007F6582 /* tr_backend.c */, + 2758B961178FBB77007F6582 /* tr_bsp.c */, + 2758B962178FBB77007F6582 /* tr_cmds.c */, + 2758B963178FBB77007F6582 /* tr_curve.c */, + 2758B964178FBB77007F6582 /* tr_extensions.c */, + 2758B965178FBB77007F6582 /* tr_extramath.c */, + 2758B966178FBB77007F6582 /* tr_extramath.h */, + 2758B967178FBB77007F6582 /* tr_extratypes.h */, + 2758B968178FBB77007F6582 /* tr_fbo.c */, + 2758B969178FBB77007F6582 /* tr_fbo.h */, + 2758B96A178FBB77007F6582 /* tr_flares.c */, + 2758B96B178FBB77007F6582 /* tr_glsl.c */, + 2758B96C178FBB77007F6582 /* tr_image.c */, + 2758B96D178FBB77007F6582 /* tr_init.c */, + 2758B96E178FBB77007F6582 /* tr_light.c */, + 2758B96F178FBB77007F6582 /* tr_local.h */, + 2758B970178FBB77007F6582 /* tr_main.c */, + 2758B971178FBB77007F6582 /* tr_marks.c */, + 2758B972178FBB77007F6582 /* tr_mesh.c */, + 2758B973178FBB77007F6582 /* tr_model_iqm.c */, + 2758B974178FBB77007F6582 /* tr_model.c */, + 2758B975178FBB77007F6582 /* tr_postprocess.c */, + 2758B976178FBB77007F6582 /* tr_postprocess.h */, + 2758B977178FBB77007F6582 /* tr_scene.c */, + 2758B978178FBB77007F6582 /* tr_shade_calc.c */, + 2758B979178FBB77007F6582 /* tr_shade.c */, + 2758B97A178FBB77007F6582 /* tr_shader.c */, + 2758B97B178FBB77007F6582 /* tr_shadows.c */, + 2758B97C178FBB77007F6582 /* tr_sky.c */, + 2758B97D178FBB77007F6582 /* tr_subs.c */, + 2758B97E178FBB77007F6582 /* tr_surface.c */, + 2758B97F178FBB77007F6582 /* tr_vbo.c */, + 2758B980178FBB77007F6582 /* tr_world.c */, + ); + path = renderergl2; + sourceTree = ""; + }; + 2758B9A3178FBB7B007F6582 /* renderercommon */ = { + isa = PBXGroup; + children = ( + 2758B9A4178FBB8E007F6582 /* iqm.h */, + 2758B9A5178FBB8E007F6582 /* qgl.h */, + 2758B9A6178FBB8E007F6582 /* tr_common.h */, + 2758B9A7178FBB8E007F6582 /* tr_font.c */, + 2758B9A8178FBB8E007F6582 /* tr_image_bmp.c */, + 2758B9A9178FBB8E007F6582 /* tr_image_jpg.c */, + 2758B9AA178FBB8E007F6582 /* tr_image_pcx.c */, + 2758B9AB178FBB8E007F6582 /* tr_image_png.c */, + 2758B9AC178FBB8E007F6582 /* tr_image_tga.c */, + 2758B9AD178FBB8E007F6582 /* tr_noise.c */, + 2758B9AE178FBB8E007F6582 /* tr_public.h */, + 2758B9AF178FBB8E007F6582 /* tr_types.h */, + ); + path = renderercommon; + sourceTree = ""; + }; + 2758B9BC178FBB96007F6582 /* qcommon */ = { + isa = PBXGroup; + children = ( + 2758B9BD178FBBAC007F6582 /* puff.c */, + 2758B9BE178FBBAC007F6582 /* puff.h */, + 2758B9BF178FBBAC007F6582 /* q_math.c */, + 2758B9C0178FBBAC007F6582 /* q_shared.c */, + 2758B9C1178FBBAC007F6582 /* q_shared.h */, + 2758B9C2178FBBAC007F6582 /* qcommon.h */, + ); + path = qcommon; + sourceTree = ""; + }; + 2758B9C9178FBC6F007F6582 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2758B9CD178FBCBC007F6582 /* OpenGL.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 2758B9CA178FBC7B007F6582 /* Libraries */ = { + isa = PBXGroup; + children = ( + 2758B9CF178FBCDC007F6582 /* libSDL-1.2.0.dylib */, + 2758B9CB178FBC8B007F6582 /* libjpeg8.a */, + ); + name = Libraries; + sourceTree = ""; + }; + 2758B9D1178FBD4E007F6582 /* glsl */ = { + isa = PBXGroup; + children = ( + 2758B9F3178FCFC0007F6582 /* bokeh_fp.c */, + 2758B9F4178FCFC0007F6582 /* bokeh_fp.glsl */, + 2758B9F5178FCFC0007F6582 /* bokeh_vp.c */, + 2758B9F6178FCFC0007F6582 /* bokeh_vp.glsl */, + 2758B9F7178FCFC0007F6582 /* calclevels4x_fp.c */, + 2758B9F8178FCFC0007F6582 /* calclevels4x_fp.glsl */, + 2758B9F9178FCFC0007F6582 /* calclevels4x_vp.c */, + 2758B9FA178FCFC0007F6582 /* calclevels4x_vp.glsl */, + 2758B9FB178FCFC0007F6582 /* depthblur_fp.c */, + 2758B9FC178FCFC0007F6582 /* depthblur_fp.glsl */, + 2758B9FD178FCFC0007F6582 /* depthblur_vp.c */, + 2758B9FE178FCFC0007F6582 /* depthblur_vp.glsl */, + 2758B9FF178FCFC0007F6582 /* dlight_fp.c */, + 2758BA00178FCFC0007F6582 /* dlight_fp.glsl */, + 2758BA01178FCFC0007F6582 /* dlight_vp.c */, + 2758BA02178FCFC0007F6582 /* dlight_vp.glsl */, + 2758BA03178FCFC0007F6582 /* down4x_fp.c */, + 2758BA04178FCFC0007F6582 /* down4x_fp.glsl */, + 2758BA05178FCFC0007F6582 /* down4x_vp.c */, + 2758BA06178FCFC0007F6582 /* down4x_vp.glsl */, + 2758BA07178FCFC0007F6582 /* fogpass_fp.c */, + 2758BA08178FCFC0007F6582 /* fogpass_fp.glsl */, + 2758BA09178FCFC0007F6582 /* fogpass_vp.c */, + 2758BA0A178FCFC0007F6582 /* fogpass_vp.glsl */, + 2758BA0B178FCFC0007F6582 /* gen.sh */, + 2758BA0C178FCFC0007F6582 /* generic_fp.c */, + 2758BA0D178FCFC0007F6582 /* generic_fp.glsl */, + 2758BA0E178FCFC0007F6582 /* generic_vp.c */, + 2758BA0F178FCFC0007F6582 /* generic_vp.glsl */, + 2758BA10178FCFC0007F6582 /* lightall_fp.c */, + 2758BA11178FCFC0007F6582 /* lightall_fp.glsl */, + 2758BA12178FCFC0007F6582 /* lightall_vp.c */, + 2758BA13178FCFC0007F6582 /* lightall_vp.glsl */, + 2758BA14178FCFC0007F6582 /* pshadow_fp.c */, + 2758BA15178FCFC0007F6582 /* pshadow_fp.glsl */, + 2758BA16178FCFC0007F6582 /* pshadow_vp.c */, + 2758BA17178FCFC0007F6582 /* pshadow_vp.glsl */, + 2758BA18178FCFC0007F6582 /* shadowfill_fp.c */, + 2758BA19178FCFC0007F6582 /* shadowfill_fp.glsl */, + 2758BA1A178FCFC0007F6582 /* shadowfill_vp.c */, + 2758BA1B178FCFC0007F6582 /* shadowfill_vp.glsl */, + 2758BA1C178FCFC0007F6582 /* shadowmask_fp.c */, + 2758BA1D178FCFC0007F6582 /* shadowmask_fp.glsl */, + 2758BA1E178FCFC0007F6582 /* shadowmask_vp.c */, + 2758BA1F178FCFC0007F6582 /* shadowmask_vp.glsl */, + 2758BA20178FCFC0007F6582 /* ssao_fp.c */, + 2758BA21178FCFC0007F6582 /* ssao_fp.glsl */, + 2758BA22178FCFC0007F6582 /* ssao_vp.c */, + 2758BA23178FCFC0007F6582 /* ssao_vp.glsl */, + 2758BA24178FCFC0007F6582 /* texturecolor_fp.c */, + 2758BA25178FCFC0007F6582 /* texturecolor_fp.glsl */, + 2758BA26178FCFC0007F6582 /* texturecolor_vp.c */, + 2758BA27178FCFC0007F6582 /* texturecolor_vp.glsl */, + 2758BA28178FCFC0007F6582 /* tonemap_fp.c */, + 2758BA29178FCFC0007F6582 /* tonemap_fp.glsl */, + 2758BA2A178FCFC0007F6582 /* tonemap_vp.c */, + 2758BA2B178FCFC0007F6582 /* tonemap_vp.glsl */, + ); + path = glsl; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 274FAC1C178FAF0C00B17C7A /* renderer_opengl2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 274FAC21178FAF0C00B17C7A /* Build configuration list for PBXNativeTarget "renderer_opengl2" */; + buildPhases = ( + 2758B9F2178FCB65007F6582 /* Run Script - Generate C From GLSL Files */, + 274FAC19178FAF0C00B17C7A /* Sources */, + 274FAC1A178FAF0C00B17C7A /* Frameworks */, + 2758BA48178FD003007F6582 /* Run Script - Delete GLSL-Generated C Files */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = renderer_opengl2; + productName = renderer_opengl2; + productReference = 274FAC1D178FAF0C00B17C7A /* renderer_opengl2.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 274FAC15178FAF0C00B17C7A /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = io; + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = ioquake; + }; + buildConfigurationList = 274FAC18178FAF0C00B17C7A /* Build configuration list for PBXProject "renderer_opengl2" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 274FAC14178FAF0C00B17C7A; + productRefGroup = 274FAC1E178FAF0C00B17C7A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 274FAC1C178FAF0C00B17C7A /* renderer_opengl2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2758B9F2178FCB65007F6582 /* Run Script - Generate C From GLSL Files */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script - Generate C From GLSL Files"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "GLSLPATH=\"${SRCROOT}/../../code/renderergl2/glsl\"\n\nfunction glslToDotC()\n{\n INFILE=\"${1}\"\n INEXT=\"${1##*.}\"\n INSTRIP=\"${1##*/}\"\n INBASE=\"${INSTRIP%.glsl}\"\n OUTFILE=\"${1%.glsl}.c\"\n\n if [ ! ${INFILE} ] || [ ! -e ${INFILE} ]; then\n echo \"**** ERROR: no input file\"\n exit -1\n fi\n\n if [ ${INEXT} != \"glsl\" ]; then\n echo \"**** ERROR: input file must have .glsl extension\"\n exit -2\n fi\n\n echo \"const char *fallbackShader_${INBASE} =\" > ${OUTFILE}\n cat ${INFILE} | sed 's/^/\\\"/;s/$/\\\\n\\\"/' >> ${OUTFILE}\n echo \";\" >> ${OUTFILE}\n}\n\npushd \"${GLSLPATH}\"\n\nfind *.glsl | while read GLSLFILE; do glslToDotC \"${GLSLFILE}\"; done\n\npopd\n"; + }; + 2758BA48178FD003007F6582 /* Run Script - Delete GLSL-Generated C Files */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script - Delete GLSL-Generated C Files"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "GLSLPATH=\"${SRCROOT}/../../code/renderergl2/glsl\"\n\npushd \"${GLSLPATH}\"\n\nfind *.c -delete\n\npopd\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 274FAC19178FAF0C00B17C7A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2758B918178FBB4B007F6582 /* sdl_gamma.c in Sources */, + 2758B919178FBB4B007F6582 /* sdl_glimp.c in Sources */, + 2758B981178FBB77007F6582 /* tr_animation.c in Sources */, + 2758B982178FBB77007F6582 /* tr_backend.c in Sources */, + 2758B983178FBB77007F6582 /* tr_bsp.c in Sources */, + 2758B984178FBB77007F6582 /* tr_cmds.c in Sources */, + 2758B985178FBB77007F6582 /* tr_curve.c in Sources */, + 2758B986178FBB77007F6582 /* tr_extensions.c in Sources */, + 2758B987178FBB77007F6582 /* tr_extramath.c in Sources */, + 2758B98A178FBB77007F6582 /* tr_fbo.c in Sources */, + 2758B98C178FBB77007F6582 /* tr_flares.c in Sources */, + 2758B98D178FBB77007F6582 /* tr_glsl.c in Sources */, + 2758B98E178FBB77007F6582 /* tr_image.c in Sources */, + 2758B98F178FBB77007F6582 /* tr_init.c in Sources */, + 2758B990178FBB77007F6582 /* tr_light.c in Sources */, + 2758B992178FBB77007F6582 /* tr_main.c in Sources */, + 2758B993178FBB77007F6582 /* tr_marks.c in Sources */, + 2758B994178FBB77007F6582 /* tr_mesh.c in Sources */, + 2758B995178FBB77007F6582 /* tr_model_iqm.c in Sources */, + 2758B996178FBB77007F6582 /* tr_model.c in Sources */, + 2758B997178FBB77007F6582 /* tr_postprocess.c in Sources */, + 2758B999178FBB77007F6582 /* tr_scene.c in Sources */, + 2758B99A178FBB77007F6582 /* tr_shade_calc.c in Sources */, + 2758B99B178FBB77007F6582 /* tr_shade.c in Sources */, + 2758B99C178FBB77007F6582 /* tr_shader.c in Sources */, + 2758B99D178FBB77007F6582 /* tr_shadows.c in Sources */, + 2758B99E178FBB77007F6582 /* tr_sky.c in Sources */, + 2758B99F178FBB77007F6582 /* tr_subs.c in Sources */, + 2758B9A0178FBB77007F6582 /* tr_surface.c in Sources */, + 2758B9A1178FBB77007F6582 /* tr_vbo.c in Sources */, + 2758B9A2178FBB77007F6582 /* tr_world.c in Sources */, + 2758B9B3178FBB8E007F6582 /* tr_font.c in Sources */, + 2758B9B4178FBB8E007F6582 /* tr_image_bmp.c in Sources */, + 2758B9B5178FBB8E007F6582 /* tr_image_jpg.c in Sources */, + 2758B9B6178FBB8E007F6582 /* tr_image_pcx.c in Sources */, + 2758B9B7178FBB8E007F6582 /* tr_image_png.c in Sources */, + 2758B9B8178FBB8E007F6582 /* tr_image_tga.c in Sources */, + 2758B9B9178FBB8E007F6582 /* tr_noise.c in Sources */, + 2758B9C3178FBBAC007F6582 /* puff.c in Sources */, + 2758B9C5178FBBAC007F6582 /* q_math.c in Sources */, + 2758B9C6178FBBAC007F6582 /* q_shared.c in Sources */, + 2758BA2C178FCFC0007F6582 /* bokeh_fp.c in Sources */, + 2758BA2D178FCFC0007F6582 /* bokeh_vp.c in Sources */, + 2758BA2E178FCFC0007F6582 /* calclevels4x_fp.c in Sources */, + 2758BA2F178FCFC0007F6582 /* calclevels4x_vp.c in Sources */, + 2758BA30178FCFC0007F6582 /* depthblur_fp.c in Sources */, + 2758BA31178FCFC0007F6582 /* depthblur_vp.c in Sources */, + 2758BA32178FCFC0007F6582 /* dlight_fp.c in Sources */, + 2758BA33178FCFC0007F6582 /* dlight_vp.c in Sources */, + 2758BA34178FCFC0007F6582 /* down4x_fp.c in Sources */, + 2758BA35178FCFC0007F6582 /* down4x_vp.c in Sources */, + 2758BA36178FCFC0007F6582 /* fogpass_fp.c in Sources */, + 2758BA37178FCFC0007F6582 /* fogpass_vp.c in Sources */, + 2758BA38178FCFC0007F6582 /* generic_fp.c in Sources */, + 2758BA39178FCFC0007F6582 /* generic_vp.c in Sources */, + 2758BA3A178FCFC0007F6582 /* lightall_fp.c in Sources */, + 2758BA3B178FCFC1007F6582 /* lightall_vp.c in Sources */, + 2758BA3C178FCFC1007F6582 /* pshadow_fp.c in Sources */, + 2758BA3D178FCFC1007F6582 /* pshadow_vp.c in Sources */, + 2758BA3E178FCFC1007F6582 /* shadowfill_fp.c in Sources */, + 2758BA3F178FCFC1007F6582 /* shadowfill_vp.c in Sources */, + 2758BA40178FCFC1007F6582 /* shadowmask_fp.c in Sources */, + 2758BA41178FCFC1007F6582 /* shadowmask_vp.c in Sources */, + 2758BA42178FCFC1007F6582 /* ssao_fp.c in Sources */, + 2758BA43178FCFC1007F6582 /* ssao_vp.c in Sources */, + 2758BA44178FCFC1007F6582 /* texturecolor_fp.c in Sources */, + 2758BA45178FCFC1007F6582 /* texturecolor_vp.c in Sources */, + 2758BA46178FCFC1007F6582 /* tonemap_fp.c in Sources */, + 2758BA47178FCFC1007F6582 /* tonemap_vp.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 274FAC1F178FAF0C00B17C7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USE_LOCAL_HEADERS=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 274FAC20178FAF0C00B17C7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = "USE_LOCAL_HEADERS=1"; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 274FAC22178FAF0C00B17C7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/jpeg-8c\"", + "\"$(SRCROOT)/../../code/SDL12/include\"", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/libs/macosx\"", + "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-dqrqeayrbnbwitdwenoviousqwyc/Build/Products/Debug\"", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 274FAC23178FAF0C00B17C7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/jpeg-8c\"", + "\"$(SRCROOT)/../../code/SDL12/include\"", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../code/libs/macosx\"", + "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-dqrqeayrbnbwitdwenoviousqwyc/Build/Products/Debug\"", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 274FAC18178FAF0C00B17C7A /* Build configuration list for PBXProject "renderer_opengl2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 274FAC1F178FAF0C00B17C7A /* Debug */, + 274FAC20178FAF0C00B17C7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 274FAC21178FAF0C00B17C7A /* Build configuration list for PBXNativeTarget "renderer_opengl2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 274FAC22178FAF0C00B17C7A /* Debug */, + 274FAC23178FAF0C00B17C7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 274FAC15178FAF0C00B17C7A /* Project object */; +} diff --git a/misc/xcode/speex.xcodeproj/project.pbxproj b/misc/xcode/speex.xcodeproj/project.pbxproj new file mode 100644 index 00000000..8d36dee8 --- /dev/null +++ b/misc/xcode/speex.xcodeproj/project.pbxproj @@ -0,0 +1,517 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2758BAD717905A41007F6582 /* bits.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA7C17905A41007F6582 /* bits.c */; }; + 2758BAD817905A41007F6582 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA7D17905A41007F6582 /* buffer.c */; }; + 2758BADC17905A41007F6582 /* cb_search.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8117905A41007F6582 /* cb_search.c */; }; + 2758BAE017905A41007F6582 /* exc_5_64_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8517905A41007F6582 /* exc_5_64_table.c */; }; + 2758BAE117905A41007F6582 /* exc_5_256_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8617905A41007F6582 /* exc_5_256_table.c */; }; + 2758BAE217905A41007F6582 /* exc_8_128_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8717905A41007F6582 /* exc_8_128_table.c */; }; + 2758BAE317905A41007F6582 /* exc_10_16_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8817905A41007F6582 /* exc_10_16_table.c */; }; + 2758BAE417905A41007F6582 /* exc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8917905A41007F6582 /* exc_10_32_table.c */; }; + 2758BAE517905A41007F6582 /* exc_20_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8A17905A41007F6582 /* exc_20_32_table.c */; }; + 2758BAE617905A41007F6582 /* fftwrap.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8B17905A41007F6582 /* fftwrap.c */; }; + 2758BAE817905A41007F6582 /* filterbank.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA8D17905A41007F6582 /* filterbank.c */; }; + 2758BAED17905A41007F6582 /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9217905A41007F6582 /* filters.c */; }; + 2758BAF417905A41007F6582 /* gain_table_lbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9917905A41007F6582 /* gain_table_lbr.c */; }; + 2758BAF517905A41007F6582 /* gain_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9A17905A41007F6582 /* gain_table.c */; }; + 2758BAF617905A41007F6582 /* hexc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9B17905A41007F6582 /* hexc_10_32_table.c */; }; + 2758BAF717905A41007F6582 /* hexc_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9C17905A41007F6582 /* hexc_table.c */; }; + 2758BAF817905A41007F6582 /* high_lsp_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9D17905A41007F6582 /* high_lsp_tables.c */; }; + 2758BAF917905A41007F6582 /* jitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9E17905A41007F6582 /* jitter.c */; }; + 2758BAFA17905A41007F6582 /* kiss_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BA9F17905A41007F6582 /* kiss_fft.c */; }; + 2758BAFC17905A41007F6582 /* kiss_fftr.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAA117905A41007F6582 /* kiss_fftr.c */; }; + 2758BAFF17905A41007F6582 /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAA417905A41007F6582 /* lpc.c */; }; + 2758BB0217905A41007F6582 /* lsp_tables_nb.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAA717905A41007F6582 /* lsp_tables_nb.c */; }; + 2758BB0317905A41007F6582 /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAA817905A41007F6582 /* lsp.c */; }; + 2758BB0817905A41007F6582 /* ltp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAAD17905A41007F6582 /* ltp.c */; }; + 2758BB0B17905A41007F6582 /* mdf.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAB017905A41007F6582 /* mdf.c */; }; + 2758BB0D17905A41007F6582 /* modes_wb.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAB217905A41007F6582 /* modes_wb.c */; }; + 2758BB0E17905A41007F6582 /* modes.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAB317905A41007F6582 /* modes.c */; }; + 2758BB1017905A41007F6582 /* nb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAB517905A41007F6582 /* nb_celp.c */; }; + 2758BB1317905A41007F6582 /* preprocess.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAB817905A41007F6582 /* preprocess.c */; }; + 2758BB1617905A41007F6582 /* quant_lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BABB17905A41007F6582 /* quant_lsp.c */; }; + 2758BB1817905A41007F6582 /* resample.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BABD17905A41007F6582 /* resample.c */; }; + 2758BB1917905A41007F6582 /* sb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BABE17905A41007F6582 /* sb_celp.c */; }; + 2758BB1B17905A41007F6582 /* smallft.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAC017905A41007F6582 /* smallft.c */; }; + 2758BB1D17905A41007F6582 /* speex_callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAC217905A41007F6582 /* speex_callbacks.c */; }; + 2758BB1E17905A41007F6582 /* speex_header.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAC317905A41007F6582 /* speex_header.c */; }; + 2758BB1F17905A41007F6582 /* speex.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAC417905A41007F6582 /* speex.c */; }; + 2758BB2117905A41007F6582 /* stereo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAC617905A41007F6582 /* stereo.c */; }; + 2758BB2717905A41007F6582 /* vbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BACC17905A41007F6582 /* vbr.c */; }; + 2758BB2D17905A41007F6582 /* vq.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAD217905A41007F6582 /* vq.c */; }; + 2758BB2F17905A41007F6582 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = 2758BAD417905A41007F6582 /* window.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2758BA57179059C1007F6582 /* libspeex.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libspeex.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2758BA6217905A2B007F6582 /* speex_bits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_bits.h; sourceTree = ""; }; + 2758BA6317905A2B007F6582 /* speex_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_buffer.h; sourceTree = ""; }; + 2758BA6417905A2B007F6582 /* speex_callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_callbacks.h; sourceTree = ""; }; + 2758BA6517905A2B007F6582 /* speex_config_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_config_types.h; sourceTree = ""; }; + 2758BA6617905A2B007F6582 /* speex_echo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_echo.h; sourceTree = ""; }; + 2758BA6717905A2B007F6582 /* speex_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_header.h; sourceTree = ""; }; + 2758BA6817905A2B007F6582 /* speex_jitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_jitter.h; sourceTree = ""; }; + 2758BA6917905A2B007F6582 /* speex_preprocess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_preprocess.h; sourceTree = ""; }; + 2758BA6A17905A2B007F6582 /* speex_resampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_resampler.h; sourceTree = ""; }; + 2758BA6B17905A2B007F6582 /* speex_stereo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_stereo.h; sourceTree = ""; }; + 2758BA6C17905A2B007F6582 /* speex_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_types.h; sourceTree = ""; }; + 2758BA6D17905A2B007F6582 /* speex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex.h; sourceTree = ""; }; + 2758BA7A17905A41007F6582 /* _kiss_fft_guts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _kiss_fft_guts.h; sourceTree = ""; }; + 2758BA7B17905A41007F6582 /* arch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = arch.h; sourceTree = ""; }; + 2758BA7C17905A41007F6582 /* bits.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bits.c; sourceTree = ""; }; + 2758BA7D17905A41007F6582 /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = buffer.c; sourceTree = ""; }; + 2758BA7E17905A41007F6582 /* cb_search_arm4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cb_search_arm4.h; sourceTree = ""; }; + 2758BA7F17905A41007F6582 /* cb_search_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cb_search_bfin.h; sourceTree = ""; }; + 2758BA8017905A41007F6582 /* cb_search_sse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cb_search_sse.h; sourceTree = ""; }; + 2758BA8117905A41007F6582 /* cb_search.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cb_search.c; sourceTree = ""; }; + 2758BA8217905A41007F6582 /* cb_search.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cb_search.h; sourceTree = ""; }; + 2758BA8317905A41007F6582 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 2758BA8417905A41007F6582 /* echo_diagnostic.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = echo_diagnostic.m; sourceTree = ""; }; + 2758BA8517905A41007F6582 /* exc_5_64_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exc_5_64_table.c; sourceTree = ""; }; + 2758BA8617905A41007F6582 /* exc_5_256_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exc_5_256_table.c; sourceTree = ""; }; + 2758BA8717905A41007F6582 /* exc_8_128_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exc_8_128_table.c; sourceTree = ""; }; + 2758BA8817905A41007F6582 /* exc_10_16_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exc_10_16_table.c; sourceTree = ""; }; + 2758BA8917905A41007F6582 /* exc_10_32_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exc_10_32_table.c; sourceTree = ""; }; + 2758BA8A17905A41007F6582 /* exc_20_32_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exc_20_32_table.c; sourceTree = ""; }; + 2758BA8B17905A41007F6582 /* fftwrap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fftwrap.c; sourceTree = ""; }; + 2758BA8C17905A41007F6582 /* fftwrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fftwrap.h; sourceTree = ""; }; + 2758BA8D17905A41007F6582 /* filterbank.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filterbank.c; sourceTree = ""; }; + 2758BA8E17905A41007F6582 /* filterbank.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filterbank.h; sourceTree = ""; }; + 2758BA8F17905A41007F6582 /* filters_arm4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filters_arm4.h; sourceTree = ""; }; + 2758BA9017905A41007F6582 /* filters_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filters_bfin.h; sourceTree = ""; }; + 2758BA9117905A41007F6582 /* filters_sse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filters_sse.h; sourceTree = ""; }; + 2758BA9217905A41007F6582 /* filters.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filters.c; sourceTree = ""; }; + 2758BA9317905A41007F6582 /* filters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; + 2758BA9417905A41007F6582 /* fixed_arm4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_arm4.h; sourceTree = ""; }; + 2758BA9517905A41007F6582 /* fixed_arm5e.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_arm5e.h; sourceTree = ""; }; + 2758BA9617905A41007F6582 /* fixed_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_bfin.h; sourceTree = ""; }; + 2758BA9717905A41007F6582 /* fixed_debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_debug.h; sourceTree = ""; }; + 2758BA9817905A41007F6582 /* fixed_generic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixed_generic.h; sourceTree = ""; }; + 2758BA9917905A41007F6582 /* gain_table_lbr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gain_table_lbr.c; sourceTree = ""; }; + 2758BA9A17905A41007F6582 /* gain_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gain_table.c; sourceTree = ""; }; + 2758BA9B17905A41007F6582 /* hexc_10_32_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hexc_10_32_table.c; sourceTree = ""; }; + 2758BA9C17905A41007F6582 /* hexc_table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hexc_table.c; sourceTree = ""; }; + 2758BA9D17905A41007F6582 /* high_lsp_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = high_lsp_tables.c; sourceTree = ""; }; + 2758BA9E17905A41007F6582 /* jitter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jitter.c; sourceTree = ""; }; + 2758BA9F17905A41007F6582 /* kiss_fft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kiss_fft.c; sourceTree = ""; }; + 2758BAA017905A41007F6582 /* kiss_fft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kiss_fft.h; sourceTree = ""; }; + 2758BAA117905A41007F6582 /* kiss_fftr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kiss_fftr.c; sourceTree = ""; }; + 2758BAA217905A41007F6582 /* kiss_fftr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kiss_fftr.h; sourceTree = ""; }; + 2758BAA317905A41007F6582 /* lpc_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lpc_bfin.h; sourceTree = ""; }; + 2758BAA417905A41007F6582 /* lpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lpc.c; sourceTree = ""; }; + 2758BAA517905A41007F6582 /* lpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lpc.h; sourceTree = ""; }; + 2758BAA617905A41007F6582 /* lsp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lsp_bfin.h; sourceTree = ""; }; + 2758BAA717905A41007F6582 /* lsp_tables_nb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lsp_tables_nb.c; sourceTree = ""; }; + 2758BAA817905A41007F6582 /* lsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lsp.c; sourceTree = ""; }; + 2758BAA917905A41007F6582 /* lsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lsp.h; sourceTree = ""; }; + 2758BAAA17905A41007F6582 /* ltp_arm4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ltp_arm4.h; sourceTree = ""; }; + 2758BAAB17905A41007F6582 /* ltp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ltp_bfin.h; sourceTree = ""; }; + 2758BAAC17905A41007F6582 /* ltp_sse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ltp_sse.h; sourceTree = ""; }; + 2758BAAD17905A41007F6582 /* ltp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ltp.c; sourceTree = ""; }; + 2758BAAE17905A41007F6582 /* ltp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ltp.h; sourceTree = ""; }; + 2758BAAF17905A41007F6582 /* math_approx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_approx.h; sourceTree = ""; }; + 2758BAB017905A41007F6582 /* mdf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mdf.c; sourceTree = ""; }; + 2758BAB117905A41007F6582 /* misc_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = misc_bfin.h; sourceTree = ""; }; + 2758BAB217905A41007F6582 /* modes_wb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = modes_wb.c; sourceTree = ""; }; + 2758BAB317905A41007F6582 /* modes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = modes.c; sourceTree = ""; }; + 2758BAB417905A41007F6582 /* modes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modes.h; sourceTree = ""; }; + 2758BAB517905A41007F6582 /* nb_celp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nb_celp.c; sourceTree = ""; }; + 2758BAB617905A41007F6582 /* nb_celp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nb_celp.h; sourceTree = ""; }; + 2758BAB717905A41007F6582 /* os_support.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = os_support.h; sourceTree = ""; }; + 2758BAB817905A41007F6582 /* preprocess.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = preprocess.c; sourceTree = ""; }; + 2758BAB917905A41007F6582 /* pseudofloat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pseudofloat.h; sourceTree = ""; }; + 2758BABA17905A41007F6582 /* quant_lsp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quant_lsp_bfin.h; sourceTree = ""; }; + 2758BABB17905A41007F6582 /* quant_lsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quant_lsp.c; sourceTree = ""; }; + 2758BABC17905A41007F6582 /* quant_lsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quant_lsp.h; sourceTree = ""; }; + 2758BABD17905A41007F6582 /* resample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resample.c; sourceTree = ""; }; + 2758BABE17905A41007F6582 /* sb_celp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sb_celp.c; sourceTree = ""; }; + 2758BABF17905A41007F6582 /* sb_celp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sb_celp.h; sourceTree = ""; }; + 2758BAC017905A41007F6582 /* smallft.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smallft.c; sourceTree = ""; }; + 2758BAC117905A41007F6582 /* smallft.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smallft.h; sourceTree = ""; }; + 2758BAC217905A41007F6582 /* speex_callbacks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speex_callbacks.c; sourceTree = ""; }; + 2758BAC317905A41007F6582 /* speex_header.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speex_header.c; sourceTree = ""; }; + 2758BAC417905A41007F6582 /* speex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speex.c; sourceTree = ""; }; + 2758BAC517905A41007F6582 /* stack_alloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack_alloc.h; sourceTree = ""; }; + 2758BAC617905A41007F6582 /* stereo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stereo.c; sourceTree = ""; }; + 2758BAC717905A41007F6582 /* testdenoise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testdenoise.c; sourceTree = ""; }; + 2758BAC817905A41007F6582 /* testecho.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testecho.c; sourceTree = ""; }; + 2758BAC917905A41007F6582 /* testenc_uwb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testenc_uwb.c; sourceTree = ""; }; + 2758BACA17905A41007F6582 /* testenc_wb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testenc_wb.c; sourceTree = ""; }; + 2758BACB17905A41007F6582 /* testenc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testenc.c; sourceTree = ""; }; + 2758BACC17905A41007F6582 /* vbr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vbr.c; sourceTree = ""; }; + 2758BACD17905A41007F6582 /* vbr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vbr.h; sourceTree = ""; }; + 2758BACE17905A41007F6582 /* vorbis_psy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vorbis_psy.h; sourceTree = ""; }; + 2758BACF17905A41007F6582 /* vq_arm4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vq_arm4.h; sourceTree = ""; }; + 2758BAD017905A41007F6582 /* vq_bfin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vq_bfin.h; sourceTree = ""; }; + 2758BAD117905A41007F6582 /* vq_sse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vq_sse.h; sourceTree = ""; }; + 2758BAD217905A41007F6582 /* vq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vq.c; sourceTree = ""; }; + 2758BAD317905A41007F6582 /* vq.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vq.h; sourceTree = ""; }; + 2758BAD417905A41007F6582 /* window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2758BA54179059C1007F6582 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2758BA4E179059C1007F6582 = { + isa = PBXGroup; + children = ( + 2758BA5E179059E4007F6582 /* code */, + 2758BA58179059C1007F6582 /* Products */, + ); + sourceTree = ""; + }; + 2758BA58179059C1007F6582 /* Products */ = { + isa = PBXGroup; + children = ( + 2758BA57179059C1007F6582 /* libspeex.a */, + ); + name = Products; + sourceTree = ""; + }; + 2758BA5E179059E4007F6582 /* code */ = { + isa = PBXGroup; + children = ( + 2758BA5F179059F0007F6582 /* libspeex */, + ); + name = code; + path = ../../code; + sourceTree = ""; + }; + 2758BA5F179059F0007F6582 /* libspeex */ = { + isa = PBXGroup; + children = ( + 2758BA6017905A02007F6582 /* include */, + 2758BA7A17905A41007F6582 /* _kiss_fft_guts.h */, + 2758BA7B17905A41007F6582 /* arch.h */, + 2758BA7C17905A41007F6582 /* bits.c */, + 2758BA7D17905A41007F6582 /* buffer.c */, + 2758BA7E17905A41007F6582 /* cb_search_arm4.h */, + 2758BA7F17905A41007F6582 /* cb_search_bfin.h */, + 2758BA8017905A41007F6582 /* cb_search_sse.h */, + 2758BA8117905A41007F6582 /* cb_search.c */, + 2758BA8217905A41007F6582 /* cb_search.h */, + 2758BA8317905A41007F6582 /* config.h */, + 2758BA8417905A41007F6582 /* echo_diagnostic.m */, + 2758BA8517905A41007F6582 /* exc_5_64_table.c */, + 2758BA8617905A41007F6582 /* exc_5_256_table.c */, + 2758BA8717905A41007F6582 /* exc_8_128_table.c */, + 2758BA8817905A41007F6582 /* exc_10_16_table.c */, + 2758BA8917905A41007F6582 /* exc_10_32_table.c */, + 2758BA8A17905A41007F6582 /* exc_20_32_table.c */, + 2758BA8B17905A41007F6582 /* fftwrap.c */, + 2758BA8C17905A41007F6582 /* fftwrap.h */, + 2758BA8D17905A41007F6582 /* filterbank.c */, + 2758BA8E17905A41007F6582 /* filterbank.h */, + 2758BA8F17905A41007F6582 /* filters_arm4.h */, + 2758BA9017905A41007F6582 /* filters_bfin.h */, + 2758BA9117905A41007F6582 /* filters_sse.h */, + 2758BA9217905A41007F6582 /* filters.c */, + 2758BA9317905A41007F6582 /* filters.h */, + 2758BA9417905A41007F6582 /* fixed_arm4.h */, + 2758BA9517905A41007F6582 /* fixed_arm5e.h */, + 2758BA9617905A41007F6582 /* fixed_bfin.h */, + 2758BA9717905A41007F6582 /* fixed_debug.h */, + 2758BA9817905A41007F6582 /* fixed_generic.h */, + 2758BA9917905A41007F6582 /* gain_table_lbr.c */, + 2758BA9A17905A41007F6582 /* gain_table.c */, + 2758BA9B17905A41007F6582 /* hexc_10_32_table.c */, + 2758BA9C17905A41007F6582 /* hexc_table.c */, + 2758BA9D17905A41007F6582 /* high_lsp_tables.c */, + 2758BA9E17905A41007F6582 /* jitter.c */, + 2758BA9F17905A41007F6582 /* kiss_fft.c */, + 2758BAA017905A41007F6582 /* kiss_fft.h */, + 2758BAA117905A41007F6582 /* kiss_fftr.c */, + 2758BAA217905A41007F6582 /* kiss_fftr.h */, + 2758BAA317905A41007F6582 /* lpc_bfin.h */, + 2758BAA417905A41007F6582 /* lpc.c */, + 2758BAA517905A41007F6582 /* lpc.h */, + 2758BAA617905A41007F6582 /* lsp_bfin.h */, + 2758BAA717905A41007F6582 /* lsp_tables_nb.c */, + 2758BAA817905A41007F6582 /* lsp.c */, + 2758BAA917905A41007F6582 /* lsp.h */, + 2758BAAA17905A41007F6582 /* ltp_arm4.h */, + 2758BAAB17905A41007F6582 /* ltp_bfin.h */, + 2758BAAC17905A41007F6582 /* ltp_sse.h */, + 2758BAAD17905A41007F6582 /* ltp.c */, + 2758BAAE17905A41007F6582 /* ltp.h */, + 2758BAAF17905A41007F6582 /* math_approx.h */, + 2758BAB017905A41007F6582 /* mdf.c */, + 2758BAB117905A41007F6582 /* misc_bfin.h */, + 2758BAB217905A41007F6582 /* modes_wb.c */, + 2758BAB317905A41007F6582 /* modes.c */, + 2758BAB417905A41007F6582 /* modes.h */, + 2758BAB517905A41007F6582 /* nb_celp.c */, + 2758BAB617905A41007F6582 /* nb_celp.h */, + 2758BAB717905A41007F6582 /* os_support.h */, + 2758BAB817905A41007F6582 /* preprocess.c */, + 2758BAB917905A41007F6582 /* pseudofloat.h */, + 2758BABA17905A41007F6582 /* quant_lsp_bfin.h */, + 2758BABB17905A41007F6582 /* quant_lsp.c */, + 2758BABC17905A41007F6582 /* quant_lsp.h */, + 2758BABD17905A41007F6582 /* resample.c */, + 2758BABE17905A41007F6582 /* sb_celp.c */, + 2758BABF17905A41007F6582 /* sb_celp.h */, + 2758BAC017905A41007F6582 /* smallft.c */, + 2758BAC117905A41007F6582 /* smallft.h */, + 2758BAC217905A41007F6582 /* speex_callbacks.c */, + 2758BAC317905A41007F6582 /* speex_header.c */, + 2758BAC417905A41007F6582 /* speex.c */, + 2758BAC517905A41007F6582 /* stack_alloc.h */, + 2758BAC617905A41007F6582 /* stereo.c */, + 2758BAC717905A41007F6582 /* testdenoise.c */, + 2758BAC817905A41007F6582 /* testecho.c */, + 2758BAC917905A41007F6582 /* testenc_uwb.c */, + 2758BACA17905A41007F6582 /* testenc_wb.c */, + 2758BACB17905A41007F6582 /* testenc.c */, + 2758BACC17905A41007F6582 /* vbr.c */, + 2758BACD17905A41007F6582 /* vbr.h */, + 2758BACE17905A41007F6582 /* vorbis_psy.h */, + 2758BACF17905A41007F6582 /* vq_arm4.h */, + 2758BAD017905A41007F6582 /* vq_bfin.h */, + 2758BAD117905A41007F6582 /* vq_sse.h */, + 2758BAD217905A41007F6582 /* vq.c */, + 2758BAD317905A41007F6582 /* vq.h */, + 2758BAD417905A41007F6582 /* window.c */, + ); + path = libspeex; + sourceTree = ""; + }; + 2758BA6017905A02007F6582 /* include */ = { + isa = PBXGroup; + children = ( + 2758BA6117905A19007F6582 /* speex */, + ); + path = include; + sourceTree = ""; + }; + 2758BA6117905A19007F6582 /* speex */ = { + isa = PBXGroup; + children = ( + 2758BA6217905A2B007F6582 /* speex_bits.h */, + 2758BA6317905A2B007F6582 /* speex_buffer.h */, + 2758BA6417905A2B007F6582 /* speex_callbacks.h */, + 2758BA6517905A2B007F6582 /* speex_config_types.h */, + 2758BA6617905A2B007F6582 /* speex_echo.h */, + 2758BA6717905A2B007F6582 /* speex_header.h */, + 2758BA6817905A2B007F6582 /* speex_jitter.h */, + 2758BA6917905A2B007F6582 /* speex_preprocess.h */, + 2758BA6A17905A2B007F6582 /* speex_resampler.h */, + 2758BA6B17905A2B007F6582 /* speex_stereo.h */, + 2758BA6C17905A2B007F6582 /* speex_types.h */, + 2758BA6D17905A2B007F6582 /* speex.h */, + ); + path = speex; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2758BA56179059C1007F6582 /* speex */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2758BA5B179059C1007F6582 /* Build configuration list for PBXNativeTarget "speex" */; + buildPhases = ( + 2758BA53179059C1007F6582 /* Sources */, + 2758BA54179059C1007F6582 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = speex; + productName = speex; + productReference = 2758BA57179059C1007F6582 /* libspeex.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2758BA4F179059C1007F6582 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = io; + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = ioquake; + }; + buildConfigurationList = 2758BA52179059C1007F6582 /* Build configuration list for PBXProject "speex" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 2758BA4E179059C1007F6582; + productRefGroup = 2758BA58179059C1007F6582 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2758BA56179059C1007F6582 /* speex */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 2758BA53179059C1007F6582 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2758BAD717905A41007F6582 /* bits.c in Sources */, + 2758BAD817905A41007F6582 /* buffer.c in Sources */, + 2758BADC17905A41007F6582 /* cb_search.c in Sources */, + 2758BAE017905A41007F6582 /* exc_5_64_table.c in Sources */, + 2758BAE117905A41007F6582 /* exc_5_256_table.c in Sources */, + 2758BAE217905A41007F6582 /* exc_8_128_table.c in Sources */, + 2758BAE317905A41007F6582 /* exc_10_16_table.c in Sources */, + 2758BAE417905A41007F6582 /* exc_10_32_table.c in Sources */, + 2758BAE517905A41007F6582 /* exc_20_32_table.c in Sources */, + 2758BAE617905A41007F6582 /* fftwrap.c in Sources */, + 2758BAE817905A41007F6582 /* filterbank.c in Sources */, + 2758BAED17905A41007F6582 /* filters.c in Sources */, + 2758BAF417905A41007F6582 /* gain_table_lbr.c in Sources */, + 2758BAF517905A41007F6582 /* gain_table.c in Sources */, + 2758BAF617905A41007F6582 /* hexc_10_32_table.c in Sources */, + 2758BAF717905A41007F6582 /* hexc_table.c in Sources */, + 2758BAF817905A41007F6582 /* high_lsp_tables.c in Sources */, + 2758BAF917905A41007F6582 /* jitter.c in Sources */, + 2758BAFA17905A41007F6582 /* kiss_fft.c in Sources */, + 2758BAFC17905A41007F6582 /* kiss_fftr.c in Sources */, + 2758BAFF17905A41007F6582 /* lpc.c in Sources */, + 2758BB0217905A41007F6582 /* lsp_tables_nb.c in Sources */, + 2758BB0317905A41007F6582 /* lsp.c in Sources */, + 2758BB0817905A41007F6582 /* ltp.c in Sources */, + 2758BB0B17905A41007F6582 /* mdf.c in Sources */, + 2758BB0D17905A41007F6582 /* modes_wb.c in Sources */, + 2758BB0E17905A41007F6582 /* modes.c in Sources */, + 2758BB1017905A41007F6582 /* nb_celp.c in Sources */, + 2758BB1317905A41007F6582 /* preprocess.c in Sources */, + 2758BB1617905A41007F6582 /* quant_lsp.c in Sources */, + 2758BB1817905A41007F6582 /* resample.c in Sources */, + 2758BB1917905A41007F6582 /* sb_celp.c in Sources */, + 2758BB1B17905A41007F6582 /* smallft.c in Sources */, + 2758BB1D17905A41007F6582 /* speex_callbacks.c in Sources */, + 2758BB1E17905A41007F6582 /* speex_header.c in Sources */, + 2758BB1F17905A41007F6582 /* speex.c in Sources */, + 2758BB2117905A41007F6582 /* stereo.c in Sources */, + 2758BB2717905A41007F6582 /* vbr.c in Sources */, + 2758BB2D17905A41007F6582 /* vq.c in Sources */, + 2758BB2F17905A41007F6582 /* window.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2758BA59179059C1007F6582 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_CONFIG_H, + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 2758BA5A179059C1007F6582 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 2758BA5C179059C1007F6582 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 2758BA5D179059C1007F6582 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2758BA52179059C1007F6582 /* Build configuration list for PBXProject "speex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2758BA59179059C1007F6582 /* Debug */, + 2758BA5A179059C1007F6582 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2758BA5B179059C1007F6582 /* Build configuration list for PBXNativeTarget "speex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2758BA5C179059C1007F6582 /* Debug */, + 2758BA5D179059C1007F6582 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2758BA4F179059C1007F6582 /* Project object */; +} diff --git a/misc/xcode/ui.xcodeproj/project.pbxproj b/misc/xcode/ui.xcodeproj/project.pbxproj new file mode 100644 index 00000000..c0f95c9e --- /dev/null +++ b/misc/xcode/ui.xcodeproj/project.pbxproj @@ -0,0 +1,299 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2772B81A1790EDA0004CCF57 /* ui_atoms.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8121790EDA0004CCF57 /* ui_atoms.c */; }; + 2772B81B1790EDA0004CCF57 /* ui_gameinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8131790EDA0004CCF57 /* ui_gameinfo.c */; }; + 2772B81D1790EDA0004CCF57 /* ui_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8151790EDA0004CCF57 /* ui_main.c */; }; + 2772B81E1790EDA0004CCF57 /* ui_players.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8161790EDA0004CCF57 /* ui_players.c */; }; + 2772B8201790EDA0004CCF57 /* ui_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8181790EDA0004CCF57 /* ui_shared.c */; }; + 2772B82C1790EE01004CCF57 /* bg_lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8281790EE01004CCF57 /* bg_lib.c */; }; + 2772B82E1790EE01004CCF57 /* bg_misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B82A1790EE01004CCF57 /* bg_misc.c */; }; + 2772B8331790EE22004CCF57 /* q_math.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8301790EE22004CCF57 /* q_math.c */; }; + 2772B8341790EE22004CCF57 /* q_shared.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8311790EE22004CCF57 /* q_shared.c */; }; + 2772B8391790EE51004CCF57 /* ui_syscalls.c in Sources */ = {isa = PBXBuildFile; fileRef = 2772B8381790EE51004CCF57 /* ui_syscalls.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 273531D914D1272300EB7BD6 /* ui.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = ui.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2772B8121790EDA0004CCF57 /* ui_atoms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_atoms.c; sourceTree = ""; }; + 2772B8131790EDA0004CCF57 /* ui_gameinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_gameinfo.c; sourceTree = ""; }; + 2772B8141790EDA0004CCF57 /* ui_local.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_local.h; sourceTree = ""; }; + 2772B8151790EDA0004CCF57 /* ui_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_main.c; sourceTree = ""; }; + 2772B8161790EDA0004CCF57 /* ui_players.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_players.c; sourceTree = ""; }; + 2772B8171790EDA0004CCF57 /* ui_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_public.h; sourceTree = ""; }; + 2772B8181790EDA0004CCF57 /* ui_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_shared.c; sourceTree = ""; }; + 2772B8191790EDA0004CCF57 /* ui_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_shared.h; sourceTree = ""; }; + 2772B8261790EDEB004CCF57 /* keycodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = keycodes.h; sourceTree = ""; }; + 2772B8281790EE01004CCF57 /* bg_lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bg_lib.c; sourceTree = ""; }; + 2772B8291790EE01004CCF57 /* bg_lib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bg_lib.h; sourceTree = ""; }; + 2772B82A1790EE01004CCF57 /* bg_misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bg_misc.c; sourceTree = ""; }; + 2772B82B1790EE01004CCF57 /* bg_public.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bg_public.h; sourceTree = ""; }; + 2772B8301790EE22004CCF57 /* q_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_math.c; sourceTree = ""; }; + 2772B8311790EE22004CCF57 /* q_shared.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = q_shared.c; sourceTree = ""; }; + 2772B8321790EE22004CCF57 /* q_shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = q_shared.h; sourceTree = ""; }; + 2772B8361790EE2F004CCF57 /* tr_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tr_types.h; sourceTree = ""; }; + 2772B8381790EE51004CCF57 /* ui_syscalls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui_syscalls.c; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 273531D614D1272300EB7BD6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 273531CE14D1272300EB7BD6 = { + isa = PBXGroup; + children = ( + 2772B8101790ED6D004CCF57 /* code */, + 273531DA14D1272300EB7BD6 /* Products */, + ); + sourceTree = ""; + }; + 273531DA14D1272300EB7BD6 /* Products */ = { + isa = PBXGroup; + children = ( + 273531D914D1272300EB7BD6 /* ui.dylib */, + ); + name = Products; + sourceTree = ""; + }; + 2772B8101790ED6D004CCF57 /* code */ = { + isa = PBXGroup; + children = ( + 2772B8251790EDCC004CCF57 /* client */, + 2772B8241790EDC6004CCF57 /* game */, + 2772B8231790EDC1004CCF57 /* qcommon */, + 2772B8221790EDA7004CCF57 /* renderercommon */, + 2772B8111790ED78004CCF57 /* ui */, + ); + name = code; + path = ../../code; + sourceTree = SOURCE_ROOT; + }; + 2772B8111790ED78004CCF57 /* ui */ = { + isa = PBXGroup; + children = ( + 2772B8121790EDA0004CCF57 /* ui_atoms.c */, + 2772B8131790EDA0004CCF57 /* ui_gameinfo.c */, + 2772B8141790EDA0004CCF57 /* ui_local.h */, + 2772B8151790EDA0004CCF57 /* ui_main.c */, + 2772B8161790EDA0004CCF57 /* ui_players.c */, + 2772B8171790EDA0004CCF57 /* ui_public.h */, + 2772B8181790EDA0004CCF57 /* ui_shared.c */, + 2772B8191790EDA0004CCF57 /* ui_shared.h */, + 2772B8381790EE51004CCF57 /* ui_syscalls.c */, + ); + path = ui; + sourceTree = ""; + }; + 2772B8221790EDA7004CCF57 /* renderercommon */ = { + isa = PBXGroup; + children = ( + 2772B8361790EE2F004CCF57 /* tr_types.h */, + ); + path = renderercommon; + sourceTree = ""; + }; + 2772B8231790EDC1004CCF57 /* qcommon */ = { + isa = PBXGroup; + children = ( + 2772B8301790EE22004CCF57 /* q_math.c */, + 2772B8311790EE22004CCF57 /* q_shared.c */, + 2772B8321790EE22004CCF57 /* q_shared.h */, + ); + path = qcommon; + sourceTree = ""; + }; + 2772B8241790EDC6004CCF57 /* game */ = { + isa = PBXGroup; + children = ( + 2772B8281790EE01004CCF57 /* bg_lib.c */, + 2772B8291790EE01004CCF57 /* bg_lib.h */, + 2772B82A1790EE01004CCF57 /* bg_misc.c */, + 2772B82B1790EE01004CCF57 /* bg_public.h */, + ); + path = game; + sourceTree = ""; + }; + 2772B8251790EDCC004CCF57 /* client */ = { + isa = PBXGroup; + children = ( + 2772B8261790EDEB004CCF57 /* keycodes.h */, + ); + path = client; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 273531D814D1272300EB7BD6 /* ui */ = { + isa = PBXNativeTarget; + buildConfigurationList = 273531DD14D1272300EB7BD6 /* Build configuration list for PBXNativeTarget "ui" */; + buildPhases = ( + 273531D514D1272300EB7BD6 /* Sources */, + 273531D614D1272300EB7BD6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ui; + productName = ui; + productReference = 273531D914D1272300EB7BD6 /* ui.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 273531D014D1272300EB7BD6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + }; + buildConfigurationList = 273531D314D1272300EB7BD6 /* Build configuration list for PBXProject "ui" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 273531CE14D1272300EB7BD6; + productRefGroup = 273531DA14D1272300EB7BD6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 273531D814D1272300EB7BD6 /* ui */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 273531D514D1272300EB7BD6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2772B81A1790EDA0004CCF57 /* ui_atoms.c in Sources */, + 2772B81B1790EDA0004CCF57 /* ui_gameinfo.c in Sources */, + 2772B81D1790EDA0004CCF57 /* ui_main.c in Sources */, + 2772B81E1790EDA0004CCF57 /* ui_players.c in Sources */, + 2772B8201790EDA0004CCF57 /* ui_shared.c in Sources */, + 2772B82C1790EE01004CCF57 /* bg_lib.c in Sources */, + 2772B82E1790EE01004CCF57 /* bg_misc.c in Sources */, + 2772B8331790EE22004CCF57 /* q_math.c in Sources */, + 2772B8341790EE22004CCF57 /* q_shared.c in Sources */, + 2772B8391790EE51004CCF57 /* ui_syscalls.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 273531DB14D1272300EB7BD6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + MISSIONPACK, + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 273531DC14D1272300EB7BD6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PREPROCESSOR_DEFINITIONS = MISSIONPACK; + GCC_VERSION = ""; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.4; + SDKROOT = macosx; + }; + name = Release; + }; + 273531DE14D1272300EB7BD6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 273531DF14D1272300EB7BD6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + EXECUTABLE_PREFIX = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 273531D314D1272300EB7BD6 /* Build configuration list for PBXProject "ui" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273531DB14D1272300EB7BD6 /* Debug */, + 273531DC14D1272300EB7BD6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 273531DD14D1272300EB7BD6 /* Build configuration list for PBXNativeTarget "ui" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 273531DE14D1272300EB7BD6 /* Debug */, + 273531DF14D1272300EB7BD6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 273531D014D1272300EB7BD6 /* Project object */; +} diff --git a/misc/xcode/xcode-readme.txt b/misc/xcode/xcode-readme.txt new file mode 100644 index 00000000..fc53f65a --- /dev/null +++ b/misc/xcode/xcode-readme.txt @@ -0,0 +1,51 @@ +ioquake3 Xcode Projects +Created & Maintained by Jeremiah Sypult & Contributors +Updated: 2013/07/13 + + +GENERAL: +From the ioquake3 root, navigate to misc/xcode and open the ioquake3.xcworkspace. The workspace embeds all the projects and currently builds universal (fat) binaries supporting i386 and x86_64. + +An older version of Xcode may be able to add support for PowerPC, but it is not currently supported in the Xcode version I produced these projects with (4.6.3). + +Hopefully people working with ioquake3 on OS X will benefit from using Xcodes IDE for building, hacking and debugging. + + +LIBRARIES: +- Game libraries (cgame, game, ui) compile to universal binary dylib for native (versus qvm bytecode/interpreted). +- Renderer libraries also compile to universal binary dylib. The OpenGL 2 renderer project will normally show missing .c files in code/renderergl2/glsl. This is normal, as these .c files are automatically generated during the build process and deleted when building completes. This step is required in order for the renderer to link due to symbol dependencies in tr_glsl.c for fallback shaders. +- ioquake3 searches for game & renderer libraries with an abbreviated architecture suffix in the filename. Xcode scripts handle symlink creation for the appropriate architectures at build time in order to support universal (fat) binaries. +- Static libraries are used for botlib, jpeg and speex. +- Currently links OS X system libcurl.dylib and libz.dylib. +- SDL binary dylib is included. + + +TODO: +- dedicated support +- missionpack support +- curl.xcodeproj +- ogg.xcodeproj (ogg vorbis support) +- opusfile.xcodeproj +- zlib.xcodeproj +- q3asm.xcodeproj +- q3cpp.xcodeproj +- q3lcc.xcodeproj +- q3rcc.xcodeproj + + + + + + + + + + + + + + + + +NO CARRIER + From 90dcf34eeee45c7161e378d0eac4a369dc6d4c4b Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Wed, 17 Jul 2013 14:59:58 -0500 Subject: [PATCH 41/62] Fix the speex Xcode project since it was missing its header search path. --- misc/xcode/ioquake3-Info.plist | 2 +- misc/xcode/speex.xcodeproj/project.pbxproj | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/misc/xcode/ioquake3-Info.plist b/misc/xcode/ioquake3-Info.plist index c938b4ca..9a1f113b 100644 --- a/misc/xcode/ioquake3-Info.plist +++ b/misc/xcode/ioquake3-Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 690b281-2013-07-11 + 0f9eca6-2013-07-13 CGDisableCoalescedUpdates LSMinimumSystemVersion diff --git a/misc/xcode/speex.xcodeproj/project.pbxproj b/misc/xcode/speex.xcodeproj/project.pbxproj index 8d36dee8..701f026a 100644 --- a/misc/xcode/speex.xcodeproj/project.pbxproj +++ b/misc/xcode/speex.xcodeproj/project.pbxproj @@ -478,6 +478,7 @@ isa = XCBuildConfiguration; buildSettings = { EXECUTABLE_PREFIX = lib; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../code/libspeex/include\""; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -486,6 +487,7 @@ isa = XCBuildConfiguration; buildSettings = { EXECUTABLE_PREFIX = lib; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../code/libspeex/include\""; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; From 9c2ce77d989c268e9a7aa92ca9719fcf43de7c1b Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Wed, 17 Jul 2013 15:54:53 -0500 Subject: [PATCH 42/62] Added "all game" and "all ioquake3" schemes to Xcode workspace so that they build properly. --- misc/xcode/ioquake3-Info.plist | 2 +- misc/xcode/ioquake3.xcodeproj/project.pbxproj | 6 +- .../xcshareddata/xcschemes/all game.xcscheme | 101 ++++++++++ .../xcschemes/all ioquake3.xcscheme | 185 ++++++++++++++++++ 4 files changed, 289 insertions(+), 5 deletions(-) create mode 100644 misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all game.xcscheme create mode 100644 misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all ioquake3.xcscheme diff --git a/misc/xcode/ioquake3-Info.plist b/misc/xcode/ioquake3-Info.plist index 9a1f113b..a5cffb5b 100644 --- a/misc/xcode/ioquake3-Info.plist +++ b/misc/xcode/ioquake3-Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 0f9eca6-2013-07-13 + 90dcf34-2013-07-17 CGDisableCoalescedUpdates LSMinimumSystemVersion diff --git a/misc/xcode/ioquake3.xcodeproj/project.pbxproj b/misc/xcode/ioquake3.xcodeproj/project.pbxproj index e3567eb6..dc27b3b0 100644 --- a/misc/xcode/ioquake3.xcodeproj/project.pbxproj +++ b/misc/xcode/ioquake3.xcodeproj/project.pbxproj @@ -994,9 +994,8 @@ INFOPLIST_FILE = "ioquake3-Info.plist"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", + "\"$(BUILT_PRODUCTS_DIR)\"", "\"$(SRCROOT)/../../code/libs/macosx\"", - "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-dqrqeayrbnbwitdwenoviousqwyc/Build/Products/Debug\"", - "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-bwsysqgnnblpppgnczkimhgcpjhj/Build/Products/Debug\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; PRODUCT_NAME = ioquake3; @@ -1020,9 +1019,8 @@ INFOPLIST_FILE = "ioquake3-Info.plist"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", + "\"$(BUILT_PRODUCTS_DIR)\"", "\"$(SRCROOT)/../../code/libs/macosx\"", - "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-dqrqeayrbnbwitdwenoviousqwyc/Build/Products/Debug\"", - "\"$(SRCROOT)/../../../../../../Library/Developer/Xcode/DerivedData/ioquake3-bwsysqgnnblpppgnczkimhgcpjhj/Build/Products/Debug\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; PRODUCT_NAME = ioquake3; diff --git a/misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all game.xcscheme b/misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all game.xcscheme new file mode 100644 index 00000000..713f91d3 --- /dev/null +++ b/misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all game.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all ioquake3.xcscheme b/misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all ioquake3.xcscheme new file mode 100644 index 00000000..589c702a --- /dev/null +++ b/misc/xcode/ioquake3.xcworkspace/xcshareddata/xcschemes/all ioquake3.xcscheme @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 7b47c6cf36837dd13fab9a31d4156acc8cd670d3 Mon Sep 17 00:00:00 2001 From: morturp Date: Thu, 18 Jul 2013 03:00:39 +0300 Subject: [PATCH 43/62] out seems to be unnecessarily large for one byte per pixel --- code/renderercommon/tr_font.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/renderercommon/tr_font.c b/code/renderercommon/tr_font.c index dda00e24..4b641bac 100644 --- a/code/renderercommon/tr_font.c +++ b/code/renderercommon/tr_font.c @@ -436,12 +436,12 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { // make a 256x256 image buffer, once it is full, register it, clean it and keep going // until all glyphs are rendered - out = ri.Malloc(1024*1024); + out = ri.Malloc(256*256); if (out == NULL) { ri.Printf(PRINT_WARNING, "RE_RegisterFont: ri.Malloc failure during output image creation.\n"); return; } - Com_Memset(out, 0, 1024*1024); + Com_Memset(out, 0, 256*256); maxHeight = 0; @@ -500,7 +500,7 @@ void RE_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { Q_strncpyz(font->glyphs[j].shaderName, name, sizeof(font->glyphs[j].shaderName)); } lastStart = i; - Com_Memset(out, 0, 1024*1024); + Com_Memset(out, 0, 256*256); xOut = 0; yOut = 0; ri.Free(imageBuff); From 260233d4ec08e3dc3fba77ca1b6a87bdfb7e5cfb Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 00:11:10 -0500 Subject: [PATCH 44/62] bug 5986 - Configure jenkins to spit out mac .app https://bugzilla.icculus.org/show_bug.cgi?id=5986 Created make-macosx-app.sh to handle manually creating an app bundle from other scripts. Updated make-macosx.sh to create bundle with make-macosx-app.sh (TODO: make-macosx-ub.sh support). Updated Makefile to create bundle with make-macosx-app.sh and zip up the resulting ioquake3.app if ARCHIVE is defined. --- Makefile | 14 +- jenkins-ci-build.sh | 18 +- make-macosx-app.sh | 328 +++++++++++++++++++++++++++++++++ make-macosx.sh | 61 +----- misc/xcode/ioquake3-Info.plist | 2 +- 5 files changed, 361 insertions(+), 62 deletions(-) create mode 100755 make-macosx-app.sh diff --git a/Makefile b/Makefile index f7ae1159..5cd9d72d 100644 --- a/Makefile +++ b/Makefile @@ -1205,6 +1205,9 @@ endif NAKED_TARGETS=$(shell echo $(TARGETS) | sed -e "s!$(B)/!!g") +MACOSX_TARGET_STRING=$(shell if [ "$(B)" == "$(BR)" ]; then echo "release"; elif [ "$(B)" == "$(BD)" ]; then echo "debug"; fi) +MACOSX_MAKE_APP=@if [ -x "./make-macosx-app.sh" ]; then "./make-macosx-app.sh" $(MACOSX_TARGET_STRING) $(ARCH); fi + print_list=@for i in $(1); \ do \ echo " $$i"; \ @@ -1259,9 +1262,18 @@ ifneq ($(TARGETS),) endif $(B).zip: $(TARGETS) -ifdef ARCHIVE +ifeq ($(PLATFORM),darwin) + ifdef ARCHIVE + $(call MACOSX_MAKE_APP) + @rm -f $@ + @(if [ -d "$(B)/ioquake3.app" ]; then cd $(B) && zip --symlinks -r9 ../../$@ `find "ioquake3.app" -print | sed -e "s!$(B)/!!g"`; fi) + endif +endif +ifneq ($(PLATFORM),darwin) + ifdef ARCHIVE @rm -f $@ @(cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS)) + endif endif makedirs: diff --git a/jenkins-ci-build.sh b/jenkins-ci-build.sh index b18ff14b..fb922f25 100755 --- a/jenkins-ci-build.sh +++ b/jenkins-ci-build.sh @@ -1,6 +1,9 @@ #!/bin/bash +UNAME=`uname` MASTER_DIR=`dirname $0` +BUILD_DEFAULT="release" + cd ${MASTER_DIR} if [ "$OPTIONS" = "all_options" ]; @@ -9,7 +12,20 @@ then export USE_FREETYPE=1 fi -CORES=`awk '/^processor/ { N++} END { print N }' /proc/cpuinfo` +if [ "$UNAME" == "Darwin" ]; then + CORES=`sysctl -n hw.ncpu` +elif [ "$UNAME" == "Linux" ]; then + CORES=`awk '/^processor/ { N++} END { print N }' /proc/cpuinfo` +fi + +echo "platform : ${UNAME}" +echo "cores : ${CORES}" +if [ "${BUILD_TYPE}" == "" ]; then + BUILD_TYPE="${BUILD_DEFAULT}" + echo "build type : defaulting to ${BUILD_TYPE}" +else + echo "build type : ${BUILD_TYPE}" +fi make -j${CORES} distclean ${BUILD_TYPE} diff --git a/make-macosx-app.sh b/make-macosx-app.sh new file mode 100755 index 00000000..168109bb --- /dev/null +++ b/make-macosx-app.sh @@ -0,0 +1,328 @@ +#!/bin/sh + +# Let's make the user give us a target to work with +# architecture is optional +# if used, it we will store the .app bundle in the target arch build directory +if [ $# == 0 ] || [ $# -gt 2 ]; then + echo "Usage: $0 target " + echo "Example: $0 release x86" + echo "Valid targets are:" + echo " release" + echo " debug" + echo + echo "Optional architectures are:" + echo " x86" + echo " x86_64" + echo " ppc" + echo + exit 1 +fi + +if [ "$1" == "release" ]; then + TARGET_NAME="release" +elif [ "$1" == "debug" ]; then + TARGET_NAME="debug" +else + echo "Invalid target: $1" + echo "Valid targets are:" + echo " release" + echo " debug" + exit 1 +fi + +CURRENT_ARCH="" + +if [ "$2" != "" ]; then + if [ "$2" == "x86" ]; then + CURRENT_ARCH="x86" + elif [ "$2" == "x86_64" ]; then + CURRENT_ARCH="x86_64" + elif [ "$2" == "ppc" ]; then + CURRENT_ARCH="ppc" + else + echo "Invalid architecture: $1" + echo "Valid architectures are:" + echo " x86" + echo " x86_64" + echo " ppc" + echo + exit 1 + fi +fi + +function symlinkArch() +{ + EXT="dylib" + SEP="${3}" + SRCFILE="${1}" + DSTFILE="${2}${SEP}" + DSTPATH="${4}" + + if [ ! -e "${DSTPATH}/${SRCFILE}.${EXT}" ]; then + echo "**** ERROR: missing ${SRCFILE}.${EXT} from ${MACOS}" + exit 1 + fi + + if [ ! -d "${DSTPATH}" ]; then + echo "**** ERROR: path not found ${DSTPATH}" + exit 1 + fi + + pushd "${DSTPATH}" > /dev/null + + IS32=`file "${SRCFILE}.${EXT}" | grep "i386" | awk '{print $NF}'` + IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64" | awk '{print $NF}'` + ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc" | awk '{print $NF}'` + + if [ "${IS32}" == "i386" ]; then + if [ ! -L "${DSTFILE}x86.${EXT}" ]; then + ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86.${EXT}" + fi + elif [ -L "${DSTFILE}x86.${EXT}" ]; then + rm "${DSTFILE}x86.${EXT}" + fi + + if [ "${IS64}" == "x86_64" ]; then + if [ ! -L "${DSTFILE}x86_64.${EXT}" ]; then + ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86_64.${EXT}" + fi + elif [ -L "${DSTFILE}x86_64.${EXT}" ]; then + rm "${DSTFILE}x86_64.${EXT}" + fi + + if [ "${ISPPC}" == "ppc" ]; then + if [ ! -L "${DSTFILE}ppc.${EXT}" ]; then + ln -s "${SRCFILE}.${EXT}" "${DSTFILE}ppc.${EXT}" + fi + elif [ -L "${DSTFILE}ppc.${EXT}" ]; then + rm "${DSTFILE}ppc.${EXT}" + fi + + popd > /dev/null +} + +SEARCH_ARCHS=" \ + x86 \ + x86_64 \ + ppc \ +" + +# if the optional arch parameter is used, we'll set CURRENT_ARCH +if [ "${CURRENT_ARCH}" != "" ]; then + SEARCH_ARCHS="${CURRENT_ARCH}" +fi + +AVAILABLE_ARCHS="" + +IOQ3_CLIENT_ARCHS="" +IOQ3_SERVER_ARCHS="" +IOQ3_RENDERER_GL1_ARCHS="" +IOQ3_RENDERER_GL2_ARCHS="" +IOQ3_CGAME_ARCHS="" +IOQ3_GAME_ARCHS="" +IOQ3_UI_ARCHS="" +IOQ3_MP_CGAME_ARCHS="" +IOQ3_MP_GAME_ARCHS="" +IOQ3_MP_UI_ARCHS="" + +BASEDIR="baseq3" +MISSIONPACKDIR="missionpack" + +CGAME="cgame" +GAME="qagame" +UI="ui" + +RENDERER_OPENGL="renderer_opengl" + +DEDICATED_NAME="ioq3ded" + +CGAME_NAME="${CGAME}.dylib" +GAME_NAME="${GAME}.dylib" +UI_NAME="${UI}.dylib" + +RENDERER_OPENGL1_NAME="${RENDERER_OPENGL}1.dylib" +RENDERER_OPENGL2_NAME="${RENDERER_OPENGL}2.dylib" + +ICNSDIR="misc" +ICNS="quake3_flat.icns" +PKGINFO="APPLIOQ3" + +OBJROOT="build" +#BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" +PRODUCT_NAME="ioquake3" +WRAPPER_EXTENSION="app" +WRAPPER_NAME="${PRODUCT_NAME}.${WRAPPER_EXTENSION}" +CONTENTS_FOLDER_PATH="${WRAPPER_NAME}/Contents" +UNLOCALIZED_RESOURCES_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/Resources" +EXECUTABLE_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/MacOS" +EXECUTABLE_NAME="${PRODUCT_NAME}" + +for ARCH in $SEARCH_ARCHS; do + CURRENT_ARCH=${ARCH} + BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" + IOQ3_CLIENT="${EXECUTABLE_NAME}.${CURRENT_ARCH}" + IOQ3_SERVER="${DEDICATED_NAME}.${CURRENT_ARCH}" + IOQ3_RENDERER_GL1="${RENDERER_OPENGL}1_${CURRENT_ARCH}.dylib" + IOQ3_RENDERER_GL2="${RENDERER_OPENGL}2_${CURRENT_ARCH}.dylib" + IOQ3_CGAME="${CGAME}${CURRENT_ARCH}.dylib" + IOQ3_GAME="${GAME}${CURRENT_ARCH}.dylib" + IOQ3_UI="${UI}${CURRENT_ARCH}.dylib" + + if [ ! -d ${BUILT_PRODUCTS_DIR} ]; then + CURRENT_ARCH="" + BUILT_PRODUCTS_DIR="" + continue + fi + + # executables + if [ -e ${BUILT_PRODUCTS_DIR}/${IOQ3_CLIENT} ]; then + IOQ3_CLIENT_ARCHS="${BUILT_PRODUCTS_DIR}/${IOQ3_CLIENT} ${IOQ3_CLIENT_ARCHS}" + VALID_ARCHS="${ARCH} ${VALID_ARCHS}" + else + continue + fi + if [ -e ${BUILT_PRODUCTS_DIR}/${IOQ3_SERVER} ]; then + IOQ3_SERVER_ARCHS="${BUILT_PRODUCTS_DIR}/${IOQ3_SERVER} ${IOQ3_SERVER_ARCHS}" + fi + + # renderers + if [ -e ${BUILT_PRODUCTS_DIR}/${IOQ3_RENDERER_GL1} ]; then + IOQ3_RENDERER_GL1_ARCHS="${BUILT_PRODUCTS_DIR}/${IOQ3_RENDERER_GL1} ${IOQ3_RENDERER_GL1_ARCHS}" + fi + if [ -e ${BUILT_PRODUCTS_DIR}/${IOQ3_RENDERER_GL2} ]; then + IOQ3_RENDERER_GL2_ARCHS="${BUILT_PRODUCTS_DIR}/${IOQ3_RENDERER_GL2} ${IOQ3_RENDERER_GL2_ARCHS}" + fi + + # game + if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_CGAME} ]; then + IOQ3_CGAME_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_CGAME} ${IOQ3_CGAME_ARCHS}" + fi + if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_GAME} ]; then + IOQ3_GAME_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_GAME} ${IOQ3_GAME_ARCHS}" + fi + if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_UI} ]; then + IOQ3_UI_ARCHS="${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_UI} ${IOQ3_UI_ARCHS}" + fi + # missionpack + if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_MP_CGAME} ]; then + IOQ3_MP_CGAME_ARCHS="${BUILT_PRODUCTS_DIR}/${MISSIONPACKDIR}/${IOQ3_CGAME} ${IOQ3_MP_CGAME_ARCHS}" + fi + if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_MP_GAME} ]; then + IOQ3_MP_GAME_ARCHS="${BUILT_PRODUCTS_DIR}/${MISSIONPACKDIR}/${IOQ3_GAME} ${IOQ3_MP_GAME_ARCHS}" + fi + if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_MP_UI} ]; then + IOQ3_MP_UI_ARCHS="${BUILT_PRODUCTS_DIR}/${MISSIONPACKDIR}/${IOQ3_UI} ${IOQ3_MP_UI_ARCHS}" + fi +done + +if [ "${2}" == "" ]; then + BUILT_PRODUCTS_DIR="${OBJROOT}" +else + BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" +fi + +cd `dirname $0` + +if [ ! -f Makefile ]; then + echo "$0 must be run from the ioquake3 build directory" + exit 1 +fi + +Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` + +if [ "${IOQ3_CLIENT_ARCHS}" == "" ]; then + echo "$0: no ioquake3 binary architectures were found for target '${TARGET_NAME}'" + exit 1 +else + echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'\c" + echo " with architectures: \c" + for ARCH in ${VALID_ARCHS}; do + echo "${ARCH} \c" + done + echo "" +fi + + +if [ ! -d ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR ]; then + mkdir -p ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR || exit 1; +fi +if [ ! -d ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$MISSIONPACKDIR ]; then + mkdir -p ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$MISSIONPACKDIR || exit 1; +fi +if [ ! -d ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH} ]; then + mkdir -p ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH} || exit 1; +fi + +cp ${ICNSDIR}/${ICNS} ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/$ICNS || exit 1; + +echo -n ${PKGINFO} > ${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/PkgInfo || exit 1; + +echo " + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + quake3_flat + CFBundleIdentifier + org.ioquake.${PRODUCT_NAME} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + ${Q3_VERSION} + CFBundleSignature + ???? + CFBundleVersion + ${Q3_VERSION} + CGDisableCoalescedUpdates + + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + QUAKE III ARENA Copyright © 1999-2000 id Software, Inc. All rights reserved. + NSPrincipalClass + NSApplication + + +" > ${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Info.plist + +cp code/libs/macosx/*.dylib ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH} + +# +# use lipo to create a universal binary in to the appropriate bundle location +# then symlink appropriate architecture names for universal (fat) binary support +# +BUNDLEDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}" + +# executables +lipo -create -o ${BUNDLEDIR}/${EXECUTABLE_NAME} ${IOQ3_CLIENT_ARCHS} +lipo -create -o ${BUNDLEDIR}/${DEDICATED_NAME} ${IOQ3_SERVER_ARCHS} + +# renderers +lipo -create -o ${BUNDLEDIR}/${RENDERER_OPENGL1_NAME} ${IOQ3_RENDERER_GL1_ARCHS} +lipo -create -o ${BUNDLEDIR}/${RENDERER_OPENGL2_NAME} ${IOQ3_RENDERER_GL2_ARCHS} +symlinkArch "${RENDERER_OPENGL}1" "${RENDERER_OPENGL}1" "_" "${BUNDLEDIR}" +symlinkArch "${RENDERER_OPENGL}2" "${RENDERER_OPENGL}2" "_" "${BUNDLEDIR}" + +# game +lipo -create -o ${BUNDLEDIR}/${BASEDIR}/${CGAME_NAME} ${IOQ3_CGAME_ARCHS} +lipo -create -o ${BUNDLEDIR}/${BASEDIR}/${GAME_NAME} ${IOQ3_GAME_ARCHS} +lipo -create -o ${BUNDLEDIR}/${BASEDIR}/${UI_NAME} ${IOQ3_UI_ARCHS} +symlinkArch "cgame" "cgame" "" "${BUNDLEDIR}/${BASEDIR}" +symlinkArch "qagame" "qagame" "" "${BUNDLEDIR}/${BASEDIR}" +symlinkArch "ui" "ui" "" "${BUNDLEDIR}/${BASEDIR}" + +# missionpack +lipo -create -o ${BUNDLEDIR}/${MISSIONPACKDIR}/${CGAME_NAME} ${IOQ3_MP_CGAME_ARCHS} +lipo -create -o ${BUNDLEDIR}/${MISSIONPACKDIR}/${GAME_NAME} ${IOQ3_MP_GAME_ARCHS} +lipo -create -o ${BUNDLEDIR}/${MISSIONPACKDIR}/${UI_NAME} ${IOQ3_MP_UI_ARCHS} +symlinkArch "cgame" "cgame" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" +symlinkArch "qagame" "qagame" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" +symlinkArch "ui" "ui" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" diff --git a/make-macosx.sh b/make-macosx.sh index cf3b3c30..bab2960e 100755 --- a/make-macosx.sh +++ b/make-macosx.sh @@ -34,7 +34,6 @@ APPBUNDLE=ioquake3.app BINARY=ioquake3.${BUILDARCH} DEDBIN=ioq3ded.${BUILDARCH} PKGINFO=APPLIOQ3 -ICNS=misc/quake3.icns DESTDIR=build/release-darwin-${BUILDARCH} BASEDIR=baseq3 MPACKDIR=missionpack @@ -107,61 +106,5 @@ if [ -d build/release-darwin-${BUILDARCH} ]; then fi (ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS LDFLAGS=$ARCH_LDFLAGS make -j$NCPU) || exit 1; -echo "Creating .app bundle $DESTDIR/$APPBUNDLE" -if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then - mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1; -fi -if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR ]; then - mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR || exit 1; -fi -if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then - mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources -fi -cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/ioquake3.icns || exit 1; -echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo -echo " - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - $BINARY - CFBundleGetInfoString - ioquake3 $Q3_VERSION - CFBundleIconFile - ioquake3.icns - CFBundleIdentifier - org.ioquake.ioquake3 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ioquake3 - CFBundlePackageType - APPL - CFBundleShortVersionString - $Q3_VERSION - CFBundleSignature - $PKGINFO - CFBundleVersion - $Q3_VERSION - NSExtensions - - NSPrincipalClass - NSApplication - - - " > $DESTDIR/$APPBUNDLE/Contents/Info.plist - - -cp $BIN_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY -cp $BIN_DEDOBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN -cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/ -cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/ -cp $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/ -cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/ -cp code/libs/macosx/*.dylib $DESTDIR - +# use the following shell script to build an application bundle +"./make-macosx-app.sh" release ${BUILDARCH} diff --git a/misc/xcode/ioquake3-Info.plist b/misc/xcode/ioquake3-Info.plist index a5cffb5b..3f5d8817 100644 --- a/misc/xcode/ioquake3-Info.plist +++ b/misc/xcode/ioquake3-Info.plist @@ -21,7 +21,7 @@ CFBundleSignature ???? CFBundleVersion - 90dcf34-2013-07-17 + 3cd8b49-2013-07-17 CGDisableCoalescedUpdates LSMinimumSystemVersion From 0d2a576a43dea2a745159c9342509feac476a19d Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 00:16:38 -0500 Subject: [PATCH 45/62] fix bug in make-macosx-app.sh with older shells --- make-macosx-app.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index 168109bb..cde7413e 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -3,7 +3,11 @@ # Let's make the user give us a target to work with # architecture is optional # if used, it we will store the .app bundle in the target arch build directory -if [ $# == 0 ] || [ $# -gt 2 ]; then + +# TODO: check for 1 or two parameters +#if [ $# == 0 ] || [ $# -gt 2 ]; then + +if [ "$1" == "" ]; then echo "Usage: $0 target " echo "Example: $0 release x86" echo "Valid targets are:" From 2357f595fb190686f5fd37d8bde8e34edbd81122 Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 00:28:17 -0500 Subject: [PATCH 46/62] make-macosx-app.sh using single '=' comparisons --- make-macosx-app.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index cde7413e..dec78e81 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -5,9 +5,9 @@ # if used, it we will store the .app bundle in the target arch build directory # TODO: check for 1 or two parameters -#if [ $# == 0 ] || [ $# -gt 2 ]; then +#if [ $# = 0 ] || [ $# -gt 2 ]; then -if [ "$1" == "" ]; then +if [ "$1" = "" ]; then echo "Usage: $0 target " echo "Example: $0 release x86" echo "Valid targets are:" @@ -22,9 +22,9 @@ if [ "$1" == "" ]; then exit 1 fi -if [ "$1" == "release" ]; then +if [ "$1" = "release" ]; then TARGET_NAME="release" -elif [ "$1" == "debug" ]; then +elif [ "$1" = "debug" ]; then TARGET_NAME="debug" else echo "Invalid target: $1" @@ -37,11 +37,11 @@ fi CURRENT_ARCH="" if [ "$2" != "" ]; then - if [ "$2" == "x86" ]; then + if [ "$2" = "x86" ]; then CURRENT_ARCH="x86" - elif [ "$2" == "x86_64" ]; then + elif [ "$2" = "x86_64" ]; then CURRENT_ARCH="x86_64" - elif [ "$2" == "ppc" ]; then + elif [ "$2" = "ppc" ]; then CURRENT_ARCH="ppc" else echo "Invalid architecture: $1" @@ -78,7 +78,7 @@ function symlinkArch() IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64" | awk '{print $NF}'` ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc" | awk '{print $NF}'` - if [ "${IS32}" == "i386" ]; then + if [ "${IS32}" = "i386" ]; then if [ ! -L "${DSTFILE}x86.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86.${EXT}" fi @@ -86,7 +86,7 @@ function symlinkArch() rm "${DSTFILE}x86.${EXT}" fi - if [ "${IS64}" == "x86_64" ]; then + if [ "${IS64}" = "x86_64" ]; then if [ ! -L "${DSTFILE}x86_64.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86_64.${EXT}" fi @@ -94,7 +94,7 @@ function symlinkArch() rm "${DSTFILE}x86_64.${EXT}" fi - if [ "${ISPPC}" == "ppc" ]; then + if [ "${ISPPC}" = "ppc" ]; then if [ ! -L "${DSTFILE}ppc.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}ppc.${EXT}" fi @@ -219,7 +219,7 @@ for ARCH in $SEARCH_ARCHS; do fi done -if [ "${2}" == "" ]; then +if [ "${2}" = "" ]; then BUILT_PRODUCTS_DIR="${OBJROOT}" else BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" @@ -234,7 +234,7 @@ fi Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` -if [ "${IOQ3_CLIENT_ARCHS}" == "" ]; then +if [ "${IOQ3_CLIENT_ARCHS}" = "" ]; then echo "$0: no ioquake3 binary architectures were found for target '${TARGET_NAME}'" exit 1 else From 95138f456e65473ab16616aeb6e0cee4877400e4 Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 00:35:44 -0500 Subject: [PATCH 47/62] make-macosx-app.sh should use /bin/bash and not /bin/sh --- make-macosx-app.sh | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index dec78e81..479bd375 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -1,13 +1,9 @@ -#!/bin/sh +#!/bin/bash # Let's make the user give us a target to work with # architecture is optional # if used, it we will store the .app bundle in the target arch build directory - -# TODO: check for 1 or two parameters -#if [ $# = 0 ] || [ $# -gt 2 ]; then - -if [ "$1" = "" ]; then +if [ $# == 0 ] || [ $# -gt 2 ]; then echo "Usage: $0 target " echo "Example: $0 release x86" echo "Valid targets are:" @@ -22,9 +18,9 @@ if [ "$1" = "" ]; then exit 1 fi -if [ "$1" = "release" ]; then +if [ "$1" == "release" ]; then TARGET_NAME="release" -elif [ "$1" = "debug" ]; then +elif [ "$1" == "debug" ]; then TARGET_NAME="debug" else echo "Invalid target: $1" @@ -37,11 +33,11 @@ fi CURRENT_ARCH="" if [ "$2" != "" ]; then - if [ "$2" = "x86" ]; then + if [ "$2" == "x86" ]; then CURRENT_ARCH="x86" - elif [ "$2" = "x86_64" ]; then + elif [ "$2" == "x86_64" ]; then CURRENT_ARCH="x86_64" - elif [ "$2" = "ppc" ]; then + elif [ "$2" == "ppc" ]; then CURRENT_ARCH="ppc" else echo "Invalid architecture: $1" @@ -78,7 +74,7 @@ function symlinkArch() IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64" | awk '{print $NF}'` ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc" | awk '{print $NF}'` - if [ "${IS32}" = "i386" ]; then + if [ "${IS32}" == "i386" ]; then if [ ! -L "${DSTFILE}x86.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86.${EXT}" fi @@ -86,7 +82,7 @@ function symlinkArch() rm "${DSTFILE}x86.${EXT}" fi - if [ "${IS64}" = "x86_64" ]; then + if [ "${IS64}" == "x86_64" ]; then if [ ! -L "${DSTFILE}x86_64.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86_64.${EXT}" fi @@ -94,7 +90,7 @@ function symlinkArch() rm "${DSTFILE}x86_64.${EXT}" fi - if [ "${ISPPC}" = "ppc" ]; then + if [ "${ISPPC}" == "ppc" ]; then if [ ! -L "${DSTFILE}ppc.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}ppc.${EXT}" fi @@ -219,7 +215,7 @@ for ARCH in $SEARCH_ARCHS; do fi done -if [ "${2}" = "" ]; then +if [ "${2}" == "" ]; then BUILT_PRODUCTS_DIR="${OBJROOT}" else BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" @@ -234,7 +230,7 @@ fi Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` -if [ "${IOQ3_CLIENT_ARCHS}" = "" ]; then +if [ "${IOQ3_CLIENT_ARCHS}" == "" ]; then echo "$0: no ioquake3 binary architectures were found for target '${TARGET_NAME}'" exit 1 else From 744651f72f3912470d0022b3c1c11a4976f0fa43 Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 00:47:00 -0500 Subject: [PATCH 48/62] Updated Makefile to only build release OS X app bundles --- Makefile | 4 ++-- make-macosx-app.sh | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 5cd9d72d..ec69a9eb 100644 --- a/Makefile +++ b/Makefile @@ -1205,8 +1205,8 @@ endif NAKED_TARGETS=$(shell echo $(TARGETS) | sed -e "s!$(B)/!!g") -MACOSX_TARGET_STRING=$(shell if [ "$(B)" == "$(BR)" ]; then echo "release"; elif [ "$(B)" == "$(BD)" ]; then echo "debug"; fi) -MACOSX_MAKE_APP=@if [ -x "./make-macosx-app.sh" ]; then "./make-macosx-app.sh" $(MACOSX_TARGET_STRING) $(ARCH); fi +#MACOSX_TARGET_STRING=$(shell if [ "$(B)" == "$(BR)" ]; then echo "release"; elif [ "$(B)" == "$(BD)" ]; then echo "debug"; fi) +MACOSX_MAKE_APP=@if [ -x "./make-macosx-app.sh" ]; then "./make-macosx-app.sh" release $(ARCH); fi print_list=@for i in $(1); \ do \ diff --git a/make-macosx-app.sh b/make-macosx-app.sh index 479bd375..ed73aa20 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -234,10 +234,10 @@ if [ "${IOQ3_CLIENT_ARCHS}" == "" ]; then echo "$0: no ioquake3 binary architectures were found for target '${TARGET_NAME}'" exit 1 else - echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'\c" - echo " with architectures: \c" + echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'" + echo "with architectures:" for ARCH in ${VALID_ARCHS}; do - echo "${ARCH} \c" + echo " ${ARCH}" done echo "" fi From fd1e278142c24b4338f3f51c6765fd2cf38cc0a5 Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 01:08:56 -0500 Subject: [PATCH 49/62] make-macosx-app.sh supports systems without libtool --- make-macosx-app.sh | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index ed73aa20..d5e56668 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -301,28 +301,46 @@ cp code/libs/macosx/*.dylib ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH} # BUNDLEDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}" +# TODO: figure out if we can make universal binaries when cross-compiling. +# lipo on non-mac os x platforms? libtool? +function action() +{ + HAS_LIPO=`which lipo` + HAS_LIBTOOL=`which libtool` + + #echo "action ${1} ${2}" + + if [ HAS_LIPO != "" ]; then + lipo -create -o "${1}" "${2}" + #elif [ HAS_LIBTOOL != "" ]; then + #libtool -dynamic -o ${1} ${2} + else + cp "${2}" "${1}" + fi +} + # executables -lipo -create -o ${BUNDLEDIR}/${EXECUTABLE_NAME} ${IOQ3_CLIENT_ARCHS} -lipo -create -o ${BUNDLEDIR}/${DEDICATED_NAME} ${IOQ3_SERVER_ARCHS} +action ${BUNDLEDIR}/${EXECUTABLE_NAME} ${IOQ3_CLIENT_ARCHS} +action ${BUNDLEDIR}/${DEDICATED_NAME} ${IOQ3_SERVER_ARCHS} # renderers -lipo -create -o ${BUNDLEDIR}/${RENDERER_OPENGL1_NAME} ${IOQ3_RENDERER_GL1_ARCHS} -lipo -create -o ${BUNDLEDIR}/${RENDERER_OPENGL2_NAME} ${IOQ3_RENDERER_GL2_ARCHS} +action ${BUNDLEDIR}/${RENDERER_OPENGL1_NAME} ${IOQ3_RENDERER_GL1_ARCHS} +action ${BUNDLEDIR}/${RENDERER_OPENGL2_NAME} ${IOQ3_RENDERER_GL2_ARCHS} symlinkArch "${RENDERER_OPENGL}1" "${RENDERER_OPENGL}1" "_" "${BUNDLEDIR}" symlinkArch "${RENDERER_OPENGL}2" "${RENDERER_OPENGL}2" "_" "${BUNDLEDIR}" # game -lipo -create -o ${BUNDLEDIR}/${BASEDIR}/${CGAME_NAME} ${IOQ3_CGAME_ARCHS} -lipo -create -o ${BUNDLEDIR}/${BASEDIR}/${GAME_NAME} ${IOQ3_GAME_ARCHS} -lipo -create -o ${BUNDLEDIR}/${BASEDIR}/${UI_NAME} ${IOQ3_UI_ARCHS} +action ${BUNDLEDIR}/${BASEDIR}/${CGAME_NAME} ${IOQ3_CGAME_ARCHS} +action ${BUNDLEDIR}/${BASEDIR}/${GAME_NAME} ${IOQ3_GAME_ARCHS} +action ${BUNDLEDIR}/${BASEDIR}/${UI_NAME} ${IOQ3_UI_ARCHS} symlinkArch "cgame" "cgame" "" "${BUNDLEDIR}/${BASEDIR}" symlinkArch "qagame" "qagame" "" "${BUNDLEDIR}/${BASEDIR}" symlinkArch "ui" "ui" "" "${BUNDLEDIR}/${BASEDIR}" # missionpack -lipo -create -o ${BUNDLEDIR}/${MISSIONPACKDIR}/${CGAME_NAME} ${IOQ3_MP_CGAME_ARCHS} -lipo -create -o ${BUNDLEDIR}/${MISSIONPACKDIR}/${GAME_NAME} ${IOQ3_MP_GAME_ARCHS} -lipo -create -o ${BUNDLEDIR}/${MISSIONPACKDIR}/${UI_NAME} ${IOQ3_MP_UI_ARCHS} +action ${BUNDLEDIR}/${MISSIONPACKDIR}/${CGAME_NAME} ${IOQ3_MP_CGAME_ARCHS} +action ${BUNDLEDIR}/${MISSIONPACKDIR}/${GAME_NAME} ${IOQ3_MP_GAME_ARCHS} +action ${BUNDLEDIR}/${MISSIONPACKDIR}/${UI_NAME} ${IOQ3_MP_UI_ARCHS} symlinkArch "cgame" "cgame" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" symlinkArch "qagame" "qagame" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" symlinkArch "ui" "ui" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" From ef7031b99390403a1230533b5eade69e4a75b801 Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 01:14:28 -0500 Subject: [PATCH 50/62] make-macosx-app.sh supports systems without libtool, part 2 --- make-macosx-app.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index d5e56668..2a63b38c 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -303,6 +303,7 @@ BUNDLEDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}" # TODO: figure out if we can make universal binaries when cross-compiling. # lipo on non-mac os x platforms? libtool? +# simply copying here might stomp on other architectures.... function action() { HAS_LIPO=`which lipo` From ea49d5d2daea1d89ed96f9ba5504bc8f32a4428e Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 01:28:08 -0500 Subject: [PATCH 51/62] make-macosx-app.sh doesn't trust the output of 'which', so check for a hard-coded path --- make-macosx-app.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index 2a63b38c..f4b03b10 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -306,14 +306,11 @@ BUNDLEDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}" # simply copying here might stomp on other architectures.... function action() { - HAS_LIPO=`which lipo` - HAS_LIBTOOL=`which libtool` - #echo "action ${1} ${2}" - if [ HAS_LIPO != "" ]; then + if [ -x "/usr/bin/lipo" ]; then lipo -create -o "${1}" "${2}" - #elif [ HAS_LIBTOOL != "" ]; then + #elif [ "/usr/bin/libtool" ]; then #libtool -dynamic -o ${1} ${2} else cp "${2}" "${1}" From b7f5971ab8e7e9a9a97ecad92e4d5b177e9bc553 Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 10:39:08 -0500 Subject: [PATCH 52/62] Another pass at the Mac OS X make scripts. Ironed out issues with generating an application bundle with universal binaries on supported systems. Fall back to bundling a single architecture when support for universal binary generation is not available. Tested on Mac OS X 10.5.8 (and 10.5 SDK). --- make-macosx-app.sh | 147 +++++++++++++++++++++++++++------------------ make-macosx-ub.sh | 136 +++++------------------------------------ make-macosx.sh | 35 ++--------- 3 files changed, 107 insertions(+), 211 deletions(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index f4b03b10..aa3aaae6 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -1,8 +1,8 @@ #!/bin/bash -# Let's make the user give us a target to work with -# architecture is optional -# if used, it we will store the .app bundle in the target arch build directory +# Let's make the user give us a target to work with. +# architecture is assumed universal if not specified, and is optional. +# if arch is defined, it we will store the .app bundle in the target arch build directory if [ $# == 0 ] || [ $# -gt 2 ]; then echo "Usage: $0 target " echo "Example: $0 release x86" @@ -18,6 +18,7 @@ if [ $# == 0 ] || [ $# -gt 2 ]; then exit 1 fi +# validate target name if [ "$1" == "release" ]; then TARGET_NAME="release" elif [ "$1" == "debug" ]; then @@ -32,6 +33,7 @@ fi CURRENT_ARCH="" +# validate the architecture if it was specified if [ "$2" != "" ]; then if [ "$2" == "x86" ]; then CURRENT_ARCH="x86" @@ -50,6 +52,9 @@ if [ "$2" != "" ]; then fi fi +# symlinkArch() creates a symlink with the architecture suffix. +# meant for universal binaries, but also handles the way this script generates +# application bundles for a single architecture as well. function symlinkArch() { EXT="dylib" @@ -107,13 +112,24 @@ SEARCH_ARCHS=" \ ppc \ " -# if the optional arch parameter is used, we'll set CURRENT_ARCH +HAS_LIPO=`command -v lipo` +HAS_CP=`command -v cp` + +# if lipo is not available, we cannot make a universal binary, print a warning +if [ ! -x "${HAS_LIPO}" ]; then + CURRENT_ARCH=`uname -m` + if [ "${CURRENT_ARCH}" == "i386" ]; then CURRENT_ARCH="x86"; fi + echo "$0 cannot make a universal binary, falling back to architecture ${CURRENT_ARCH}" +fi + +# if the optional arch parameter is used, replace SEARCH_ARCHS to only work with one if [ "${CURRENT_ARCH}" != "" ]; then SEARCH_ARCHS="${CURRENT_ARCH}" fi AVAILABLE_ARCHS="" +IOQ3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` IOQ3_CLIENT_ARCHS="" IOQ3_SERVER_ARCHS="" IOQ3_RENDERER_GL1_ARCHS="" @@ -157,6 +173,7 @@ UNLOCALIZED_RESOURCES_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/Resources" EXECUTABLE_FOLDER_PATH="${CONTENTS_FOLDER_PATH}/MacOS" EXECUTABLE_NAME="${PRODUCT_NAME}" +# loop through the architectures to build string lists for each universal binary for ARCH in $SEARCH_ARCHS; do CURRENT_ARCH=${ARCH} BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" @@ -213,14 +230,11 @@ for ARCH in $SEARCH_ARCHS; do if [ -e ${BUILT_PRODUCTS_DIR}/${BASEDIR}/${IOQ3_MP_UI} ]; then IOQ3_MP_UI_ARCHS="${BUILT_PRODUCTS_DIR}/${MISSIONPACKDIR}/${IOQ3_UI} ${IOQ3_MP_UI_ARCHS}" fi + + #echo "valid arch: ${ARCH}" done -if [ "${2}" == "" ]; then - BUILT_PRODUCTS_DIR="${OBJROOT}" -else - BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" -fi - +# final preparations and checks before attempting to make the application bundle cd `dirname $0` if [ ! -f Makefile ]; then @@ -228,21 +242,33 @@ if [ ! -f Makefile ]; then exit 1 fi -Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` - if [ "${IOQ3_CLIENT_ARCHS}" == "" ]; then echo "$0: no ioquake3 binary architectures were found for target '${TARGET_NAME}'" exit 1 -else - echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'" - echo "with architectures:" - for ARCH in ${VALID_ARCHS}; do - echo " ${ARCH}" - done - echo "" fi +# set the final application bundle output directory +if [ "${2}" == "" ]; then + BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-universal" + if [ ! -d ${BUILT_PRODUCTS_DIR} ]; then + mkdir -p ${BUILT_PRODUCTS_DIR} || exit 1; + fi +else + BUILT_PRODUCTS_DIR="${OBJROOT}/${TARGET_NAME}-darwin-${CURRENT_ARCH}" +fi +BUNDLEBINDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}" + + +# here we go +echo "Creating bundle '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}'" +echo "with architectures:" +for ARCH in ${VALID_ARCHS}; do + echo " ${ARCH}" +done +echo "" + +# make the application bundle directories if [ ! -d ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR ]; then mkdir -p ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/$BASEDIR || exit 1; fi @@ -253,10 +279,10 @@ if [ ! -d ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH} ]; then mkdir -p ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH} || exit 1; fi +# copy and generate some application bundle resources +cp code/libs/macosx/*.dylib ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH} cp ${ICNSDIR}/${ICNS} ${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/$ICNS || exit 1; - echo -n ${PKGINFO} > ${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/PkgInfo || exit 1; - echo " @@ -276,11 +302,11 @@ echo " CFBundlePackageType APPL CFBundleShortVersionString - ${Q3_VERSION} + ${IOQ3_VERSION} CFBundleSignature ???? CFBundleVersion - ${Q3_VERSION} + ${IOQ3_VERSION} CGDisableCoalescedUpdates LSMinimumSystemVersion @@ -293,52 +319,57 @@ echo " " > ${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Info.plist -cp code/libs/macosx/*.dylib ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH} - -# -# use lipo to create a universal binary in to the appropriate bundle location -# then symlink appropriate architecture names for universal (fat) binary support -# -BUNDLEDIR="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}" - -# TODO: figure out if we can make universal binaries when cross-compiling. -# lipo on non-mac os x platforms? libtool? -# simply copying here might stomp on other architectures.... +# action takes care of generating universal binaries if lipo is available +# otherwise, it falls back to using a simple copy, expecting the first item in +# the second parameter list to be the desired architecture function action() { - #echo "action ${1} ${2}" + COMMAND="" - if [ -x "/usr/bin/lipo" ]; then - lipo -create -o "${1}" "${2}" - #elif [ "/usr/bin/libtool" ]; then - #libtool -dynamic -o ${1} ${2} + if [ -x "${HAS_LIPO}" ]; then + COMMAND="${HAS_LIPO} -create -o" + $HAS_LIPO -create -o "${1}" ${2} # make sure $2 is treated as a list of files + elif [ -x ${HAS_CP} ]; then + COMMAND="${HAS_CP}" + SRC="${2// */}" # in case there is a list here, use only the first item + $HAS_CP "${SRC}" "${1}" else - cp "${2}" "${1}" + "$0 cannot create an application bundle." + exit 1 fi + + #echo "${COMMAND}" "${1}" "${2}" } +# +# the meat of universal binary creation +# destination file names do not have architecture suffix. +# action will handle merging universal binaries if supported. +# symlink appropriate architecture names for universal (fat) binary support. +# + # executables -action ${BUNDLEDIR}/${EXECUTABLE_NAME} ${IOQ3_CLIENT_ARCHS} -action ${BUNDLEDIR}/${DEDICATED_NAME} ${IOQ3_SERVER_ARCHS} +action ${BUNDLEBINDIR}/${EXECUTABLE_NAME} "${IOQ3_CLIENT_ARCHS}" +action ${BUNDLEBINDIR}/${DEDICATED_NAME} "${IOQ3_SERVER_ARCHS}" # renderers -action ${BUNDLEDIR}/${RENDERER_OPENGL1_NAME} ${IOQ3_RENDERER_GL1_ARCHS} -action ${BUNDLEDIR}/${RENDERER_OPENGL2_NAME} ${IOQ3_RENDERER_GL2_ARCHS} -symlinkArch "${RENDERER_OPENGL}1" "${RENDERER_OPENGL}1" "_" "${BUNDLEDIR}" -symlinkArch "${RENDERER_OPENGL}2" "${RENDERER_OPENGL}2" "_" "${BUNDLEDIR}" +action ${BUNDLEBINDIR}/${RENDERER_OPENGL1_NAME} "${IOQ3_RENDERER_GL1_ARCHS}" +action ${BUNDLEBINDIR}/${RENDERER_OPENGL2_NAME} "${IOQ3_RENDERER_GL2_ARCHS}" +symlinkArch "${RENDERER_OPENGL}1" "${RENDERER_OPENGL}1" "_" "${BUNDLEBINDIR}" +symlinkArch "${RENDERER_OPENGL}2" "${RENDERER_OPENGL}2" "_" "${BUNDLEBINDIR}" # game -action ${BUNDLEDIR}/${BASEDIR}/${CGAME_NAME} ${IOQ3_CGAME_ARCHS} -action ${BUNDLEDIR}/${BASEDIR}/${GAME_NAME} ${IOQ3_GAME_ARCHS} -action ${BUNDLEDIR}/${BASEDIR}/${UI_NAME} ${IOQ3_UI_ARCHS} -symlinkArch "cgame" "cgame" "" "${BUNDLEDIR}/${BASEDIR}" -symlinkArch "qagame" "qagame" "" "${BUNDLEDIR}/${BASEDIR}" -symlinkArch "ui" "ui" "" "${BUNDLEDIR}/${BASEDIR}" +action ${BUNDLEBINDIR}/${BASEDIR}/${CGAME_NAME} "${IOQ3_CGAME_ARCHS}" +action ${BUNDLEBINDIR}/${BASEDIR}/${GAME_NAME} "${IOQ3_GAME_ARCHS}" +action ${BUNDLEBINDIR}/${BASEDIR}/${UI_NAME} "${IOQ3_UI_ARCHS}" +symlinkArch "${CGAME}" "${CGAME}" "" "${BUNDLEBINDIR}/${BASEDIR}" +symlinkArch "${GAME}" "${GAME}" "" "${BUNDLEBINDIR}/${BASEDIR}" +symlinkArch "${UI}" "${UI}" "" "${BUNDLEBINDIR}/${BASEDIR}" # missionpack -action ${BUNDLEDIR}/${MISSIONPACKDIR}/${CGAME_NAME} ${IOQ3_MP_CGAME_ARCHS} -action ${BUNDLEDIR}/${MISSIONPACKDIR}/${GAME_NAME} ${IOQ3_MP_GAME_ARCHS} -action ${BUNDLEDIR}/${MISSIONPACKDIR}/${UI_NAME} ${IOQ3_MP_UI_ARCHS} -symlinkArch "cgame" "cgame" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" -symlinkArch "qagame" "qagame" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" -symlinkArch "ui" "ui" "" "${BUNDLEDIR}/${MISSIONPACKDIR}" +action ${BUNDLEBINDIR}/${MISSIONPACKDIR}/${CGAME_NAME} "${IOQ3_MP_CGAME_ARCHS}" +action ${BUNDLEBINDIR}/${MISSIONPACKDIR}/${GAME_NAME} "${IOQ3_MP_GAME_ARCHS}" +action ${BUNDLEBINDIR}/${MISSIONPACKDIR}/${UI_NAME} "${IOQ3_MP_UI_ARCHS}" +symlinkArch "${CGAME}" "${CGAME}" "" "${BUNDLEBINDIR}/${MISSIONPACKDIR}" +symlinkArch "${GAME}" "${GAME}" "" "${BUNDLEBINDIR}/${MISSIONPACKDIR}" +symlinkArch "${UI}" "${UI}" "" "${BUNDLEBINDIR}/${MISSIONPACKDIR}" diff --git a/make-macosx-ub.sh b/make-macosx-ub.sh index bb46719b..5f73fe36 100755 --- a/make-macosx-ub.sh +++ b/make-macosx-ub.sh @@ -1,54 +1,6 @@ -#!/bin/sh +#!/bin/bash CC=gcc-4.0 -APPBUNDLE=ioquake3.app BINARY=ioquake3.ub -DEDBIN=ioq3ded.ub -PKGINFO=APPLIOQ3 -ICNS=misc/quake3.icns -DESTDIR=build/release-darwin-ub -BASEDIR=baseq3 -MPACKDIR=missionpack - -BIN_OBJ=" - build/release-darwin-x86_64/ioquake3.x86_64 - build/release-darwin-x86/ioquake3.x86 - build/release-darwin-ppc/ioquake3.ppc -" -BIN_DEDOBJ=" - build/release-darwin-x86_64/ioq3ded.x86_64 - build/release-darwin-x86/ioq3ded.x86 - build/release-darwin-ppc/ioq3ded.ppc -" -BASE_OBJ=" - build/release-darwin-x86_64/$BASEDIR/cgamex86_64.dylib - build/release-darwin-x86/$BASEDIR/cgamex86.dylib - build/release-darwin-ppc/$BASEDIR/cgameppc.dylib - build/release-darwin-x86_64/$BASEDIR/uix86_64.dylib - build/release-darwin-x86/$BASEDIR/uix86.dylib - build/release-darwin-ppc/$BASEDIR/uippc.dylib - build/release-darwin-x86_64/$BASEDIR/qagamex86_64.dylib - build/release-darwin-x86/$BASEDIR/qagamex86.dylib - build/release-darwin-ppc/$BASEDIR/qagameppc.dylib -" -MPACK_OBJ=" - build/release-darwin-x86_64/$MPACKDIR/cgamex86_64.dylib - build/release-darwin-x86/$MPACKDIR/cgamex86.dylib - build/release-darwin-ppc/$MPACKDIR/cgameppc.dylib - build/release-darwin-x86_64/$MPACKDIR/uix86_64.dylib - build/release-darwin-x86/$MPACKDIR/uix86.dylib - build/release-darwin-ppc/$MPACKDIR/uippc.dylib - build/release-darwin-x86_64/$MPACKDIR/qagamex86_64.dylib - build/release-darwin-x86/$MPACKDIR/qagamex86.dylib - build/release-darwin-ppc/$MPACKDIR/qagameppc.dylib -" -RENDER_OBJ=" - build/release-darwin-x86_64/renderer_opengl1_x86_64.dylib - build/release-darwin-x86/renderer_opengl1_x86.dylib - build/release-darwin-ppc/renderer_opengl1_ppc.dylib - build/release-darwin-x86_64/renderer_opengl2_x86_64.dylib - build/release-darwin-x86/renderer_opengl2_x86.dylib - build/release-darwin-ppc/renderer_opengl2_ppc.dylib -" cd `dirname $0` if [ ! -f Makefile ]; then @@ -100,7 +52,7 @@ if [ -z $X86_64_SDK ] || [ -z $X86_SDK ] || [ -z $PPC_SDK ]; then ERROR: This script is for building a Universal Binary. You cannot build for a different architecture unless you have the proper Mac OS X SDKs installed. If you just want to to compile for your own system run - 'make' instead of this script." + 'make-macosx.sh' instead of this script." exit 1 fi @@ -118,92 +70,32 @@ WARNING: in order to build a binary with maximum compatibility you must sleep 3 fi -if [ ! -d $DESTDIR ]; then - mkdir -p $DESTDIR -fi - # For parallel make on multicore boxes... NCPU=`sysctl -n hw.ncpu` # x86_64 client and server -if [ -d build/release-release-x86_64 ]; then - rm -r build/release-darwin-x86_64 -fi +#if [ -d build/release-release-x86_64 ]; then +# rm -r build/release-darwin-x86_64 +#fi (ARCH=x86_64 CC=gcc-4.0 CFLAGS=$X86_64_CFLAGS LDFLAGS=$X86_64_LDFLAGS make -j$NCPU) || exit 1; echo;echo # x86 client and server -if [ -d build/release-darwin-x86 ]; then - rm -r build/release-darwin-x86 -fi +#if [ -d build/release-darwin-x86 ]; then +# rm -r build/release-darwin-x86 +#fi (ARCH=x86 CC=gcc-4.0 CFLAGS=$X86_CFLAGS LDFLAGS=$X86_LDFLAGS make -j$NCPU) || exit 1; echo;echo # PPC client and server -if [ -d build/release-darwin-ppc ]; then - rm -r build/release-darwin-ppc -fi +#if [ -d build/release-darwin-ppc ]; then +# rm -r build/release-darwin-ppc +#fi (ARCH=ppc CC=gcc-4.0 CFLAGS=$PPC_CFLAGS LDFLAGS=$PPC_LDFLAGS make -j$NCPU) || exit 1; -echo;echo - -echo "Creating .app bundle $DESTDIR/$APPBUNDLE" -if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR ]; then - mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR || exit 1; -fi -if [ ! -d $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR ]; then - mkdir -p $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR || exit 1; -fi -if [ ! -d $DESTDIR/$APPBUNDLE/Contents/Resources ]; then - mkdir -p $DESTDIR/$APPBUNDLE/Contents/Resources -fi -cp $ICNS $DESTDIR/$APPBUNDLE/Contents/Resources/ioquake3.icns || exit 1; -echo $PKGINFO > $DESTDIR/$APPBUNDLE/Contents/PkgInfo -echo " - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - $BINARY - CFBundleGetInfoString - ioquake3 $Q3_VERSION - CFBundleIconFile - ioquake3.icns - CFBundleIdentifier - org.ioquake.ioquake3 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ioquake3 - CFBundlePackageType - APPL - CFBundleShortVersionString - $Q3_VERSION - CFBundleSignature - $PKGINFO - CFBundleVersion - $Q3_VERSION - NSExtensions - - NSPrincipalClass - NSApplication - - - " > $DESTDIR/$APPBUNDLE/Contents/Info.plist - -# Make UB's from previous builds of x86, x86_64 and ppc binaries -lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$BINARY $BIN_OBJ -lipo -create -o $DESTDIR/$APPBUNDLE/Contents/MacOS/$DEDBIN $BIN_DEDOBJ - -cp $RENDER_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/ -cp $BASE_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$BASEDIR/ -cp $MPACK_OBJ $DESTDIR/$APPBUNDLE/Contents/MacOS/$MPACKDIR/ -cp code/libs/macosx/*.dylib $DESTDIR/$APPBUNDLE/Contents/MacOS/ +echo +# use the following shell script to build a universal application bundle +"./make-macosx-app.sh" release diff --git a/make-macosx.sh b/make-macosx.sh index bab2960e..6dd5df17 100755 --- a/make-macosx.sh +++ b/make-macosx.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Let's make the user give us a target build system @@ -30,34 +30,7 @@ if [ -z "$DARWIN_GCC_ARCH" ]; then fi CC=gcc-4.0 -APPBUNDLE=ioquake3.app -BINARY=ioquake3.${BUILDARCH} -DEDBIN=ioq3ded.${BUILDARCH} -PKGINFO=APPLIOQ3 DESTDIR=build/release-darwin-${BUILDARCH} -BASEDIR=baseq3 -MPACKDIR=missionpack - -BIN_OBJ=" - build/release-darwin-${BUILDARCH}/${BINARY} -" -BIN_DEDOBJ=" - build/release-darwin-${BUILDARCH}/${DEDBIN} -" -BASE_OBJ=" - build/release-darwin-${BUILDARCH}/$BASEDIR/cgame${BUILDARCH}.dylib - build/release-darwin-${BUILDARCH}/$BASEDIR/ui${BUILDARCH}.dylib - build/release-darwin-${BUILDARCH}/$BASEDIR/qagame${BUILDARCH}.dylib -" -MPACK_OBJ=" - build/release-darwin-${BUILDARCH}/$MPACKDIR/cgame${BUILDARCH}.dylib - build/release-darwin-${BUILDARCH}/$MPACKDIR/ui${BUILDARCH}.dylib - build/release-darwin-${BUILDARCH}/$MPACKDIR/qagame${BUILDARCH}.dylib -" -RENDER_OBJ=" - build/release-darwin-${BUILDARCH}/renderer_opengl1_${BUILDARCH}.dylib - build/release-darwin-${BUILDARCH}/renderer_opengl2_${BUILDARCH}.dylib -" cd `dirname $0` if [ ! -f Makefile ]; then @@ -101,9 +74,9 @@ NCPU=`sysctl -n hw.ncpu` # intel client and server -if [ -d build/release-darwin-${BUILDARCH} ]; then - rm -r build/release-darwin-${BUILDARCH} -fi +#if [ -d build/release-darwin-${BUILDARCH} ]; then +# rm -r build/release-darwin-${BUILDARCH} +#fi (ARCH=${BUILDARCH} CFLAGS=$ARCH_CFLAGS LDFLAGS=$ARCH_LDFLAGS make -j$NCPU) || exit 1; # use the following shell script to build an application bundle From 7b9aa77c6bbbf9ca2c06e15e9b398f860c880efe Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 10:49:01 -0500 Subject: [PATCH 53/62] Fix make-macosx-app.sh to make bundle on non-Mac OS X platforms --- make-macosx-app.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index aa3aaae6..4ed57d61 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -116,7 +116,7 @@ HAS_LIPO=`command -v lipo` HAS_CP=`command -v cp` # if lipo is not available, we cannot make a universal binary, print a warning -if [ ! -x "${HAS_LIPO}" ]; then +if [ ! -x "${HAS_LIPO}" ] && [ "${CURRENT_ARCH}" == "" ]; then CURRENT_ARCH=`uname -m` if [ "${CURRENT_ARCH}" == "i386" ]; then CURRENT_ARCH="x86"; fi echo "$0 cannot make a universal binary, falling back to architecture ${CURRENT_ARCH}" From d9485b696e0bbe0f0880b6075b9b9f1ac9fd81ac Mon Sep 17 00:00:00 2001 From: jeremiah sypult Date: Thu, 18 Jul 2013 11:29:23 -0500 Subject: [PATCH 54/62] Makefile builds fall back to traditional archiving when Mac OS X application bundle generation fails --- Makefile | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ec69a9eb..0146e8c7 100644 --- a/Makefile +++ b/Makefile @@ -1205,9 +1205,6 @@ endif NAKED_TARGETS=$(shell echo $(TARGETS) | sed -e "s!$(B)/!!g") -#MACOSX_TARGET_STRING=$(shell if [ "$(B)" == "$(BR)" ]; then echo "release"; elif [ "$(B)" == "$(BD)" ]; then echo "debug"; fi) -MACOSX_MAKE_APP=@if [ -x "./make-macosx-app.sh" ]; then "./make-macosx-app.sh" release $(ARCH); fi - print_list=@for i in $(1); \ do \ echo " $$i"; \ @@ -1264,9 +1261,7 @@ endif $(B).zip: $(TARGETS) ifeq ($(PLATFORM),darwin) ifdef ARCHIVE - $(call MACOSX_MAKE_APP) - @rm -f $@ - @(if [ -d "$(B)/ioquake3.app" ]; then cd $(B) && zip --symlinks -r9 ../../$@ `find "ioquake3.app" -print | sed -e "s!$(B)/!!g"`; fi) + @("./make-macosx-app.sh" release $(ARCH); if [ "$$?" -eq 0 ] && [ -d "$(B)/ioquake3.app" ]; then rm -f $@; cd $(B) && zip --symlinks -r9 ../../$@ `find "ioquake3.app" -print | sed -e "s!$(B)/!!g"`; else rm -f $@; cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS); fi) endif endif ifneq ($(PLATFORM),darwin) From 43ea1aebb3fd1cce7b2bd3cb92371fbb95eaea1c Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sun, 21 Jul 2013 17:29:29 -0500 Subject: [PATCH 55/62] Fix Windows server history scrolling Update history position when CON_HistNext goes to input line, otherwise when going to previous a line is skipped. Don't let CON_HistPrev go to unused lines. --- code/sys/con_win32.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/sys/con_win32.c b/code/sys/con_win32.c index edfa4e6a..ea64e013 100644 --- a/code/sys/con_win32.c +++ b/code/sys/con_win32.c @@ -37,6 +37,7 @@ static CONSOLE_CURSOR_INFO qconsole_orig_cursorinfo; // cmd history static char qconsole_history[ QCONSOLE_HISTORY ][ MAX_EDIT_LINE ]; static int qconsole_history_pos = -1; +static int qconsole_history_lines = 0; static int qconsole_history_oldest = 0; // current edit buffer @@ -107,6 +108,9 @@ static void CON_HistAdd( void ) Q_strncpyz( qconsole_history[ qconsole_history_oldest ], qconsole_line, sizeof( qconsole_history[ qconsole_history_oldest ] ) ); + if( qconsole_history_lines < QCONSOLE_HISTORY ) + qconsole_history_lines++; + if( qconsole_history_oldest >= QCONSOLE_HISTORY - 1 ) qconsole_history_oldest = 0; else @@ -128,7 +132,7 @@ static void CON_HistPrev( void ) ( QCONSOLE_HISTORY - 1 ) : ( qconsole_history_pos - 1 ); // don' t allow looping through history - if( pos == qconsole_history_oldest ) + if( pos == qconsole_history_oldest || pos >= qconsole_history_lines ) return; qconsole_history_pos = pos; @@ -146,12 +150,17 @@ static void CON_HistNext( void ) { int pos; + // don' t allow looping through history + if( qconsole_history_pos == qconsole_history_oldest ) + return; + pos = ( qconsole_history_pos >= QCONSOLE_HISTORY - 1 ) ? 0 : ( qconsole_history_pos + 1 ); // clear the edit buffer if they try to advance to a future command if( pos == qconsole_history_oldest ) { + qconsole_history_pos = pos; qconsole_line[ 0 ] = '\0'; qconsole_linelen = 0; return; From db85b61e9415c4655899aef9cff0d859c4ecf363 Mon Sep 17 00:00:00 2001 From: Henry Stratmann III Date: Thu, 18 Jul 2013 20:11:23 -0500 Subject: [PATCH 56/62] Add assignment below declarations otherwise compiling fails with msvc Signed-off-by: Zack Middleton --- code/renderergl2/tr_bsp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/renderergl2/tr_bsp.c b/code/renderergl2/tr_bsp.c index 05b933e8..77a3092f 100644 --- a/code/renderergl2/tr_bsp.c +++ b/code/renderergl2/tr_bsp.c @@ -3356,12 +3356,12 @@ void RE_LoadWorldMap( const char *name ) { if (0) { world_t *w; - - w = &s_worldData; uint8_t *primaryLightGrid, *data; int lightGridSize; int i; + w = &s_worldData; + lightGridSize = w->lightGridBounds[0] * w->lightGridBounds[1] * w->lightGridBounds[2]; primaryLightGrid = ri.Malloc(lightGridSize * sizeof(*primaryLightGrid)); From 3518e7b22eac96d2f1afe59337c1ad5c3282fc15 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Mon, 22 Jul 2013 16:58:14 -0500 Subject: [PATCH 57/62] Fix bind commands getting run when closing UI Introduced in commit "Add togglemenu command" bf2b04. Don't let UI key event changing key catcher affect bind parsing. Bind parsing itself will never change the key catcher. Example of issue: if mouse1 is bound to +attack when clicking Resume Game, player will shoot until releasing the mouse button. Mouse button should have to be released and pressed again before player will shoot. --- code/client/cl_keys.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/client/cl_keys.c b/code/client/cl_keys.c index f0751efb..5c3fbf7d 100644 --- a/code/client/cl_keys.c +++ b/code/client/cl_keys.c @@ -1267,6 +1267,9 @@ void CL_KeyDownEvent( int key, unsigned time ) return; } + // send the bound action + CL_ParseBinding( key, qtrue, time ); + // distribute the key down event to the apropriate handler if ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) { Console_Key( key ); @@ -1283,9 +1286,6 @@ void CL_KeyDownEvent( int key, unsigned time ) } else if ( clc.state == CA_DISCONNECTED ) { Console_Key( key ); } - - // send the bound action - CL_ParseBinding( key, qtrue, time ); } /* From 2eaee597c9f93d6ce2b8ea97caa71bfaa8dd5a1e Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sat, 3 Aug 2013 16:37:28 -0500 Subject: [PATCH 58/62] Fix creating symlinks in make-macosx-app.sh Create symlink if arch name is found anywhere in info printed by file command, not only if arch name is the last word. --- make-macosx-app.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/make-macosx-app.sh b/make-macosx-app.sh index 4ed57d61..7768964a 100755 --- a/make-macosx-app.sh +++ b/make-macosx-app.sh @@ -75,11 +75,11 @@ function symlinkArch() pushd "${DSTPATH}" > /dev/null - IS32=`file "${SRCFILE}.${EXT}" | grep "i386" | awk '{print $NF}'` - IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64" | awk '{print $NF}'` - ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc" | awk '{print $NF}'` + IS32=`file "${SRCFILE}.${EXT}" | grep "i386"` + IS64=`file "${SRCFILE}.${EXT}" | grep "x86_64"` + ISPPC=`file "${SRCFILE}.${EXT}" | grep "ppc"` - if [ "${IS32}" == "i386" ]; then + if [ "${IS32}" != "" ]; then if [ ! -L "${DSTFILE}x86.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86.${EXT}" fi @@ -87,7 +87,7 @@ function symlinkArch() rm "${DSTFILE}x86.${EXT}" fi - if [ "${IS64}" == "x86_64" ]; then + if [ "${IS64}" != "" ]; then if [ ! -L "${DSTFILE}x86_64.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}x86_64.${EXT}" fi @@ -95,7 +95,7 @@ function symlinkArch() rm "${DSTFILE}x86_64.${EXT}" fi - if [ "${ISPPC}" == "ppc" ]; then + if [ "${ISPPC}" != "" ]; then if [ ! -L "${DSTFILE}ppc.${EXT}" ]; then ln -s "${SRCFILE}.${EXT}" "${DSTFILE}ppc.${EXT}" fi From 81909bb26642d7a4404bf245d28d65b720bffe1e Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sat, 3 Aug 2013 17:14:56 -0500 Subject: [PATCH 59/62] Fix text getting appended to vid_restart in command buffer I was getting unknown command "vid_restart-button2" warning on OSX when trying to use alt-return to toggle fullscreen. --- code/sdl/sdl_glimp.c | 2 +- code/sdl/sdl_input.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/sdl/sdl_glimp.c b/code/sdl/sdl_glimp.c index 2eda189e..cdaabcc5 100644 --- a/code/sdl/sdl_glimp.c +++ b/code/sdl/sdl_glimp.c @@ -808,7 +808,7 @@ void GLimp_EndFrame( void ) { // SDL_WM_ToggleFullScreen didn't work, so do it the slow way if( !sdlToggled ) - ri.Cmd_ExecuteText(EXEC_APPEND, "vid_restart"); + ri.Cmd_ExecuteText(EXEC_APPEND, "vid_restart\n"); ri.IN_Restart( ); } diff --git a/code/sdl/sdl_input.c b/code/sdl/sdl_input.c index 72c66096..88c0ef58 100644 --- a/code/sdl/sdl_input.c +++ b/code/sdl/sdl_input.c @@ -999,7 +999,7 @@ void IN_Frame( void ) if ( (vidRestartTime != 0) && (vidRestartTime < Sys_Milliseconds()) ) { vidRestartTime = 0; - Cbuf_AddText( "vid_restart" ); + Cbuf_AddText( "vid_restart\n" ); } } From 6d5041a96041e216c09637b2c92e74f8c358c339 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Sun, 4 Aug 2013 12:04:56 -0500 Subject: [PATCH 60/62] Remove 5 unused variables from make-macosx scripts --- make-macosx-ub.sh | 7 ------- make-macosx.sh | 6 ------ 2 files changed, 13 deletions(-) diff --git a/make-macosx-ub.sh b/make-macosx-ub.sh index 5f73fe36..bd7c9b91 100755 --- a/make-macosx-ub.sh +++ b/make-macosx-ub.sh @@ -1,6 +1,5 @@ #!/bin/bash CC=gcc-4.0 -BINARY=ioquake3.ub cd `dirname $0` if [ ! -f Makefile ]; then @@ -8,12 +7,6 @@ if [ ! -f Makefile ]; then exit 1 fi -Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` - -# We only care if we're >= 10.4, not if we're specifically Tiger. -# "8" is the Darwin major kernel version. -TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'` - # we want to use the oldest available SDK for max compatiblity. However 10.4 and older # can not build 64bit binaries, making 10.5 the minimum version. This has been tested # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent diff --git a/make-macosx.sh b/make-macosx.sh index 6dd5df17..035b3998 100755 --- a/make-macosx.sh +++ b/make-macosx.sh @@ -38,12 +38,6 @@ if [ ! -f Makefile ]; then exit 1 fi -Q3_VERSION=`grep '^VERSION=' Makefile | sed -e 's/.*=\(.*\)/\1/'` - -# We only care if we're >= 10.4, not if we're specifically Tiger. -# "8" is the Darwin major kernel version. -TIGERHOST=`uname -r |perl -w -p -e 's/\A(\d+)\..*\Z/$1/; $_ = (($_ >= 8) ? "1" : "0");'` - # we want to use the oldest available SDK for max compatiblity. However 10.4 and older # can not build 64bit binaries, making 10.5 the minimum version. This has been tested # with xcode 3.1 (xcode31_2199_developerdvd.dmg). It contains the 10.5 SDK and a decent From 3d69ae9995987ce408c15c5f7f1d34d09a1aa5bb Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 16 Aug 2013 15:29:12 -0500 Subject: [PATCH 61/62] Fix OpenAL music stop issues using stream stop code S_AL_StopBackgroundTrack would sometimes generate AL errors. S_AL_MusicSourceFree needs to kill source or next track may have short looping buffer. --- code/client/snd_openal.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index 8376ecfa..83eb541e 100644 --- a/code/client/snd_openal.c +++ b/code/client/snd_openal.c @@ -1876,6 +1876,7 @@ static void S_AL_MusicSourceFree( void ) { // Release the output musicSource S_AL_SrcUnlock(musicSourceHandle); + S_AL_SrcKill(musicSourceHandle); musicSource = 0; musicSourceHandle = -1; } @@ -1908,17 +1909,22 @@ S_AL_StopBackgroundTrack static void S_AL_StopBackgroundTrack( void ) { + int numBuffers; + if(!musicPlaying) return; // Stop playing qalSourceStop(musicSource); - // De-queue the musicBuffers - qalSourceUnqueueBuffers(musicSource, NUM_MUSIC_BUFFERS, musicBuffers); - - // Destroy the musicBuffers - qalDeleteBuffers(NUM_MUSIC_BUFFERS, musicBuffers); + // Un-queue any buffers, and delete them + qalGetSourcei( musicSource, AL_BUFFERS_PROCESSED, &numBuffers ); + while( numBuffers-- ) + { + ALuint buffer; + qalSourceUnqueueBuffers(musicSource, 1, &buffer); + qalDeleteBuffers(1, &buffer); + } // Free the musicSource S_AL_MusicSourceFree(); From d4c6711e5138e4198a9e6e990d41d7e5b305989c Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 16 Aug 2013 15:41:01 -0500 Subject: [PATCH 62/62] Fix "bind " message for unbound keys "bind X cmd; unbind X; bind X" now says '"x" is unbound' instead of '"x" = ""' --- code/client/cl_keys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/client/cl_keys.c b/code/client/cl_keys.c index 5c3fbf7d..7ad8676d 100644 --- a/code/client/cl_keys.c +++ b/code/client/cl_keys.c @@ -992,7 +992,7 @@ void Key_Bind_f (void) if (c == 2) { - if (keys[b].binding) + if (keys[b].binding && keys[b].binding[0]) Com_Printf ("\"%s\" = \"%s\"\n", Key_KeynumToString(b), keys[b].binding ); else Com_Printf ("\"%s\" is not bound\n", Key_KeynumToString(b) );