Przeglądaj źródła

- First push of Torque 2D 2.0 (MIT)

Mich 12 lat temu
rodzic
commit
a20f2864a1
100 zmienionych plików z 46109 dodań i 4 usunięć
  1. 62 0
      .gitignore
  2. BIN
      OpenAL32.dll
  3. 0 4
      README.md
  4. 1 0
      cleandso.bat
  5. BIN
      engine/bin/bison/bison.exe
  6. 334 0
      engine/bin/bison/bison.hairy
  7. 4501 0
      engine/bin/bison/bison.html
  8. 686 0
      engine/bin/bison/bison.simple
  9. BIN
      engine/bin/flex/flex.exe
  10. 4079 0
      engine/bin/flex/flex_1.html
  11. 357 0
      engine/bin/nasm/Licence
  12. 179 0
      engine/bin/nasm/Readme
  13. BIN
      engine/bin/nasm/nasmw.exe
  14. BIN
      engine/bin/nasm/ndisasmw.exe
  15. BIN
      engine/compilers/VisualStudio 2010/Torque 2D.ico
  16. 110 0
      engine/compilers/VisualStudio 2010/Torque 2D.rc
  17. 53 0
      engine/compilers/VisualStudio 2010/Torque 2D.sln
  18. 1095 0
      engine/compilers/VisualStudio 2010/Torque 2D.vcxproj
  19. 2607 0
      engine/compilers/VisualStudio 2010/Torque 2D.vcxproj.filters
  20. 627 0
      engine/compilers/VisualStudio 2010/ljpeg.vcxproj
  21. 65 0
      engine/compilers/VisualStudio 2010/ljpeg.vcxproj.filters
  22. 183 0
      engine/compilers/VisualStudio 2010/lpng.vcxproj
  23. 29 0
      engine/compilers/VisualStudio 2010/lpng.vcxproj.filters
  24. 181 0
      engine/compilers/VisualStudio 2010/zlib.vcxproj
  25. 33 0
      engine/compilers/VisualStudio 2010/zlib.vcxproj.filters
  26. 3432 0
      engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj
  27. 4 0
      engine/compilers/Xcode/Torque2D/Config.xcconfig
  28. 49 0
      engine/compilers/Xcode/Torque2D/Torque2D-Info.plist
  29. 7 0
      engine/compilers/Xcode/Torque2D/Torque2D-Prefix.pch
  30. 49 0
      engine/compilers/Xcode/Torque2D/Torque2DGame-Info.plist
  31. 2 0
      engine/compilers/Xcode/Torque2D/en.lproj/InfoPlist.strings
  32. 355 0
      engine/compilers/Xcode/Torque2D/en.lproj/MainMenu.xib
  33. BIN
      engine/compilers/Xcode/Torque2D/t2dproj.icns
  34. BIN
      engine/compilers/Xcode/Torque2D/torque2d.icns
  35. 3464 0
      engine/compilers/Xcode_iOS/Torque2D.xcodeproj/project.pbxproj
  36. BIN
      engine/compilers/Xcode_iOS/Torque2D/[email protected]
  37. BIN
      engine/compilers/Xcode_iOS/Torque2D/Default.png
  38. BIN
      engine/compilers/Xcode_iOS/Torque2D/[email protected]
  39. 46 0
      engine/compilers/Xcode_iOS/Torque2D/Torque2D-Info.plist
  40. 14 0
      engine/compilers/Xcode_iOS/Torque2D/Torque2D-Prefix.pch
  41. 2 0
      engine/compilers/Xcode_iOS/Torque2D/en.lproj/InfoPlist.strings
  42. 40 0
      engine/compilers/Xcode_iOS/Torque2D/en.lproj/iPadStoryboard.storyboard
  43. 38 0
      engine/compilers/Xcode_iOS/Torque2D/en.lproj/iPhoneStoryboard.storyboard
  44. 18 0
      engine/compilers/Xcode_iOS/Torque2D/main.m
  45. 385 0
      engine/lib/ljpeg/extras/README
  46. 36 0
      engine/lib/ljpeg/extras/ansi2knr.1
  47. 693 0
      engine/lib/ljpeg/extras/ansi2knr.c
  48. 132 0
      engine/lib/ljpeg/extras/cderror.h
  49. 181 0
      engine/lib/ljpeg/extras/cdjpeg.c
  50. 184 0
      engine/lib/ljpeg/extras/cdjpeg.h
  51. 292 0
      engine/lib/ljpeg/extras/cjpeg.1
  52. 606 0
      engine/lib/ljpeg/extras/cjpeg.c
  53. 402 0
      engine/lib/ljpeg/extras/ckconfig.c
  54. 118 0
      engine/lib/ljpeg/extras/coderules.doc
  55. 883 0
      engine/lib/ljpeg/extras/config.guess
  56. 954 0
      engine/lib/ljpeg/extras/config.sub
  57. 2011 0
      engine/lib/ljpeg/extras/configure
  58. 253 0
      engine/lib/ljpeg/extras/djpeg.1
  59. 616 0
      engine/lib/ljpeg/extras/djpeg.c
  60. 433 0
      engine/lib/ljpeg/extras/example.c
  61. 210 0
      engine/lib/ljpeg/extras/filelist.doc
  62. 250 0
      engine/lib/ljpeg/extras/install-sh
  63. 1063 0
      engine/lib/ljpeg/extras/install.doc
  64. 48 0
      engine/lib/ljpeg/extras/jconfig.bcc
  65. 44 0
      engine/lib/ljpeg/extras/jconfig.cfg
  66. 38 0
      engine/lib/ljpeg/extras/jconfig.dj
  67. 155 0
      engine/lib/ljpeg/extras/jconfig.doc
  68. 43 0
      engine/lib/ljpeg/extras/jconfig.mac
  69. 43 0
      engine/lib/ljpeg/extras/jconfig.manx
  70. 52 0
      engine/lib/ljpeg/extras/jconfig.mc6
  71. 43 0
      engine/lib/ljpeg/extras/jconfig.sas
  72. 42 0
      engine/lib/ljpeg/extras/jconfig.st
  73. 45 0
      engine/lib/ljpeg/extras/jconfig.vc
  74. 37 0
      engine/lib/ljpeg/extras/jconfig.vms
  75. 38 0
      engine/lib/ljpeg/extras/jconfig.wat
  76. 379 0
      engine/lib/ljpeg/extras/jmemdosa.asm
  77. 238 0
      engine/lib/ljpeg/extras/jpegtran.1
  78. 3006 0
      engine/lib/ljpeg/extras/libjpeg.doc
  79. 1512 0
      engine/lib/ljpeg/extras/ltconfig
  80. 2453 0
      engine/lib/ljpeg/extras/ltmain.sh
  81. 38 0
      engine/lib/ljpeg/extras/makcjpeg.st
  82. 38 0
      engine/lib/ljpeg/extras/makdjpeg.st
  83. 828 0
      engine/lib/ljpeg/extras/makeapps.ds
  84. 214 0
      engine/lib/ljpeg/extras/makefile.ansi
  85. 285 0
      engine/lib/ljpeg/extras/makefile.bcc
  86. 319 0
      engine/lib/ljpeg/extras/makefile.cfg
  87. 220 0
      engine/lib/ljpeg/extras/makefile.dj
  88. 214 0
      engine/lib/ljpeg/extras/makefile.manx
  89. 249 0
      engine/lib/ljpeg/extras/makefile.mc6
  90. 218 0
      engine/lib/ljpeg/extras/makefile.mms
  91. 252 0
      engine/lib/ljpeg/extras/makefile.sas
  92. 228 0
      engine/lib/ljpeg/extras/makefile.unix
  93. 211 0
      engine/lib/ljpeg/extras/makefile.vc
  94. 142 0
      engine/lib/ljpeg/extras/makefile.vms
  95. 233 0
      engine/lib/ljpeg/extras/makefile.wat
  96. 1046 0
      engine/lib/ljpeg/extras/makelib.ds
  97. 213 0
      engine/lib/ljpeg/extras/makeproj.mac
  98. 70 0
      engine/lib/ljpeg/extras/makljpeg.st
  99. 32 0
      engine/lib/ljpeg/extras/maktjpeg.st
  100. 439 0
      engine/lib/ljpeg/extras/rdbmp.c

+ 62 - 0
.gitignore

@@ -0,0 +1,62 @@
+# Dev Files #
+###################
+*.xcworkspace
+*.xcuserdatad
+.LSOverride
+/tmp/*
+/preferences.cs
+*.dso
+*.edso
+*.user
+*.sdf
+*.suo
+*.dir
+*.opensdf
+*.idea
+*.dSYM
+*.res
+*.cache
+*.exports
+*.opt
+*.tmp
+Torque2D.app
+Torque2D_DEBUG.app
+Torque2D.exe
+Torque2D_DEBUG.exe
+Torque2DGame.app
+Torque2DGame_Debug.app
+linkmap.txt
+    
+# Compiled source #
+###################
+*.com
+*.class
+*.o
+*.a
+*.so
+*.obj
+*.lib
+*.idb
+*.pdb
+*.ilk
+*.ipch
+*.lastbuildstate
+*.unsuccessfulbuild
+*.manifest
+*.tlog
+
+# Logs and databases #
+######################
+*.log
+*.sql
+
+# OS generated files #
+######################
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+Icon?
+ehthumbs.db
+Thumbs.db

BIN
OpenAL32.dll


+ 0 - 4
README.md

@@ -1,4 +0,0 @@
-Torque2D
-========
-
-MIT Licensed Open Source version of Torque 2D from GarageGames

+ 1 - 0
cleandso.bat

@@ -0,0 +1 @@
+del /s *.dso

BIN
engine/bin/bison/bison.exe


+ 334 - 0
engine/bin/bison/bison.hairy

@@ -0,0 +1,334 @@
+
+extern int timeclock;
+
+
+int yyerror;		/*  Yyerror and yycost are set by guards.	*/
+int yycost;		/*  If yyerror is set to a nonzero value by a	*/
+			/*  guard, the reduction with which the guard	*/
+			/*  is associated is not performed, and the	*/
+			/*  error recovery mechanism is invoked.	*/
+			/*  Yycost indicates the cost of performing	*/
+			/*  the reduction given the attributes of the	*/
+			/*  symbols.					*/
+
+
+/*  YYMAXDEPTH indicates the size of the parser's state and value	*/
+/*  stacks.								*/
+
+#ifndef	YYMAXDEPTH
+#define	YYMAXDEPTH	500
+#endif
+
+/*  YYMAXRULES must be at least as large as the number of rules that	*/
+/*  could be placed in the rule queue.  That number could be determined	*/
+/*  from the grammar and the size of the stack, but, as yet, it is not.	*/
+
+#ifndef	YYMAXRULES
+#define	YYMAXRULES	100
+#endif
+
+#ifndef	YYMAXBACKUP
+#define YYMAXBACKUP	100
+#endif
+
+
+short	yyss[YYMAXDEPTH];	/*  the state stack			*/
+YYSTYPE	yyvs[YYMAXDEPTH];	/*  the semantic value stack		*/
+YYLTYPE yyls[YYMAXDEPTH];	/*  the location stack			*/
+short	yyrq[YYMAXRULES];	/*  the rule queue			*/
+int	yychar;			/*  the lookahead symbol		*/
+
+YYSTYPE	yylval;			/*  the semantic value of the		*/
+				/*  lookahead symbol			*/
+
+YYSTYPE yytval;			/*  the semantic value for the state	*/
+				/*  at the top of the state stack.	*/
+
+YYSTYPE yyval;			/*  the variable used to return		*/
+				/*  semantic values from the action	*/
+				/*  routines				*/
+
+YYLTYPE yylloc;		/*  location data for the lookahead	*/
+				/*  symbol				*/
+
+YYLTYPE yytloc;		/*  location data for the state at the	*/
+				/*  top of the state stack		*/
+
+
+int	yynunlexed;
+short	yyunchar[YYMAXBACKUP];
+YYSTYPE	yyunval[YYMAXBACKUP];
+YYLTYPE yyunloc[YYMAXBACKUP];
+
+short *yygssp;			/*  a pointer to the top of the state	*/
+				/*  stack; only set during error	*/
+				/*  recovery.				*/
+
+YYSTYPE *yygvsp;		/*  a pointer to the top of the value	*/
+				/*  stack; only set during error	*/
+				/*  recovery.				*/
+
+YYLTYPE *yyglsp;		/*  a pointer to the top of the		*/
+				/*  location stack; only set during	*/
+				/*  error recovery.			*/
+
+
+/*  Yyget is an interface between the parser and the lexical analyzer.	*/
+/*  It is costly to provide such an interface, but it avoids requiring	*/
+/*  the lexical analyzer to be able to back up the scan.		*/
+
+yyget()
+{
+  if (yynunlexed > 0)
+    {
+      yynunlexed--;
+      yychar = yyunchar[yynunlexed];
+      yylval = yyunval[yynunlexed];
+      yylloc = yyunloc[yynunlexed];
+    }
+  else if (yychar <= 0)
+    yychar = 0;
+  else
+    {
+      yychar = yylex();
+      if (yychar < 0)
+	yychar = 0;
+      else yychar = YYTRANSLATE(yychar);
+    }
+}
+
+
+
+yyunlex(chr, val, loc)
+int chr;
+YYSTYPE val;
+YYLTYPE loc;
+{
+  yyunchar[yynunlexed] = chr;
+  yyunval[yynunlexed] = val;
+  yyunloc[yynunlexed] = loc;
+  yynunlexed++;
+}
+
+
+
+yyrestore(first, last)
+register short *first;
+register short *last;
+{
+  register short *ssp;
+  register short *rp;
+  register int symbol;
+  register int state;
+  register int tvalsaved;
+
+  ssp = yygssp;
+  yyunlex(yychar, yylval, yylloc);
+
+  tvalsaved = 0;
+  while (first != last)
+    {
+      symbol = yystos[*ssp];
+      if (symbol < YYNTBASE)
+	{
+	  yyunlex(symbol, yytval, yytloc);
+	  tvalsaved = 1;
+	  ssp--;
+	}
+
+      ssp--;
+
+      if (first == yyrq)
+	first = yyrq + YYMAXRULES;
+
+      first--;
+
+      for (rp = yyrhs + yyprhs[*first]; symbol = *rp; rp++)
+	{
+	  if (symbol < YYNTBASE)
+	    state = yytable[yypact[*ssp] + symbol];
+	  else
+	    {
+	      state = yypgoto[symbol - YYNTBASE] + *ssp;
+
+	      if (state >= 0 && state <= YYLAST && yycheck[state] == *ssp)
+		state = yytable[state];
+	      else
+		state = yydefgoto[symbol - YYNTBASE];
+	    }
+
+	  *++ssp = state;
+	}
+    }
+
+  if ( ! tvalsaved && ssp > yyss)
+    {
+      yyunlex(yystos[*ssp], yytval, yytloc);
+      ssp--;
+    }
+
+  yygssp = ssp;
+}
+
+
+
+int
+yyparse()
+{
+  register int yystate;
+  register int yyn;
+  register short *yyssp;
+  register short *yyrq0;
+  register short *yyptr;
+  register YYSTYPE *yyvsp;
+
+  int yylen;
+  YYLTYPE *yylsp;
+  short *yyrq1;
+  short *yyrq2;
+
+  yystate = 0;
+  yyssp = yyss - 1;
+  yyvsp = yyvs - 1;
+  yylsp = yyls - 1;
+  yyrq0 = yyrq;
+  yyrq1 = yyrq0;
+  yyrq2 = yyrq0;
+
+  yychar = yylex();
+  if (yychar < 0)
+    yychar = 0;
+  else yychar = YYTRANSLATE(yychar);
+
+yynewstate:
+
+  if (yyssp >= yyss + YYMAXDEPTH - 1)
+    {
+      yyabort("Parser Stack Overflow");
+      YYABORT;
+    }
+
+  *++yyssp = yystate;
+
+yyresume:
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yydefault;
+
+  yyn += yychar;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar)
+    goto yydefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrlab;
+
+  yystate = yyn;
+
+  yyptr = yyrq2;
+  while (yyptr != yyrq1)
+    {
+      yyn = *yyptr++;
+      yylen = yyr2[yyn];
+      yyvsp -= yylen;
+      yylsp -= yylen;
+
+      yyguard(yyn, yyvsp, yylsp);
+      if (yyerror)
+	goto yysemerr;
+
+      yyaction(yyn, yyvsp, yylsp);
+      *++yyvsp = yyval;
+
+      yylsp++;
+      if (yylen == 0)
+	{
+	  yylsp->timestamp = timeclock;
+	  yylsp->first_line = yytloc.first_line;
+	  yylsp->first_column = yytloc.first_column;
+	  yylsp->last_line = (yylsp-1)->last_line;
+	  yylsp->last_column = (yylsp-1)->last_column;
+	  yylsp->text = 0;
+	}
+      else
+	{
+	  yylsp->last_line = (yylsp+yylen-1)->last_line;
+	  yylsp->last_column = (yylsp+yylen-1)->last_column;
+	}
+	  
+      if (yyptr == yyrq + YYMAXRULES)
+        yyptr = yyrq;
+    }
+
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
+  yyrq2 = yyptr;
+  yyrq1 = yyrq0;
+
+  *++yyvsp = yytval;
+  *++yylsp = yytloc;
+  yytval = yylval;
+  yytloc = yylloc;
+  yyget();
+
+  goto yynewstate;
+
+yydefault:
+
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+
+yyreduce:
+
+  *yyrq0++ = yyn;
+
+  if (yyrq0 == yyrq + YYMAXRULES)
+    yyrq0 = yyrq;
+
+  if (yyrq0 == yyrq2)
+    {
+      yyabort("Parser Rule Queue Overflow");
+      YYABORT;
+    }
+
+  yyssp -= yyr2[yyn];
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTBASE];
+
+  goto yynewstate;
+
+yysemerr:
+  *--yyptr = yyn;
+  yyrq2 = yyptr;
+  yyvsp += yyr2[yyn];
+
+yyerrlab:
+
+  yygssp = yyssp;
+  yygvsp = yyvsp;
+  yyglsp = yylsp;
+  yyrestore(yyrq0, yyrq2);
+  yyrecover();
+  yystate = *yygssp;
+  yyssp = yygssp;
+  yyvsp = yygvsp;
+  yyrq0 = yyrq;
+  yyrq1 = yyrq0;
+  yyrq2 = yyrq0;
+  goto yyresume;
+}
+
+$

+ 4501 - 0
engine/bin/bison/bison.html

@@ -0,0 +1,4501 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.52
+     from bison.texinfo on 2 October 1998 -->
+<TITLE>Bison 1.24
+</TITLE>
+</HEAD>
+<BODY>
+<H1>Bison
+</H1>
+<H2>The YACC-compatible Parser Generator
+</H2>
+<H2>May 1995, Bison Version 1.24
+</H2>
+<ADDRESS>by Charles Donnelly and Richard Stallman
+</ADDRESS>
+<P>
+<P><HR><P>
+<H1>Table of Contents</H1>
+<UL>
+<LI><A NAME="TOC1" HREF="bison.html#SEC1">Introduction</A>
+<LI><A NAME="TOC2" HREF="bison.html#SEC2">Conditions for Using Bison</A>
+<LI><A NAME="TOC3" HREF="bison.html#SEC3">GNU GENERAL PUBLIC LICENSE</A>
+<UL>
+<LI><A NAME="TOC4" HREF="bison.html#SEC4">Preamble</A>
+<LI><A NAME="TOC5" HREF="bison.html#SEC5">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A>
+<LI><A NAME="TOC6" HREF="bison.html#SEC6">How to Apply These Terms to Your New Programs</A>
+</UL>
+<LI><A NAME="TOC7" HREF="bison.html#SEC7">The Concepts of Bison</A>
+<UL>
+<LI><A NAME="TOC8" HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>
+<LI><A NAME="TOC9" HREF="bison.html#SEC9">From Formal Rules to Bison Input</A>
+<LI><A NAME="TOC10" HREF="bison.html#SEC10">Semantic Values</A>
+<LI><A NAME="TOC11" HREF="bison.html#SEC11">Semantic Actions</A>
+<LI><A NAME="TOC12" HREF="bison.html#SEC12">Bison Output: the Parser File</A>
+<LI><A NAME="TOC13" HREF="bison.html#SEC13">Stages in Using Bison</A>
+<LI><A NAME="TOC14" HREF="bison.html#SEC14">The Overall Layout of a Bison Grammar</A>
+</UL>
+<LI><A NAME="TOC15" HREF="bison.html#SEC15">Examples</A>
+<UL>
+<LI><A NAME="TOC16" HREF="bison.html#SEC16">Reverse Polish Notation Calculator</A>
+<UL>
+<LI><A NAME="TOC17" HREF="bison.html#SEC17">Declarations for <CODE>rpcalc</CODE></A>
+<LI><A NAME="TOC18" HREF="bison.html#SEC18">Grammar Rules for <CODE>rpcalc</CODE></A>
+<UL>
+<LI><A NAME="TOC19" HREF="bison.html#SEC19">Explanation of <CODE>input</CODE></A>
+<LI><A NAME="TOC20" HREF="bison.html#SEC20">Explanation of <CODE>line</CODE></A>
+<LI><A NAME="TOC21" HREF="bison.html#SEC21">Explanation of <CODE>expr</CODE></A>
+</UL>
+<LI><A NAME="TOC22" HREF="bison.html#SEC22">The <CODE>rpcalc</CODE> Lexical Analyzer</A>
+<LI><A NAME="TOC23" HREF="bison.html#SEC23">The Controlling Function</A>
+<LI><A NAME="TOC24" HREF="bison.html#SEC24">The Error Reporting Routine</A>
+<LI><A NAME="TOC25" HREF="bison.html#SEC25">Running Bison to Make the Parser</A>
+<LI><A NAME="TOC26" HREF="bison.html#SEC26">Compiling the Parser File</A>
+</UL>
+<LI><A NAME="TOC27" HREF="bison.html#SEC27">Infix Notation Calculator: <CODE>calc</CODE></A>
+<LI><A NAME="TOC28" HREF="bison.html#SEC28">Simple Error Recovery</A>
+<LI><A NAME="TOC29" HREF="bison.html#SEC29">Multi-Function Calculator: <CODE>mfcalc</CODE></A>
+<UL>
+<LI><A NAME="TOC30" HREF="bison.html#SEC30">Declarations for <CODE>mfcalc</CODE></A>
+<LI><A NAME="TOC31" HREF="bison.html#SEC31">Grammar Rules for <CODE>mfcalc</CODE></A>
+<LI><A NAME="TOC32" HREF="bison.html#SEC32">The <CODE>mfcalc</CODE> Symbol Table</A>
+</UL>
+<LI><A NAME="TOC33" HREF="bison.html#SEC33">Exercises</A>
+</UL>
+<LI><A NAME="TOC34" HREF="bison.html#SEC34">Bison Grammar Files</A>
+<UL>
+<LI><A NAME="TOC35" HREF="bison.html#SEC35">Outline of a Bison Grammar</A>
+<UL>
+<LI><A NAME="TOC36" HREF="bison.html#SEC36">The C Declarations Section</A>
+<LI><A NAME="TOC37" HREF="bison.html#SEC37">The Bison Declarations Section</A>
+<LI><A NAME="TOC38" HREF="bison.html#SEC38">The Grammar Rules Section</A>
+<LI><A NAME="TOC39" HREF="bison.html#SEC39">The Additional C Code Section</A>
+</UL>
+<LI><A NAME="TOC40" HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>
+<LI><A NAME="TOC41" HREF="bison.html#SEC41">Syntax of Grammar Rules</A>
+<LI><A NAME="TOC42" HREF="bison.html#SEC42">Recursive Rules</A>
+<LI><A NAME="TOC43" HREF="bison.html#SEC43">Defining Language Semantics</A>
+<UL>
+<LI><A NAME="TOC44" HREF="bison.html#SEC44">Data Types of Semantic Values</A>
+<LI><A NAME="TOC45" HREF="bison.html#SEC45">More Than One Value Type</A>
+<LI><A NAME="TOC46" HREF="bison.html#SEC46">Actions</A>
+<LI><A NAME="TOC47" HREF="bison.html#SEC47">Data Types of Values in Actions</A>
+<LI><A NAME="TOC48" HREF="bison.html#SEC48">Actions in Mid-Rule</A>
+</UL>
+<LI><A NAME="TOC49" HREF="bison.html#SEC49">Bison Declarations</A>
+<UL>
+<LI><A NAME="TOC50" HREF="bison.html#SEC50">Token Type Names</A>
+<LI><A NAME="TOC51" HREF="bison.html#SEC51">Operator Precedence</A>
+<LI><A NAME="TOC52" HREF="bison.html#SEC52">The Collection of Value Types</A>
+<LI><A NAME="TOC53" HREF="bison.html#SEC53">Nonterminal Symbols</A>
+<LI><A NAME="TOC54" HREF="bison.html#SEC54">Suppressing Conflict Warnings</A>
+<LI><A NAME="TOC55" HREF="bison.html#SEC55">The Start-Symbol</A>
+<LI><A NAME="TOC56" HREF="bison.html#SEC56">A Pure (Reentrant) Parser</A>
+<LI><A NAME="TOC57" HREF="bison.html#SEC57">Bison Declaration Summary</A>
+</UL>
+<LI><A NAME="TOC58" HREF="bison.html#SEC58">Multiple Parsers in the Same Program</A>
+</UL>
+<LI><A NAME="TOC59" HREF="bison.html#SEC59">Parser C-Language Interface</A>
+<UL>
+<LI><A NAME="TOC60" HREF="bison.html#SEC60">The Parser Function <CODE>yyparse</CODE></A>
+<LI><A NAME="TOC61" HREF="bison.html#SEC61">The Lexical Analyzer Function <CODE>yylex</CODE></A>
+<UL>
+<LI><A NAME="TOC62" HREF="bison.html#SEC62">Calling Convention for <CODE>yylex</CODE></A>
+<LI><A NAME="TOC63" HREF="bison.html#SEC63">Semantic Values of Tokens</A>
+<LI><A NAME="TOC64" HREF="bison.html#SEC64">Textual Positions of Tokens</A>
+<LI><A NAME="TOC65" HREF="bison.html#SEC65">Calling Conventions for Pure Parsers</A>
+</UL>
+<LI><A NAME="TOC66" HREF="bison.html#SEC66">The Error Reporting Function <CODE>yyerror</CODE></A>
+<LI><A NAME="TOC67" HREF="bison.html#SEC67">Special Features for Use in Actions</A>
+</UL>
+<LI><A NAME="TOC68" HREF="bison.html#SEC68">The Bison Parser Algorithm</A>
+<UL>
+<LI><A NAME="TOC69" HREF="bison.html#SEC69">Look-Ahead Tokens</A>
+<LI><A NAME="TOC70" HREF="bison.html#SEC70">Shift/Reduce Conflicts</A>
+<LI><A NAME="TOC71" HREF="bison.html#SEC71">Operator Precedence</A>
+<UL>
+<LI><A NAME="TOC72" HREF="bison.html#SEC72">When Precedence is Needed</A>
+<LI><A NAME="TOC73" HREF="bison.html#SEC73">Specifying Operator Precedence</A>
+<LI><A NAME="TOC74" HREF="bison.html#SEC74">Precedence Examples</A>
+<LI><A NAME="TOC75" HREF="bison.html#SEC75">How Precedence Works</A>
+</UL>
+<LI><A NAME="TOC76" HREF="bison.html#SEC76">Context-Dependent Precedence</A>
+<LI><A NAME="TOC77" HREF="bison.html#SEC77">Parser States</A>
+<LI><A NAME="TOC78" HREF="bison.html#SEC78">Reduce/Reduce Conflicts</A>
+<LI><A NAME="TOC79" HREF="bison.html#SEC79">Mysterious Reduce/Reduce Conflicts</A>
+<LI><A NAME="TOC80" HREF="bison.html#SEC80">Stack Overflow, and How to Avoid It</A>
+</UL>
+<LI><A NAME="TOC81" HREF="bison.html#SEC81">Error Recovery</A>
+<LI><A NAME="TOC82" HREF="bison.html#SEC82">Handling Context Dependencies</A>
+<UL>
+<LI><A NAME="TOC83" HREF="bison.html#SEC83">Semantic Info in Token Types</A>
+<LI><A NAME="TOC84" HREF="bison.html#SEC84">Lexical Tie-ins</A>
+<LI><A NAME="TOC85" HREF="bison.html#SEC85">Lexical Tie-ins and Error Recovery</A>
+</UL>
+<LI><A NAME="TOC86" HREF="bison.html#SEC86">Debugging Your Parser</A>
+<LI><A NAME="TOC87" HREF="bison.html#SEC87">Invoking Bison</A>
+<UL>
+<LI><A NAME="TOC88" HREF="bison.html#SEC88">Bison Options</A>
+<LI><A NAME="TOC89" HREF="bison.html#SEC89">Option Cross Key</A>
+<LI><A NAME="TOC90" HREF="bison.html#SEC90">Invoking Bison under VMS</A>
+</UL>
+<LI><A NAME="TOC91" HREF="bison.html#SEC91">Bison Symbols</A>
+<LI><A NAME="TOC92" HREF="bison.html#SEC92">Glossary</A>
+<LI><A NAME="TOC93" HREF="bison.html#SEC93">Index</A>
+</UL>
+<P><HR><P>
+<ul>
+<H1><A NAME="SEC1" HREF="bison.html#TOC1">Introduction</A></H1>
+<P>
+<A NAME="IDX1"></A>
+<EM>Bison</EM> is a general-purpose parser generator that converts a
+grammar description for an LALR(1) context-free grammar into a C
+program to parse that grammar.  Once you are proficient with Bison,
+you may use it to develop a wide range of language parsers, from those
+used in simple desk calculators to complex programming languages.
+<p>
+Bison is upward compatible with Yacc: all properly-written Yacc grammars
+ought to work with Bison with no change.  Anyone familiar with Yacc
+should be able to use Bison with little trouble.  You need to be fluent in
+C programming in order to use Bison or to understand this manual.
+<p>
+We begin with tutorial chapters that explain the basic concepts of using
+Bison and show three explained examples, each building on the last.  If you
+don't know Bison or Yacc, start by reading these chapters.  Reference
+chapters follow which describe specific aspects of Bison in detail.
+<p>
+Bison was written primarily by Robert Corbett; Richard Stallman made
+it Yacc-compatible.  This edition corresponds to version 1.24 of Bison.
+<p>
+<H1><A NAME="SEC2" HREF="bison.html#TOC2">Conditions for Using Bison</A></H1>
+<P>
+As of Bison version 1.24, we have changed the distribution terms for
+<CODE>yyparse</CODE> to permit using Bison's output in non-free programs.
+Formerly, Bison parsers could be used only in programs that were free
+software.
+<p>
+The other GNU programming tools, such as the GNU C compiler, have never
+had such a requirement.  They could always be used for non-free
+software.  The reason Bison was different was not due to a special
+policy decision; it resulted from applying the usual General Public
+License to all of the Bison source code.
+<p>
+The output of the Bison utility--the Bison parser file--contains a
+verbatim copy of a sizable piece of Bison, which is the code for the
+<CODE>yyparse</CODE> function.  (The actions from your grammar are inserted
+into this function at one point, but the rest of the function is not
+changed.)  When we applied the GPL terms to the code for <CODE>yyparse</CODE>,
+the effect was to restrict the use of Bison output to free software.
+<p>
+We didn't change the terms because of sympathy for people who want to
+make software proprietary.  <STRONG>Software should be free.</STRONG>  But we
+concluded that limiting Bison's use to free software was doing little to
+encourage people to make other software free.  So we decided to make the
+practical conditions for using Bison match the practical conditions for
+using the other GNU tools.
+<p>
+<H1><A NAME="SEC3" HREF="bison.html#TOC3">GNU GENERAL PUBLIC LICENSE</A></H1>
+<P>
+Version 2, June 1991
+<PRE>
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+<p>
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</PRE>
+<P>
+<H2><A NAME="SEC4" HREF="bison.html#TOC4">Preamble</A></H2>
+<P>
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+<p>
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+<p>
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+<p>
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+<p>
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+<p>
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+<p>
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+<p>
+  The precise terms and conditions for copying, distribution and
+modification follow.
+<p>
+<H2><A NAME="SEC5" HREF="bison.html#TOC5">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A></H2>
+<P>
+<OL>
+<LI>
+This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+<p>
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+<p>
+<LI>
+You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+<p>
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+<p>
+<LI>
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+<p>
+<OL>
+<LI>
+You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+<p>
+<LI>
+You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+<p>
+<LI>
+If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+<p>
+</OL>
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+<p>
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+<p>
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+<p>
+<LI>
+You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+<p>
+<OL>
+<LI>
+Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+<p>
+<LI>
+Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+<p>
+<LI>
+Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+<p>
+</OL>
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+<p>
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+<p>
+<LI>
+You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+<p>
+<LI>
+You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+<p>
+<LI>
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+<p>
+<LI>
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+<p>
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+<p>
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+<p>
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+<p>
+<LI>
+If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+<p>
+<LI>
+The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+<p>
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+<p>
+<LI>
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+<p>
+<P><STRONG>NO WARRANTY</STRONG></P>
+<LI>
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+<p>
+<LI>
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+<p>
+</OL>
+<P>
+<P><STRONG>END OF TERMS AND CONDITIONS</STRONG></P>
+<p>
+<H2><A NAME="SEC6" HREF="bison.html#TOC6">How to Apply These Terms to Your New Programs</A></H2>
+<P>
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+<p>
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+<p>
+<ul><pre>
+<VAR>one line to give the program's name and a brief idea of what it does.</VAR>
+Copyright (C) 19<VAR>yy</VAR>  <VAR>name of author</VAR>
+<p>
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+<p>
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+<p>
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+</PRE>
+</ul>
+<P>
+Also add information on how to contact you by electronic and paper mail.
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+<ul>
+<PRE>
+Gnomovision version 69, Copyright (C) 19<VAR>yy</VAR> <VAR>name of author</VAR>
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details 
+type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+</PRE>
+</ul>
+<P>
+The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show
+the appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than <SAMP>`show w'</SAMP> and
+<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever
+suits your program.
+<p>
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+<p>
+<ul>
+<PRE>
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+<p>
+<VAR>signature of Ty Coon</VAR>, 1 April 1989
+Ty Coon, President of Vice
+</PRE>
+</ul>
+<P>
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+<p>
+<H1><A NAME="SEC7" HREF="bison.html#TOC7">The Concepts of Bison</A></H1>
+<P>
+This chapter introduces many of the basic concepts without which the
+details of Bison will not make sense.  If you do not already know how to
+use Bison or Yacc, we suggest you start by reading this chapter carefully.
+<H2><A NAME="SEC8" HREF="bison.html#TOC8">Languages and Context-Free Grammars</A></H2>
+<P>
+<A NAME="IDX2"></A>
+<A NAME="IDX3"></A>
+<BOL>In order for Bison to parse a language, it must be described by a
+<EM>context-free grammar</EM>.  This means that you specify one or more
+<EM>syntactic groupings</EM> and give rules for constructing them from their
+parts.  For example, in the C language, one kind of grouping is called an
+`expression'.  One rule for making an expression might be, "An expression
+can be made of a minus sign and another expression".  Another would be,
+"An expression can be an integer".  As you can see, rules are often
+recursive, but there must be at least one rule which leads out of the
+recursion.
+<p>
+<A NAME="IDX4"></A>
+<A NAME="IDX5"></A>
+The most common formal system for presenting such rules for humans to read
+is <EM>Backus-Naur Form</EM> or "BNF", which was developed in order to
+specify the language Algol 60.  Any grammar expressed in BNF is a
+context-free grammar.  The input to Bison is essentially machine-readable
+BNF.
+<p>
+Not all context-free languages can be handled by Bison, only those
+that are LALR(1).  In brief, this means that it must be possible to
+tell how to parse any portion of an input string with just a single
+token of look-ahead.  Strictly speaking, that is a description of an
+LR(1) grammar, and LALR(1) involves additional restrictions that are
+hard to explain simply; but it is rare in actual practice to find an
+LR(1) grammar that fails to be LALR(1).  See section <A HREF="bison.html#SEC79">Mysterious Reduce/Reduce Conflicts</A>, for more information on this.
+<p>
+<A NAME="IDX6"></A>
+<A NAME="IDX7"></A>
+<A NAME="IDX8"></A>
+<A NAME="IDX9"></A>
+In the formal grammatical rules for a language, each kind of syntactic unit
+or grouping is named by a <EM>symbol</EM>.  Those which are built by grouping
+smaller constructs according to grammatical rules are called
+<EM>nonterminal symbols</EM>; those which can't be subdivided are called
+<EM>terminal symbols</EM> or <EM>token types</EM>.  We call a piece of input
+corresponding to a single terminal symbol a <EM>token</EM>, and a piece
+corresponding to a single nonterminal symbol a <EM>grouping</EM>.
+We can use the C language as an example of what symbols, terminal and
+nonterminal, mean.  The tokens of C are identifiers, constants (numeric and
+string), and the various keywords, arithmetic operators and punctuation
+marks.  So the terminal symbols of a grammar for C include `identifier',
+`number', `string', plus one symbol for each keyword, operator or
+punctuation mark: `if', `return', `const', `static', `int', `char',
+`plus-sign', `open-brace', `close-brace', `comma' and many more.  (These
+tokens can be subdivided into characters, but that is a matter of
+lexicography, not grammar.)
+<p>
+Here is a simple C function subdivided into tokens:
+<p>
+<BLOCKQUOTE>
+<PRE>
+int             /* keyword `int' */
+square (x)      /* identifier, open-paren, */
+                /* identifier, close-paren */
+     int x;     /* keyword `int', identifier, semicolon */
+{               /* open-brace */
+  return x * x; /* keyword `return', identifier, */
+                /* asterisk, identifier, semicolon */
+}               /* close-brace */
+</PRE>
+</BLOCKQUOTE>
+<P>
+The syntactic groupings of C include the expression, the statement, the
+declaration, and the function definition.  These are represented in the
+grammar of C by nonterminal symbols `expression', `statement',
+`declaration' and `function definition'.  The full grammar uses dozens of
+additional language constructs, each with its own nonterminal symbol, in
+order to express the meanings of these four.  The example above is a
+function definition; it contains one declaration, and one statement.  In
+the statement, each <SAMP>`x'</SAMP> is an expression and so is <SAMP>`x * x'</SAMP>.
+Each nonterminal symbol must have grammatical rules showing how it is made
+out of simpler constructs.  For example, one kind of C statement is the
+<CODE>return</CODE> statement; this would be described with a grammar rule which
+reads informally as follows:
+<BLOCKQUOTE>
+<P>
+A `statement' can be made of a `return' keyword, an `expression' and a
+`semicolon'.
+</BLOCKQUOTE>
+<P>
+There would be many other rules for `statement', one for each kind of
+statement in C.
+<p>
+<A NAME="IDX10"></A>
+One nonterminal symbol must be distinguished as the special one which
+defines a complete utterance in the language.  It is called the <EM>start
+symbol</EM>.  In a compiler, this means a complete input program.  In the C
+language, the nonterminal symbol `sequence of definitions and declarations'
+plays this role.
+<p>
+For example, <SAMP>`1 + 2'</SAMP> is a valid C expression--a valid part of a C
+program--but it is not valid as an <EM>entire</EM> C program.  In the
+context-free grammar of C, this follows from the fact that `expression' is
+not the start symbol.
+<p>
+The Bison parser reads a sequence of tokens as its input, and groups the
+tokens using the grammar rules.  If the input is valid, the end result is
+that the entire token sequence reduces to a single grouping whose symbol is
+the grammar's start symbol.  If we use a grammar for C, the entire input
+must be a `sequence of definitions and declarations'.  If not, the parser
+reports a syntax error.
+<p>
+<H2><A NAME="SEC9" HREF="bison.html#TOC9">From Formal Rules to Bison Input</A></H2>
+<P>
+<A NAME="IDX11"></A>
+<A NAME="IDX12"></A>
+<A NAME="IDX13"></A>
+A formal grammar is a mathematical construct.  To define the language
+for Bison, you must write a file expressing the grammar in Bison syntax:
+a <EM>Bison grammar</EM> file.  See section <A HREF="bison.html#SEC34">Bison Grammar Files</A>.
+A nonterminal symbol in the formal grammar is represented in Bison input
+as an identifier, like an identifier in C.  By convention, it should be
+in lower case, such as <CODE>expr</CODE>, <CODE>stmt</CODE> or <CODE>declaration</CODE>.
+The Bison representation for a terminal symbol is also called a <EM>token
+type</EM>.  Token types as well can be represented as C-like identifiers.  By
+convention, these identifiers should be upper case to distinguish them from
+nonterminals: for example, <CODE>INTEGER</CODE>, <CODE>IDENTIFIER</CODE>, <CODE>IF</CODE> or
+<CODE>RETURN</CODE>.  A terminal symbol that stands for a particular keyword in
+the language should be named after that keyword converted to upper case.
+The terminal symbol <CODE>error</CODE> is reserved for error recovery.
+<p>
+See section <A HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>.
+A terminal symbol can also be represented as a character literal, just like
+a C character constant.  You should do this whenever a token is just a
+single character (parenthesis, plus-sign, etc.): use that same character in
+a literal as the terminal symbol for that token.
+<p>
+The grammar rules also have an expression in Bison syntax.  For example,
+here is the Bison rule for a C <CODE>return</CODE> statement.  The semicolon in
+quotes is a literal character token, representing part of the C syntax for
+the statement; the naked semicolon, and the colon, are Bison punctuation
+used in every rule.
+<p>
+<BLOCKQUOTE>
+<PRE>
+stmt:   RETURN expr ';'
+        ;
+</PRE>
+</BLOCKQUOTE>
+<P>
+See section <A HREF="bison.html#SEC41">Syntax of Grammar Rules</A>.
+<p>
+<H2><A NAME="SEC10" HREF="bison.html#TOC10">Semantic Values</A></H2>
+<P>
+<A NAME="IDX14"></A>
+<A NAME="IDX15"></A>
+A formal grammar selects tokens only by their classifications: for example,
+if a rule mentions the terminal symbol `integer constant', it means that
+<EM>any</EM> integer constant is grammatically valid in that position.  The
+precise value of the constant is irrelevant to how to parse the input: if
+<SAMP>`x+4'</SAMP> is grammatical then <SAMP>`x+1'</SAMP> or <SAMP>`x+3989'</SAMP> is equally
+grammatical.
+<p>
+But the precise value is very important for what the input means once it is
+parsed.  A compiler is useless if it fails to distinguish between 4, 1 and
+3989 as constants in the program!  Therefore, each token in a Bison grammar
+has both a token type and a <EM>semantic value</EM>.  See section <A HREF="bison.html#SEC43">Defining Language Semantics</A>,
+for details.
+<p>
+The token type is a terminal symbol defined in the grammar, such as
+<CODE>INTEGER</CODE>, <CODE>IDENTIFIER</CODE> or <CODE>','</CODE>.  It tells everything
+you need to know to decide where the token may validly appear and how to
+group it with other tokens.  The grammar rules know nothing about tokens
+except their types.
+<p>
+The semantic value has all the rest of the information about the
+meaning of the token, such as the value of an integer, or the name of an
+identifier.  (A token such as <CODE>','</CODE> which is just punctuation doesn't
+need to have any semantic value.)
+<p>
+For example, an input token might be classified as token type
+<CODE>INTEGER</CODE> and have the semantic value 4.  Another input token might
+have the same token type <CODE>INTEGER</CODE> but value 3989.  When a grammar
+rule says that <CODE>INTEGER</CODE> is allowed, either of these tokens is
+acceptable because each is an <CODE>INTEGER</CODE>.  When the parser accepts the
+token, it keeps track of the token's semantic value.
+<p>
+Each grouping can also have a semantic value as well as its nonterminal
+symbol.  For example, in a calculator, an expression typically has a
+semantic value that is a number.  In a compiler for a programming
+language, an expression typically has a semantic value that is a tree
+structure describing the meaning of the expression.
+<p>
+<H2><A NAME="SEC11" HREF="bison.html#TOC11">Semantic Actions</A></H2>
+<P>
+<A NAME="IDX16"></A>
+<A NAME="IDX17"></A>
+In order to be useful, a program must do more than parse input; it must
+also produce some output based on the input.  In a Bison grammar, a grammar
+rule can have an <EM>action</EM> made up of C statements.  Each time the
+parser recognizes a match for that rule, the action is executed.
+See section <A HREF="bison.html#SEC46">Actions</A>.
+<p>
+Most of the time, the purpose of an action is to compute the semantic value
+of the whole construct from the semantic values of its parts.  For example,
+suppose we have a rule which says an expression can be the sum of two
+expressions.  When the parser recognizes such a sum, each of the
+subexpressions has a semantic value which describes how it was built up.
+The action for this rule should create a similar sort of value for the
+newly recognized larger expression.
+For example, here is a rule that says an expression can be the sum of
+two subexpressions:
+<p>
+<BLOCKQUOTE>
+<PRE>
+expr: expr '+' expr   { $$ = $1 + $3; }
+        ;
+</PRE>
+</BLOCKQUOTE>
+<P>
+The action says how to produce the semantic value of the sum expression
+from the values of the two subexpressions.
+<H2><A NAME="SEC12" HREF="bison.html#TOC12">Bison Output: the Parser File</A></H2>
+<P>
+<A NAME="IDX18"></A>
+<A NAME="IDX19"></A>
+<A NAME="IDX20"></A>
+<A NAME="IDX21"></A>
+When you run Bison, you give it a Bison grammar file as input.  The output
+is a C source file that parses the language described by the grammar.
+This file is called a <EM>Bison parser</EM>.  Keep in mind that the Bison
+utility and the Bison parser are two distinct programs: the Bison utility
+is a program whose output is the Bison parser that becomes part of your
+program.
+<p>
+The job of the Bison parser is to group tokens into groupings according to
+the grammar rules--for example, to build identifiers and operators into
+expressions.  As it does this, it runs the actions for the grammar rules it
+uses.
+<p>
+The tokens come from a function called the <EM>lexical analyzer</EM> that you
+must supply in some fashion (such as by writing it in C).  The Bison parser
+calls the lexical analyzer each time it wants a new token.  It doesn't know
+what is "inside" the tokens (though their semantic values may reflect
+this).  Typically the lexical analyzer makes the tokens by parsing
+characters of text, but Bison does not depend on this.  See section <A HREF="bison.html#SEC61">The Lexical Analyzer Function <CODE>yylex</CODE></A>.
+The Bison parser file is C code which defines a function named
+<CODE>yyparse</CODE> which implements that grammar.  This function does not make
+a complete C program: you must supply some additional functions.  One is
+the lexical analyzer.  Another is an error-reporting function which the
+parser calls to report an error.  In addition, a complete C program must
+start with a function called <CODE>main</CODE>; you have to provide this, and
+arrange for it to call <CODE>yyparse</CODE> or the parser will never run.
+See section <A HREF="bison.html#SEC59">Parser C-Language Interface</A>.
+Aside from the token type names and the symbols in the actions you
+write, all variable and function names used in the Bison parser file
+begin with <SAMP>`yy'</SAMP> or <SAMP>`YY'</SAMP>.  This includes interface functions
+such as the lexical analyzer function <CODE>yylex</CODE>, the error reporting
+function <CODE>yyerror</CODE> and the parser function <CODE>yyparse</CODE> itself.
+This also includes numerous identifiers used for internal purposes.
+Therefore, you should avoid using C identifiers starting with <SAMP>`yy'</SAMP>
+or <SAMP>`YY'</SAMP> in the Bison grammar file except for the ones defined in
+this manual.
+<H2><A NAME="SEC13" HREF="bison.html#TOC13">Stages in Using Bison</A></H2>
+<P>
+<A NAME="IDX22"></A>
+<A NAME="IDX23"></A>
+The actual language-design process using Bison, from grammar specification
+to a working compiler or interpreter, has these parts:
+<OL>
+<LI>
+Formally specify the grammar in a form recognized by Bison
+(see section <A HREF="bison.html#SEC34">Bison Grammar Files</A>).  For each grammatical rule in the language,
+describe the action that is to be taken when an instance of that rule
+is recognized.  The action is described by a sequence of C statements.
+<LI>
+Write a lexical analyzer to process input and pass tokens to the
+parser.  The lexical analyzer may be written by hand in C
+(see section <A HREF="bison.html#SEC61">The Lexical Analyzer Function <CODE>yylex</CODE></A>).  It could also be produced using Lex, but the use
+of Lex is not discussed in this manual.
+<LI>
+Write a controlling function that calls the Bison-produced parser.
+<LI>
+Write error-reporting routines.
+</OL>
+<P>
+To turn this source code as written into a runnable program, you
+must follow these steps:
+<OL>
+<LI>
+Run Bison on the grammar to produce the parser.
+<LI>
+Compile the code output by Bison, as well as any other source files.
+<LI>
+Link the object files to produce the finished product.
+</OL>
+<P>
+<H2><A NAME="SEC14" HREF="bison.html#TOC14">The Overall Layout of a Bison Grammar</A></H2>
+<P>
+<A NAME="IDX24"></A>
+<A NAME="IDX25"></A>
+<A NAME="IDX26"></A>
+<A NAME="IDX27"></A>
+The input file for the Bison utility is a <EM>Bison grammar file</EM>.  The
+general form of a Bison grammar file is as follows:
+<PRE>
+%{
+<VAR>C declarations</VAR>
+%}
+<VAR>Bison declarations</VAR>
+%%
+<VAR>Grammar rules</VAR>
+%%
+<VAR>Additional C code</VAR>
+</PRE>
+<P>
+The <SAMP>`%%'</SAMP>, <SAMP>`%{'</SAMP> and <SAMP>`%}'</SAMP> are punctuation that appears
+in every Bison grammar file to separate the sections.
+The C declarations may define types and variables used in the actions.
+You can also use preprocessor commands to define macros used there, and use
+<CODE>#include</CODE> to include header files that do any of these things.
+The Bison declarations declare the names of the terminal and nonterminal
+symbols, and may also describe operator precedence and the data types of
+semantic values of various symbols.
+<P>
+The grammar rules define how to construct each nonterminal symbol from its
+parts.
+<P>
+The additional C code can contain any C code you want to use.  Often the
+definition of the lexical analyzer <CODE>yylex</CODE> goes here, plus subroutines
+called by the actions in the grammar rules.  In a simple program, all the
+rest of the program can go here.
+<P>
+<H1><A NAME="SEC15" HREF="bison.html#TOC15">Examples</A></H1>
+<P>
+<A NAME="IDX28"></A>
+<A NAME="IDX29"></A>
+Now we show and explain three sample programs written using Bison: a
+reverse polish notation calculator, an algebraic (infix) notation
+calculator, and a multi-function calculator.  All three have been tested
+under BSD Unix 4.3; each produces a usable, though limited, interactive
+desk-top calculator.
+<P>
+These examples are simple, but Bison grammars for real programming
+languages are written the same way.
+<P>
+<H2><A NAME="SEC16" HREF="bison.html#TOC16">Reverse Polish Notation Calculator</A></H2>
+<P>
+<A NAME="IDX30"></A>
+<A NAME="IDX31"></A>
+<A NAME="IDX32"></A>
+<A NAME="IDX33"></A>
+The first example is that of a simple double-precision <EM>reverse polish
+notation</EM> calculator (a calculator using postfix operators).  This example
+provides a good starting point, since operator precedence is not an issue.
+<P>
+The second example will illustrate how operator precedence is handled.
+The source code for this calculator is named <TT>`rpcalc.y'</TT>.  The
+<SAMP>`.y'</SAMP> extension is a convention used for Bison input files.
+<H3><A NAME="SEC17" HREF="bison.html#TOC17">Declarations for <CODE>rpcalc</CODE></A></H3>
+<P>
+Here are the C and Bison declarations for the reverse polish notation
+calculator.  As in C, comments are placed between <SAMP>`/*...*/'</SAMP>.
+<P>
+<PRE>
+/* Reverse polish notation calculator. */
+%{
+#define YYSTYPE double
+#include &#60;math.h&#62;
+%}
+%token NUM
+%% /* Grammar rules and actions follow */
+</PRE>
+<P>
+The C declarations section (see section <A HREF="bison.html#SEC36">The C Declarations Section</A>) contains two
+preprocessor directives.
+<P>
+The <CODE>#define</CODE> directive defines the macro <CODE>YYSTYPE</CODE>, thus
+specifying the C data type for semantic values of both tokens and groupings
+(see section <A HREF="bison.html#SEC44">Data Types of Semantic Values</A>).  The Bison parser will use whatever type
+<CODE>YYSTYPE</CODE> is defined as; if you don't define it, <CODE>int</CODE> is the
+default.  Because we specify <CODE>double</CODE>, each token and each expression
+has an associated value, which is a floating point number.
+<P>
+The <CODE>#include</CODE> directive is used to declare the exponentiation
+function <CODE>pow</CODE>.
+<P>
+The second section, Bison declarations, provides information to Bison about
+the token types (see section <A HREF="bison.html#SEC37">The Bison Declarations Section</A>).  Each terminal symbol that is
+not a single-character literal must be declared here.  (Single-character
+literals normally don't need to be declared.)  In this example, all the
+arithmetic operators are designated by single-character literals, so the
+only terminal symbol that needs to be declared is <CODE>NUM</CODE>, the token
+type for numeric constants.
+<P>
+<H3><A NAME="SEC18" HREF="bison.html#TOC18">Grammar Rules for <CODE>rpcalc</CODE></A></H3>
+<P>
+Here are the grammar rules for the reverse polish notation calculator.
+<P>
+<BLOCKQUOTE>
+<PRE>
+input:    /* empty */
+        | input line
+;
+line:     '\n'
+        | exp '\n'  { printf ("\t%.10g\n", $1); }
+;
+exp:      NUM             { $$ = $1;         }
+        | exp exp '+'     { $$ = $1 + $2;    }
+        | exp exp '-'     { $$ = $1 - $2;    }
+        | exp exp '*'     { $$ = $1 * $2;    }
+        | exp exp '/'     { $$ = $1 / $2;    }
+      /* Exponentiation */
+        | exp exp '^'     { $$ = pow ($1, $2); }
+      /* Unary minus    */
+        | exp 'n'         { $$ = -$1;        }
+;
+%%
+</PRE>
+</BLOCKQUOTE>
+<P>
+The groupings of the rpcalc "language" defined here are the expression
+(given the name <CODE>exp</CODE>), the line of input (<CODE>line</CODE>), and the
+complete input transcript (<CODE>input</CODE>).  Each of these nonterminal
+symbols has several alternate rules, joined by the <SAMP>`|'</SAMP> punctuator
+which is read as "or".  The following sections explain what these rules
+mean.
+<P>
+The semantics of the language is determined by the actions taken when a
+grouping is recognized.  The actions are the C code that appears inside
+braces.  See section <A HREF="bison.html#SEC46">Actions</A>.
+<P>
+You must specify these actions in C, but Bison provides the means for
+passing semantic values between the rules.  In each action, the
+pseudo-variable <CODE>$$</CODE> stands for the semantic value for the grouping
+that the rule is going to construct.  Assigning a value to <CODE>$$</CODE> is the
+main job of most actions.  The semantic values of the components of the
+rule are referred to as <CODE>$1</CODE>, <CODE>$2</CODE>, and so on.
+<P>
+<H4><A NAME="SEC19" HREF="bison.html#TOC19">Explanation of <CODE>input</CODE></A></H4>
+<P>
+Consider the definition of <CODE>input</CODE>:
+<P>
+<BLOCKQUOTE>
+<PRE>
+input:    /* empty */
+        | input line
+;
+</PRE>
+</BLOCKQUOTE>
+<P>
+This definition reads as follows: "A complete input is either an empty
+string, or a complete input followed by an input line".  Notice that
+"complete input" is defined in terms of itself.  This definition is said
+to be <EM>left recursive</EM> since <CODE>input</CODE> appears always as the
+leftmost symbol in the sequence.  See section <A HREF="bison.html#SEC42">Recursive Rules</A>.
+<P>
+The first alternative is empty because there are no symbols between the
+colon and the first <SAMP>`|'</SAMP>; this means that <CODE>input</CODE> can match an
+empty string of input (no tokens).  We write the rules this way because it
+is legitimate to type <KBD>Ctrl-d</KBD> right after you start the calculator.
+<P>
+It's conventional to put an empty alternative first and write the comment
+<SAMP>`/* empty */'</SAMP> in it.
+<P>
+The second alternate rule (<CODE>input line</CODE>) handles all nontrivial input.
+It means, "After reading any number of lines, read one more line if
+possible."  The left recursion makes this rule into a loop.  Since the
+first alternative matches empty input, the loop can be executed zero or
+more times.
+<P>
+The parser function <CODE>yyparse</CODE> continues to process input until a
+grammatical error is seen or the lexical analyzer says there are no more
+input tokens; we will arrange for the latter to happen at end of file.
+<H4><A NAME="SEC20" HREF="bison.html#TOC20">Explanation of <CODE>line</CODE></A></H4>
+<P>
+Now consider the definition of <CODE>line</CODE>:
+<PRE>
+<BLOCKQUOTE>
+line:     '\n'
+        | exp '\n'  { printf ("\t%.10g\n", $1); }
+;
+</PRE>
+</BLOCKQUOTE>
+<P>
+The first alternative is a token which is a newline character; this means
+that rpcalc accepts a blank line (and ignores it, since there is no
+action).  The second alternative is an expression followed by a newline.
+This is the alternative that makes rpcalc useful.  The semantic value of
+the <CODE>exp</CODE> grouping is the value of <CODE>$1</CODE> because the <CODE>exp</CODE> in
+question is the first symbol in the alternative.  The action prints this
+value, which is the result of the computation the user asked for.
+This action is unusual because it does not assign a value to <CODE>$$</CODE>.  As
+a consequence, the semantic value associated with the <CODE>line</CODE> is
+uninitialized (its value will be unpredictable).  This would be a bug if
+that value were ever used, but we don't use it: once rpcalc has printed the
+value of the user's input line, that value is no longer needed.
+<H4><A NAME="SEC21" HREF="bison.html#TOC21">Explanation of <CODE>expr</CODE></A></H4>
+<P>
+The <CODE>exp</CODE> grouping has several rules, one for each kind of expression.
+The first rule handles the simplest expressions: those that are just numbers.
+The second handles an addition-expression, which looks like two expressions
+followed by a plus-sign.  The third handles subtraction, and so on.
+<BLOCKQUOTE>
+<PRE>
+exp:      NUM
+        | exp exp '+'     { $$ = $1 + $2;    }
+        | exp exp '-'     { $$ = $1 - $2;    }
+        ...
+        ;
+</PRE>
+</BLOCKQUOTE>
+<P>
+We have used <SAMP>`|'</SAMP> to join all the rules for <CODE>exp</CODE>, but we could
+equally well have written them separately:
+<BLOCKQUOTE>
+<PRE>
+exp:      NUM ;
+exp:      exp exp '+'     { $$ = $1 + $2;    } ;
+exp:      exp exp '-'     { $$ = $1 - $2;    } ;
+        ...
+</PRE>
+</BLOCKQUOTE>
+<P>
+Most of the rules have actions that compute the value of the expression in
+terms of the value of its parts.  For example, in the rule for addition,
+<CODE>$1</CODE> refers to the first component <CODE>exp</CODE> and <CODE>$2</CODE> refers to
+the second one.  The third component, <CODE>'+'</CODE>, has no meaningful
+associated semantic value, but if it had one you could refer to it as
+<CODE>$3</CODE>.  When <CODE>yyparse</CODE> recognizes a sum expression using this
+rule, the sum of the two subexpressions' values is produced as the value of
+the entire expression.  See section <A HREF="bison.html#SEC46">Actions</A>.
+You don't have to give an action for every rule.  When a rule has no
+action, Bison by default copies the value of <CODE>$1</CODE> into <CODE>$$</CODE>.
+This is what happens in the first rule (the one that uses <CODE>NUM</CODE>).
+The formatting shown here is the recommended convention, but Bison does
+not require it.  You can add or change whitespace as much as you wish.
+For example, this:
+<PRE>
+exp   : NUM | exp exp '+' {$$ = $1 + $2; } | ...
+</PRE>
+<P>
+means the same thing as this:
+<PRE>
+exp:      NUM
+        | exp exp '+'    { $$ = $1 + $2; }
+        | ...
+</PRE>
+<P>
+The latter, however, is much more readable.
+<H3><A NAME="SEC22" HREF="bison.html#TOC22">The <CODE>rpcalc</CODE> Lexical Analyzer</A></H3>
+<P>
+<A NAME="IDX34"></A>
+<A NAME="IDX35"></A>
+The lexical analyzer's job is low-level parsing: converting characters or
+sequences of characters into tokens.  The Bison parser gets its tokens by
+calling the lexical analyzer.  See section <A HREF="bison.html#SEC61">The Lexical Analyzer Function <CODE>yylex</CODE></A>.
+Only a simple lexical analyzer is needed for the RPN calculator.  This
+lexical analyzer skips blanks and tabs, then reads in numbers as
+<CODE>double</CODE> and returns them as <CODE>NUM</CODE> tokens.  Any other character
+that isn't part of a number is a separate token.  Note that the token-code
+for such a single-character token is the character itself.
+The return value of the lexical analyzer function is a numeric code which
+represents a token type.  The same text used in Bison rules to stand for
+this token type is also a C expression for the numeric code for the type.
+This works in two ways.  If the token type is a character literal, then its
+numeric code is the ASCII code for that character; you can use the same
+character literal in the lexical analyzer to express the number.  If the
+token type is an identifier, that identifier is defined by Bison as a C
+macro whose definition is the appropriate number.  In this example,
+therefore, <CODE>NUM</CODE> becomes a macro for <CODE>yylex</CODE> to use.
+The semantic value of the token (if it has one) is stored into the global
+variable <CODE>yylval</CODE>, which is where the Bison parser will look for it.
+(The C data type of <CODE>yylval</CODE> is <CODE>YYSTYPE</CODE>, which was defined
+at the beginning of the grammar; see section <A HREF="bison.html#SEC17">Declarations for <CODE>rpcalc</CODE></A>.)
+A token type code of zero is returned if the end-of-file is encountered.
+(Bison recognizes any nonpositive value as indicating the end of the
+input.)
+Here is the code for the lexical analyzer:
+<PRE>
+/* Lexical analyzer returns a double floating point 
+   number on the stack and the token NUM, or the ASCII
+   character read if not a number.  Skips all blanks
+   and tabs, returns 0 for EOF. */
+#include &#60;ctype.h&#62;
+yylex ()
+{
+  int c;
+  /* skip white space  */
+  while ((c = getchar ()) == ' ' || c == '\t')  
+    ;
+  /* process numbers   */
+  if (c == '.' || isdigit (c))                
+    {
+      ungetc (c, stdin);
+      scanf ("%lf", &#38;yylval);
+      return NUM;
+    }
+  /* return end-of-file  */
+  if (c == EOF)                            
+    return 0;
+  /* return single chars */
+  return c;                                
+}
+</PRE>
+<P>
+<H3><A NAME="SEC23" HREF="bison.html#TOC23">The Controlling Function</A></H3>
+<P>
+<A NAME="IDX36"></A>
+<A NAME="IDX37"></A>
+In keeping with the spirit of this example, the controlling function is
+kept to the bare minimum.  The only requirement is that it call
+<CODE>yyparse</CODE> to start the process of parsing.
+<PRE>
+main ()
+{
+  yyparse ();
+}
+</PRE>
+<P>
+<H3><A NAME="SEC24" HREF="bison.html#TOC24">The Error Reporting Routine</A></H3>
+<P>
+<A NAME="IDX38"></A>
+When <CODE>yyparse</CODE> detects a syntax error, it calls the error reporting
+function <CODE>yyerror</CODE> to print an error message (usually but not always
+<CODE>"parse error"</CODE>).  It is up to the programmer to supply <CODE>yyerror</CODE>
+(see section <A HREF="bison.html#SEC59">Parser C-Language Interface</A>), so here is the definition we will use:
+<PRE>
+#include &#60;stdio.h&#62;
+yyerror (s)  /* Called by yyparse on error */
+     char *s;
+{
+  printf ("%s\n", s);
+}
+</PRE>
+<P>
+After <CODE>yyerror</CODE> returns, the Bison parser may recover from the error
+and continue parsing if the grammar contains a suitable error rule
+(see section <A HREF="bison.html#SEC81">Error Recovery</A>).  Otherwise, <CODE>yyparse</CODE> returns nonzero.  We
+have not written any error rules in this example, so any invalid input will
+cause the calculator program to exit.  This is not clean behavior for a
+real calculator, but it is adequate in the first example.
+<H3><A NAME="SEC25" HREF="bison.html#TOC25">Running Bison to Make the Parser</A></H3>
+<P>
+<A NAME="IDX39"></A>
+Before running Bison to produce a parser, we need to decide how to arrange
+all the source code in one or more source files.  For such a simple example,
+the easiest thing is to put everything in one file.  The definitions of
+<CODE>yylex</CODE>, <CODE>yyerror</CODE> and <CODE>main</CODE> go at the end, in the
+"additional C code" section of the file (see section <A HREF="bison.html#SEC14">The Overall Layout of a Bison Grammar</A>).
+For a large project, you would probably have several source files, and use
+<CODE>make</CODE> to arrange to recompile them.
+With all the source in a single file, you use the following command to
+convert it into a parser file:
+<PRE>
+bison <VAR>file_name</VAR>.y
+</PRE>
+<P>
+In this example the file was called <TT>`rpcalc.y'</TT> (for "Reverse Polish
+CALCulator").  Bison produces a file named <TT>`<VAR>file_name</VAR>.tab.c'</TT>,
+removing the <SAMP>`.y'</SAMP> from the original file name. The file output by
+Bison contains the source code for <CODE>yyparse</CODE>.  The additional
+functions in the input file (<CODE>yylex</CODE>, <CODE>yyerror</CODE> and <CODE>main</CODE>)
+are copied verbatim to the output.
+<H3><A NAME="SEC26" HREF="bison.html#TOC26">Compiling the Parser File</A></H3>
+<P>
+<A NAME="IDX40"></A>
+Here is how to compile and run the parser file:
+<PRE>
+# List files in current directory.
+% ls
+rpcalc.tab.c  rpcalc.y
+# Compile the Bison parser.
+# <SAMP>`-lm'</SAMP> tells compiler to search math library for <CODE>pow</CODE>.
+% cc rpcalc.tab.c -lm -o rpcalc
+# List files again.
+% ls
+rpcalc  rpcalc.tab.c  rpcalc.y
+</PRE>
+<P>
+The file <TT>`rpcalc'</TT> now contains the executable code.  Here is an
+example session using <CODE>rpcalc</CODE>.
+<PRE>
+% rpcalc
+4 9 +
+13
+3 7 + 3 4 5 *+-
+-13
+3 7 + 3 4 5 * + - n              Note the unary minus, <SAMP>`n'</SAMP>
+13
+5 6 / 4 n +
+-3.166666667
+3 4 ^                            Exponentiation
+81
+^D                               End-of-file indicator
+%
+</PRE>
+<P>
+<H2><A NAME="SEC27" HREF="bison.html#TOC27">Infix Notation Calculator: <CODE>calc</CODE></A></H2>
+<P>
+<A NAME="IDX41"></A>
+<A NAME="IDX42"></A>
+<A NAME="IDX43"></A>
+We now modify rpcalc to handle infix operators instead of postfix.  Infix
+notation involves the concept of operator precedence and the need for
+parentheses nested to arbitrary depth.  Here is the Bison code for
+<TT>`calc.y'</TT>, an infix desk-top calculator.
+<PRE>
+/* Infix notation calculator--calc */
+%{
+#define YYSTYPE double
+#include &#60;math.h&#62;
+%}
+/* BISON Declarations */
+%token NUM
+%left '-' '+'
+%left '*' '/'
+%left NEG     /* negation--unary minus */
+%right '^'    /* exponentiation        */
+/* Grammar follows */
+%%
+input:    /* empty string */
+        | input line
+;
+line:     '\n'
+        | exp '\n'  { printf ("\t%.10g\n", $1); }
+;
+exp:      NUM                { $$ = $1;         }
+        | exp '+' exp        { $$ = $1 + $3;    }
+        | exp '-' exp        { $$ = $1 - $3;    }
+        | exp '*' exp        { $$ = $1 * $3;    }
+        | exp '/' exp        { $$ = $1 / $3;    }
+        | '-' exp  %prec NEG { $$ = -$2;        }
+        | exp '^' exp        { $$ = pow ($1, $3); }
+        | '(' exp ')'        { $$ = $2;         }
+;
+%%
+</PRE>
+<P>
+The functions <CODE>yylex</CODE>, <CODE>yyerror</CODE> and <CODE>main</CODE> can be the same
+as before.
+There are two important new features shown in this code.
+In the second section (Bison declarations), <CODE>%left</CODE> declares token
+types and says they are left-associative operators.  The declarations
+<CODE>%left</CODE> and <CODE>%right</CODE> (right associativity) take the place of
+<CODE>%token</CODE> which is used to declare a token type name without
+associativity.  (These tokens are single-character literals, which
+ordinarily don't need to be declared.  We declare them here to specify
+the associativity.)
+Operator precedence is determined by the line ordering of the
+declarations; the higher the line number of the declaration (lower on
+the page or screen), the higher the precedence.  Hence, exponentiation
+has the highest precedence, unary minus (<CODE>NEG</CODE>) is next, followed
+by <SAMP>`*'</SAMP> and <SAMP>`/'</SAMP>, and so on.  See section <A HREF="bison.html#SEC71">Operator Precedence</A>.
+The other important new feature is the <CODE>%prec</CODE> in the grammar section
+for the unary minus operator.  The <CODE>%prec</CODE> simply instructs Bison that
+the rule <SAMP>`| '-' exp'</SAMP> has the same precedence as <CODE>NEG</CODE>---in this
+case the next-to-highest.  See section <A HREF="bison.html#SEC76">Context-Dependent Precedence</A>.
+Here is a sample run of <TT>`calc.y'</TT>:
+<PRE>
+% calc
+4 + 4.5 - (34/(8*3+-3))
+6.880952381
+-56 + 2
+-54
+3 ^ 2
+9
+</PRE>
+<P>
+<H2><A NAME="SEC28" HREF="bison.html#TOC28">Simple Error Recovery</A></H2>
+<P>
+<A NAME="IDX44"></A>
+Up to this point, this manual has not addressed the issue of <EM>error
+recovery</EM>---how to continue parsing after the parser detects a syntax
+error.  All we have handled is error reporting with <CODE>yyerror</CODE>.  Recall
+that by default <CODE>yyparse</CODE> returns after calling <CODE>yyerror</CODE>.  This
+means that an erroneous input line causes the calculator program to exit.
+Now we show how to rectify this deficiency.
+The Bison language itself includes the reserved word <CODE>error</CODE>, which
+may be included in the grammar rules.  In the example below it has
+been added to one of the alternatives for <CODE>line</CODE>:
+<PRE>
+line:     '\n'
+        | exp '\n'   { printf ("\t%.10g\n", $1); }
+        | error '\n' { yyerrok;                  }
+;
+</PRE>
+<P>
+This addition to the grammar allows for simple error recovery in the event
+of a parse error.  If an expression that cannot be evaluated is read, the
+error will be recognized by the third rule for <CODE>line</CODE>, and parsing
+will continue.  (The <CODE>yyerror</CODE> function is still called upon to print
+its message as well.)  The action executes the statement <CODE>yyerrok</CODE>, a
+macro defined automatically by Bison; its meaning is that error recovery is
+complete (see section <A HREF="bison.html#SEC81">Error Recovery</A>).  Note the difference between
+<CODE>yyerrok</CODE> and <CODE>yyerror</CODE>; neither one is a misprint.
+This form of error recovery deals with syntax errors.  There are other
+kinds of errors; for example, division by zero, which raises an exception
+signal that is normally fatal.  A real calculator program must handle this
+signal and use <CODE>longjmp</CODE> to return to <CODE>main</CODE> and resume parsing
+input lines; it would also have to discard the rest of the current line of
+input.  We won't discuss this issue further because it is not specific to
+Bison programs.
+<H2><A NAME="SEC29" HREF="bison.html#TOC29">Multi-Function Calculator: <CODE>mfcalc</CODE></A></H2>
+<P>
+<A NAME="IDX45"></A>
+<A NAME="IDX46"></A>
+<A NAME="IDX47"></A>
+Now that the basics of Bison have been discussed, it is time to move on to
+a more advanced problem.  The above calculators provided only five
+functions, <SAMP>`+'</SAMP>, <SAMP>`-'</SAMP>, <SAMP>`*'</SAMP>, <SAMP>`/'</SAMP> and <SAMP>`^'</SAMP>.  It would
+be nice to have a calculator that provides other mathematical functions such
+as <CODE>sin</CODE>, <CODE>cos</CODE>, etc.
+It is easy to add new operators to the infix calculator as long as they are
+only single-character literals.  The lexical analyzer <CODE>yylex</CODE> passes
+back all non-number characters as tokens, so new grammar rules suffice for
+adding a new operator.  But we want something more flexible: built-in
+functions whose syntax has this form:
+<PRE>
+<VAR>function_name</VAR> (<VAR>argument</VAR>)
+</PRE>
+<P>
+At the same time, we will add memory to the calculator, by allowing you
+to create named variables, store values in them, and use them later.
+Here is a sample session with the multi-function calculator:
+<PRE>
+% mfcalc
+pi = 3.141592653589
+3.1415926536
+sin(pi)
+0.0000000000
+alpha = beta1 = 2.3
+2.3000000000
+alpha
+2.3000000000
+ln(alpha)
+0.8329091229
+exp(ln(beta1))
+2.3000000000
+%
+</PRE>
+<P>
+Note that multiple assignment and nested function calls are permitted.
+<H3><A NAME="SEC30" HREF="bison.html#TOC30">Declarations for <CODE>mfcalc</CODE></A></H3>
+<P>
+Here are the C and Bison declarations for the multi-function calculator.
+<PRE>
+%{
+#include &#60;math.h&#62;  /* For math functions, cos(), sin(), etc. */
+#include "calc.h"  /* Contains definition of `symrec'        */
+%}
+%union {
+double     val;  /* For returning numbers.                   */
+symrec  *tptr;   /* For returning symbol-table pointers      */
+}
+%token &#60;val&#62;  NUM        /* Simple double precision number   */
+%token &#60;tptr&#62; VAR FNCT   /* Variable and Function            */
+%type  &#60;val&#62;  exp
+%right '='
+%left '-' '+'
+%left '*' '/'
+%left NEG     /* Negation--unary minus */
+%right '^'    /* Exponentiation        */
+/* Grammar follows */
+%%
+</PRE>
+<P>
+The above grammar introduces only two new features of the Bison language.
+These features allow semantic values to have various data types
+(see section <A HREF="bison.html#SEC45">More Than One Value Type</A>).
+The <CODE>%union</CODE> declaration specifies the entire list of possible types;
+this is instead of defining <CODE>YYSTYPE</CODE>.  The allowable types are now
+double-floats (for <CODE>exp</CODE> and <CODE>NUM</CODE>) and pointers to entries in
+the symbol table.  See section <A HREF="bison.html#SEC52">The Collection of Value Types</A>.
+Since values can now have various types, it is necessary to associate a
+type with each grammar symbol whose semantic value is used.  These symbols
+are <CODE>NUM</CODE>, <CODE>VAR</CODE>, <CODE>FNCT</CODE>, and <CODE>exp</CODE>.  Their
+declarations are augmented with information about their data type (placed
+between angle brackets).
+The Bison construct <CODE>%type</CODE> is used for declaring nonterminal symbols,
+just as <CODE>%token</CODE> is used for declaring token types.  We have not used
+<CODE>%type</CODE> before because nonterminal symbols are normally declared
+implicitly by the rules that define them.  But <CODE>exp</CODE> must be declared
+explicitly so we can specify its value type.  See section <A HREF="bison.html#SEC53">Nonterminal Symbols</A>.
+<H3><A NAME="SEC31" HREF="bison.html#TOC31">Grammar Rules for <CODE>mfcalc</CODE></A></H3>
+<P>
+Here are the grammar rules for the multi-function calculator.
+Most of them are copied directly from <CODE>calc</CODE>; three rules,
+those which mention <CODE>VAR</CODE> or <CODE>FNCT</CODE>, are new.
+<PRE>
+input:   /* empty */
+        | input line
+;
+line:
+          '\n'
+        | exp '\n'   { printf ("\t%.10g\n", $1); }
+        | error '\n' { yyerrok;                  }
+;
+exp:      NUM                { $$ = $1;                         }
+        | VAR                { $$ = $1-&#62;value.var;              }
+        | VAR '=' exp        { $$ = $3; $1-&#62;value.var = $3;     }
+        | FNCT '(' exp ')'   { $$ = (*($1-&#62;value.fnctptr))($3); }
+        | exp '+' exp        { $$ = $1 + $3;                    }
+        | exp '-' exp        { $$ = $1 - $3;                    }
+        | exp '*' exp        { $$ = $1 * $3;                    }
+        | exp '/' exp        { $$ = $1 / $3;                    }
+        | '-' exp  %prec NEG { $$ = -$2;                        }
+        | exp '^' exp        { $$ = pow ($1, $3);               }
+        | '(' exp ')'        { $$ = $2;                         }
+;
+/* End of grammar */
+%%
+</PRE>
+<P>
+<H3><A NAME="SEC32" HREF="bison.html#TOC32">The <CODE>mfcalc</CODE> Symbol Table</A></H3>
+<P>
+<A NAME="IDX48"></A>
+The multi-function calculator requires a symbol table to keep track of the
+names and meanings of variables and functions.  This doesn't affect the
+grammar rules (except for the actions) or the Bison declarations, but it
+requires some additional C functions for support.
+The symbol table itself consists of a linked list of records.  Its
+definition, which is kept in the header <TT>`calc.h'</TT>, is as follows.  It
+provides for either functions or variables to be placed in the table.
+<PRE>
+/* Data type for links in the chain of symbols.      */
+struct symrec
+{
+  char *name;  /* name of symbol                     */
+  int type;    /* type of symbol: either VAR or FNCT */
+  union {
+    double var;           /* value of a VAR          */
+    double (*fnctptr)();  /* value of a FNCT         */
+  } value;
+  struct symrec *next;    /* link field              */
+};
+typedef struct symrec symrec;
+/* The symbol table: a chain of `struct symrec'.     */
+extern symrec *sym_table;
+symrec *putsym ();
+symrec *getsym ();
+</PRE>
+<P>
+The new version of <CODE>main</CODE> includes a call to <CODE>init_table</CODE>, a
+function that initializes the symbol table.  Here it is, and
+<CODE>init_table</CODE> as well:
+<PRE>
+#include &#60;stdio.h&#62;
+main ()
+{
+  init_table ();
+  yyparse ();
+}
+yyerror (s)  /* Called by yyparse on error */
+     char *s;
+{
+  printf ("%s\n", s);
+}
+struct init
+{
+  char *fname;
+  double (*fnct)();
+};
+struct init arith_fncts[]
+  = {
+      "sin", sin,
+      "cos", cos,
+      "atan", atan,
+      "ln", log,
+      "exp", exp,
+      "sqrt", sqrt,
+      0, 0
+    };
+/* The symbol table: a chain of `struct symrec'.  */
+symrec *sym_table = (symrec *)0;
+init_table ()  /* puts arithmetic functions in table. */
+{
+  int i;
+  symrec *ptr;
+  for (i = 0; arith_fncts[i].fname != 0; i++)
+    {
+      ptr = putsym (arith_fncts[i].fname, FNCT);
+      ptr-&#62;value.fnctptr = arith_fncts[i].fnct;
+    }
+}
+</PRE>
+<P>
+By simply editing the initialization list and adding the necessary include
+files, you can add additional functions to the calculator.
+Two important functions allow look-up and installation of symbols in the
+symbol table.  The function <CODE>putsym</CODE> is passed a name and the type
+(<CODE>VAR</CODE> or <CODE>FNCT</CODE>) of the object to be installed.  The object is
+linked to the front of the list, and a pointer to the object is returned.
+The function <CODE>getsym</CODE> is passed the name of the symbol to look up.  If
+found, a pointer to that symbol is returned; otherwise zero is returned.
+<PRE>
+symrec *
+putsym (sym_name,sym_type)
+     char *sym_name;
+     int sym_type;
+{
+  symrec *ptr;
+  ptr = (symrec *) malloc (sizeof (symrec));
+  ptr-&#62;name = (char *) malloc (strlen (sym_name) + 1);
+  strcpy (ptr-&#62;name,sym_name);
+  ptr-&#62;type = sym_type;
+  ptr-&#62;value.var = 0; /* set value to 0 even if fctn.  */
+  ptr-&#62;next = (struct symrec *)sym_table;
+  sym_table = ptr;
+  return ptr;
+}
+symrec *
+getsym (sym_name)
+     char *sym_name;
+{
+  symrec *ptr;
+  for (ptr = sym_table; ptr != (symrec *) 0;
+       ptr = (symrec *)ptr-&#62;next)
+    if (strcmp (ptr-&#62;name,sym_name) == 0)
+      return ptr;
+  return 0;
+}
+</PRE>
+<P>
+The function <CODE>yylex</CODE> must now recognize variables, numeric values, and
+the single-character arithmetic operators.  Strings of alphanumeric
+characters with a leading nondigit are recognized as either variables or
+functions depending on what the symbol table says about them.
+The string is passed to <CODE>getsym</CODE> for look up in the symbol table.  If
+the name appears in the table, a pointer to its location and its type
+(<CODE>VAR</CODE> or <CODE>FNCT</CODE>) is returned to <CODE>yyparse</CODE>.  If it is not
+already in the table, then it is installed as a <CODE>VAR</CODE> using
+<CODE>putsym</CODE>.  Again, a pointer and its type (which must be <CODE>VAR</CODE>) is
+returned to <CODE>yyparse</CODE>.
+No change is needed in the handling of numeric values and arithmetic
+operators in <CODE>yylex</CODE>.
+<PRE>
+#include &#60;ctype.h&#62;
+yylex ()
+{
+  int c;
+  /* Ignore whitespace, get first nonwhite character.  */
+  while ((c = getchar ()) == ' ' || c == '\t');
+  if (c == EOF)
+    return 0;
+  /* Char starts a number =&#62; parse the number.         */
+  if (c == '.' || isdigit (c))
+    {
+      ungetc (c, stdin);
+      scanf ("%lf", &#38;yylval.val);
+      return NUM;
+    }
+  /* Char starts an identifier =&#62; read the name.       */
+  if (isalpha (c))
+    {
+      symrec *s;
+      static char *symbuf = 0;
+      static int length = 0;
+      int i;
+      /* Initially make the buffer long enough
+         for a 40-character symbol name.  */
+      if (length == 0)
+        length = 40, symbuf = (char *)malloc (length + 1);
+      i = 0;
+      do
+        {
+          /* If buffer is full, make it bigger.        */
+          if (i == length)
+            {
+              length *= 2;
+              symbuf = (char *)realloc (symbuf, length + 1);
+            }
+          /* Add this character to the buffer.         */
+          symbuf[i++] = c;
+          /* Get another character.                    */
+          c = getchar ();
+        }
+      while (c != EOF &#38;&#38; isalnum (c));
+      ungetc (c, stdin);
+      symbuf[i] = '\0';
+      s = getsym (symbuf);
+      if (s == 0)
+        s = putsym (symbuf, VAR);
+      yylval.tptr = s;
+      return s-&#62;type;
+    }
+  /* Any other character is a token by itself.        */
+  return c;
+}
+</PRE>
+<P>
+This program is both powerful and flexible. You may easily add new
+functions, and it is a simple job to modify this code to install predefined
+variables such as <CODE>pi</CODE> or <CODE>e</CODE> as well.
+<H2><A NAME="SEC33" HREF="bison.html#TOC33">Exercises</A></H2>
+<P>
+<A NAME="IDX49"></A>
+<OL>
+<LI>
+Add some new functions from <TT>`math.h'</TT> to the initialization list.
+<LI>
+Add another array that contains constants and their values.  Then
+modify <CODE>init_table</CODE> to add these constants to the symbol table.
+It will be easiest to give the constants type <CODE>VAR</CODE>.
+<LI>
+Make the program report an error if the user refers to an
+uninitialized variable in any way except to store a value in it.
+</OL>
+<P>
+<H1><A NAME="SEC34" HREF="bison.html#TOC34">Bison Grammar Files</A></H1>
+<P>
+Bison takes as input a context-free grammar specification and produces a
+C-language function that recognizes correct instances of the grammar.
+The Bison grammar input file conventionally has a name ending in <SAMP>`.y'</SAMP>.
+<H2><A NAME="SEC35" HREF="bison.html#TOC35">Outline of a Bison Grammar</A></H2>
+<P>
+A Bison grammar file has four main sections, shown here with the
+appropriate delimiters:
+<PRE>
+%{
+<VAR>C declarations</VAR>
+%}
+<VAR>Bison declarations</VAR>
+%%
+<VAR>Grammar rules</VAR>
+%%
+<VAR>Additional C code</VAR>
+</PRE>
+<P>
+Comments enclosed in <SAMP>`/* ... */'</SAMP> may appear in any of the sections.
+<H3><A NAME="SEC36" HREF="bison.html#TOC36">The C Declarations Section</A></H3>
+<P>
+<A NAME="IDX50"></A>
+<A NAME="IDX51"></A>
+The <VAR>C declarations</VAR> section contains macro definitions and
+declarations of functions and variables that are used in the actions in the
+grammar rules.  These are copied to the beginning of the parser file so
+that they precede the definition of <CODE>yyparse</CODE>.  You can use
+<SAMP>`#include'</SAMP> to get the declarations from a header file.  If you don't
+need any C declarations, you may omit the <SAMP>`%{'</SAMP> and <SAMP>`%}'</SAMP>
+delimiters that bracket this section.
+<H3><A NAME="SEC37" HREF="bison.html#TOC37">The Bison Declarations Section</A></H3>
+<P>
+<A NAME="IDX52"></A>
+<A NAME="IDX53"></A>
+The <VAR>Bison declarations</VAR> section contains declarations that define
+terminal and nonterminal symbols, specify precedence, and so on.
+In some simple grammars you may not need any declarations.
+See section <A HREF="bison.html#SEC49">Bison Declarations</A>.
+<H3><A NAME="SEC38" HREF="bison.html#TOC38">The Grammar Rules Section</A></H3>
+<P>
+<A NAME="IDX54"></A>
+<A NAME="IDX55"></A>
+The <EM>grammar rules</EM> section contains one or more Bison grammar
+rules, and nothing else.  See section <A HREF="bison.html#SEC41">Syntax of Grammar Rules</A>.
+There must always be at least one grammar rule, and the first
+<SAMP>`%%'</SAMP> (which precedes the grammar rules) may never be omitted even
+if it is the first thing in the file.
+<H3><A NAME="SEC39" HREF="bison.html#TOC39">The Additional C Code Section</A></H3>
+<P>
+<A NAME="IDX56"></A>
+<A NAME="IDX57"></A>
+The <VAR>additional C code</VAR> section is copied verbatim to the end of
+the parser file, just as the <VAR>C declarations</VAR> section is copied to
+the beginning.  This is the most convenient place to put anything
+that you want to have in the parser file but which need not come before
+the definition of <CODE>yyparse</CODE>.  For example, the definitions of
+<CODE>yylex</CODE> and <CODE>yyerror</CODE> often go here.  See section <A HREF="bison.html#SEC59">Parser C-Language Interface</A>.
+If the last section is empty, you may omit the <SAMP>`%%'</SAMP> that separates it
+from the grammar rules.
+The Bison parser itself contains many static variables whose names start
+with <SAMP>`yy'</SAMP> and many macros whose names start with <SAMP>`YY'</SAMP>.  It is a
+good idea to avoid using any such names (except those documented in this
+manual) in the additional C code section of the grammar file.
+<H2><A NAME="SEC40" HREF="bison.html#TOC40">Symbols, Terminal and Nonterminal</A></H2>
+<P>
+<A NAME="IDX58"></A>
+<A NAME="IDX59"></A>
+<A NAME="IDX60"></A>
+<A NAME="IDX61"></A>
+<EM>Symbols</EM> in Bison grammars represent the grammatical classifications
+of the language.
+A <EM>terminal symbol</EM> (also known as a <EM>token type</EM>) represents a
+class of syntactically equivalent tokens.  You use the symbol in grammar
+rules to mean that a token in that class is allowed.  The symbol is
+represented in the Bison parser by a numeric code, and the <CODE>yylex</CODE>
+function returns a token type code to indicate what kind of token has been
+read.  You don't need to know what the code value is; you can use the
+symbol to stand for it.
+A <EM>nonterminal symbol</EM> stands for a class of syntactically equivalent
+groupings.  The symbol name is used in writing grammar rules.  By convention,
+it should be all lower case.
+Symbol names can contain letters, digits (not at the beginning),
+underscores and periods.  Periods make sense only in nonterminals.
+There are two ways of writing terminal symbols in the grammar:
+<UL>
+<LI>
+A <EM>named token type</EM> is written with an identifier, like an
+identifier in C.  By convention, it should be all upper case.  Each
+such name must be defined with a Bison declaration such as
+<CODE>%token</CODE>.  See section <A HREF="bison.html#SEC50">Token Type Names</A>.
+<LI>
+<A NAME="IDX62"></A>
+<A NAME="IDX63"></A>
+<A NAME="IDX64"></A>
+A <EM>character token type</EM> (or <EM>literal token</EM>) is written in
+the grammar using the same syntax used in C for character constants;
+for example, <CODE>'+'</CODE> is a character token type.  A character token
+type doesn't need to be declared unless you need to specify its
+semantic value data type (see section <A HREF="bison.html#SEC44">Data Types of Semantic Values</A>), associativity, or
+precedence (see section <A HREF="bison.html#SEC71">Operator Precedence</A>).
+By convention, a character token type is used only to represent a
+token that consists of that particular character.  Thus, the token
+type <CODE>'+'</CODE> is used to represent the character <SAMP>`+'</SAMP> as a
+token.  Nothing enforces this convention, but if you depart from it,
+your program will confuse other readers.
+All the usual escape sequences used in character literals in C can be
+used in Bison as well, but you must not use the null character as a
+character literal because its ASCII code, zero, is the code
+<CODE>yylex</CODE> returns for end-of-input (see section <A HREF="bison.html#SEC62">Calling Convention for <CODE>yylex</CODE></A>).
+</UL>
+<P>
+How you choose to write a terminal symbol has no effect on its
+grammatical meaning.  That depends only on where it appears in rules and
+on when the parser function returns that symbol.
+The value returned by <CODE>yylex</CODE> is always one of the terminal symbols
+(or 0 for end-of-input).  Whichever way you write the token type in the
+grammar rules, you write it the same way in the definition of <CODE>yylex</CODE>.
+The numeric code for a character token type is simply the ASCII code for
+the character, so <CODE>yylex</CODE> can use the identical character constant to
+generate the requisite code.  Each named token type becomes a C macro in
+the parser file, so <CODE>yylex</CODE> can use the name to stand for the code.
+(This is why periods don't make sense in terminal symbols.)  
+See section <A HREF="bison.html#SEC62">Calling Convention for <CODE>yylex</CODE></A>.
+If <CODE>yylex</CODE> is defined in a separate file, you need to arrange for the
+token-type macro definitions to be available there.  Use the <SAMP>`-d'</SAMP>
+option when you run Bison, so that it will write these macro definitions
+into a separate header file <TT>`<VAR>name</VAR>.tab.h'</TT> which you can include
+in the other source files that need it.  See section <A HREF="bison.html#SEC87">Invoking Bison</A>.
+The symbol <CODE>error</CODE> is a terminal symbol reserved for error recovery
+(see section <A HREF="bison.html#SEC81">Error Recovery</A>); you shouldn't use it for any other purpose.
+In particular, <CODE>yylex</CODE> should never return this value.
+<H2><A NAME="SEC41" HREF="bison.html#TOC41">Syntax of Grammar Rules</A></H2>
+<P>
+<A NAME="IDX65"></A>
+<A NAME="IDX66"></A>
+<A NAME="IDX67"></A>
+A Bison grammar rule has the following general form:
+<PRE>
+<VAR>result</VAR>: <VAR>components</VAR>...
+        ;
+</PRE>
+<P>
+where <VAR>result</VAR> is the nonterminal symbol that this rule describes
+and <VAR>components</VAR> are various terminal and nonterminal symbols that
+are put together by this rule (see section <A HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>).  
+For example,
+<PRE>
+exp:      exp '+' exp
+        ;
+</PRE>
+<P>
+says that two groupings of type <CODE>exp</CODE>, with a <SAMP>`+'</SAMP> token in between,
+can be combined into a larger grouping of type <CODE>exp</CODE>.
+Whitespace in rules is significant only to separate symbols.  You can add
+extra whitespace as you wish.
+Scattered among the components can be <VAR>actions</VAR> that determine
+the semantics of the rule.  An action looks like this:
+<PRE>
+{<VAR>C statements</VAR>}
+</PRE>
+<P>
+Usually there is only one action and it follows the components.
+See section <A HREF="bison.html#SEC46">Actions</A>.
+<A NAME="IDX68"></A>
+Multiple rules for the same <VAR>result</VAR> can be written separately or can
+be joined with the vertical-bar character <SAMP>`|'</SAMP> as follows:
+<PRE>
+<VAR>result</VAR>:    <VAR>rule1-components</VAR>...
+        | <VAR>rule2-components</VAR>...
+        ...
+        ;
+</PRE>
+<P>
+They are still considered distinct rules even when joined in this way.
+If <VAR>components</VAR> in a rule is empty, it means that <VAR>result</VAR> can
+match the empty string.  For example, here is how to define a
+comma-separated sequence of zero or more <CODE>exp</CODE> groupings:
+<PRE>
+expseq:   /* empty */
+        | expseq1
+        ;
+expseq1:  exp
+        | expseq1 ',' exp
+        ;
+</PRE>
+<P>
+It is customary to write a comment <SAMP>`/* empty */'</SAMP> in each rule
+with no components.
+<H2><A NAME="SEC42" HREF="bison.html#TOC42">Recursive Rules</A></H2>
+<P>
+<A NAME="IDX69"></A>
+A rule is called <EM>recursive</EM> when its <VAR>result</VAR> nonterminal appears
+also on its right hand side.  Nearly all Bison grammars need to use
+recursion, because that is the only way to define a sequence of any number
+of somethings.  Consider this recursive definition of a comma-separated
+sequence of one or more expressions:
+<PRE>
+expseq1:  exp
+        | expseq1 ',' exp
+        ;
+</PRE>
+<P>
+<A NAME="IDX70"></A>
+<A NAME="IDX71"></A>
+Since the recursive use of <CODE>expseq1</CODE> is the leftmost symbol in the
+right hand side, we call this <EM>left recursion</EM>.  By contrast, here
+the same construct is defined using <EM>right recursion</EM>:
+<PRE>
+expseq1:  exp
+        | exp ',' expseq1
+        ;
+</PRE>
+<P>
+Any kind of sequence can be defined using either left recursion or
+right recursion, but you should always use left recursion, because it
+can parse a sequence of any number of elements with bounded stack
+space.  Right recursion uses up space on the Bison stack in proportion
+to the number of elements in the sequence, because all the elements
+must be shifted onto the stack before the rule can be applied even
+once.  See section <A HREF="bison.html#SEC68">The Bison Parser Algorithm</A>, for
+further explanation of this.
+<A NAME="IDX72"></A>
+<EM>Indirect</EM> or <EM>mutual</EM> recursion occurs when the result of the
+rule does not appear directly on its right hand side, but does appear
+in rules for other nonterminals which do appear on its right hand
+side.  
+For example:
+<PRE>
+expr:     primary
+        | primary '+' primary
+        ;
+primary:  constant
+        | '(' expr ')'
+        ;
+</PRE>
+<P>
+defines two mutually-recursive nonterminals, since each refers to the
+other.
+<H2><A NAME="SEC43" HREF="bison.html#TOC43">Defining Language Semantics</A></H2>
+<P>
+<A NAME="IDX73"></A>
+<A NAME="IDX74"></A>
+The grammar rules for a language determine only the syntax.  The semantics
+are determined by the semantic values associated with various tokens and
+groupings, and by the actions taken when various groupings are recognized.
+For example, the calculator calculates properly because the value
+associated with each expression is the proper number; it adds properly
+because the action for the grouping <SAMP>`<VAR>x</VAR> + <VAR>y</VAR>'</SAMP> is to add
+the numbers associated with <VAR>x</VAR> and <VAR>y</VAR>.
+<H3><A NAME="SEC44" HREF="bison.html#TOC44">Data Types of Semantic Values</A></H3>
+<P>
+<A NAME="IDX75"></A>
+<A NAME="IDX76"></A>
+<A NAME="IDX77"></A>
+<A NAME="IDX78"></A>
+In a simple program it may be sufficient to use the same data type for
+the semantic values of all language constructs.  This was true in the
+RPN and infix calculator examples (see section <A HREF="bison.html#SEC16">Reverse Polish Notation Calculator</A>).
+Bison's default is to use type <CODE>int</CODE> for all semantic values.  To
+specify some other type, define <CODE>YYSTYPE</CODE> as a macro, like this:
+<PRE>
+#define YYSTYPE double
+</PRE>
+<P>
+This macro definition must go in the C declarations section of the grammar
+file (see section <A HREF="bison.html#SEC35">Outline of a Bison Grammar</A>).
+<H3><A NAME="SEC45" HREF="bison.html#TOC45">More Than One Value Type</A></H3>
+<P>
+In most programs, you will need different data types for different kinds
+of tokens and groupings.  For example, a numeric constant may need type
+<CODE>int</CODE> or <CODE>long</CODE>, while a string constant needs type <CODE>char *</CODE>,
+and an identifier might need a pointer to an entry in the symbol table.
+To use more than one data type for semantic values in one parser, Bison
+requires you to do two things:
+<UL>
+<LI>
+Specify the entire collection of possible data types, with the
+<CODE>%union</CODE> Bison declaration (see section <A HREF="bison.html#SEC52">The Collection of Value Types</A>).
+<LI>
+Choose one of those types for each symbol (terminal or nonterminal)
+for which semantic values are used.  This is done for tokens with the
+<CODE>%token</CODE> Bison declaration (see section <A HREF="bison.html#SEC50">Token Type Names</A>) and for groupings
+with the <CODE>%type</CODE> Bison declaration (see section <A HREF="bison.html#SEC53">Nonterminal Symbols</A>).
+</UL>
+<P>
+<H3><A NAME="SEC46" HREF="bison.html#TOC46">Actions</A></H3>
+<P>
+<A NAME="IDX79"></A>
+<A NAME="IDX80"></A>
+<A NAME="IDX81"></A>
+An action accompanies a syntactic rule and contains C code to be executed
+each time an instance of that rule is recognized.  The task of most actions
+is to compute a semantic value for the grouping built by the rule from the
+semantic values associated with tokens or smaller groupings.
+An action consists of C statements surrounded by braces, much like a
+compound statement in C.  It can be placed at any position in the rule; it
+is executed at that position.  Most rules have just one action at the end
+of the rule, following all the components.  Actions in the middle of a rule
+are tricky and used only for special purposes (see section <A HREF="bison.html#SEC48">Actions in Mid-Rule</A>).
+The C code in an action can refer to the semantic values of the components
+matched by the rule with the construct <CODE>$<VAR>n</VAR></CODE>, which stands for
+the value of the <VAR>n</VAR>th component.  The semantic value for the grouping
+being constructed is <CODE>$$</CODE>.  (Bison translates both of these constructs
+into array element references when it copies the actions into the parser
+file.)
+Here is a typical example:
+<PRE>
+exp:    ...
+        | exp '+' exp
+            { $$ = $1 + $3; }
+</PRE>
+<P>
+This rule constructs an <CODE>exp</CODE> from two smaller <CODE>exp</CODE> groupings
+connected by a plus-sign token.  In the action, <CODE>$1</CODE> and <CODE>$3</CODE>
+refer to the semantic values of the two component <CODE>exp</CODE> groupings,
+which are the first and third symbols on the right hand side of the rule.
+The sum is stored into <CODE>$$</CODE> so that it becomes the semantic value of
+the addition-expression just recognized by the rule.  If there were a
+useful semantic value associated with the <SAMP>`+'</SAMP> token, it could be
+referred to as <CODE>$2</CODE>.
+<A NAME="IDX82"></A>
+If you don't specify an action for a rule, Bison supplies a default:
+<CODE>$$ = $1</CODE>.  Thus, the value of the first symbol in the rule becomes
+the value of the whole rule.  Of course, the default rule is valid only
+if the two data types match.  There is no meaningful default action for
+an empty rule; every empty rule must have an explicit action unless the
+rule's value does not matter.
+<CODE>$<VAR>n</VAR></CODE> with <VAR>n</VAR> zero or negative is allowed for reference
+to tokens and groupings on the stack <EM>before</EM> those that match the
+current rule.  This is a very risky practice, and to use it reliably
+you must be certain of the context in which the rule is applied.  Here
+is a case in which you can use this reliably:
+<PRE>
+foo:      expr bar '+' expr  { ... }
+        | expr bar '-' expr  { ... }
+        ;
+bar:      /* empty */
+        { previous_expr = $0; }
+        ;
+</PRE>
+<P>
+As long as <CODE>bar</CODE> is used only in the fashion shown here, <CODE>$0</CODE>
+always refers to the <CODE>expr</CODE> which precedes <CODE>bar</CODE> in the
+definition of <CODE>foo</CODE>.
+<H3><A NAME="SEC47" HREF="bison.html#TOC47">Data Types of Values in Actions</A></H3>
+<P>
+<A NAME="IDX83"></A>
+<A NAME="IDX84"></A>
+If you have chosen a single data type for semantic values, the <CODE>$$</CODE>
+and <CODE>$<VAR>n</VAR></CODE> constructs always have that data type.
+If you have used <CODE>%union</CODE> to specify a variety of data types, then you
+must declare a choice among these types for each terminal or nonterminal
+symbol that can have a semantic value.  Then each time you use <CODE>$$</CODE> or
+<CODE>$<VAR>n</VAR></CODE>, its data type is determined by which symbol it refers to
+in the rule.  In this example,
+<PRE>
+exp:    ...
+        | exp '+' exp
+            { $$ = $1 + $3; }
+</PRE>
+<P>
+<CODE>$1</CODE> and <CODE>$3</CODE> refer to instances of <CODE>exp</CODE>, so they all
+have the data type declared for the nonterminal symbol <CODE>exp</CODE>.  If
+<CODE>$2</CODE> were used, it would have the data type declared for the
+terminal symbol <CODE>'+'</CODE>, whatever that might be.
+Alternatively, you can specify the data type when you refer to the value,
+by inserting <SAMP>`&#60;<VAR>type</VAR>&#62;'</SAMP> after the <SAMP>`$'</SAMP> at the beginning of the
+reference.  For example, if you have defined types as shown here:
+<PRE>
+%union {
+  int itype;
+  double dtype;
+}
+</PRE>
+<P>
+then you can write <CODE>$&#60;itype&#62;1</CODE> to refer to the first subunit of the
+rule as an integer, or <CODE>$&#60;dtype&#62;1</CODE> to refer to it as a double.
+<H3><A NAME="SEC48" HREF="bison.html#TOC48">Actions in Mid-Rule</A></H3>
+<P>
+<A NAME="IDX85"></A>
+<A NAME="IDX86"></A>
+Occasionally it is useful to put an action in the middle of a rule.
+These actions are written just like usual end-of-rule actions, but they
+are executed before the parser even recognizes the following components.
+A mid-rule action may refer to the components preceding it using
+<CODE>$<VAR>n</VAR></CODE>, but it may not refer to subsequent components because
+it is run before they are parsed.
+The mid-rule action itself counts as one of the components of the rule.
+This makes a difference when there is another action later in the same rule
+(and usually there is another at the end): you have to count the actions
+along with the symbols when working out which number <VAR>n</VAR> to use in
+<CODE>$<VAR>n</VAR></CODE>.
+The mid-rule action can also have a semantic value.  The action can set
+its value with an assignment to <CODE>$$</CODE>, and actions later in the rule
+can refer to the value using <CODE>$<VAR>n</VAR></CODE>.  Since there is no symbol
+to name the action, there is no way to declare a data type for the value
+in advance, so you must use the <SAMP>`$&#60;...&#62;'</SAMP> construct to specify a
+data type each time you refer to this value.
+There is no way to set the value of the entire rule with a mid-rule
+action, because assignments to <CODE>$$</CODE> do not have that effect.  The
+only way to set the value for the entire rule is with an ordinary action
+at the end of the rule.
+Here is an example from a hypothetical compiler, handling a <CODE>let</CODE>
+statement that looks like <SAMP>`let (<VAR>variable</VAR>) <VAR>statement</VAR>'</SAMP> and
+serves to create a variable named <VAR>variable</VAR> temporarily for the
+duration of <VAR>statement</VAR>.  To parse this construct, we must put
+<VAR>variable</VAR> into the symbol table while <VAR>statement</VAR> is parsed, then
+remove it afterward.  Here is how it is done:
+<PRE>
+stmt:   LET '(' var ')'
+                { $&#60;context&#62;$ = push_context ();
+                  declare_variable ($3); }
+        stmt    { $$ = $6;
+                  pop_context ($&#60;context&#62;5); }
+</PRE>
+<P>
+As soon as <SAMP>`let (<VAR>variable</VAR>)'</SAMP> has been recognized, the first
+action is run.  It saves a copy of the current semantic context (the
+list of accessible variables) as its semantic value, using alternative
+<CODE>context</CODE> in the data-type union.  Then it calls
+<CODE>declare_variable</CODE> to add the new variable to that list.  Once the
+first action is finished, the embedded statement <CODE>stmt</CODE> can be
+parsed.  Note that the mid-rule action is component number 5, so the
+<SAMP>`stmt'</SAMP> is component number 6.
+After the embedded statement is parsed, its semantic value becomes the
+value of the entire <CODE>let</CODE>-statement.  Then the semantic value from the
+earlier action is used to restore the prior list of variables.  This
+removes the temporary <CODE>let</CODE>-variable from the list so that it won't
+appear to exist while the rest of the program is parsed.
+Taking action before a rule is completely recognized often leads to
+conflicts since the parser must commit to a parse in order to execute the
+action.  For example, the following two rules, without mid-rule actions,
+can coexist in a working parser because the parser can shift the open-brace
+token and look at what follows before deciding whether there is a
+declaration or not:
+<PRE>
+compound: '{' declarations statements '}'
+        | '{' statements '}'
+        ;
+</PRE>
+<P>
+But when we add a mid-rule action as follows, the rules become nonfunctional:
+<PRE>
+compound: { prepare_for_local_variables (); }
+          '{' declarations statements '}'
+        | '{' statements '}'
+        ;
+</PRE>
+<P>
+Now the parser is forced to decide whether to run the mid-rule action
+when it has read no farther than the open-brace.  In other words, it
+must commit to using one rule or the other, without sufficient
+information to do it correctly.  (The open-brace token is what is called
+the <EM>look-ahead</EM> token at this time, since the parser is still
+deciding what to do about it.  See section <A HREF="bison.html#SEC69">Look-Ahead Tokens</A>.)
+You might think that you could correct the problem by putting identical
+actions into the two rules, like this:
+<PRE>
+compound: { prepare_for_local_variables (); }
+          '{' declarations statements '}'
+        | { prepare_for_local_variables (); }
+          '{' statements '}'
+        ;
+</PRE>
+<P>
+But this does not help, because Bison does not realize that the two actions
+are identical.  (Bison never tries to understand the C code in an action.)
+If the grammar is such that a declaration can be distinguished from a
+statement by the first token (which is true in C), then one solution which
+does work is to put the action after the open-brace, like this:
+<PRE>
+compound: '{' { prepare_for_local_variables (); }
+          declarations statements '}'
+        | '{' statements '}'
+        ;
+</PRE>
+<P>
+Now the first token of the following declaration or statement,
+which would in any case tell Bison which rule to use, can still do so.
+Another solution is to bury the action inside a nonterminal symbol which
+serves as a subroutine:
+<PRE>
+subroutine: /* empty */
+          { prepare_for_local_variables (); }
+        ;
+compound: subroutine
+          '{' declarations statements '}'
+        | subroutine
+          '{' statements '}'
+        ;
+</PRE>
+<P>
+Now Bison can execute the action in the rule for <CODE>subroutine</CODE> without
+deciding which rule for <CODE>compound</CODE> it will eventually use.  Note that
+the action is now at the end of its rule.  Any mid-rule action can be
+converted to an end-of-rule action in this way, and this is what Bison
+actually does to implement mid-rule actions.
+<H2><A NAME="SEC49" HREF="bison.html#TOC49">Bison Declarations</A></H2>
+<P>
+<A NAME="IDX87"></A>
+<A NAME="IDX88"></A>
+The <EM>Bison declarations</EM> section of a Bison grammar defines the symbols
+used in formulating the grammar and the data types of semantic values.
+See section <A HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>.
+All token type names (but not single-character literal tokens such as
+<CODE>'+'</CODE> and <CODE>'*'</CODE>) must be declared.  Nonterminal symbols must be
+declared if you need to specify which data type to use for the semantic
+value (see section <A HREF="bison.html#SEC45">More Than One Value Type</A>).
+The first rule in the file also specifies the start symbol, by default.
+If you want some other symbol to be the start symbol, you must declare
+it explicitly (see section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>).
+<H3><A NAME="SEC50" HREF="bison.html#TOC50">Token Type Names</A></H3>
+<P>
+<A NAME="IDX89"></A>
+<A NAME="IDX90"></A>
+<A NAME="IDX91"></A>
+The basic way to declare a token type name (terminal symbol) is as follows:
+<PRE>
+%token <VAR>name</VAR>
+</PRE>
+<P>
+Bison will convert this into a <CODE>#define</CODE> directive in
+the parser, so that the function <CODE>yylex</CODE> (if it is in this file)
+can use the name <VAR>name</VAR> to stand for this token type's code.
+Alternatively, you can use <CODE>%left</CODE>, <CODE>%right</CODE>, or <CODE>%nonassoc</CODE>
+instead of <CODE>%token</CODE>, if you wish to specify precedence.
+See section <A HREF="bison.html#SEC51">Operator Precedence</A>.
+You can explicitly specify the numeric code for a token type by appending
+an integer value in the field immediately following the token name:
+<PRE>
+%token NUM 300
+</PRE>
+<P>
+It is generally best, however, to let Bison choose the numeric codes for
+all token types.  Bison will automatically select codes that don't conflict
+with each other or with ASCII characters.
+In the event that the stack type is a union, you must augment the
+<CODE>%token</CODE> or other token declaration to include the data type
+alternative delimited by angle-brackets (see section <A HREF="bison.html#SEC45">More Than One Value Type</A>).  
+For example:
+<PRE>
+%union {              /* define stack type */
+  double val;
+  symrec *tptr;
+}
+%token &#60;val&#62; NUM      /* define token NUM and its type */
+</PRE>
+<P>
+<H3><A NAME="SEC51" HREF="bison.html#TOC51">Operator Precedence</A></H3>
+<P>
+<A NAME="IDX92"></A>
+<A NAME="IDX93"></A>
+<A NAME="IDX94"></A>
+Use the <CODE>%left</CODE>, <CODE>%right</CODE> or <CODE>%nonassoc</CODE> declaration to
+declare a token and specify its precedence and associativity, all at
+once.  These are called <EM>precedence declarations</EM>.
+See section <A HREF="bison.html#SEC71">Operator Precedence</A>, for general information on operator precedence.
+The syntax of a precedence declaration is the same as that of
+<CODE>%token</CODE>: either
+<PRE>
+%left <VAR>symbols</VAR>...
+</PRE>
+<P>
+or
+<PRE>
+%left &#60;<VAR>type</VAR>&#62; <VAR>symbols</VAR>...
+</PRE>
+<P>
+And indeed any of these declarations serves the purposes of <CODE>%token</CODE>.
+But in addition, they specify the associativity and relative precedence for
+all the <VAR>symbols</VAR>:
+<UL>
+<LI>
+The associativity of an operator <VAR>op</VAR> determines how repeated uses
+of the operator nest: whether <SAMP>`<VAR>x</VAR> <VAR>op</VAR> <VAR>y</VAR> <VAR>op</VAR>
+<VAR>z</VAR>'</SAMP> is parsed by grouping <VAR>x</VAR> with <VAR>y</VAR> first or by
+grouping <VAR>y</VAR> with <VAR>z</VAR> first.  <CODE>%left</CODE> specifies
+left-associativity (grouping <VAR>x</VAR> with <VAR>y</VAR> first) and
+<CODE>%right</CODE> specifies right-associativity (grouping <VAR>y</VAR> with
+<VAR>z</VAR> first).  <CODE>%nonassoc</CODE> specifies no associativity, which
+means that <SAMP>`<VAR>x</VAR> <VAR>op</VAR> <VAR>y</VAR> <VAR>op</VAR> <VAR>z</VAR>'</SAMP> is
+considered a syntax error.
+<LI>
+The precedence of an operator determines how it nests with other operators.
+All the tokens declared in a single precedence declaration have equal
+precedence and nest together according to their associativity.
+When two tokens declared in different precedence declarations associate,
+the one declared later has the higher precedence and is grouped first.
+</UL>
+<P>
+<H3><A NAME="SEC52" HREF="bison.html#TOC52">The Collection of Value Types</A></H3>
+<P>
+<A NAME="IDX95"></A>
+<A NAME="IDX96"></A>
+<A NAME="IDX97"></A>
+The <CODE>%union</CODE> declaration specifies the entire collection of possible
+data types for semantic values.  The keyword <CODE>%union</CODE> is followed by a
+pair of braces containing the same thing that goes inside a <CODE>union</CODE> in
+C.  
+For example:
+<PRE>
+%union {
+  double val;
+  symrec *tptr;
+}
+</PRE>
+<P>
+This says that the two alternative types are <CODE>double</CODE> and <CODE>symrec
+*</CODE>.  They are given names <CODE>val</CODE> and <CODE>tptr</CODE>; these names are used
+in the <CODE>%token</CODE> and <CODE>%type</CODE> declarations to pick one of the types
+for a terminal or nonterminal symbol (see section <A HREF="bison.html#SEC53">Nonterminal Symbols</A>).
+Note that, unlike making a <CODE>union</CODE> declaration in C, you do not write
+a semicolon after the closing brace.
+<H3><A NAME="SEC53" HREF="bison.html#TOC53">Nonterminal Symbols</A></H3>
+<P>
+<A NAME="IDX98"></A>
+<A NAME="IDX99"></A>
+<A NAME="IDX100"></A>
+When you use <CODE>%union</CODE> to specify multiple value types, you must
+declare the value type of each nonterminal symbol for which values are
+used.  This is done with a <CODE>%type</CODE> declaration, like this:
+<PRE>
+%type &#60;<VAR>type</VAR>&#62; <VAR>nonterminal</VAR>...
+</PRE>
+<P>
+Here <VAR>nonterminal</VAR> is the name of a nonterminal symbol, and <VAR>type</VAR>
+is the name given in the <CODE>%union</CODE> to the alternative that you want
+(see section <A HREF="bison.html#SEC52">The Collection of Value Types</A>).  You can give any number of nonterminal symbols in
+the same <CODE>%type</CODE> declaration, if they have the same value type.  Use
+spaces to separate the symbol names.
+<H3><A NAME="SEC54" HREF="bison.html#TOC54">Suppressing Conflict Warnings</A></H3>
+<P>
+<A NAME="IDX101"></A>
+<A NAME="IDX102"></A>
+<A NAME="IDX103"></A>
+<A NAME="IDX104"></A>
+<A NAME="IDX105"></A>
+Bison normally warns if there are any conflicts in the grammar
+(see section <A HREF="bison.html#SEC70">Shift/Reduce Conflicts</A>), but most real grammars have harmless shift/reduce
+conflicts which are resolved in a predictable way and would be difficult to
+eliminate.  It is desirable to suppress the warning about these conflicts
+unless the number of conflicts changes.  You can do this with the
+<CODE>%expect</CODE> declaration.
+The declaration looks like this:
+<PRE>
+%expect <VAR>n</VAR>
+</PRE>
+<P>
+Here <VAR>n</VAR> is a decimal integer.  The declaration says there should be no
+warning if there are <VAR>n</VAR> shift/reduce conflicts and no reduce/reduce
+conflicts.  The usual warning is given if there are either more or fewer
+conflicts, or if there are any reduce/reduce conflicts.
+In general, using <CODE>%expect</CODE> involves these steps:
+<UL>
+<LI>
+Compile your grammar without <CODE>%expect</CODE>.  Use the <SAMP>`-v'</SAMP> option
+to get a verbose list of where the conflicts occur.  Bison will also
+print the number of conflicts.
+<LI>
+Check each of the conflicts to make sure that Bison's default
+resolution is what you really want.  If not, rewrite the grammar and
+go back to the beginning.
+<LI>
+Add an <CODE>%expect</CODE> declaration, copying the number <VAR>n</VAR> from the
+number which Bison printed.
+</UL>
+<P>
+Now Bison will stop annoying you about the conflicts you have checked, but
+it will warn you again if changes in the grammar result in additional
+conflicts.
+<H3><A NAME="SEC55" HREF="bison.html#TOC55">The Start-Symbol</A></H3>
+<P>
+<A NAME="IDX106"></A>
+<A NAME="IDX107"></A>
+<A NAME="IDX108"></A>
+<A NAME="IDX109"></A>
+Bison assumes by default that the start symbol for the grammar is the first
+nonterminal specified in the grammar specification section.  The programmer
+may override this restriction with the <CODE>%start</CODE> declaration as follows:
+<PRE>
+%start <VAR>symbol</VAR>
+</PRE>
+<P>
+<H3><A NAME="SEC56" HREF="bison.html#TOC56">A Pure (Reentrant) Parser</A></H3>
+<P>
+<A NAME="IDX110"></A>
+<A NAME="IDX111"></A>
+<A NAME="IDX112"></A>
+A <EM>reentrant</EM> program is one which does not alter in the course of
+execution; in other words, it consists entirely of <EM>pure</EM> (read-only)
+code.  Reentrancy is important whenever asynchronous execution is possible;
+for example, a nonreentrant program may not be safe to call from a signal
+handler.  In systems with multiple threads of control, a nonreentrant
+program must be called only within interlocks.
+The Bison parser is not normally a reentrant program, because it uses
+statically allocated variables for communication with <CODE>yylex</CODE>.  These
+variables include <CODE>yylval</CODE> and <CODE>yylloc</CODE>.
+The Bison declaration <CODE>%pure_parser</CODE> says that you want the parser
+to be reentrant.  It looks like this:
+<PRE>
+%pure_parser
+</PRE>
+<P>
+The effect is that the two communication variables become local
+variables in <CODE>yyparse</CODE>, and a different calling convention is used
+for the lexical analyzer function <CODE>yylex</CODE>.  See section <A HREF="bison.html#SEC65">Calling Conventions for Pure Parsers</A>, for the details of this.  The
+variable <CODE>yynerrs</CODE> also becomes local in <CODE>yyparse</CODE>
+(see section <A HREF="bison.html#SEC66">The Error Reporting Function <CODE>yyerror</CODE></A>).
+The convention for calling <CODE>yyparse</CODE> itself is unchanged.
+<H3><A NAME="SEC57" HREF="bison.html#TOC57">Bison Declaration Summary</A></H3>
+<P>
+<A NAME="IDX113"></A>
+<A NAME="IDX114"></A>
+<A NAME="IDX115"></A>
+Here is a summary of all Bison declarations:
+<DL COMPACT>
+<DT><CODE>%union</CODE>
+<DD>
+Declare the collection of data types that semantic values may have
+(see section <A HREF="bison.html#SEC52">The Collection of Value Types</A>).
+<DT><CODE>%token</CODE>
+<DD>
+Declare a terminal symbol (token type name) with no precedence
+or associativity specified (see section <A HREF="bison.html#SEC50">Token Type Names</A>).
+<DT><CODE>%right</CODE>
+<DD>
+Declare a terminal symbol (token type name) that is right-associative
+(see section <A HREF="bison.html#SEC51">Operator Precedence</A>).
+<DT><CODE>%left</CODE>
+<DD>
+Declare a terminal symbol (token type name) that is left-associative
+(see section <A HREF="bison.html#SEC51">Operator Precedence</A>).
+<DT><CODE>%nonassoc</CODE>
+<DD>
+Declare a terminal symbol (token type name) that is nonassociative
+(using it in a way that would be associative is a syntax error)
+(see section <A HREF="bison.html#SEC51">Operator Precedence</A>).
+<DT><CODE>%type</CODE>
+<DD>
+Declare the type of semantic values for a nonterminal symbol
+(see section <A HREF="bison.html#SEC53">Nonterminal Symbols</A>).
+<DT><CODE>%start</CODE>
+<DD>
+Specify the grammar's start symbol (see section <A HREF="bison.html#SEC55">The Start-Symbol</A>).
+<DT><CODE>%expect</CODE>
+<DD>
+Declare the expected number of shift-reduce conflicts
+(see section <A HREF="bison.html#SEC54">Suppressing Conflict Warnings</A>).
+<DT><CODE>%pure_parser</CODE>
+<DD>
+Request a pure (reentrant) parser program (see section <A HREF="bison.html#SEC56">A Pure (Reentrant) Parser</A>).
+</DL>
+<P>
+<H2><A NAME="SEC58" HREF="bison.html#TOC58">Multiple Parsers in the Same Program</A></H2>
+<P>
+Most programs that use Bison parse only one language and therefore contain
+only one Bison parser.  But what if you want to parse more than one
+language with the same program?  Then you need to avoid a name conflict
+between different definitions of <CODE>yyparse</CODE>, <CODE>yylval</CODE>, and so on.
+The easy way to do this is to use the option <SAMP>`-p <VAR>prefix</VAR>'</SAMP>
+(see section <A HREF="bison.html#SEC87">Invoking Bison</A>).  This renames the interface functions and
+variables of the Bison parser to start with <VAR>prefix</VAR> instead of
+<SAMP>`yy'</SAMP>.  You can use this to give each parser distinct names that do
+not conflict.
+The precise list of symbols renamed is <CODE>yyparse</CODE>, <CODE>yylex</CODE>,
+<CODE>yyerror</CODE>, <CODE>yynerrs</CODE>, <CODE>yylval</CODE>, <CODE>yychar</CODE> and
+<CODE>yydebug</CODE>.  For example, if you use <SAMP>`-p c'</SAMP>, the names become
+<CODE>cparse</CODE>, <CODE>clex</CODE>, and so on.
+<STRONG>All the other variables and macros associated with Bison are not
+renamed.</STRONG> These others are not global; there is no conflict if the same
+name is used in different parsers.  For example, <CODE>YYSTYPE</CODE> is not
+renamed, but defining this in different ways in different parsers causes
+no trouble (see section <A HREF="bison.html#SEC44">Data Types of Semantic Values</A>).
+The <SAMP>`-p'</SAMP> option works by adding macro definitions to the beginning
+of the parser source file, defining <CODE>yyparse</CODE> as
+<CODE><VAR>prefix</VAR>parse</CODE>, and so on.  This effectively substitutes one
+name for the other in the entire parser file.
+<H1><A NAME="SEC59" HREF="bison.html#TOC59">Parser C-Language Interface</A></H1>
+<P>
+<A NAME="IDX116"></A>
+<A NAME="IDX117"></A>
+The Bison parser is actually a C function named <CODE>yyparse</CODE>.  Here we
+describe the interface conventions of <CODE>yyparse</CODE> and the other
+functions that it needs to use.
+Keep in mind that the parser uses many C identifiers starting with
+<SAMP>`yy'</SAMP> and <SAMP>`YY'</SAMP> for internal purposes.  If you use such an
+identifier (aside from those in this manual) in an action or in additional
+C code in the grammar file, you are likely to run into trouble.
+<H2><A NAME="SEC60" HREF="bison.html#TOC60">The Parser Function <CODE>yyparse</CODE></A></H2>
+<P>
+<A NAME="IDX118"></A>
+You call the function <CODE>yyparse</CODE> to cause parsing to occur.  This
+function reads tokens, executes actions, and ultimately returns when it
+encounters end-of-input or an unrecoverable syntax error.  You can also
+write an action which directs <CODE>yyparse</CODE> to return immediately without
+reading further.
+The value returned by <CODE>yyparse</CODE> is 0 if parsing was successful (return
+is due to end-of-input).
+The value is 1 if parsing failed (return is due to a syntax error).
+In an action, you can cause immediate return from <CODE>yyparse</CODE> by using
+these macros:
+<DL COMPACT>
+<DT><CODE>YYACCEPT</CODE>
+<DD>
+<A NAME="IDX119"></A>
+Return immediately with value 0 (to report success).
+<DT><CODE>YYABORT</CODE>
+<DD>
+<A NAME="IDX120"></A>
+Return immediately with value 1 (to report failure).
+</DL>
+<P>
+<H2><A NAME="SEC61" HREF="bison.html#TOC61">The Lexical Analyzer Function <CODE>yylex</CODE></A></H2>
+<P>
+<A NAME="IDX121"></A>
+<A NAME="IDX122"></A>
+The <EM>lexical analyzer</EM> function, <CODE>yylex</CODE>, recognizes tokens from
+the input stream and returns them to the parser.  Bison does not create
+this function automatically; you must write it so that <CODE>yyparse</CODE> can
+call it.  The function is sometimes referred to as a lexical scanner.
+In simple programs, <CODE>yylex</CODE> is often defined at the end of the Bison
+grammar file.  If <CODE>yylex</CODE> is defined in a separate source file, you
+need to arrange for the token-type macro definitions to be available there.
+To do this, use the <SAMP>`-d'</SAMP> option when you run Bison, so that it will
+write these macro definitions into a separate header file
+<TT>`<VAR>name</VAR>.tab.h'</TT> which you can include in the other source files
+that need it.  See section <A HREF="bison.html#SEC87">Invoking Bison</A>.
+<H3><A NAME="SEC62" HREF="bison.html#TOC62">Calling Convention for <CODE>yylex</CODE></A></H3>
+<P>
+The value that <CODE>yylex</CODE> returns must be the numeric code for the type
+of token it has just found, or 0 for end-of-input.
+When a token is referred to in the grammar rules by a name, that name
+in the parser file becomes a C macro whose definition is the proper
+numeric code for that token type.  So <CODE>yylex</CODE> can use the name
+to indicate that type.  See section <A HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>.
+When a token is referred to in the grammar rules by a character literal,
+the numeric code for that character is also the code for the token type.
+So <CODE>yylex</CODE> can simply return that character code.  The null character
+must not be used this way, because its code is zero and that is what
+signifies end-of-input.
+Here is an example showing these things:
+<PRE>
+yylex ()
+{
+  ...
+  if (c == EOF)     /* Detect end of file. */
+    return 0;
+  ...
+  if (c == '+' || c == '-')
+    return c;      /* Assume token type for `+' is '+'. */
+  ...
+  return INT;      /* Return the type of the token. */
+  ...
+}
+</PRE>
+<P>
+This interface has been designed so that the output from the <CODE>lex</CODE>
+utility can be used without change as the definition of <CODE>yylex</CODE>.
+<H3><A NAME="SEC63" HREF="bison.html#TOC63">Semantic Values of Tokens</A></H3>
+<P>
+<A NAME="IDX123"></A>
+In an ordinary (nonreentrant) parser, the semantic value of the token must
+be stored into the global variable <CODE>yylval</CODE>.  When you are using
+just one data type for semantic values, <CODE>yylval</CODE> has that type.
+Thus, if the type is <CODE>int</CODE> (the default), you might write this in
+<CODE>yylex</CODE>:
+<PRE>
+  ...
+  yylval = value;  /* Put value onto Bison stack. */
+  return INT;      /* Return the type of the token. */
+  ...
+</PRE>
+<P>
+When you are using multiple data types, <CODE>yylval</CODE>'s type is a union
+made from the <CODE>%union</CODE> declaration (see section <A HREF="bison.html#SEC52">The Collection of Value Types</A>).  So when
+you store a token's value, you must use the proper member of the union.
+If the <CODE>%union</CODE> declaration looks like this:
+<PRE>
+%union {
+  int intval;
+  double val;
+  symrec *tptr;
+}
+</PRE>
+<P>
+then the code in <CODE>yylex</CODE> might look like this:
+<PRE>
+  ...
+  yylval.intval = value; /* Put value onto Bison stack. */
+  return INT;          /* Return the type of the token. */
+  ...
+</PRE>
+<P>
+<H3><A NAME="SEC64" HREF="bison.html#TOC64">Textual Positions of Tokens</A></H3>
+<P>
+<A NAME="IDX124"></A>
+If you are using the <SAMP>`@<VAR>n</VAR>'</SAMP>-feature (see section <A HREF="bison.html#SEC67">Special Features for Use in Actions</A>) in
+actions to keep track of the textual locations of tokens and groupings,
+then you must provide this information in <CODE>yylex</CODE>.  The function
+<CODE>yyparse</CODE> expects to find the textual location of a token just parsed
+in the global variable <CODE>yylloc</CODE>.  So <CODE>yylex</CODE> must store the
+proper data in that variable.  The value of <CODE>yylloc</CODE> is a structure
+and you need only initialize the members that are going to be used by the
+actions.  The four members are called <CODE>first_line</CODE>,
+<CODE>first_column</CODE>, <CODE>last_line</CODE> and <CODE>last_column</CODE>.  Note that
+the use of this feature makes the parser noticeably slower.
+<A NAME="IDX125"></A>
+The data type of <CODE>yylloc</CODE> has the name <CODE>YYLTYPE</CODE>.
+<H3><A NAME="SEC65" HREF="bison.html#TOC65">Calling Conventions for Pure Parsers</A></H3>
+<P>
+When you use the Bison declaration <CODE>%pure_parser</CODE> to request a
+pure, reentrant parser, the global communication variables <CODE>yylval</CODE>
+and <CODE>yylloc</CODE> cannot be used.  (See section <A HREF="bison.html#SEC56">A Pure (Reentrant) Parser</A>.)  In such parsers the two global variables are replaced by
+pointers passed as arguments to <CODE>yylex</CODE>.  You must declare them as
+shown here, and pass the information back by storing it through those
+pointers.
+<PRE>
+yylex (lvalp, llocp)
+     YYSTYPE *lvalp;
+     YYLTYPE *llocp;
+{
+  ...
+  *lvalp = value;  /* Put value onto Bison stack.  */
+  return INT;      /* Return the type of the token.  */
+  ...
+}
+</PRE>
+<P>
+If the grammar file does not use the <SAMP>`@'</SAMP> constructs to refer to
+textual positions, then the type <CODE>YYLTYPE</CODE> will not be defined.  In
+this case, omit the second argument; <CODE>yylex</CODE> will be called with
+only one argument.
+<A NAME="IDX126"></A>
+You can pass parameter information to a reentrant parser in a reentrant
+way.  Define the macro <CODE>YYPARSE_PARAM</CODE> as a variable name.  The
+resulting <CODE>yyparse</CODE> function then accepts one argument, of type
+<CODE>void *</CODE>, with that name.
+When you call <CODE>yyparse</CODE>, pass the address of an object, casting the
+address to <CODE>void *</CODE>.  The grammar actions can refer to the contents
+of the object by casting the pointer value back to its proper type and
+then dereferencing it.  Here's an example.  Write this in the parser:
+<PRE>
+%{
+struct parser_control
+{
+  int nastiness;
+  int randomness;
+};
+#define YYPARSE_PARAM parm
+%}
+</PRE>
+<P>
+Then call the parser like this:
+<PRE>
+struct parser_control
+{
+  int nastiness;
+  int randomness;
+};
+...
+{
+  struct parser_control foo;
+  ...  /* Store proper data in <CODE>foo</CODE>.  */
+  value = yyparse ((void *) &#38;foo);
+  ...
+}
+</PRE>
+<P>
+In the grammar actions, use expressions like this to refer to the data:
+<PRE>
+((struct parser_control *) parm)-&#62;randomness
+</PRE>
+<P>
+<A NAME="IDX127"></A>
+If you wish to pass the additional parameter data to <CODE>yylex</CODE>,
+define the macro <CODE>YYLEX_PARAM</CODE> just like <CODE>YYPARSE_PARAM</CODE>, as
+shown here:
+<PRE>
+%{
+struct parser_control
+{
+  int nastiness;
+  int randomness;
+};
+#define YYPARSE_PARAM parm
+#define YYLEX_PARAM parm
+%}
+</PRE>
+<P>
+You should then define <CODE>yylex</CODE> to accept one additional
+argument--the value of <CODE>parm</CODE>.  (This makes either two or three
+arguments in total, depending on whether an argument of type
+<CODE>YYLTYPE</CODE> is passed.)  You can declare the argument as a pointer to
+the proper object type, or you can declare it as <CODE>void *</CODE> and
+access the contents as shown above.
+<H2><A NAME="SEC66" HREF="bison.html#TOC66">The Error Reporting Function <CODE>yyerror</CODE></A></H2>
+<P>
+<A NAME="IDX128"></A>
+<A NAME="IDX129"></A>
+<A NAME="IDX130"></A>
+<A NAME="IDX131"></A>
+The Bison parser detects a <EM>parse error</EM> or <EM>syntax error</EM>
+whenever it reads a token which cannot satisfy any syntax rule.  A
+action in the grammar can also explicitly proclaim an error, using the
+macro <CODE>YYERROR</CODE> (see section <A HREF="bison.html#SEC67">Special Features for Use in Actions</A>).
+The Bison parser expects to report the error by calling an error
+reporting function named <CODE>yyerror</CODE>, which you must supply.  It is
+called by <CODE>yyparse</CODE> whenever a syntax error is found, and it
+receives one argument.  For a parse error, the string is normally
+<CODE>"parse error"</CODE>.
+<A NAME="IDX132"></A>
+If you define the macro <CODE>YYERROR_VERBOSE</CODE> in the Bison declarations
+section (see section <A HREF="bison.html#SEC37">The Bison Declarations Section</A>), then Bison provides a more verbose
+and specific error message string instead of just plain <CODE>"parse
+error"</CODE>.  It doesn't matter what definition you use for
+<CODE>YYERROR_VERBOSE</CODE>, just whether you define it.
+The parser can detect one other kind of error: stack overflow.  This
+happens when the input contains constructions that are very deeply
+nested.  It isn't likely you will encounter this, since the Bison
+parser extends its stack automatically up to a very large limit.  But
+if overflow happens, <CODE>yyparse</CODE> calls <CODE>yyerror</CODE> in the usual
+fashion, except that the argument string is <CODE>"parser stack
+overflow"</CODE>.
+The following definition suffices in simple programs:
+<PRE>
+yyerror (s)
+     char *s;
+{
+  fprintf (stderr, "%s\n", s);
+}
+</PRE>
+<P>
+After <CODE>yyerror</CODE> returns to <CODE>yyparse</CODE>, the latter will attempt
+error recovery if you have written suitable error recovery grammar rules
+(see section <A HREF="bison.html#SEC81">Error Recovery</A>).  If recovery is impossible, <CODE>yyparse</CODE> will
+immediately return 1.
+<A NAME="IDX133"></A>
+The variable <CODE>yynerrs</CODE> contains the number of syntax errors
+encountered so far.  Normally this variable is global; but if you
+request a pure parser (see section <A HREF="bison.html#SEC56">A Pure (Reentrant) Parser</A>) then it is a local variable
+which only the actions can access.
+<H2><A NAME="SEC67" HREF="bison.html#TOC67">Special Features for Use in Actions</A></H2>
+<P>
+<A NAME="IDX134"></A>
+<A NAME="IDX135"></A>
+Here is a table of Bison constructs, variables and macros that
+are useful in actions.
+<DL COMPACT>
+<DT><SAMP>`$$'</SAMP>
+<DD>
+Acts like a variable that contains the semantic value for the
+grouping made by the current rule.  See section <A HREF="bison.html#SEC46">Actions</A>.
+<DT><SAMP>`$<VAR>n</VAR>'</SAMP>
+<DD>
+Acts like a variable that contains the semantic value for the
+<VAR>n</VAR>th component of the current rule.  See section <A HREF="bison.html#SEC46">Actions</A>.
+<DT><SAMP>`$&#60;<VAR>typealt</VAR>&#62;$'</SAMP>
+<DD>
+Like <CODE>$$</CODE> but specifies alternative <VAR>typealt</VAR> in the union
+specified by the <CODE>%union</CODE> declaration.  See section <A HREF="bison.html#SEC47">Data Types of Values in Actions</A>.
+<DT><SAMP>`$&#60;<VAR>typealt</VAR>&#62;<VAR>n</VAR>'</SAMP>
+<DD>
+Like <CODE>$<VAR>n</VAR></CODE> but specifies alternative <VAR>typealt</VAR> in the
+union specified by the <CODE>%union</CODE> declaration.  
+See section <A HREF="bison.html#SEC47">Data Types of Values in Actions</A>.
+<DT><SAMP>`YYABORT;'</SAMP>
+<DD>
+Return immediately from <CODE>yyparse</CODE>, indicating failure.
+See section <A HREF="bison.html#SEC60">The Parser Function <CODE>yyparse</CODE></A>.
+<DT><SAMP>`YYACCEPT;'</SAMP>
+<DD>
+Return immediately from <CODE>yyparse</CODE>, indicating success.
+See section <A HREF="bison.html#SEC60">The Parser Function <CODE>yyparse</CODE></A>.
+<DT><SAMP>`YYBACKUP (<VAR>token</VAR>, <VAR>value</VAR>);'</SAMP>
+<DD>
+<A NAME="IDX136"></A>
+Unshift a token.  This macro is allowed only for rules that reduce
+a single value, and only when there is no look-ahead token.
+It installs a look-ahead token with token type <VAR>token</VAR> and
+semantic value <VAR>value</VAR>; then it discards the value that was
+going to be reduced by this rule.
+If the macro is used when it is not valid, such as when there is
+a look-ahead token already, then it reports a syntax error with
+a message <SAMP>`cannot back up'</SAMP> and performs ordinary error
+recovery.
+In either case, the rest of the action is not executed.
+<DT><SAMP>`YYEMPTY'</SAMP>
+<DD>
+<A NAME="IDX137"></A>
+Value stored in <CODE>yychar</CODE> when there is no look-ahead token.
+<DT><SAMP>`YYERROR;'</SAMP>
+<DD>
+<A NAME="IDX138"></A>
+Cause an immediate syntax error.  This statement initiates error
+recovery just as if the parser itself had detected an error; however, it
+does not call <CODE>yyerror</CODE>, and does not print any message.  If you
+want to print an error message, call <CODE>yyerror</CODE> explicitly before
+the <SAMP>`YYERROR;'</SAMP> statement.  See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><SAMP>`YYRECOVERING'</SAMP>
+<DD>
+This macro stands for an expression that has the value 1 when the parser
+is recovering from a syntax error, and 0 the rest of the time.
+See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><SAMP>`yychar'</SAMP>
+<DD>
+Variable containing the current look-ahead token.  (In a pure parser,
+this is actually a local variable within <CODE>yyparse</CODE>.)  When there is
+no look-ahead token, the value <CODE>YYEMPTY</CODE> is stored in the variable.
+See section <A HREF="bison.html#SEC69">Look-Ahead Tokens</A>.
+<DT><SAMP>`yyclearin;'</SAMP>
+<DD>
+Discard the current look-ahead token.  This is useful primarily in
+error rules.  See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><SAMP>`yyerrok;'</SAMP>
+<DD>
+Resume generating error messages immediately for subsequent syntax
+errors.  This is useful primarily in error rules.  
+See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><SAMP>`@<VAR>n</VAR>'</SAMP>
+<DD>
+<A NAME="IDX139"></A>
+Acts like a structure variable containing information on the line
+numbers and column numbers of the <VAR>n</VAR>th component of the current
+rule.  The structure has four members, like this:
+<PRE>
+struct {
+  int first_line, last_line;
+  int first_column, last_column;
+};
+</PRE>
+Thus, to get the starting line number of the third component, use
+<SAMP>`@3.first_line'</SAMP>.
+In order for the members of this structure to contain valid information,
+you must make <CODE>yylex</CODE> supply this information about each token.
+If you need only certain members, then <CODE>yylex</CODE> need only fill in
+those members.
+The use of this feature makes the parser noticeably slower.
+</DL>
+<P>
+<H1><A NAME="SEC68" HREF="bison.html#TOC68">The Bison Parser Algorithm</A></H1>
+<P>
+<A NAME="IDX140"></A>
+<A NAME="IDX141"></A>
+<A NAME="IDX142"></A>
+<A NAME="IDX143"></A>
+<A NAME="IDX144"></A>
+<A NAME="IDX145"></A>
+As Bison reads tokens, it pushes them onto a stack along with their
+semantic values.  The stack is called the <EM>parser stack</EM>.  Pushing a
+token is traditionally called <EM>shifting</EM>.
+For example, suppose the infix calculator has read <SAMP>`1 + 5 *'</SAMP>, with a
+<SAMP>`3'</SAMP> to come.  The stack will have four elements, one for each token
+that was shifted.
+But the stack does not always have an element for each token read.  When
+the last <VAR>n</VAR> tokens and groupings shifted match the components of a
+grammar rule, they can be combined according to that rule.  This is called
+<EM>reduction</EM>.  Those tokens and groupings are replaced on the stack by a
+single grouping whose symbol is the result (left hand side) of that rule.
+Running the rule's action is part of the process of reduction, because this
+is what computes the semantic value of the resulting grouping.
+For example, if the infix calculator's parser stack contains this:
+<PRE>
+1 + 5 * 3
+</PRE>
+<P>
+and the next input token is a newline character, then the last three
+elements can be reduced to 15 via the rule:
+<PRE>
+expr: expr '*' expr;
+</PRE>
+<P>
+Then the stack contains just these three elements:
+<PRE>
+1 + 15
+</PRE>
+<P>
+At this point, another reduction can be made, resulting in the single value
+16.  Then the newline token can be shifted.
+The parser tries, by shifts and reductions, to reduce the entire input down
+to a single grouping whose symbol is the grammar's start-symbol
+(see section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>).
+This kind of parser is known in the literature as a bottom-up parser.
+<H2><A NAME="SEC69" HREF="bison.html#TOC69">Look-Ahead Tokens</A></H2>
+<P>
+<A NAME="IDX146"></A>
+The Bison parser does <EM>not</EM> always reduce immediately as soon as the
+last <VAR>n</VAR> tokens and groupings match a rule.  This is because such a
+simple strategy is inadequate to handle most languages.  Instead, when a
+reduction is possible, the parser sometimes "looks ahead" at the next
+token in order to decide what to do.
+When a token is read, it is not immediately shifted; first it becomes the
+<EM>look-ahead token</EM>, which is not on the stack.  Now the parser can
+perform one or more reductions of tokens and groupings on the stack, while
+the look-ahead token remains off to the side.  When no more reductions
+should take place, the look-ahead token is shifted onto the stack.  This
+does not mean that all possible reductions have been done; depending on the
+token type of the look-ahead token, some rules may choose to delay their
+application.
+Here is a simple case where look-ahead is needed.  These three rules define
+expressions which contain binary addition operators and postfix unary
+factorial operators (<SAMP>`!'</SAMP>), and allow parentheses for grouping.
+<PRE>
+expr:     term '+' expr
+        | term
+        ;
+term:     '(' expr ')'
+        | term '!'
+        | NUMBER
+        ;
+</PRE>
+<P>
+Suppose that the tokens <SAMP>`1 + 2'</SAMP> have been read and shifted; what
+should be done?  If the following token is <SAMP>`)'</SAMP>, then the first three
+tokens must be reduced to form an <CODE>expr</CODE>.  This is the only valid
+course, because shifting the <SAMP>`)'</SAMP> would produce a sequence of symbols
+<CODE>term ')'</CODE>, and no rule allows this.
+If the following token is <SAMP>`!'</SAMP>, then it must be shifted immediately so
+that <SAMP>`2 !'</SAMP> can be reduced to make a <CODE>term</CODE>.  If instead the
+parser were to reduce before shifting, <SAMP>`1 + 2'</SAMP> would become an
+<CODE>expr</CODE>.  It would then be impossible to shift the <SAMP>`!'</SAMP> because
+doing so would produce on the stack the sequence of symbols <CODE>expr
+'!'</CODE>.  No rule allows that sequence.
+<A NAME="IDX147"></A>
+The current look-ahead token is stored in the variable <CODE>yychar</CODE>.
+See section <A HREF="bison.html#SEC67">Special Features for Use in Actions</A>.
+<H2><A NAME="SEC70" HREF="bison.html#TOC70">Shift/Reduce Conflicts</A></H2>
+<P>
+<A NAME="IDX148"></A>
+<A NAME="IDX149"></A>
+<A NAME="IDX150"></A>
+<A NAME="IDX151"></A>
+Suppose we are parsing a language which has if-then and if-then-else
+statements, with a pair of rules like this:
+<PRE>
+if_stmt:
+          IF expr THEN stmt
+        | IF expr THEN stmt ELSE stmt
+        ;
+</PRE>
+<P>
+Here we assume that <CODE>IF</CODE>, <CODE>THEN</CODE> and <CODE>ELSE</CODE> are
+terminal symbols for specific keyword tokens.
+When the <CODE>ELSE</CODE> token is read and becomes the look-ahead token, the
+contents of the stack (assuming the input is valid) are just right for
+reduction by the first rule.  But it is also legitimate to shift the
+<CODE>ELSE</CODE>, because that would lead to eventual reduction by the second
+rule.
+This situation, where either a shift or a reduction would be valid, is
+called a <EM>shift/reduce conflict</EM>.  Bison is designed to resolve
+these conflicts by choosing to shift, unless otherwise directed by
+operator precedence declarations.  To see the reason for this, let's
+contrast it with the other alternative.
+Since the parser prefers to shift the <CODE>ELSE</CODE>, the result is to attach
+the else-clause to the innermost if-statement, making these two inputs
+equivalent:
+<PRE>
+if x then if y then win (); else lose;
+if x then do; if y then win (); else lose; end;
+</PRE>
+<P>
+But if the parser chose to reduce when possible rather than shift, the
+result would be to attach the else-clause to the outermost if-statement,
+making these two inputs equivalent:
+<PRE>
+if x then if y then win (); else lose;
+if x then do; if y then win (); end; else lose;
+</PRE>
+<P>
+The conflict exists because the grammar as written is ambiguous: either
+parsing of the simple nested if-statement is legitimate.  The established
+convention is that these ambiguities are resolved by attaching the
+else-clause to the innermost if-statement; this is what Bison accomplishes
+by choosing to shift rather than reduce.  (It would ideally be cleaner to
+write an unambiguous grammar, but that is very hard to do in this case.)
+This particular ambiguity was first encountered in the specifications of
+Algol 60 and is called the "dangling <CODE>else</CODE>" ambiguity.
+To avoid warnings from Bison about predictable, legitimate shift/reduce
+conflicts, use the <CODE>%expect <VAR>n</VAR></CODE> declaration.  There will be no
+warning as long as the number of shift/reduce conflicts is exactly <VAR>n</VAR>.
+See section <A HREF="bison.html#SEC54">Suppressing Conflict Warnings</A>.
+The definition of <CODE>if_stmt</CODE> above is solely to blame for the
+conflict, but the conflict does not actually appear without additional
+rules.  Here is a complete Bison input file that actually manifests the
+conflict:
+<PRE>
+%token IF THEN ELSE variable
+%%
+stmt:     expr
+        | if_stmt
+        ;
+if_stmt:
+          IF expr THEN stmt
+        | IF expr THEN stmt ELSE stmt
+        ;
+expr:     variable
+        ;
+</PRE>
+<P>
+<H2><A NAME="SEC71" HREF="bison.html#TOC71">Operator Precedence</A></H2>
+<P>
+<A NAME="IDX152"></A>
+<A NAME="IDX153"></A>
+Another situation where shift/reduce conflicts appear is in arithmetic
+expressions.  Here shifting is not always the preferred resolution; the
+Bison declarations for operator precedence allow you to specify when to
+shift and when to reduce.
+<H3><A NAME="SEC72" HREF="bison.html#TOC72">When Precedence is Needed</A></H3>
+<P>
+Consider the following ambiguous grammar fragment (ambiguous because the
+input <SAMP>`1 - 2 * 3'</SAMP> can be parsed in two different ways):
+<PRE>
+expr:     expr '-' expr
+        | expr '*' expr
+        | expr '&#60;' expr
+        | '(' expr ')'
+        ...
+        ;
+</PRE>
+<P>
+Suppose the parser has seen the tokens <SAMP>`1'</SAMP>, <SAMP>`-'</SAMP> and <SAMP>`2'</SAMP>;
+should it reduce them via the rule for the addition operator?  It depends
+on the next token.  Of course, if the next token is <SAMP>`)'</SAMP>, we must
+reduce; shifting is invalid because no single rule can reduce the token
+sequence <SAMP>`- 2 )'</SAMP> or anything starting with that.  But if the next
+token is <SAMP>`*'</SAMP> or <SAMP>`&#60;'</SAMP>, we have a choice: either shifting or
+reduction would allow the parse to complete, but with different
+results.
+To decide which one Bison should do, we must consider the
+results.  If the next operator token <VAR>op</VAR> is shifted, then it
+must be reduced first in order to permit another opportunity to
+reduce the sum.  The result is (in effect) <SAMP>`1 - (2
+<VAR>op</VAR> 3)'</SAMP>.  On the other hand, if the subtraction is reduced
+before shifting <VAR>op</VAR>, the result is <SAMP>`(1 - 2) <VAR>op</VAR>
+3'</SAMP>.  Clearly, then, the choice of shift or reduce should depend
+on the relative precedence of the operators <SAMP>`-'</SAMP> and
+<VAR>op</VAR>: <SAMP>`*'</SAMP> should be shifted first, but not <SAMP>`&#60;'</SAMP>.
+<A NAME="IDX154"></A>
+What about input such as <SAMP>`1 - 2 - 5'</SAMP>; should this be
+<SAMP>`(1 - 2) - 5'</SAMP> or should it be <SAMP>`1 - (2 - 5)'</SAMP>?  For
+most operators we prefer the former, which is called <EM>left
+association</EM>.  The latter alternative, <EM>right association</EM>, is
+desirable for assignment operators.  The choice of left or right
+association is a matter of whether the parser chooses to shift or
+reduce when the stack contains <SAMP>`1 - 2'</SAMP> and the look-ahead
+token is <SAMP>`-'</SAMP>: shifting makes right-associativity.
+<H3><A NAME="SEC73" HREF="bison.html#TOC73">Specifying Operator Precedence</A></H3>
+<P>
+<A NAME="IDX155"></A>
+<A NAME="IDX156"></A>
+<A NAME="IDX157"></A>
+Bison allows you to specify these choices with the operator precedence
+declarations <CODE>%left</CODE> and <CODE>%right</CODE>.  Each such declaration
+contains a list of tokens, which are operators whose precedence and
+associativity is being declared.  The <CODE>%left</CODE> declaration makes all
+those operators left-associative and the <CODE>%right</CODE> declaration makes
+them right-associative.  A third alternative is <CODE>%nonassoc</CODE>, which
+declares that it is a syntax error to find the same operator twice "in a
+row".
+The relative precedence of different operators is controlled by the
+order in which they are declared.  The first <CODE>%left</CODE> or
+<CODE>%right</CODE> declaration in the file declares the operators whose
+precedence is lowest, the next such declaration declares the operators
+whose precedence is a little higher, and so on.
+<H3><A NAME="SEC74" HREF="bison.html#TOC74">Precedence Examples</A></H3>
+<P>
+In our example, we would want the following declarations:
+<PRE>
+%left '&#60;'
+%left '-'
+%left '*'
+</PRE>
+<P>
+In a more complete example, which supports other operators as well, we
+would declare them in groups of equal precedence.  For example, <CODE>'+'</CODE> is
+declared with <CODE>'-'</CODE>:
+<PRE>
+%left '&#60;' '&#62;' '=' NE LE GE
+%left '+' '-'
+%left '*' '/'
+</PRE>
+<P>
+(Here <CODE>NE</CODE> and so on stand for the operators for "not equal"
+and so on.  We assume that these tokens are more than one character long
+and therefore are represented by names, not character literals.)
+<H3><A NAME="SEC75" HREF="bison.html#TOC75">How Precedence Works</A></H3>
+<P>
+The first effect of the precedence declarations is to assign precedence
+levels to the terminal symbols declared.  The second effect is to assign
+precedence levels to certain rules: each rule gets its precedence from the
+last terminal symbol mentioned in the components.  (You can also specify
+explicitly the precedence of a rule.  See section <A HREF="bison.html#SEC76">Context-Dependent Precedence</A>.)
+Finally, the resolution of conflicts works by comparing the
+precedence of the rule being considered with that of the
+look-ahead token.  If the token's precedence is higher, the
+choice is to shift.  If the rule's precedence is higher, the
+choice is to reduce.  If they have equal precedence, the choice
+is made based on the associativity of that precedence level.  The
+verbose output file made by <SAMP>`-v'</SAMP> (see section <A HREF="bison.html#SEC87">Invoking Bison</A>) says
+how each conflict was resolved.
+Not all rules and not all tokens have precedence.  If either the rule or
+the look-ahead token has no precedence, then the default is to shift.
+<H2><A NAME="SEC76" HREF="bison.html#TOC76">Context-Dependent Precedence</A></H2>
+<P>
+<A NAME="IDX158"></A>
+<A NAME="IDX159"></A>
+<A NAME="IDX160"></A>
+<A NAME="IDX161"></A>
+<A NAME="IDX162"></A>
+Often the precedence of an operator depends on the context.  This sounds
+outlandish at first, but it is really very common.  For example, a minus
+sign typically has a very high precedence as a unary operator, and a
+somewhat lower precedence (lower than multiplication) as a binary operator.
+The Bison precedence declarations, <CODE>%left</CODE>, <CODE>%right</CODE> and
+<CODE>%nonassoc</CODE>, can only be used once for a given token; so a token has
+only one precedence declared in this way.  For context-dependent
+precedence, you need to use an additional mechanism: the <CODE>%prec</CODE>
+modifier for rules.
+The <CODE>%prec</CODE> modifier declares the precedence of a particular rule by
+specifying a terminal symbol whose precedence should be used for that rule.
+It's not necessary for that symbol to appear otherwise in the rule.  The
+modifier's syntax is:
+<PRE>
+%prec <VAR>terminal-symbol</VAR>
+</PRE>
+<P>
+and it is written after the components of the rule.  Its effect is to
+assign the rule the precedence of <VAR>terminal-symbol</VAR>, overriding
+the precedence that would be deduced for it in the ordinary way.  The
+altered rule precedence then affects how conflicts involving that rule
+are resolved (see section <A HREF="bison.html#SEC71">Operator Precedence</A>).
+Here is how <CODE>%prec</CODE> solves the problem of unary minus.  First, declare
+a precedence for a fictitious terminal symbol named <CODE>UMINUS</CODE>.  There
+are no tokens of this type, but the symbol serves to stand for its
+precedence:
+<PRE>
+...
+%left '+' '-'
+%left '*'
+%left UMINUS
+</PRE>
+<P>
+Now the precedence of <CODE>UMINUS</CODE> can be used in specific rules:
+<PRE>
+exp:    ...
+        | exp '-' exp
+        ...
+        | '-' exp %prec UMINUS
+</PRE>
+<P>
+<H2><A NAME="SEC77" HREF="bison.html#TOC77">Parser States</A></H2>
+<P>
+<A NAME="IDX163"></A>
+<A NAME="IDX164"></A>
+<A NAME="IDX165"></A>
+The function <CODE>yyparse</CODE> is implemented using a finite-state machine.
+The values pushed on the parser stack are not simply token type codes; they
+represent the entire sequence of terminal and nonterminal symbols at or
+near the top of the stack.  The current state collects all the information
+about previous input which is relevant to deciding what to do next.
+Each time a look-ahead token is read, the current parser state together
+with the type of look-ahead token are looked up in a table.  This table
+entry can say, "Shift the look-ahead token."  In this case, it also
+specifies the new parser state, which is pushed onto the top of the
+parser stack.  Or it can say, "Reduce using rule number <VAR>n</VAR>."
+This means that a certain number of tokens or groupings are taken off
+the top of the stack, and replaced by one grouping.  In other words,
+that number of states are popped from the stack, and one new state is
+pushed.
+There is one other alternative: the table can say that the look-ahead token
+is erroneous in the current state.  This causes error processing to begin
+(see section <A HREF="bison.html#SEC81">Error Recovery</A>).
+<H2><A NAME="SEC78" HREF="bison.html#TOC78">Reduce/Reduce Conflicts</A></H2>
+<P>
+<A NAME="IDX166"></A>
+<A NAME="IDX167"></A>
+A reduce/reduce conflict occurs if there are two or more rules that apply
+to the same sequence of input.  This usually indicates a serious error
+in the grammar.
+For example, here is an erroneous attempt to define a sequence
+of zero or more <CODE>word</CODE> groupings.
+<PRE>
+sequence: /* empty */
+                { printf ("empty sequence\n"); }
+        | maybeword
+        | sequence word
+                { printf ("added word %s\n", $2); }
+        ;
+maybeword: /* empty */
+                { printf ("empty maybeword\n"); }
+        | word
+                { printf ("single word %s\n", $1); }
+        ;
+</PRE>
+<P>
+The error is an ambiguity: there is more than one way to parse a single
+<CODE>word</CODE> into a <CODE>sequence</CODE>.  It could be reduced to a
+<CODE>maybeword</CODE> and then into a <CODE>sequence</CODE> via the second rule.
+Alternatively, nothing-at-all could be reduced into a <CODE>sequence</CODE>
+via the first rule, and this could be combined with the <CODE>word</CODE>
+using the third rule for <CODE>sequence</CODE>.
+There is also more than one way to reduce nothing-at-all into a
+<CODE>sequence</CODE>.  This can be done directly via the first rule,
+or indirectly via <CODE>maybeword</CODE> and then the second rule.
+You might think that this is a distinction without a difference, because it
+does not change whether any particular input is valid or not.  But it does
+affect which actions are run.  One parsing order runs the second rule's
+action; the other runs the first rule's action and the third rule's action.
+In this example, the output of the program changes.
+Bison resolves a reduce/reduce conflict by choosing to use the rule that
+appears first in the grammar, but it is very risky to rely on this.  Every
+reduce/reduce conflict must be studied and usually eliminated.  Here is the
+proper way to define <CODE>sequence</CODE>:
+<PRE>
+sequence: /* empty */
+                { printf ("empty sequence\n"); }
+        | sequence word
+                { printf ("added word %s\n", $2); }
+        ;
+</PRE>
+<P>
+Here is another common error that yields a reduce/reduce conflict:
+<PRE>
+sequence: /* empty */
+        | sequence words
+        | sequence redirects
+        ;
+words:    /* empty */
+        | words word
+        ;
+redirects:/* empty */
+        | redirects redirect
+        ;
+</PRE>
+<P>
+The intention here is to define a sequence which can contain either
+<CODE>word</CODE> or <CODE>redirect</CODE> groupings.  The individual definitions of
+<CODE>sequence</CODE>, <CODE>words</CODE> and <CODE>redirects</CODE> are error-free, but the
+three together make a subtle ambiguity: even an empty input can be parsed
+in infinitely many ways!
+Consider: nothing-at-all could be a <CODE>words</CODE>.  Or it could be two
+<CODE>words</CODE> in a row, or three, or any number.  It could equally well be a
+<CODE>redirects</CODE>, or two, or any number.  Or it could be a <CODE>words</CODE>
+followed by three <CODE>redirects</CODE> and another <CODE>words</CODE>.  And so on.
+Here are two ways to correct these rules.  First, to make it a single level
+of sequence:
+<PRE>
+sequence: /* empty */
+        | sequence word
+        | sequence redirect
+        ;
+</PRE>
+<P>
+Second, to prevent either a <CODE>words</CODE> or a <CODE>redirects</CODE>
+from being empty:
+<PRE>
+sequence: /* empty */
+        | sequence words
+        | sequence redirects
+        ;
+words:    word
+        | words word
+        ;
+redirects:redirect
+        | redirects redirect
+        ;
+</PRE>
+<P>
+<H2><A NAME="SEC79" HREF="bison.html#TOC79">Mysterious Reduce/Reduce Conflicts</A></H2>
+<P>
+Sometimes reduce/reduce conflicts can occur that don't look warranted.
+Here is an example:
+<PRE>
+%token ID
+%%
+def:    param_spec return_spec ','
+        ;
+param_spec:
+             type
+        |    name_list ':' type
+        ;
+return_spec:
+             type
+        |    name ':' type
+        ;
+type:        ID
+        ;
+name:        ID
+        ;
+name_list:
+             name
+        |    name ',' name_list
+        ;
+</PRE>
+<P>
+It would seem that this grammar can be parsed with only a single token
+of look-ahead: when a <CODE>param_spec</CODE> is being read, an <CODE>ID</CODE> is 
+a <CODE>name</CODE> if a comma or colon follows, or a <CODE>type</CODE> if another
+<CODE>ID</CODE> follows.  In other words, this grammar is LR(1).
+<A NAME="IDX168"></A>
+<A NAME="IDX169"></A>
+However, Bison, like most parser generators, cannot actually handle all
+LR(1) grammars.  In this grammar, two contexts, that after an <CODE>ID</CODE>
+at the beginning of a <CODE>param_spec</CODE> and likewise at the beginning of
+a <CODE>return_spec</CODE>, are similar enough that Bison assumes they are the
+same.  They appear similar because the same set of rules would be
+active--the rule for reducing to a <CODE>name</CODE> and that for reducing to
+a <CODE>type</CODE>.  Bison is unable to determine at that stage of processing
+that the rules would require different look-ahead tokens in the two
+contexts, so it makes a single parser state for them both.  Combining
+the two contexts causes a conflict later.  In parser terminology, this
+occurrence means that the grammar is not LALR(1).
+In general, it is better to fix deficiencies than to document them.  But
+this particular deficiency is intrinsically hard to fix; parser
+generators that can handle LR(1) grammars are hard to write and tend to
+produce parsers that are very large.  In practice, Bison is more useful
+as it is now.
+When the problem arises, you can often fix it by identifying the two
+parser states that are being confused, and adding something to make them
+look distinct.  In the above example, adding one rule to
+<CODE>return_spec</CODE> as follows makes the problem go away:
+<PRE>
+%token BOGUS
+...
+%%
+...
+return_spec:
+             type
+        |    name ':' type
+        /* This rule is never used.  */
+        |    ID BOGUS
+        ;
+</PRE>
+<P>
+This corrects the problem because it introduces the possibility of an
+additional active rule in the context after the <CODE>ID</CODE> at the beginning of
+<CODE>return_spec</CODE>.  This rule is not active in the corresponding context
+in a <CODE>param_spec</CODE>, so the two contexts receive distinct parser states.
+As long as the token <CODE>BOGUS</CODE> is never generated by <CODE>yylex</CODE>,
+the added rule cannot alter the way actual input is parsed.
+In this particular example, there is another way to solve the problem:
+rewrite the rule for <CODE>return_spec</CODE> to use <CODE>ID</CODE> directly
+instead of via <CODE>name</CODE>.  This also causes the two confusing
+contexts to have different sets of active rules, because the one for
+<CODE>return_spec</CODE> activates the altered rule for <CODE>return_spec</CODE>
+rather than the one for <CODE>name</CODE>.
+<PRE>
+param_spec:
+             type
+        |    name_list ':' type
+        ;
+return_spec:
+             type
+        |    ID ':' type
+        ;
+</PRE>
+<P>
+<H2><A NAME="SEC80" HREF="bison.html#TOC80">Stack Overflow, and How to Avoid It</A></H2>
+<P>
+<A NAME="IDX170"></A>
+<A NAME="IDX171"></A>
+<A NAME="IDX172"></A>
+The Bison parser stack can overflow if too many tokens are shifted and
+not reduced.  When this happens, the parser function <CODE>yyparse</CODE>
+returns a nonzero value, pausing only to call <CODE>yyerror</CODE> to report
+the overflow.
+<A NAME="IDX173"></A>
+By defining the macro <CODE>YYMAXDEPTH</CODE>, you can control how deep the
+parser stack can become before a stack overflow occurs.  Define the
+macro with a value that is an integer.  This value is the maximum number
+of tokens that can be shifted (and not reduced) before overflow.
+It must be a constant expression whose value is known at compile time.
+The stack space allowed is not necessarily allocated.  If you specify a
+large value for <CODE>YYMAXDEPTH</CODE>, the parser actually allocates a small
+stack at first, and then makes it bigger by stages as needed.  This
+increasing allocation happens automatically and silently.  Therefore,
+you do not need to make <CODE>YYMAXDEPTH</CODE> painfully small merely to save
+space for ordinary inputs that do not need much stack.
+<A NAME="IDX174"></A>
+The default value of <CODE>YYMAXDEPTH</CODE>, if you do not define it, is
+10000.
+<A NAME="IDX175"></A>
+You can control how much stack is allocated initially by defining the
+macro <CODE>YYINITDEPTH</CODE>.  This value too must be a compile-time
+constant integer.  The default is 200.
+<H1><A NAME="SEC81" HREF="bison.html#TOC81">Error Recovery</A></H1>
+<P>
+<A NAME="IDX176"></A>
+<A NAME="IDX177"></A>
+It is not usually acceptable to have a program terminate on a parse
+error.  For example, a compiler should recover sufficiently to parse the
+rest of the input file and check it for errors; a calculator should accept
+another expression.
+In a simple interactive command parser where each input is one line, it may
+be sufficient to allow <CODE>yyparse</CODE> to return 1 on error and have the
+caller ignore the rest of the input line when that happens (and then call
+<CODE>yyparse</CODE> again).  But this is inadequate for a compiler, because it
+forgets all the syntactic context leading up to the error.  A syntax error
+deep within a function in the compiler input should not cause the compiler
+to treat the following line like the beginning of a source file.
+<A NAME="IDX178"></A>
+You can define how to recover from a syntax error by writing rules to
+recognize the special token <CODE>error</CODE>.  This is a terminal symbol that
+is always defined (you need not declare it) and reserved for error
+handling.  The Bison parser generates an <CODE>error</CODE> token whenever a
+syntax error happens; if you have provided a rule to recognize this token
+in the current context, the parse can continue.  
+For example:
+<PRE>
+stmnts:  /* empty string */
+        | stmnts '\n'
+        | stmnts exp '\n'
+        | stmnts error '\n'
+</PRE>
+<P>
+The fourth rule in this example says that an error followed by a newline
+makes a valid addition to any <CODE>stmnts</CODE>.
+What happens if a syntax error occurs in the middle of an <CODE>exp</CODE>?  The
+error recovery rule, interpreted strictly, applies to the precise sequence
+of a <CODE>stmnts</CODE>, an <CODE>error</CODE> and a newline.  If an error occurs in
+the middle of an <CODE>exp</CODE>, there will probably be some additional tokens
+and subexpressions on the stack after the last <CODE>stmnts</CODE>, and there
+will be tokens to read before the next newline.  So the rule is not
+applicable in the ordinary way.
+But Bison can force the situation to fit the rule, by discarding part of
+the semantic context and part of the input.  First it discards states and
+objects from the stack until it gets back to a state in which the
+<CODE>error</CODE> token is acceptable.  (This means that the subexpressions
+already parsed are discarded, back to the last complete <CODE>stmnts</CODE>.)  At
+this point the <CODE>error</CODE> token can be shifted.  Then, if the old
+look-ahead token is not acceptable to be shifted next, the parser reads
+tokens and discards them until it finds a token which is acceptable.  In
+this example, Bison reads and discards input until the next newline
+so that the fourth rule can apply.
+The choice of error rules in the grammar is a choice of strategies for
+error recovery.  A simple and useful strategy is simply to skip the rest of
+the current input line or current statement if an error is detected:
+<PRE>
+stmnt: error ';'  /* on error, skip until ';' is read */
+</PRE>
+<P>
+It is also useful to recover to the matching close-delimiter of an
+opening-delimiter that has already been parsed.  Otherwise the
+close-delimiter will probably appear to be unmatched, and generate another,
+spurious error message:
+<PRE>
+primary:  '(' expr ')'
+        | '(' error ')'
+        ...
+        ;
+</PRE>
+<P>
+Error recovery strategies are necessarily guesses.  When they guess wrong,
+one syntax error often leads to another.  In the above example, the error
+recovery rule guesses that an error is due to bad input within one
+<CODE>stmnt</CODE>.  Suppose that instead a spurious semicolon is inserted in the
+middle of a valid <CODE>stmnt</CODE>.  After the error recovery rule recovers
+from the first error, another syntax error will be found straightaway,
+since the text following the spurious semicolon is also an invalid
+<CODE>stmnt</CODE>.
+To prevent an outpouring of error messages, the parser will output no error
+message for another syntax error that happens shortly after the first; only
+after three consecutive input tokens have been successfully shifted will
+error messages resume.
+Note that rules which accept the <CODE>error</CODE> token may have actions, just
+as any other rules can.
+<A NAME="IDX179"></A>
+You can make error messages resume immediately by using the macro
+<CODE>yyerrok</CODE> in an action.  If you do this in the error rule's action, no
+error messages will be suppressed.  This macro requires no arguments;
+<SAMP>`yyerrok;'</SAMP> is a valid C statement.
+<A NAME="IDX180"></A>
+The previous look-ahead token is reanalyzed immediately after an error.  If
+this is unacceptable, then the macro <CODE>yyclearin</CODE> may be used to clear
+this token.  Write the statement <SAMP>`yyclearin;'</SAMP> in the error rule's
+action.
+For example, suppose that on a parse error, an error handling routine is
+called that advances the input stream to some point where parsing should
+once again commence.  The next symbol returned by the lexical scanner is
+probably correct.  The previous look-ahead token ought to be discarded
+with <SAMP>`yyclearin;'</SAMP>.
+<A NAME="IDX181"></A>
+The macro <CODE>YYRECOVERING</CODE> stands for an expression that has the
+value 1 when the parser is recovering from a syntax error, and 0 the
+rest of the time.  A value of 1 indicates that error messages are
+currently suppressed for new syntax errors.
+<H1><A NAME="SEC82" HREF="bison.html#TOC82">Handling Context Dependencies</A></H1>
+<P>
+The Bison paradigm is to parse tokens first, then group them into larger
+syntactic units.  In many languages, the meaning of a token is affected by
+its context.  Although this violates the Bison paradigm, certain techniques
+(known as <EM>kludges</EM>) may enable you to write Bison parsers for such
+languages.
+(Actually, "kludge" means any technique that gets its job done but is
+neither clean nor robust.)
+<H2><A NAME="SEC83" HREF="bison.html#TOC83">Semantic Info in Token Types</A></H2>
+<P>
+The C language has a context dependency: the way an identifier is used
+depends on what its current meaning is.  For example, consider this:
+<PRE>
+foo (x);
+</PRE>
+<P>
+This looks like a function call statement, but if <CODE>foo</CODE> is a typedef
+name, then this is actually a declaration of <CODE>x</CODE>.  How can a Bison
+parser for C decide how to parse this input?
+The method used in GNU C is to have two different token types,
+<CODE>IDENTIFIER</CODE> and <CODE>TYPENAME</CODE>.  When <CODE>yylex</CODE> finds an
+identifier, it looks up the current declaration of the identifier in order
+to decide which token type to return: <CODE>TYPENAME</CODE> if the identifier is
+declared as a typedef, <CODE>IDENTIFIER</CODE> otherwise.
+The grammar rules can then express the context dependency by the choice of
+token type to recognize.  <CODE>IDENTIFIER</CODE> is accepted as an expression,
+but <CODE>TYPENAME</CODE> is not.  <CODE>TYPENAME</CODE> can start a declaration, but
+<CODE>IDENTIFIER</CODE> cannot.  In contexts where the meaning of the identifier
+is <EM>not</EM> significant, such as in declarations that can shadow a
+typedef name, either <CODE>TYPENAME</CODE> or <CODE>IDENTIFIER</CODE> is
+accepted--there is one rule for each of the two token types.
+This technique is simple to use if the decision of which kinds of
+identifiers to allow is made at a place close to where the identifier is
+parsed.  But in C this is not always so: C allows a declaration to
+redeclare a typedef name provided an explicit type has been specified
+earlier:
+<PRE>
+typedef int foo, bar, lose;
+static foo (bar);        /* redeclare <CODE>bar</CODE> as static variable */
+static int foo (lose);   /* redeclare <CODE>foo</CODE> as function */
+</PRE>
+<P>
+Unfortunately, the name being declared is separated from the declaration
+construct itself by a complicated syntactic structure--the "declarator".
+As a result, the part of Bison parser for C needs to be duplicated, with
+all the nonterminal names changed: once for parsing a declaration in which
+a typedef name can be redefined, and once for parsing a declaration in
+which that can't be done.  Here is a part of the duplication, with actions
+omitted for brevity:
+<PRE>
+initdcl:
+          declarator maybeasm '='
+          init
+        | declarator maybeasm
+        ;
+notype_initdcl:
+          notype_declarator maybeasm '='
+          init
+        | notype_declarator maybeasm
+        ;
+</PRE>
+<P>
+Here <CODE>initdcl</CODE> can redeclare a typedef name, but <CODE>notype_initdcl</CODE>
+cannot.  The distinction between <CODE>declarator</CODE> and
+<CODE>notype_declarator</CODE> is the same sort of thing.
+There is some similarity between this technique and a lexical tie-in
+(described next), in that information which alters the lexical analysis is
+changed during parsing by other parts of the program.  The difference is
+here the information is global, and is used for other purposes in the
+program.  A true lexical tie-in has a special-purpose flag controlled by
+the syntactic context.
+<H2><A NAME="SEC84" HREF="bison.html#TOC84">Lexical Tie-ins</A></H2>
+<P>
+<A NAME="IDX182"></A>
+One way to handle context-dependency is the <EM>lexical tie-in</EM>: a flag
+which is set by Bison actions, whose purpose is to alter the way tokens are
+parsed.
+For example, suppose we have a language vaguely like C, but with a special
+construct <SAMP>`hex (<VAR>hex-expr</VAR>)'</SAMP>.  After the keyword <CODE>hex</CODE> comes
+an expression in parentheses in which all integers are hexadecimal.  In
+particular, the token <SAMP>`a1b'</SAMP> must be treated as an integer rather than
+as an identifier if it appears in that context.  Here is how you can do it:
+<PRE>
+%{
+int hexflag;
+%}
+%%
+...
+expr:   IDENTIFIER
+        | constant
+        | HEX '('
+                { hexflag = 1; }
+          expr ')'
+                { hexflag = 0;
+                   $$ = $4; }
+        | expr '+' expr
+                { $$ = make_sum ($1, $3); }
+        ...
+        ;
+constant:
+          INTEGER
+        | STRING
+        ;
+</PRE>
+<P>
+Here we assume that <CODE>yylex</CODE> looks at the value of <CODE>hexflag</CODE>; when
+it is nonzero, all integers are parsed in hexadecimal, and tokens starting
+with letters are parsed as integers if possible.
+The declaration of <CODE>hexflag</CODE> shown in the C declarations section of
+the parser file is needed to make it accessible to the actions 
+(see section <A HREF="bison.html#SEC36">The C Declarations Section</A>).  You must also write the code in <CODE>yylex</CODE>
+to obey the flag.
+<H2><A NAME="SEC85" HREF="bison.html#TOC85">Lexical Tie-ins and Error Recovery</A></H2>
+<P>
+Lexical tie-ins make strict demands on any error recovery rules you have.
+See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+The reason for this is that the purpose of an error recovery rule is to
+abort the parsing of one construct and resume in some larger construct.
+For example, in C-like languages, a typical error recovery rule is to skip
+tokens until the next semicolon, and then start a new statement, like this:
+<PRE>
+stmt:   expr ';'
+        | IF '(' expr ')' stmt { ... }
+        ...
+        error ';'
+                { hexflag = 0; }
+        ;
+</PRE>
+<P>
+If there is a syntax error in the middle of a <SAMP>`hex (<VAR>expr</VAR>)'</SAMP>
+construct, this error rule will apply, and then the action for the
+completed <SAMP>`hex (<VAR>expr</VAR>)'</SAMP> will never run.  So <CODE>hexflag</CODE> would
+remain set for the entire rest of the input, or until the next <CODE>hex</CODE>
+keyword, causing identifiers to be misinterpreted as integers.
+To avoid this problem the error recovery rule itself clears <CODE>hexflag</CODE>.
+There may also be an error recovery rule that works within expressions.
+For example, there could be a rule which applies within parentheses
+and skips to the close-parenthesis:
+<PRE>
+expr:   ...
+        | '(' expr ')'
+                { $$ = $2; }
+        | '(' error ')'
+        ...
+</PRE>
+<P>
+If this rule acts within the <CODE>hex</CODE> construct, it is not going to abort
+that construct (since it applies to an inner level of parentheses within
+the construct).  Therefore, it should not clear the flag: the rest of
+the <CODE>hex</CODE> construct should be parsed with the flag still in effect.
+What if there is an error recovery rule which might abort out of the
+<CODE>hex</CODE> construct or might not, depending on circumstances?  There is no
+way you can write the action to determine whether a <CODE>hex</CODE> construct is
+being aborted or not.  So if you are using a lexical tie-in, you had better
+make sure your error recovery rules are not of this kind.  Each rule must
+be such that you can be sure that it always will, or always won't, have to
+clear the flag.
+<H1><A NAME="SEC86" HREF="bison.html#TOC86">Debugging Your Parser</A></H1>
+<P>
+<A NAME="IDX183"></A>
+<A NAME="IDX184"></A>
+<A NAME="IDX185"></A>
+<A NAME="IDX186"></A>
+If a Bison grammar compiles properly but doesn't do what you want when it
+runs, the <CODE>yydebug</CODE> parser-trace feature can help you figure out why.
+To enable compilation of trace facilities, you must define the macro
+<CODE>YYDEBUG</CODE> when you compile the parser.  You could use
+<SAMP>`-DYYDEBUG=1'</SAMP> as a compiler option or you could put <SAMP>`#define
+YYDEBUG 1'</SAMP> in the C declarations section of the grammar file 
+(see section <A HREF="bison.html#SEC36">The C Declarations Section</A>).  Alternatively, use the <SAMP>`-t'</SAMP> option when
+you run Bison (see section <A HREF="bison.html#SEC87">Invoking Bison</A>).  We always define <CODE>YYDEBUG</CODE> so that
+debugging is always possible.
+The trace facility uses <CODE>stderr</CODE>, so you must add <CODE>#include
+&#60;stdio.h&#62;</CODE> to the C declarations section unless it is already there.
+Once you have compiled the program with trace facilities, the way to
+request a trace is to store a nonzero value in the variable <CODE>yydebug</CODE>.
+You can do this by making the C code do it (in <CODE>main</CODE>, perhaps), or
+you can alter the value with a C debugger.
+Each step taken by the parser when <CODE>yydebug</CODE> is nonzero produces a
+line or two of trace information, written on <CODE>stderr</CODE>.  The trace
+messages tell you these things:
+<UL>
+<LI>
+Each time the parser calls <CODE>yylex</CODE>, what kind of token was read.
+<LI>
+Each time a token is shifted, the depth and complete contents of the
+state stack (see section <A HREF="bison.html#SEC77">Parser States</A>).
+<LI>
+Each time a rule is reduced, which rule it is, and the complete contents
+of the state stack afterward.
+</UL>
+<P>
+To make sense of this information, it helps to refer to the listing file
+produced by the Bison <SAMP>`-v'</SAMP> option (see section <A HREF="bison.html#SEC87">Invoking Bison</A>).  This file
+shows the meaning of each state in terms of positions in various rules, and
+also what each state will do with each possible input token.  As you read
+the successive trace messages, you can see that the parser is functioning
+according to its specification in the listing file.  Eventually you will
+arrive at the place where something undesirable happens, and you will see
+which parts of the grammar are to blame.
+The parser file is a C program and you can use C debuggers on it, but it's
+not easy to interpret what it is doing.  The parser function is a
+finite-state machine interpreter, and aside from the actions it executes
+the same code over and over.  Only the values of variables show where in
+the grammar it is working.
+<A NAME="IDX187"></A>
+The debugging information normally gives the token type of each token
+read, but not its semantic value.  You can optionally define a macro
+named <CODE>YYPRINT</CODE> to provide a way to print the value.  If you define
+<CODE>YYPRINT</CODE>, it should take three arguments.  The parser will pass a
+standard I/O stream, the numeric code for the token type, and the token
+value (from <CODE>yylval</CODE>).
+Here is an example of <CODE>YYPRINT</CODE> suitable for the multi-function
+calculator (see section <A HREF="bison.html#SEC30">Declarations for <CODE>mfcalc</CODE></A>):
+<PRE>
+#define YYPRINT(file, type, value)   yyprint (file, type, value)
+static void
+yyprint (file, type, value)
+     FILE *file;
+     int type;
+     YYSTYPE value;
+{
+  if (type == VAR)
+    fprintf (file, " %s", value.tptr-&#62;name);
+  else if (type == NUM)
+    fprintf (file, " %d", value.val);
+}
+</PRE>
+<P>
+<H1><A NAME="SEC87" HREF="bison.html#TOC87">Invoking Bison</A></H1>
+<P>
+<A NAME="IDX188"></A>
+<A NAME="IDX189"></A>
+<A NAME="IDX190"></A>
+The usual way to invoke Bison is as follows:
+<PRE>
+bison <VAR>infile</VAR>
+</PRE>
+<P>
+Here <VAR>infile</VAR> is the grammar file name, which usually ends in
+<SAMP>`.y'</SAMP>.  The parser file's name is made by replacing the <SAMP>`.y'</SAMP>
+with <SAMP>`.tab.c'</SAMP>.  Thus, the <SAMP>`bison foo.y'</SAMP> filename yields
+<TT>`foo.tab.c'</TT>, and the <SAMP>`bison hack/foo.y'</SAMP> filename yields
+<TT>`hack/foo.tab.c'</TT>.
+<H2><A NAME="SEC88" HREF="bison.html#TOC88">Bison Options</A></H2>
+<P>
+Bison supports both traditional single-letter options and mnemonic long
+option names.  Long option names are indicated with <SAMP>`--'</SAMP> instead of
+<SAMP>`-'</SAMP>.  Abbreviations for option names are allowed as long as they
+are unique.  When a long option takes an argument, like
+<SAMP>`--file-prefix'</SAMP>, connect the option name and the argument with
+<SAMP>`='</SAMP>.
+Here is a list of options that can be used with Bison, alphabetized by
+short option.  It is followed by a cross key alphabetized by long
+option.
+<DL COMPACT>
+<DT><SAMP>`-b <VAR>file-prefix</VAR>'</SAMP>
+<DD>
+<DT><SAMP>`--file-prefix=<VAR>prefix</VAR>'</SAMP>
+<DD>
+Specify a prefix to use for all Bison output file names.  The names are
+chosen as if the input file were named <TT>`<VAR>prefix</VAR>.c'</TT>.
+<DT><SAMP>`-d'</SAMP>
+<DD>
+<DT><SAMP>`--defines'</SAMP>
+<DD>
+Write an extra output file containing macro definitions for the token
+type names defined in the grammar and the semantic value type
+<CODE>YYSTYPE</CODE>, as well as a few <CODE>extern</CODE> variable declarations.
+If the parser output file is named <TT>`<VAR>name</VAR>.c'</TT> then this file
+is named <TT>`<VAR>name</VAR>.h'</TT>.
+This output file is essential if you wish to put the definition of
+<CODE>yylex</CODE> in a separate source file, because <CODE>yylex</CODE> needs to
+be able to refer to token type codes and the variable
+<CODE>yylval</CODE>.  See section <A HREF="bison.html#SEC63">Semantic Values of Tokens</A>.
+<DT><SAMP>`-l'</SAMP>
+<DD>
+<DT><SAMP>`--no-lines'</SAMP>
+<DD>
+Don't put any <CODE>#line</CODE> preprocessor commands in the parser file.
+Ordinarily Bison puts them in the parser file so that the C compiler
+and debuggers will associate errors with your source file, the
+grammar file.  This option causes them to associate errors with the
+parser file, treating it an independent source file in its own right.
+<DT><SAMP>`-o <VAR>outfile</VAR>'</SAMP>
+<DD>
+<DT><SAMP>`--output-file=<VAR>outfile</VAR>'</SAMP>
+<DD>
+Specify the name <VAR>outfile</VAR> for the parser file.
+The other output files' names are constructed from <VAR>outfile</VAR>
+as described under the <SAMP>`-v'</SAMP> and <SAMP>`-d'</SAMP> switches.
+<DT><SAMP>`-p <VAR>prefix</VAR>'</SAMP>
+<DD>
+<DT><SAMP>`--name-prefix=<VAR>prefix</VAR>'</SAMP>
+<DD>
+Rename the external symbols used in the parser so that they start with
+<VAR>prefix</VAR> instead of <SAMP>`yy'</SAMP>.  The precise list of symbols renamed
+is <CODE>yyparse</CODE>, <CODE>yylex</CODE>, <CODE>yyerror</CODE>, <CODE>yynerrs</CODE>,
+<CODE>yylval</CODE>, <CODE>yychar</CODE> and <CODE>yydebug</CODE>.
+For example, if you use <SAMP>`-p c'</SAMP>, the names become <CODE>cparse</CODE>,
+<CODE>clex</CODE>, and so on.
+See section <A HREF="bison.html#SEC58">Multiple Parsers in the Same Program</A>.
+<DT><SAMP>`-t'</SAMP>
+<DD>
+<DT><SAMP>`--debug'</SAMP>
+<DD>
+Output a definition of the macro <CODE>YYDEBUG</CODE> into the parser file,
+so that the debugging facilities are compiled.  See section <A HREF="bison.html#SEC86">Debugging Your Parser</A>.
+<DT><SAMP>`-v'</SAMP>
+<DD>
+<DT><SAMP>`--verbose'</SAMP>
+<DD>
+Write an extra output file containing verbose descriptions of the
+parser states and what is done for each type of look-ahead token in
+that state.
+This file also describes all the conflicts, both those resolved by
+operator precedence and the unresolved ones.
+The file's name is made by removing <SAMP>`.tab.c'</SAMP> or <SAMP>`.c'</SAMP> from
+the parser output file name, and adding <SAMP>`.output'</SAMP> instead.
+Therefore, if the input file is <TT>`foo.y'</TT>, then the parser file is
+called <TT>`foo.tab.c'</TT> by default.  As a consequence, the verbose
+output file is called <TT>`foo.output'</TT>.
+<DT><SAMP>`-V'</SAMP>
+<DD>
+<DT><SAMP>`--version'</SAMP>
+<DD>
+Print the version number of Bison and exit.
+<DT><SAMP>`-h'</SAMP>
+<DD>
+<DT><SAMP>`--help'</SAMP>
+<DD>
+Print a summary of the command-line options to Bison and exit.
+<DT><SAMP>`-y'</SAMP>
+<DD>
+<DT><SAMP>`--yacc'</SAMP>
+<DD>
+<DT><SAMP>`--fixed-output-files'</SAMP>
+<DD>
+Equivalent to <SAMP>`-o y.tab.c'</SAMP>; the parser output file is called
+<TT>`y.tab.c'</TT>, and the other outputs are called <TT>`y.output'</TT> and
+<TT>`y.tab.h'</TT>.  The purpose of this switch is to imitate Yacc's output
+file name conventions.  Thus, the following shell script can substitute
+for Yacc:
+<PRE>
+bison -y $*
+</PRE>
+</DL>
+<P>
+<H2><A NAME="SEC89" HREF="bison.html#TOC89">Option Cross Key</A></H2>
+<P>
+Here is a list of options, alphabetized by long option, to help you find
+the corresponding short option.
+<H2><A NAME="SEC90" HREF="bison.html#TOC90">Invoking Bison under VMS</A></H2>
+<P>
+<A NAME="IDX191"></A>
+<A NAME="IDX192"></A>
+The command line syntax for Bison on VMS is a variant of the usual
+Bison command syntax--adapted to fit VMS conventions.
+To find the VMS equivalent for any Bison option, start with the long
+option, and substitute a <SAMP>`/'</SAMP> for the leading <SAMP>`--'</SAMP>, and
+substitute a <SAMP>`_'</SAMP> for each <SAMP>`-'</SAMP> in the name of the long option.
+For example, the following invocation under VMS:
+<PRE>
+bison /debug/name_prefix=bar foo.y
+</PRE>
+<P>
+is equivalent to the following command under POSIX.
+<PRE>
+bison --debug --name-prefix=bar foo.y
+</PRE>
+<P>
+The VMS file system does not permit filenames such as
+<TT>`foo.tab.c'</TT>.  In the above example, the output file
+would instead be named <TT>`foo_tab.c'</TT>.
+<H1><A NAME="SEC91" HREF="bison.html#TOC91">Bison Symbols</A></H1>
+<P>
+<A NAME="IDX193"></A>
+<A NAME="IDX194"></A>
+<DL COMPACT>
+<DT><CODE>error</CODE>
+<DD>
+A token name reserved for error recovery.  This token may be used in
+grammar rules so as to allow the Bison parser to recognize an error in
+the grammar without halting the process.  In effect, a sentence
+containing an error may be recognized as valid.  On a parse error, the
+token <CODE>error</CODE> becomes the current look-ahead token.  Actions
+corresponding to <CODE>error</CODE> are then executed, and the look-ahead
+token is reset to the token that originally caused the violation.
+See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><CODE>YYABORT</CODE>
+<DD>
+Macro to pretend that an unrecoverable syntax error has occurred, by
+making <CODE>yyparse</CODE> return 1 immediately.  The error reporting
+function <CODE>yyerror</CODE> is not called.  See section <A HREF="bison.html#SEC60">The Parser Function <CODE>yyparse</CODE></A>.
+<DT><CODE>YYACCEPT</CODE>
+<DD>
+Macro to pretend that a complete utterance of the language has been
+read, by making <CODE>yyparse</CODE> return 0 immediately.  
+See section <A HREF="bison.html#SEC60">The Parser Function <CODE>yyparse</CODE></A>.
+<DT><CODE>YYBACKUP</CODE>
+<DD>
+Macro to discard a value from the parser stack and fake a look-ahead
+token.  See section <A HREF="bison.html#SEC67">Special Features for Use in Actions</A>.
+<DT><CODE>YYERROR</CODE>
+<DD>
+Macro to pretend that a syntax error has just been detected: call
+<CODE>yyerror</CODE> and then perform normal error recovery if possible
+(see section <A HREF="bison.html#SEC81">Error Recovery</A>), or (if recovery is impossible) make
+<CODE>yyparse</CODE> return 1.  See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><CODE>YYERROR_VERBOSE</CODE>
+<DD>
+Macro that you define with <CODE>#define</CODE> in the Bison declarations
+section to request verbose, specific error message strings when
+<CODE>yyerror</CODE> is called.
+<DT><CODE>YYINITDEPTH</CODE>
+<DD>
+Macro for specifying the initial size of the parser stack.
+See section <A HREF="bison.html#SEC80">Stack Overflow, and How to Avoid It</A>.
+<DT><CODE>YYLEX_PARAM</CODE>
+<DD>
+Macro for specifying an extra argument (or list of extra arguments) for
+<CODE>yyparse</CODE> to pass to <CODE>yylex</CODE>.  See section <A HREF="bison.html#SEC65">Calling Conventions for Pure Parsers</A>.
+<DT><CODE>YYLTYPE</CODE>
+<DD>
+Macro for the data type of <CODE>yylloc</CODE>; a structure with four
+members.  See section <A HREF="bison.html#SEC64">Textual Positions of Tokens</A>.
+<DT><CODE>YYMAXDEPTH</CODE>
+<DD>
+Macro for specifying the maximum size of the parser stack.
+See section <A HREF="bison.html#SEC80">Stack Overflow, and How to Avoid It</A>.
+<DT><CODE>YYPARSE_PARAM</CODE>
+<DD>
+Macro for specifying the name of a parameter that <CODE>yyparse</CODE> should
+accept.  See section <A HREF="bison.html#SEC65">Calling Conventions for Pure Parsers</A>.
+<DT><CODE>YYRECOVERING</CODE>
+<DD>
+Macro whose value indicates whether the parser is recovering from a
+syntax error.  See section <A HREF="bison.html#SEC67">Special Features for Use in Actions</A>.
+<DT><CODE>YYSTYPE</CODE>
+<DD>
+Macro for the data type of semantic values; <CODE>int</CODE> by default.
+See section <A HREF="bison.html#SEC44">Data Types of Semantic Values</A>.
+<DT><CODE>yychar</CODE>
+<DD>
+External integer variable that contains the integer value of the
+current look-ahead token.  (In a pure parser, it is a local variable
+within <CODE>yyparse</CODE>.)  Error-recovery rule actions may examine this
+variable.  See section <A HREF="bison.html#SEC67">Special Features for Use in Actions</A>.
+<DT><CODE>yyclearin</CODE>
+<DD>
+Macro used in error-recovery rule actions.  It clears the previous
+look-ahead token.  See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><CODE>yydebug</CODE>
+<DD>
+External integer variable set to zero by default.  If <CODE>yydebug</CODE>
+is given a nonzero value, the parser will output information on input
+symbols and parser action.  See section <A HREF="bison.html#SEC86">Debugging Your Parser</A>.
+<DT><CODE>yyerrok</CODE>
+<DD>
+Macro to cause parser to recover immediately to its normal mode
+after a parse error.  See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT><CODE>yyerror</CODE>
+<DD>
+User-supplied function to be called by <CODE>yyparse</CODE> on error.  The
+function receives one argument, a pointer to a character string
+containing an error message.  See section <A HREF="bison.html#SEC66">The Error Reporting Function <CODE>yyerror</CODE></A>.
+<DT><CODE>yylex</CODE>
+<DD>
+User-supplied lexical analyzer function, called with no arguments
+to get the next token.  See section <A HREF="bison.html#SEC61">The Lexical Analyzer Function <CODE>yylex</CODE></A>.
+<DT><CODE>yylval</CODE>
+<DD>
+External variable in which <CODE>yylex</CODE> should place the semantic
+value associated with a token.  (In a pure parser, it is a local
+variable within <CODE>yyparse</CODE>, and its address is passed to
+<CODE>yylex</CODE>.)  See section <A HREF="bison.html#SEC63">Semantic Values of Tokens</A>.
+<DT><CODE>yylloc</CODE>
+<DD>
+External variable in which <CODE>yylex</CODE> should place the line and
+column numbers associated with a token.  (In a pure parser, it is a
+local variable within <CODE>yyparse</CODE>, and its address is passed to
+<CODE>yylex</CODE>.)  You can ignore this variable if you don't use the
+<SAMP>`@'</SAMP> feature in the grammar actions.  See section <A HREF="bison.html#SEC64">Textual Positions of Tokens</A>.
+<DT><CODE>yynerrs</CODE>
+<DD>
+Global variable which Bison increments each time there is a parse
+error.  (In a pure parser, it is a local variable within
+<CODE>yyparse</CODE>.)  See section <A HREF="bison.html#SEC66">The Error Reporting Function <CODE>yyerror</CODE></A>.
+<DT><CODE>yyparse</CODE>
+<DD>
+The parser function produced by Bison; call this function to start
+parsing.  See section <A HREF="bison.html#SEC60">The Parser Function <CODE>yyparse</CODE></A>.
+<DT><CODE>%left</CODE>
+<DD>
+Bison declaration to assign left associativity to token(s).
+See section <A HREF="bison.html#SEC51">Operator Precedence</A>.
+<DT><CODE>%nonassoc</CODE>
+<DD>
+Bison declaration to assign nonassociativity to token(s).
+See section <A HREF="bison.html#SEC51">Operator Precedence</A>.
+<DT><CODE>%prec</CODE>
+<DD>
+Bison declaration to assign a precedence to a specific rule.
+See section <A HREF="bison.html#SEC76">Context-Dependent Precedence</A>.
+<DT><CODE>%pure_parser</CODE>
+<DD>
+Bison declaration to request a pure (reentrant) parser.
+See section <A HREF="bison.html#SEC56">A Pure (Reentrant) Parser</A>.
+<DT><CODE>%right</CODE>
+<DD>
+Bison declaration to assign right associativity to token(s).
+See section <A HREF="bison.html#SEC51">Operator Precedence</A>.
+<DT><CODE>%start</CODE>
+<DD>
+Bison declaration to specify the start symbol.  See section <A HREF="bison.html#SEC55">The Start-Symbol</A>.
+<DT><CODE>%token</CODE>
+<DD>
+Bison declaration to declare token(s) without specifying precedence.
+See section <A HREF="bison.html#SEC50">Token Type Names</A>.
+<DT><CODE>%type</CODE>
+<DD>
+Bison declaration to declare nonterminals.  See section <A HREF="bison.html#SEC53">Nonterminal Symbols</A>.
+<DT><CODE>%union</CODE>
+<DD>
+Bison declaration to specify several possible data types for semantic
+values.  See section <A HREF="bison.html#SEC52">The Collection of Value Types</A>.
+</DL>
+<P>
+These are the punctuation and delimiters used in Bison input:
+<DL COMPACT>
+<DT><SAMP>`%%'</SAMP>
+<DD>
+Delimiter used to separate the grammar rule section from the
+Bison declarations section or the additional C code section.
+See section <A HREF="bison.html#SEC14">The Overall Layout of a Bison Grammar</A>.
+<DT><SAMP>`%{ %}'</SAMP>
+<DD>
+All code listed between <SAMP>`%{'</SAMP> and <SAMP>`%}'</SAMP> is copied directly
+to the output file uninterpreted.  Such code forms the "C
+declarations" section of the input file.  See section <A HREF="bison.html#SEC35">Outline of a Bison Grammar</A>.
+<DT><SAMP>`/*...*/'</SAMP>
+<DD>
+Comment delimiters, as in C.
+<DT><SAMP>`:'</SAMP>
+<DD>
+Separates a rule's result from its components.  See section <A HREF="bison.html#SEC41">Syntax of Grammar Rules</A>.
+<DT><SAMP>`;'</SAMP>
+<DD>
+Terminates a rule.  See section <A HREF="bison.html#SEC41">Syntax of Grammar Rules</A>.
+<DT><SAMP>`|'</SAMP>
+<DD>
+Separates alternate rules for the same result nonterminal.
+See section <A HREF="bison.html#SEC41">Syntax of Grammar Rules</A>.
+</DL>
+<P>
+<H1><A NAME="SEC92" HREF="bison.html#TOC92">Glossary</A></H1>
+<P>
+<A NAME="IDX195"></A>
+<DL COMPACT>
+<DT>Backus-Naur Form (BNF)
+<DD>
+Formal method of specifying context-free grammars.  BNF was first used
+in the <CITE>ALGOL-60</CITE> report, 1963.  See section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>.
+<DT>Context-free grammars
+<DD>
+Grammars specified as rules that can be applied regardless of context.
+Thus, if there is a rule which says that an integer can be used as an
+expression, integers are allowed <EM>anywhere</EM> an expression is
+permitted.  See section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>.
+<DT>Dynamic allocation
+<DD>
+Allocation of memory that occurs during execution, rather than at
+compile time or on entry to a function.
+<DT>Empty string
+<DD>
+Analogous to the empty set in set theory, the empty string is a
+character string of length zero.
+<DT>Finite-state stack machine
+<DD>
+A "machine" that has discrete states in which it is said to exist at
+each instant in time.  As input to the machine is processed, the
+machine moves from state to state as specified by the logic of the
+machine.  In the case of the parser, the input is the language being
+parsed, and the states correspond to various stages in the grammar
+rules.  See section <A HREF="bison.html#SEC68">The Bison Parser Algorithm</A>.
+<DT>Grouping
+<DD>
+A language construct that is (in general) grammatically divisible;
+for example, `expression' or `declaration' in C.  
+See section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>.
+<DT>Infix operator
+<DD>
+An arithmetic operator that is placed between the operands on which it
+performs some operation.
+<DT>Input stream
+<DD>
+A continuous flow of data between devices or programs.
+<DT>Language construct
+<DD>
+One of the typical usage schemas of the language.  For example, one of
+the constructs of the C language is the <CODE>if</CODE> statement.
+See section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>.
+<DT>Left associativity
+<DD>
+Operators having left associativity are analyzed from left to right:
+<SAMP>`a+b+c'</SAMP> first computes <SAMP>`a+b'</SAMP> and then combines with
+<SAMP>`c'</SAMP>.  See section <A HREF="bison.html#SEC71">Operator Precedence</A>.
+<DT>Left recursion
+<DD>
+A rule whose result symbol is also its first component symbol;
+for example, <SAMP>`expseq1 : expseq1 ',' exp;'</SAMP>.  See section <A HREF="bison.html#SEC42">Recursive Rules</A>.
+<DT>Left-to-right parsing
+<DD>
+Parsing a sentence of a language by analyzing it token by token from
+left to right.  See section <A HREF="bison.html#SEC68">The Bison Parser Algorithm</A>.
+<DT>Lexical analyzer (scanner)
+<DD>
+A function that reads an input stream and returns tokens one by one.
+See section <A HREF="bison.html#SEC61">The Lexical Analyzer Function <CODE>yylex</CODE></A>.
+<DT>Lexical tie-in
+<DD>
+A flag, set by actions in the grammar rules, which alters the way
+tokens are parsed.  See section <A HREF="bison.html#SEC84">Lexical Tie-ins</A>.
+<DT>Look-ahead token
+<DD>
+A token already read but not yet shifted.  See section <A HREF="bison.html#SEC69">Look-Ahead Tokens</A>.
+<DT>LALR(1)
+<DD>
+The class of context-free grammars that Bison (like most other parser
+generators) can handle; a subset of LR(1).  See section <A HREF="bison.html#SEC79">Mysterious Reduce/Reduce Conflicts</A>.
+<DT>LR(1)
+<DD>
+The class of context-free grammars in which at most one token of
+look-ahead is needed to disambiguate the parsing of any piece of input.
+<DT>Nonterminal symbol
+<DD>
+A grammar symbol standing for a grammatical construct that can
+be expressed through rules in terms of smaller constructs; in other
+words, a construct that is not a token.  See section <A HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>.
+<DT>Parse error
+<DD>
+An error encountered during parsing of an input stream due to invalid
+syntax.  See section <A HREF="bison.html#SEC81">Error Recovery</A>.
+<DT>Parser
+<DD>
+A function that recognizes valid sentences of a language by analyzing
+the syntax structure of a set of tokens passed to it from a lexical
+analyzer.
+<DT>Postfix operator
+<DD>
+An arithmetic operator that is placed after the operands upon which it
+performs some operation.
+<DT>Reduction
+<DD>
+Replacing a string of nonterminals and/or terminals with a single
+nonterminal, according to a grammar rule.  See section <A HREF="bison.html#SEC68">The Bison Parser Algorithm</A>.
+<DT>Reentrant
+<DD>
+A reentrant subprogram is a subprogram which can be in invoked any
+number of times in parallel, without interference between the various
+invocations.  See section <A HREF="bison.html#SEC56">A Pure (Reentrant) Parser</A>.
+<DT>Reverse polish notation
+<DD>
+A language in which all operators are postfix operators.
+<DT>Right recursion
+<DD>
+A rule whose result symbol is also its last component symbol;
+for example, <SAMP>`expseq1: exp ',' expseq1;'</SAMP>.  See section <A HREF="bison.html#SEC42">Recursive Rules</A>.
+<DT>Semantics
+<DD>
+In computer languages, the semantics are specified by the actions
+taken for each instance of the language, i.e., the meaning of
+each statement.  See section <A HREF="bison.html#SEC43">Defining Language Semantics</A>.
+<DT>Shift
+<DD>
+A parser is said to shift when it makes the choice of analyzing
+further input from the stream rather than reducing immediately some
+already-recognized rule.  See section <A HREF="bison.html#SEC68">The Bison Parser Algorithm</A>.
+<DT>Single-character literal
+<DD>
+A single character that is recognized and interpreted as is.
+See section <A HREF="bison.html#SEC9">From Formal Rules to Bison Input</A>.
+<DT>Start symbol
+<DD>
+The nonterminal symbol that stands for a complete valid utterance in
+the language being parsed.  The start symbol is usually listed as the
+first nonterminal symbol in a language specification.  
+See section <A HREF="bison.html#SEC55">The Start-Symbol</A>.
+<DT>Symbol table
+<DD>
+A data structure where symbol names and associated data are stored
+during parsing to allow for recognition and use of existing
+information in repeated uses of a symbol.  See section <A HREF="bison.html#SEC29">Multi-Function Calculator: <CODE>mfcalc</CODE></A>.
+<DT>Token
+<DD>
+A basic, grammatically indivisible unit of a language.  The symbol
+that describes a token in the grammar is a terminal symbol.
+The input of the Bison parser is a stream of tokens which comes from
+the lexical analyzer.  See section <A HREF="bison.html#SEC40">Symbols, Terminal and Nonterminal</A>.
+<DT>Terminal symbol
+<DD>
+A grammar symbol that has no rules in the grammar and therefore
+is grammatically indivisible.  The piece of text it represents
+is a token.  See section <A HREF="bison.html#SEC8">Languages and Context-Free Grammars</A>.
+</DL>
+<P>
+<H1><A NAME="SEC93" HREF="bison.html#TOC93">Index</A></H1>
+<P>
+Jump to:
+<A HREF="#$">$</A>
+-
+<A HREF="#%">%</A>
+-
+<A HREF="#@">@</A>
+-
+<A HREF="#a">a</A>
+-
+<A HREF="#b">b</A>
+-
+<A HREF="#c">c</A>
+-
+<A HREF="#d">d</A>
+-
+<A HREF="#e">e</A>
+-
+<A HREF="#f">f</A>
+-
+<A HREF="#g">g</A>
+-
+<A HREF="#i">i</A>
+-
+<A HREF="#l">l</A>
+-
+<A HREF="#m">m</A>
+-
+<A HREF="#n">n</A>
+-
+<A HREF="#o">o</A>
+-
+<A HREF="#p">p</A>
+-
+<A HREF="#r">r</A>
+-
+<A HREF="#s">s</A>
+-
+<A HREF="#t">t</A>
+-
+<A HREF="#u">u</A>
+-
+<A HREF="#v">v</A>
+-
+<A HREF="#w">w</A>
+-
+<A HREF="#y">y</A>
+-
+<A HREF="#|">|</A>
+<P>
+<H2><A NAME="$">$</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX80">$$</A>
+<LI><A HREF="bison.html#IDX81">$<VAR>n</VAR></A>
+</DIR>
+<H2><A NAME="%">%</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX105">%expect</A>
+<LI><A HREF="bison.html#IDX155">%left</A>
+<LI><A HREF="bison.html#IDX157">%nonassoc</A>
+<LI><A HREF="bison.html#IDX162">%prec</A>
+<LI><A HREF="bison.html#IDX112">%pure_parser</A>
+<LI><A HREF="bison.html#IDX156">%right</A>
+<LI><A HREF="bison.html#IDX109">%start</A>
+<LI><A HREF="bison.html#IDX91">%token</A>
+<LI><A HREF="bison.html#IDX100">%type</A>
+<LI><A HREF="bison.html#IDX97">%union</A>
+</DIR>
+<H2><A NAME="@">@</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX139">@<VAR>n</VAR></A>
+</DIR>
+<H2><A NAME="a">a</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX79">action</A>
+<LI><A HREF="bison.html#IDX83">action data types</A>
+<LI><A HREF="bison.html#IDX135">action features summary</A>
+<LI><A HREF="bison.html#IDX85">actions in mid-rule</A>
+<LI><A HREF="bison.html#IDX17">actions, semantic</A>
+<LI><A HREF="bison.html#IDX56">additional C code section</A>
+<LI><A HREF="bison.html#IDX141">algorithm of parser</A>
+<LI><A HREF="bison.html#IDX154">associativity</A>
+</DIR>
+<H2><A NAME="b">b</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX5">Backus-Naur form</A>
+<LI><A HREF="bison.html#IDX113">Bison declaration summary</A>
+<LI><A HREF="bison.html#IDX88">Bison declarations</A>
+<LI><A HREF="bison.html#IDX52">Bison declarations (introduction)</A>
+<LI><A HREF="bison.html#IDX11">Bison grammar</A>
+<LI><A HREF="bison.html#IDX189">Bison invocation</A>
+<LI><A HREF="bison.html#IDX18">Bison parser</A>
+<LI><A HREF="bison.html#IDX140">Bison parser algorithm</A>
+<LI><A HREF="bison.html#IDX193">Bison symbols, table of</A>
+<LI><A HREF="bison.html#IDX19">Bison utility</A>
+<LI><A HREF="bison.html#IDX4">BNF</A>
+</DIR>
+<H2><A NAME="c">c</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX57">C code, section for additional</A>
+<LI><A HREF="bison.html#IDX50">C declarations section</A>
+<LI><A HREF="bison.html#IDX116">C-language interface</A>
+<LI><A HREF="bison.html#IDX42"><CODE>calc</CODE></A>
+<LI><A HREF="bison.html#IDX43">calculator, infix notation</A>
+<LI><A HREF="bison.html#IDX47">calculator, multi-function</A>
+<LI><A HREF="bison.html#IDX33">calculator, simple</A>
+<LI><A HREF="bison.html#IDX62">character token</A>
+<LI><A HREF="bison.html#IDX40">compiling the parser</A>
+<LI><A HREF="bison.html#IDX148">conflicts</A>
+<LI><A HREF="bison.html#IDX167">conflicts, reduce/reduce</A>
+<LI><A HREF="bison.html#IDX104">conflicts, suppressing warnings of</A>
+<LI><A HREF="bison.html#IDX158">context-dependent precedence</A>
+<LI><A HREF="bison.html#IDX2">context-free grammar</A>
+<LI><A HREF="bison.html#IDX36">controlling function</A>
+</DIR>
+<H2><A NAME="d">d</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX150">dangling <CODE>else</CODE></A>
+<LI><A HREF="bison.html#IDX84">data types in actions</A>
+<LI><A HREF="bison.html#IDX77">data types of semantic values</A>
+<LI><A HREF="bison.html#IDX185">debugging</A>
+<LI><A HREF="bison.html#IDX114">declaration summary</A>
+<LI><A HREF="bison.html#IDX87">declarations, Bison</A>
+<LI><A HREF="bison.html#IDX53">declarations, Bison (introduction)</A>
+<LI><A HREF="bison.html#IDX51">declarations, C</A>
+<LI><A HREF="bison.html#IDX93">declaring operator precedence</A>
+<LI><A HREF="bison.html#IDX106">declaring the start symbol</A>
+<LI><A HREF="bison.html#IDX89">declaring token type names</A>
+<LI><A HREF="bison.html#IDX95">declaring value types</A>
+<LI><A HREF="bison.html#IDX98">declaring value types, nonterminals</A>
+<LI><A HREF="bison.html#IDX82">default action</A>
+<LI><A HREF="bison.html#IDX78">default data type</A>
+<LI><A HREF="bison.html#IDX174">default stack limit</A>
+<LI><A HREF="bison.html#IDX108">default start symbol</A>
+<LI><A HREF="bison.html#IDX73">defining language semantics</A>
+</DIR>
+<H2><A NAME="e">e</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX151"><CODE>else</CODE>, dangling</A>
+<LI><A HREF="bison.html#IDX178">error</A>
+<LI><A HREF="bison.html#IDX176">error recovery</A>
+<LI><A HREF="bison.html#IDX44">error recovery, simple</A>
+<LI><A HREF="bison.html#IDX128">error reporting function</A>
+<LI><A HREF="bison.html#IDX38">error reporting routine</A>
+<LI><A HREF="bison.html#IDX29">examples, simple</A>
+<LI><A HREF="bison.html#IDX49">exercises</A>
+</DIR>
+<H2><A NAME="f">f</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX25">file format</A>
+<LI><A HREF="bison.html#IDX163">finite-state machine</A>
+<LI><A HREF="bison.html#IDX13">formal grammar</A>
+<LI><A HREF="bison.html#IDX26">format of grammar file</A>
+</DIR>
+<H2><A NAME="g">g</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX195">glossary</A>
+<LI><A HREF="bison.html#IDX24">grammar file</A>
+<LI><A HREF="bison.html#IDX66">grammar rule syntax</A>
+<LI><A HREF="bison.html#IDX54">grammar rules section</A>
+<LI><A HREF="bison.html#IDX12">grammar, Bison</A>
+<LI><A HREF="bison.html#IDX3">grammar, context-free</A>
+<LI><A HREF="bison.html#IDX9">grouping, syntactic</A>
+</DIR>
+<H2><A NAME="i">i</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX41">infix notation calculator</A>
+<LI><A HREF="bison.html#IDX117">interface</A>
+<LI><A HREF="bison.html#IDX1">introduction</A>
+<LI><A HREF="bison.html#IDX188">invoking Bison</A>
+<LI><A HREF="bison.html#IDX191">invoking Bison under VMS</A>
+</DIR>
+<H2><A NAME="l">l</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX169">LALR(1)</A>
+<LI><A HREF="bison.html#IDX74">language semantics, defining</A>
+<LI><A HREF="bison.html#IDX27">layout of Bison grammar</A>
+<LI><A HREF="bison.html#IDX70">left recursion</A>
+<LI><A HREF="bison.html#IDX122">lexical analyzer</A>
+<LI><A HREF="bison.html#IDX20">lexical analyzer, purpose</A>
+<LI><A HREF="bison.html#IDX35">lexical analyzer, writing</A>
+<LI><A HREF="bison.html#IDX182">lexical tie-in</A>
+<LI><A HREF="bison.html#IDX63">literal token</A>
+<LI><A HREF="bison.html#IDX146">look-ahead token</A>
+<LI><A HREF="bison.html#IDX168">LR(1)</A>
+</DIR>
+<H2><A NAME="m">m</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX37">main function in simple example</A>
+<LI><A HREF="bison.html#IDX46"><CODE>mfcalc</CODE></A>
+<LI><A HREF="bison.html#IDX86">mid-rule actions</A>
+<LI><A HREF="bison.html#IDX45">multi-function calculator</A>
+<LI><A HREF="bison.html#IDX72">mutual recursion</A>
+</DIR>
+<H2><A NAME="n">n</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX58">nonterminal symbol</A>
+</DIR>
+<H2><A NAME="o">o</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX152">operator precedence</A>
+<LI><A HREF="bison.html#IDX94">operator precedence, declaring</A>
+<LI><A HREF="bison.html#IDX190">options for invoking Bison</A>
+<LI><A HREF="bison.html#IDX172">overflow of parser stack</A>
+</DIR>
+<H2><A NAME="p">p</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX130">parse error</A>
+<LI><A HREF="bison.html#IDX21">parser</A>
+<LI><A HREF="bison.html#IDX144">parser stack</A>
+<LI><A HREF="bison.html#IDX171">parser stack overflow</A>
+<LI><A HREF="bison.html#IDX164">parser state</A>
+<LI><A HREF="bison.html#IDX31">polish notation calculator</A>
+<LI><A HREF="bison.html#IDX92">precedence declarations</A>
+<LI><A HREF="bison.html#IDX153">precedence of operators</A>
+<LI><A HREF="bison.html#IDX160">precedence, context-dependent</A>
+<LI><A HREF="bison.html#IDX161">precedence, unary operator</A>
+<LI><A HREF="bison.html#IDX102">preventing warnings about conflicts</A>
+<LI><A HREF="bison.html#IDX111">pure parser</A>
+</DIR>
+<H2><A NAME="r">r</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX177">recovery from errors</A>
+<LI><A HREF="bison.html#IDX69">recursive rule</A>
+<LI><A HREF="bison.html#IDX166">reduce/reduce conflict</A>
+<LI><A HREF="bison.html#IDX143">reduction</A>
+<LI><A HREF="bison.html#IDX110">reentrant parser</A>
+<LI><A HREF="bison.html#IDX30">reverse polish notation</A>
+<LI><A HREF="bison.html#IDX71">right recursion</A>
+<LI><A HREF="bison.html#IDX32"><CODE>rpcalc</CODE></A>
+<LI><A HREF="bison.html#IDX65">rule syntax</A>
+<LI><A HREF="bison.html#IDX55">rules section for grammar</A>
+<LI><A HREF="bison.html#IDX39">running Bison (introduction)</A>
+</DIR>
+<H2><A NAME="s">s</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX16">semantic actions</A>
+<LI><A HREF="bison.html#IDX14">semantic value</A>
+<LI><A HREF="bison.html#IDX75">semantic value type</A>
+<LI><A HREF="bison.html#IDX149">shift/reduce conflicts</A>
+<LI><A HREF="bison.html#IDX142">shifting</A>
+<LI><A HREF="bison.html#IDX28">simple examples</A>
+<LI><A HREF="bison.html#IDX64">single-character literal</A>
+<LI><A HREF="bison.html#IDX170">stack overflow</A>
+<LI><A HREF="bison.html#IDX145">stack, parser</A>
+<LI><A HREF="bison.html#IDX22">stages in using Bison</A>
+<LI><A HREF="bison.html#IDX10">start symbol</A>
+<LI><A HREF="bison.html#IDX107">start symbol, declaring</A>
+<LI><A HREF="bison.html#IDX165">state (of parser)</A>
+<LI><A HREF="bison.html#IDX134">summary, action features</A>
+<LI><A HREF="bison.html#IDX115">summary, Bison declaration</A>
+<LI><A HREF="bison.html#IDX101">suppressing conflict warnings</A>
+<LI><A HREF="bison.html#IDX61">symbol</A>
+<LI><A HREF="bison.html#IDX48">symbol table example</A>
+<LI><A HREF="bison.html#IDX6">symbols (abstract)</A>
+<LI><A HREF="bison.html#IDX194">symbols in Bison, table of</A>
+<LI><A HREF="bison.html#IDX8">syntactic grouping</A>
+<LI><A HREF="bison.html#IDX131">syntax error</A>
+<LI><A HREF="bison.html#IDX67">syntax of grammar rules</A>
+</DIR>
+<H2><A NAME="t">t</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX59">terminal symbol</A>
+<LI><A HREF="bison.html#IDX7">token</A>
+<LI><A HREF="bison.html#IDX60">token type</A>
+<LI><A HREF="bison.html#IDX90">token type names, declaring</A>
+<LI><A HREF="bison.html#IDX186">tracing the parser</A>
+</DIR>
+<H2><A NAME="u">u</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX159">unary operator precedence</A>
+<LI><A HREF="bison.html#IDX23">using Bison</A>
+</DIR>
+<H2><A NAME="v">v</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX76">value type, semantic</A>
+<LI><A HREF="bison.html#IDX96">value types, declaring</A>
+<LI><A HREF="bison.html#IDX99">value types, nonterminals, declaring</A>
+<LI><A HREF="bison.html#IDX15">value, semantic</A>
+<LI><A HREF="bison.html#IDX192">VMS</A>
+</DIR>
+<H2><A NAME="w">w</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX103">warnings, preventing</A>
+<LI><A HREF="bison.html#IDX34">writing a lexical analyzer</A>
+</DIR>
+<H2><A NAME="y">y</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX120">YYABORT</A>
+<LI><A HREF="bison.html#IDX119">YYACCEPT</A>
+<LI><A HREF="bison.html#IDX136">YYBACKUP</A>
+<LI><A HREF="bison.html#IDX147">yychar</A>
+<LI><A HREF="bison.html#IDX180">yyclearin</A>
+<LI><A HREF="bison.html#IDX183">YYDEBUG</A>
+<LI><A HREF="bison.html#IDX184">yydebug</A>
+<LI><A HREF="bison.html#IDX137">YYEMPTY</A>
+<LI><A HREF="bison.html#IDX179">yyerrok</A>
+<LI><A HREF="bison.html#IDX129">yyerror</A>
+<LI><A HREF="bison.html#IDX138">YYERROR</A>
+<LI><A HREF="bison.html#IDX132">YYERROR_VERBOSE</A>
+<LI><A HREF="bison.html#IDX175">YYINITDEPTH</A>
+<LI><A HREF="bison.html#IDX121">yylex</A>
+<LI><A HREF="bison.html#IDX127">YYLEX_PARAM</A>
+<LI><A HREF="bison.html#IDX124">yylloc</A>
+<LI><A HREF="bison.html#IDX125">YYLTYPE</A>
+<LI><A HREF="bison.html#IDX123">yylval</A>
+<LI><A HREF="bison.html#IDX173">YYMAXDEPTH</A>
+<LI><A HREF="bison.html#IDX133">yynerrs</A>
+<LI><A HREF="bison.html#IDX118">yyparse</A>
+<LI><A HREF="bison.html#IDX126">YYPARSE_PARAM</A>
+<LI><A HREF="bison.html#IDX187">YYPRINT</A>
+<LI><A HREF="bison.html#IDX181">YYRECOVERING</A>
+</DIR>
+<H2><A NAME="|">|</A></H2>
+<DIR>
+<LI><A HREF="bison.html#IDX68">|</A>
+</DIR>
+<P><HR><P>
+This document was generated on 2 October 1998 using the
+<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
+translator version 1.52.</P>
+</BODY>
+</HTML>

+ 686 - 0
engine/bin/bison/bison.simple

@@ -0,0 +1,686 @@
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "bison.simple"
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C.  */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc.  */
+#endif /* not GNU C.  */
+#endif /* alloca not defined.  */
+
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+/* Note: there must be only one dollar sign in this file.
+   It is replaced by the list of actions, each action
+   as one case of the switch.  */
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		-2
+#define YYEOF		0
+#define YYACCEPT	return(0)
+#define YYABORT 	return(1)
+#define YYERROR		goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+   This remains here temporarily to ease the
+   transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+#define YYFAIL		goto yyerrlab
+#define YYRECOVERING()  (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    { yychar = (token), yylval = (value);			\
+      yychar1 = YYTRANSLATE (yychar);				\
+      YYPOPSTACK;						\
+      goto yybackup;						\
+    }								\
+  else								\
+    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
+while (0)
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+#ifndef YYPURE
+#define YYLEX		yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX		yylex(&yylval, &yylloc)
+#endif
+#else /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX		yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX		yylex(&yylval)
+#endif
+#endif /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int	yychar;			/*  the lookahead symbol		*/
+YYSTYPE	yylval;			/*  the semantic value of the		*/
+				/*  lookahead symbol			*/
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc;			/*  location data for the lookahead	*/
+				/*  symbol				*/
+#endif
+
+int yynerrs;			/*  number of parse errors so far       */
+#endif  /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug;			/*  nonzero means print parse trace	*/
+/* Since this is uninitialized, it does not stop multiple parsers
+   from coexisting.  */
+#endif
+
+/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
+
+#ifndef	YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/*  YYMAXDEPTH is the maximum size the stacks can grow to
+    (effective only if the built-in stack extension method is used).  */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
+#define __yy_memcpy(FROM,TO,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
+#else				/* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+__yy_memcpy (from, to, count)
+     char *from;
+     char *to;
+     int count;
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void
+__yy_memcpy (char *from, char *to, int count)
+{
+  register char *f = from;
+  register char *t = to;
+  register int i = count;
+
+  while (i-- > 0)
+    *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 192 "bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
+
+#ifdef YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#else
+#define YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#endif
+
+int
+yyparse(YYPARSE_PARAM)
+     YYPARSE_PARAM_DECL
+{
+  register int yystate;
+  register int yyn;
+  register short *yyssp;
+  register YYSTYPE *yyvsp;
+  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
+  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
+
+  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
+  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
+
+  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
+  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
+  YYLTYPE *yyls = yylsa;
+  YYLTYPE *yylsp;
+
+#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
+
+  int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+  int yychar;
+  YYSTYPE yylval;
+  int yynerrs;
+#ifdef YYLSP_NEEDED
+  YYLTYPE yylloc;
+#endif
+#endif
+
+  YYSTYPE yyval;		/*  the variable used to return		*/
+				/*  semantic values from the action	*/
+				/*  routines				*/
+
+  int yylen;
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Starting parse\n");
+#endif
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss - 1;
+  yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+  yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in  yystate  .  */
+/* In all cases, when you get here, the value and location stacks
+   have just been pushed. so pushing a state here evens the stacks.  */
+yynewstate:
+
+  *++yyssp = yystate;
+
+  if (yyssp >= yyss + yystacksize - 1)
+    {
+      /* Give user a chance to reallocate the stack */
+      /* Use copies of these so that the &'s don't force the real ones into memory. */
+      YYSTYPE *yyvs1 = yyvs;
+      short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+      YYLTYPE *yyls1 = yyls;
+#endif
+
+      /* Get the current used size of the three stacks, in elements.  */
+      int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      /* Each stack pointer address is followed by the size of
+	 the data in use in that stack, in bytes.  */
+#ifdef YYLSP_NEEDED
+      /* This used to be a conditional around just the two extra args,
+	 but that might be undefined if yyoverflow is a macro.  */
+      yyoverflow("parser stack overflow",
+		 &yyss1, size * sizeof (*yyssp),
+		 &yyvs1, size * sizeof (*yyvsp),
+		 &yyls1, size * sizeof (*yylsp),
+		 &yystacksize);
+#else
+      yyoverflow("parser stack overflow",
+		 &yyss1, size * sizeof (*yyssp),
+		 &yyvs1, size * sizeof (*yyvsp),
+		 &yystacksize);
+#endif
+
+      yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+      yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+      /* Extend the stack our own way.  */
+      if (yystacksize >= YYMAXDEPTH)
+	{
+	  yyerror("parser stack overflow");
+	  return 2;
+	}
+      yystacksize *= 2;
+      if (yystacksize > YYMAXDEPTH)
+	yystacksize = YYMAXDEPTH;
+      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + size - 1;
+      yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+      yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+      if (yyssp >= yyss + yystacksize - 1)
+	YYABORT;
+    }
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+  goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* yychar is either YYEMPTY or YYEOF
+     or a valid token in external form.  */
+
+  if (yychar == YYEMPTY)
+    {
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Reading a token: ");
+#endif
+      yychar = YYLEX;
+    }
+
+  /* Convert token to internal form (in yychar1) for indexing tables with */
+
+  if (yychar <= 0)		/* This means end of input. */
+    {
+      yychar1 = 0;
+      yychar = YYEOF;		/* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Now at end of input.\n");
+#endif
+    }
+  else
+    {
+      yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+      if (yydebug)
+	{
+	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+	  /* Give the individual parser a way to print the precise meaning
+	     of a token, for further debugging info.  */
+#ifdef YYPRINT
+	  YYPRINT (stderr, yychar, yylval);
+#endif
+	  fprintf (stderr, ")\n");
+	}
+#endif
+    }
+
+  yyn += yychar1;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+    goto yydefault;
+
+  yyn = yytable[yyn];
+
+  /* yyn is what to do for this token type in this state.
+     Negative => reduce, -yyn is rule number.
+     Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+     0, or most negative number => error.  */
+
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrlab;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the lookahead token.  */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  /* count tokens shifted since error; after three, turn off error status.  */
+  if (yyerrstatus) yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+/* Do the default action for the current state.  */
+yydefault:
+
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+
+/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+yyreduce:
+  yylen = yyr2[yyn];
+  if (yylen > 0)
+    yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      int i;
+
+      fprintf (stderr, "Reducing via rule %d (line %d), ",
+	       yyn, yyrline[yyn]);
+
+      /* Print the symbols being reduced, and their result.  */
+      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+$   /* the action file gets copied in in place of this dollarsign */
+#line 487 "bison.simple"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+  yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "state stack now");
+      while (ssp1 != yyssp)
+	fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+  *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+  yylsp++;
+  if (yylen == 0)
+    {
+      yylsp->first_line = yylloc.first_line;
+      yylsp->first_column = yylloc.first_column;
+      yylsp->last_line = (yylsp-1)->last_line;
+      yylsp->last_column = (yylsp-1)->last_column;
+      yylsp->text = 0;
+    }
+  else
+    {
+      yylsp->last_line = (yylsp+yylen-1)->last_line;
+      yylsp->last_column = (yylsp+yylen-1)->last_column;
+    }
+#endif
+
+  /* Now "shift" the result of the reduction.
+     Determine what state that goes to,
+     based on the state we popped back to
+     and the rule number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTBASE];
+
+  goto yynewstate;
+
+yyerrlab:   /* here on detecting error */
+
+  if (! yyerrstatus)
+    /* If not already recovering from an error, report this error.  */
+    {
+      ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (yyn > YYFLAG && yyn < YYLAST)
+	{
+	  int size = 0;
+	  char *msg;
+	  int x, count;
+
+	  count = 0;
+	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
+	  for (x = (yyn < 0 ? -yyn : 0);
+	       x < (sizeof(yytname) / sizeof(char *)); x++)
+	    if (yycheck[x + yyn] == x)
+	      size += strlen(yytname[x]) + 15, count++;
+	  msg = (char *) malloc(size + 15);
+	  if (msg != 0)
+	    {
+	      strcpy(msg, "parse error");
+
+	      if (count < 5)
+		{
+		  count = 0;
+		  for (x = (yyn < 0 ? -yyn : 0);
+		       x < (sizeof(yytname) / sizeof(char *)); x++)
+		    if (yycheck[x + yyn] == x)
+		      {
+			strcat(msg, count == 0 ? ", expecting `" : " or `");
+			strcat(msg, yytname[x]);
+			strcat(msg, "'");
+			count++;
+		      }
+		}
+	      yyerror(msg);
+	      free(msg);
+	    }
+	  else
+	    yyerror ("parse error; also virtual memory exceeded");
+	}
+      else
+#endif /* YYERROR_VERBOSE */
+	yyerror("parse error");
+    }
+
+  goto yyerrlab1;
+yyerrlab1:   /* here on error raised explicitly by an action */
+
+  if (yyerrstatus == 3)
+    {
+      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+
+      /* return failure if at end of input */
+      if (yychar == YYEOF)
+	YYABORT;
+
+#if YYDEBUG != 0
+      if (yydebug)
+	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+      yychar = YYEMPTY;
+    }
+
+  /* Else will try to reuse lookahead token
+     after shifting the error token.  */
+
+  yyerrstatus = 3;		/* Each real token shifted decrements this */
+
+  goto yyerrhandle;
+
+yyerrdefault:  /* current state does not do anything special for the error token. */
+
+#if 0
+  /* This is wrong; only states that explicitly want error tokens
+     should shift them.  */
+  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
+  if (yyn) goto yydefault;
+#endif
+
+yyerrpop:   /* pop the current state because it cannot handle the error token */
+
+  if (yyssp == yyss) YYABORT;
+  yyvsp--;
+  yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+  yylsp--;
+#endif
+
+#if YYDEBUG != 0
+  if (yydebug)
+    {
+      short *ssp1 = yyss - 1;
+      fprintf (stderr, "Error: state stack now");
+      while (ssp1 != yyssp)
+	fprintf (stderr, " %d", *++ssp1);
+      fprintf (stderr, "\n");
+    }
+#endif
+
+yyerrhandle:
+
+  yyn = yypact[yystate];
+  if (yyn == YYFLAG)
+    goto yyerrdefault;
+
+  yyn += YYTERROR;
+  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+    goto yyerrdefault;
+
+  yyn = yytable[yyn];
+  if (yyn < 0)
+    {
+      if (yyn == YYFLAG)
+	goto yyerrpop;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+  else if (yyn == 0)
+    goto yyerrpop;
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+#if YYDEBUG != 0
+  if (yydebug)
+    fprintf(stderr, "Shifting error token, ");
+#endif
+
+  *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+  *++yylsp = yylloc;
+#endif
+
+  yystate = yyn;
+  goto yynewstate;
+}

BIN
engine/bin/flex/flex.exe


+ 4079 - 0
engine/bin/flex/flex_1.html

@@ -0,0 +1,4079 @@
+<html><head><title>flex</title></head><body>
+<ul>
+</ul><H2>NAME </H2><ul>
+
+flex - fast lexical analyzer generator
+
+</ul><H2>SYNOPSIS </H2><ul>
+
+<b>flex</b> 
+<b>[-bcdfhilnpstvwBFILTV78+?</b> <b>-C[aefFmr]</b> <b>-ooutput</b> <b>-Pprefix</b> <b>-Sskeleton]</b> 
+<b>[--help</b> <b>--version]</b> 
+<i>[filename</i> <i>...]</i> 
+
+</ul><H2>OVERVIEW </H2><ul>
+
+This manual describes
+<i>flex,</i> 
+a tool for generating programs that perform pattern-matching on text.  The
+manual includes both tutorial and reference sections:
+<pre>
+
+<p><br>    Description
+<br>        a brief overview of the tool
+<br>
+<p><br>    Some Simple Examples
+<br>
+<p><br>    Format Of The Input File
+<br>
+<p><br>    Patterns
+<br>        the extended regular expressions used by flex
+<br>
+<p><br>    How The Input Is Matched
+<br>        the rules for determining what has been matched
+<br>
+<p><br>    Actions
+<br>        how to specify what to do when a pattern is matched
+<br>
+<p><br>    The Generated Scanner
+<br>        details regarding the scanner that flex produces;
+<br>        how to control the input source
+<br>
+<p><br>    Start Conditions
+<br>        introducing context into your scanners, and
+<br>        managing "mini-scanners"
+<br>
+<p><br>    Multiple Input Buffers
+<br>        how to manipulate multiple input sources; how to
+<br>        scan from strings instead of files
+<br>
+<p><br>    End-of-file Rules
+<br>        special rules for matching the end of the input
+<br>
+<p><br>    Miscellaneous Macros
+<br>        a summary of macros available to the actions
+<br>
+<p><br>    Values Available To The User
+<br>        a summary of values available to the actions
+<br>
+<p><br>    Interfacing With Yacc
+<br>        connecting flex scanners together with yacc parsers
+<br>
+<p><br>    Options
+<br>        flex command-line options, and the "%option"
+<br>        directive
+<br>
+<p><br>    Performance Considerations
+<br>        how to make your scanner go as fast as possible
+<br>
+<p><br>    Generating C++ Scanners
+<br>        the (experimental) facility for generating C++
+<br>        scanner classes
+<br>
+<p><br>    Incompatibilities With Lex And POSIX
+<br>        how flex differs from AT&amp;T lex and the POSIX lex
+<br>        standard
+<br>
+<p><br>    Diagnostics
+<br>        those error messages produced by flex (or scanners
+<br>        it generates) whose meanings might not be apparent
+<br>
+<p><br>    Files
+<br>        files used by flex
+<br>
+<p><br>    Deficiencies / Bugs
+<br>        known problems with flex
+<br>
+<p><br>    See Also
+<br>        other documentation, related tools
+<br>
+<p><br>    Author
+<br>        includes contact information
+<br>
+<p><br></pre>
+
+</ul><H2>DESCRIPTION </H2><ul>
+
+<i>flex</i> 
+is a tool for generating
+<i>scanners:</i> 
+programs which recognized lexical patterns in text.
+<i>flex</i> 
+reads
+the given input files, or its standard input if no file names are given,
+for a description of a scanner to generate.  The description is in
+the form of pairs
+of regular expressions and C code, called
+<i>rules.</i> <i>flex</i> 
+generates as output a C source file,
+<b>lex.yy.c,</b> 
+which defines a routine
+<b>yylex().</b> 
+This file is compiled and linked with the
+<b>-lfl</b> 
+library to produce an executable.  When the executable is run,
+it analyzes its input for occurrences
+of the regular expressions.  Whenever it finds one, it executes
+the corresponding C code.
+
+</ul><H2>SOME SIMPLE EXAMPLES </H2><ul>
+
+
+<p>
+First some simple examples to get the flavor of how one uses
+<i>flex.</i> 
+The following
+<i>flex</i> 
+input specifies a scanner which whenever it encounters the string
+"username" will replace it with the user's login name:
+<pre>
+
+<p><br>    %%
+<br>    username    printf( "%s", getlogin() );
+<br>
+<p><br></pre>
+By default, any text not matched by a
+<i>flex</i> 
+scanner
+is copied to the output, so the net effect of this scanner is
+to copy its input file to its output with each occurrence
+of "username" expanded.
+In this input, there is just one rule.  "username" is the
+<i>pattern</i> 
+and the "printf" is the
+<i>action.</i> 
+The "%%" marks the beginning of the rules.
+
+<p>
+Here's another simple example:
+<pre>
+
+<p><br>            int num_lines = 0, num_chars = 0;
+<br>
+<p><br>    %%
+<br>    \n      ++num_lines; ++num_chars;
+<br>    .       ++num_chars;
+<br>
+<p><br>    %%
+<br>    main()
+<br>            {
+<br>            yylex();
+<br>            printf( "# of lines = %d, # of chars = %d\n",
+<br>                    num_lines, num_chars );
+<br>            }
+<br>
+<p><br></pre>
+This scanner counts the number of characters and the number
+of lines in its input (it produces no output other than the
+final report on the counts).  The first line
+declares two globals, "num_lines" and "num_chars", which are accessible
+both inside
+<b>yylex()</b> 
+and in the
+<b>main()</b> 
+routine declared after the second "%%".  There are two rules, one
+which matches a newline ("\n") and increments both the line count and
+the character count, and one which matches any character other than
+a newline (indicated by the "." regular expression).
+
+<p>
+A somewhat more complicated example:
+<pre>
+
+<p><br>    /* scanner for a toy Pascal-like language */
+<br>
+<p><br>    %{
+<br>    /* need this for the call to atof() below */
+<br>    #include &lt;math.h&gt;
+<br>    %}
+<br>
+<p><br>    DIGIT    [0-9]
+<br>    ID       [a-z][a-z0-9]*
+<br>
+<p><br>    %%
+<br>
+<p><br>    {DIGIT}+    {
+<br>                printf( "An integer: %s (%d)\n", yytext,
+<br>                        atoi( yytext ) );
+<br>                }
+<br>
+<p><br>    {DIGIT}+"."{DIGIT}*        {
+<br>                printf( "A float: %s (%g)\n", yytext,
+<br>                        atof( yytext ) );
+<br>                }
+<br>
+<p><br>    if|then|begin|end|procedure|function        {
+<br>                printf( "A keyword: %s\n", yytext );
+<br>                }
+<br>
+<p><br>    {ID}        printf( "An identifier: %s\n", yytext );
+<br>
+<p><br>    "+"|"-"|"*"|"/"   printf( "An operator: %s\n", yytext );
+<br>
+<p><br>    "{"[^}\n]*"}"     /* eat up one-line comments */
+<br>
+<p><br>    [ \t\n]+          /* eat up whitespace */
+<br>
+<p><br>    .           printf( "Unrecognized character: %s\n", yytext );
+<br>
+<p><br>    %%
+<br>
+<p><br>    main( argc, argv )
+<br>    int argc;
+<br>    char **argv;
+<br>        {
+<br>        ++argv, --argc;  /* skip over program name */
+<br>        if ( argc &gt; 0 )
+<br>                yyin = fopen( argv[0], "r" );
+<br>        else
+<br>                yyin = stdin;
+<br>        
+<br>        yylex();
+<br>        }
+<br>
+<p><br></pre>
+This is the beginnings of a simple scanner for a language like
+Pascal.  It identifies different types of
+<i>tokens</i> 
+and reports on what it has seen.
+
+<p>
+The details of this example will be explained in the following
+sections.
+
+</ul><H2>FORMAT OF THE INPUT FILE </H2><ul>
+
+The
+<i>flex</i> 
+input file consists of three sections, separated by a line with just
+<b>%%</b> 
+in it:
+<pre>
+
+<p><br>    definitions
+<br>    %%
+<br>    rules
+<br>    %%
+<br>    user code
+<br>
+<p><br></pre>
+The
+<i>definitions</i> 
+section contains declarations of simple
+<i>name</i> 
+definitions to simplify the scanner specification, and declarations of
+<i>start</i> <i>conditions,</i> 
+which are explained in a later section.
+
+<p>
+Name definitions have the form:
+<pre>
+
+<p><br>    name definition
+<br>
+<p><br></pre>
+The "name" is a word beginning with a letter or an underscore ('_')
+followed by zero or more letters, digits, '_', or '-' (dash).
+The definition is taken to begin at the first non-white-space character
+following the name and continuing to the end of the line.
+The definition can subsequently be referred to using "{name}", which
+will expand to "(definition)".  For example,
+<pre>
+
+<p><br>    DIGIT    [0-9]
+<br>    ID       [a-z][a-z0-9]*
+<br>
+<p><br></pre>
+defines "DIGIT" to be a regular expression which matches a
+single digit, and
+"ID" to be a regular expression which matches a letter
+followed by zero-or-more letters-or-digits.
+A subsequent reference to
+<pre>
+
+<p><br>    {DIGIT}+"."{DIGIT}*
+<br>
+<p><br></pre>
+is identical to
+<pre>
+
+<p><br>    ([0-9])+"."([0-9])*
+<br>
+<p><br></pre>
+and matches one-or-more digits followed by a '.' followed
+by zero-or-more digits.
+
+<p>
+The
+<i>rules</i> 
+section of the
+<i>flex</i> 
+input contains a series of rules of the form:
+<pre>
+
+<p><br>    pattern   action
+<br>
+<p><br></pre>
+where the pattern must be unindented and the action must begin
+on the same line.
+
+<p>
+See below for a further description of patterns and actions.
+
+<p>
+Finally, the user code section is simply copied to
+<b>lex.yy.c</b> 
+verbatim.
+It is used for companion routines which call or are called
+by the scanner.  The presence of this section is optional;
+if it is missing, the second
+<b>%%</b> 
+in the input file may be skipped, too.
+
+<p>
+In the definitions and rules sections, any
+<i>indented</i> 
+text or text enclosed in
+<b>%{</b> 
+and
+<b>%}</b> 
+is copied verbatim to the output (with the %{}'s removed).
+The %{}'s must appear unindented on lines by themselves.
+
+<p>
+In the rules section,
+any indented or %{} text appearing before the
+first rule may be used to declare variables
+which are local to the scanning routine and (after the declarations)
+code which is to be executed whenever the scanning routine is entered.
+Other indented or %{} text in the rule section is still copied to the output,
+but its meaning is not well-defined and it may well cause compile-time
+errors (this feature is present for
+<i>POSIX</i> 
+compliance; see below for other such features).
+
+<p>
+In the definitions section (but not in the rules section),
+an unindented comment (i.e., a line
+beginning with "/*") is also copied verbatim to the output up
+to the next "*/".
+
+</ul><H2>PATTERNS </H2><ul>
+
+The patterns in the input are written using an extended set of regular
+expressions.  These are:
+<pre>
+
+<p><br>    x          match the character 'x'
+<br>    .          any character (byte) except newline
+<br>    [xyz]      a "character class"; in this case, the pattern
+<br>                 matches either an 'x', a 'y', or a 'z'
+<br>    [abj-oZ]   a "character class" with a range in it; matches
+<br>                 an 'a', a 'b', any letter from 'j' through 'o',
+<br>                 or a 'Z'
+<br>    [^A-Z]     a "negated character class", i.e., any character
+<br>                 but those in the class.  In this case, any
+<br>                 character EXCEPT an uppercase letter.
+<br>    [^A-Z\n]   any character EXCEPT an uppercase letter or
+<br>                 a newline
+<br>    r*         zero or more r's, where r is any regular expression
+<br>    r+         one or more r's
+<br>    r?         zero or one r's (that is, "an optional r")
+<br>    r{2,5}     anywhere from two to five r's
+<br>    r{2,}      two or more r's
+<br>    r{4}       exactly 4 r's
+<br>    {name}     the expansion of the "name" definition
+<br>               (see above)
+<br>    "[xyz]\"foo"
+<br>               the literal string: [xyz]"foo
+<br>    \X         if X is an 'a', 'b', 'f', 'n', 'r', 't', or 'v',
+<br>                 then the ANSI-C interpretation of \x.
+<br>                 Otherwise, a literal 'X' (used to escape
+<br>                 operators such as '*')
+<br>    \0         a NUL character (ASCII code 0)
+<br>    \123       the character with octal value 123
+<br>    \x2a       the character with hexadecimal value 2a
+<br>    (r)        match an r; parentheses are used to override
+<br>                 precedence (see below)
+<br>
+<p><br>
+<p><br>    rs         the regular expression r followed by the
+<br>                 regular expression s; called "concatenation"
+<br>
+<p><br>
+<p><br>    r|s        either an r or an s
+<br>
+<p><br>
+<p><br>    r/s        an r but only if it is followed by an s.  The
+<br>                 text matched by s is included when determining
+<br>                 whether this rule is the "longest match",
+<br>                 but is then returned to the input before
+<br>                 the action is executed.  So the action only
+<br>                 sees the text matched by r.  This type
+<br>                 of pattern is called trailing context".
+<br>                 (There are some combinations of r/s that flex
+<br>                 cannot match correctly; see notes in the
+<br>                 Deficiencies / Bugs section below regarding
+<br>                 "dangerous trailing context".)
+<br>    ^r         an r, but only at the beginning of a line (i.e.,
+<br>                 which just starting to scan, or right after a
+<br>                 newline has been scanned).
+<br>    r$         an r, but only at the end of a line (i.e., just
+<br>                 before a newline).  Equivalent to "r/\n".
+<br>
+<p><br>               Note that flex's notion of "newline" is exactly
+<br>               whatever the C compiler used to compile flex
+<br>               interprets '\n' as; in particular, on some DOS
+<br>               systems you must either filter out \r's in the
+<br>               input yourself, or explicitly use r/\r\n for "r$".
+<br>
+<p><br>
+<p><br>    &lt;s&gt;r       an r, but only in start condition s (see
+<br>                 below for discussion of start conditions)
+<br>    &lt;s1,s2,s3&gt;r
+<br>               same, but in any of start conditions s1,
+<br>                 s2, or s3
+<br>    &lt;*&gt;r       an r in any start condition, even an exclusive one.
+<br>
+<p><br>
+<p><br>    &lt;&lt;EOF&gt;&gt;    an end-of-file
+<br>    &lt;s1,s2&gt;&lt;&lt;EOF&gt;&gt;
+<br>               an end-of-file when in start condition s1 or s2
+<br>
+<p><br></pre>
+Note that inside of a character class, all regular expression operators
+lose their special meaning except escape ('\') and the character class
+operators, '-', ']', and, at the beginning of the class, '^'.
+
+<p>
+The regular expressions listed above are grouped according to
+precedence, from highest precedence at the top to lowest at the bottom.
+Those grouped together have equal precedence.  For example,
+<pre>
+
+<p><br>    foo|bar*
+<br>
+<p><br></pre>
+is the same as
+<pre>
+
+<p><br>    (foo)|(ba(r*))
+<br>
+<p><br></pre>
+since the '*' operator has higher precedence than concatenation,
+and concatenation higher than alternation ('|').  This pattern
+therefore matches
+<i>either</i> 
+the string "foo"
+<i>or</i> 
+the string "ba" followed by zero-or-more r's.
+To match "foo" or zero-or-more "bar"'s, use:
+<pre>
+
+<p><br>    foo|(bar)*
+<br>
+<p><br></pre>
+and to match zero-or-more "foo"'s-or-"bar"'s:
+<pre>
+
+<p><br>    (foo|bar)*
+<br>
+<p><br></pre>
+
+<p>
+In addition to characters and ranges of characters, character classes
+can also contain character class
+<i>expressions.</i> 
+These are expressions enclosed inside
+<b>[:</b> 
+and
+<b>:]</b> 
+delimiters (which themselves must appear between the '[' and ']' of the
+character class; other elements may occur inside the character class, too).
+The valid expressions are:
+<pre>
+
+<p><br>    [:alnum:] [:alpha:] [:blank:]
+<br>    [:cntrl:] [:digit:] [:graph:]
+<br>    [:lower:] [:print:] [:punct:]
+<br>    [:space:] [:upper:] [:xdigit:]
+<br>
+<p><br></pre>
+These expressions all designate a set of characters equivalent to
+the corresponding standard C
+<b>isXXX</b> 
+function.  For example,
+<b>[:alnum:]</b> 
+designates those characters for which
+<b>isalnum()</b> 
+returns true - i.e., any alphabetic or numeric.
+Some systems don't provide
+<b>isblank(),</b> 
+so flex defines
+<b>[:blank:]</b> 
+as a blank or a tab.
+
+<p>
+For example, the following character classes are all equivalent:
+<pre>
+
+<p><br>    [[:alnum:]]
+<br>    [[:alpha:][:digit:]
+<br>    [[:alpha:]0-9]
+<br>    [a-zA-Z0-9]
+<br>
+<p><br></pre>
+If your scanner is case-insensitive (the
+<b>-i</b> 
+flag), then
+<b>[:upper:]</b> 
+and
+<b>[:lower:]</b> 
+are equivalent to
+<b>[:alpha:].</b> 
+
+<p>
+Some notes on patterns:
+<p><dl compact><dt>-<dd>A negated character class such as the example "[^A-Z]"
+above
+<i>will</i> <i>match</i> <i>a</i> <i>newline</i> 
+unless "\n" (or an equivalent escape sequence) is one of the
+characters explicitly present in the negated character class
+(e.g., "[^A-Z\n]").  This is unlike how many other regular
+expression tools treat negated character classes, but unfortunately
+the inconsistency is historically entrenched.
+Matching newlines means that a pattern like [^"]* can match the entire
+input unless there's another quote in the input.
+<dt>-<dd>A rule can have at most one instance of trailing context (the '/' operator
+or the '$' operator).  The start condition, '^', and "&lt;&lt;EOF&gt;&gt;" patterns
+can only occur at the beginning of a pattern, and, as well as with '/' and '$',
+cannot be grouped inside parentheses.  A '^' which does not occur at
+the beginning of a rule or a '$' which does not occur at the end of
+a rule loses its special properties and is treated as a normal character.
+<dt><dd>The following are illegal:
+<pre>
+
+<p><br>    foo/bar$
+<br>    &lt;sc1&gt;foo&lt;sc2&gt;bar
+<br>
+<p><br></pre>
+Note that the first of these, can be written "foo/bar\n".
+<dt><dd>The following will result in '$' or '^' being treated as a normal character:
+<pre>
+
+<p><br>    foo|(bar$)
+<br>    foo|^bar
+<br>
+<p><br></pre>
+If what's wanted is a "foo" or a bar-followed-by-a-newline, the following
+could be used (the special '|' action is explained below):
+<pre>
+
+<p><br>    foo      |
+<br>    bar$     /* action goes here */
+<br>
+<p><br></pre>
+A similar trick will work for matching a foo or a
+bar-at-the-beginning-of-a-line.
+</dl>
+</ul><H2>HOW THE INPUT IS MATCHED </H2><ul>
+
+When the generated scanner is run, it analyzes its input looking
+for strings which match any of its patterns.  If it finds more than
+one match, it takes the one matching the most text (for trailing
+context rules, this includes the length of the trailing part, even
+though it will then be returned to the input).  If it finds two
+or more matches of the same length, the
+rule listed first in the
+<i>flex</i> 
+input file is chosen.
+
+<p>
+Once the match is determined, the text corresponding to the match
+(called the
+<i>token)</i> 
+is made available in the global character pointer
+<b>yytext,</b> 
+and its length in the global integer
+<b>yyleng.</b> 
+The
+<i>action</i> 
+corresponding to the matched pattern is then executed (a more
+detailed description of actions follows), and then the remaining
+input is scanned for another match.
+
+<p>
+If no match is found, then the
+<i>default</i> <i>rule</i> 
+is executed: the next character in the input is considered matched and
+copied to the standard output.  Thus, the simplest legal
+<i>flex</i> 
+input is:
+<pre>
+
+<p><br>    %%
+<br>
+<p><br></pre>
+which generates a scanner that simply copies its input (one character
+at a time) to its output.
+
+<p>
+Note that
+<b>yytext</b> 
+can be defined in two different ways: either as a character
+<i>pointer</i> 
+or as a character
+<i>array.</i> 
+You can control which definition
+<i>flex</i> 
+uses by including one of the special directives
+<b>%pointer</b> 
+or
+<b>%array</b> 
+in the first (definitions) section of your flex input.  The default is
+<b>%pointer,</b> 
+unless you use the
+<b>-l</b> 
+lex compatibility option, in which case
+<b>yytext</b> 
+will be an array.
+The advantage of using
+<b>%pointer</b> 
+is substantially faster scanning and no buffer overflow when matching
+very large tokens (unless you run out of dynamic memory).  The disadvantage
+is that you are restricted in how your actions can modify
+<b>yytext</b> 
+(see the next section), and calls to the
+<b>unput()</b> 
+function destroys the present contents of
+<b>yytext,</b> 
+which can be a considerable porting headache when moving between different
+<i>lex</i> 
+versions.
+
+<p>
+The advantage of
+<b>%array</b> 
+is that you can then modify
+<b>yytext</b> 
+to your heart's content, and calls to
+<b>unput()</b> 
+do not destroy
+<b>yytext</b> 
+(see below).  Furthermore, existing
+<i>lex</i> 
+programs sometimes access
+<b>yytext</b> 
+externally using declarations of the form:
+<pre>
+    extern char yytext[];
+<br></pre>
+This definition is erroneous when used with
+<b>%pointer,</b> 
+but correct for
+<b>%array.</b> 
+
+<p>
+<b>%array</b> 
+defines
+<b>yytext</b> 
+to be an array of
+<b>YYLMAX</b> 
+characters, which defaults to a fairly large value.  You can change
+the size by simply #define'ing
+<b>YYLMAX</b> 
+to a different value in the first section of your
+<i>flex</i> 
+input.  As mentioned above, with
+<b>%pointer</b> 
+yytext grows dynamically to accommodate large tokens.  While this means your
+<b>%pointer</b> 
+scanner can accommodate very large tokens (such as matching entire blocks
+of comments), bear in mind that each time the scanner must resize
+<b>yytext</b> 
+it also must rescan the entire token from the beginning, so matching such
+tokens can prove slow.
+<b>yytext</b> 
+presently does
+<i>not</i> 
+dynamically grow if a call to
+<b>unput()</b> 
+results in too much text being pushed back; instead, a run-time error results.
+
+<p>
+Also note that you cannot use
+<b>%array</b> 
+with C++ scanner classes
+(the
+<b>c++</b> 
+option; see below).
+
+</ul><H2>ACTIONS </H2><ul>
+
+Each pattern in a rule has a corresponding action, which can be any
+arbitrary C statement.  The pattern ends at the first non-escaped
+whitespace character; the remainder of the line is its action.  If the
+action is empty, then when the pattern is matched the input token
+is simply discarded.  For example, here is the specification for a program
+which deletes all occurrences of "zap me" from its input:
+<pre>
+
+<p><br>    %%
+<br>    "zap me"
+<br>
+<p><br></pre>
+(It will copy all other characters in the input to the output since
+they will be matched by the default rule.)
+
+<p>
+Here is a program which compresses multiple blanks and tabs down to
+a single blank, and throws away whitespace found at the end of a line:
+<pre>
+
+<p><br>    %%
+<br>    [ \t]+        putchar( ' ' );
+<br>    [ \t]+$       /* ignore this token */
+<br>
+<p><br></pre>
+
+<p>
+If the action contains a '{', then the action spans till the balancing '}'
+is found, and the action may cross multiple lines.
+<i>flex</i> 
+knows about C strings and comments and won't be fooled by braces found
+within them, but also allows actions to begin with
+<b>%{</b> 
+and will consider the action to be all the text up to the next
+<b>%}</b> 
+(regardless of ordinary braces inside the action).
+
+<p>
+An action consisting solely of a vertical bar ('|') means "same as
+the action for the next rule."  See below for an illustration.
+
+<p>
+Actions can include arbitrary C code, including
+<b>return</b> 
+statements to return a value to whatever routine called
+<b>yylex().</b> 
+Each time
+<b>yylex()</b> 
+is called it continues processing tokens from where it last left
+off until it either reaches
+the end of the file or executes a return.
+
+<p>
+Actions are free to modify
+<b>yytext</b> 
+except for lengthening it (adding
+characters to its end--these will overwrite later characters in the
+input stream).  This however does not apply when using
+<b>%array</b> 
+(see above); in that case,
+<b>yytext</b> 
+may be freely modified in any way.
+
+<p>
+Actions are free to modify
+<b>yyleng</b> 
+except they should not do so if the action also includes use of
+<b>yymore()</b> 
+(see below).
+
+<p>
+There are a number of special directives which can be included within
+an action:
+<p><dl compact><dt>-<dd><b>ECHO</b> 
+copies yytext to the scanner's output.
+<dt>-<dd><b>BEGIN</b> 
+followed by the name of a start condition places the scanner in the
+corresponding start condition (see below).
+<dt>-<dd><b>REJECT</b> 
+directs the scanner to proceed on to the "second best" rule which matched the
+input (or a prefix of the input).  The rule is chosen as described
+above in "How the Input is Matched", and
+<b>yytext</b> 
+and
+<b>yyleng</b> 
+set up appropriately.
+It may either be one which matched as much text
+as the originally chosen rule but came later in the
+<i>flex</i> 
+input file, or one which matched less text.
+For example, the following will both count the
+words in the input and call the routine special() whenever "frob" is seen:
+<pre>
+
+<p><br>            int word_count = 0;
+<br>    %%
+<br>
+<p><br>    frob        special(); REJECT;
+<br>    [^ \t\n]+   ++word_count;
+<br>
+<p><br></pre>
+Without the
+<b>REJECT,</b> 
+any "frob"'s in the input would not be counted as words, since the
+scanner normally executes only one action per token.
+Multiple
+<b>REJECT's</b> 
+are allowed, each one finding the next best choice to the currently
+active rule.  For example, when the following scanner scans the token
+"abcd", it will write "abcdabcaba" to the output:
+<pre>
+
+<p><br>    %%
+<br>    a        |
+<br>    ab       |
+<br>    abc      |
+<br>    abcd     ECHO; REJECT;
+<br>    .|\n     /* eat up any unmatched character */
+<br>
+<p><br></pre>
+(The first three rules share the fourth's action since they use
+the special '|' action.)
+<b>REJECT</b> 
+is a particularly expensive feature in terms of scanner performance;
+if it is used in
+<i>any</i> 
+of the scanner's actions it will slow down
+<i>all</i> 
+of the scanner's matching.  Furthermore,
+<b>REJECT</b> 
+cannot be used with the
+<i>-Cf</i> 
+or
+<i>-CF</i> 
+options (see below).
+<dt><dd>Note also that unlike the other special actions,
+<b>REJECT</b> 
+is a
+<i>branch;</i> 
+code immediately following it in the action will
+<i>not</i> 
+be executed.
+<dt>-<dd><b>yymore()</b> 
+tells the scanner that the next time it matches a rule, the corresponding
+token should be
+<i>appended</i> 
+onto the current value of
+<b>yytext</b> 
+rather than replacing it.  For example, given the input "mega-kludge"
+the following will write "mega-mega-kludge" to the output:
+<pre>
+
+<p><br>    %%
+<br>    mega-    ECHO; yymore();
+<br>    kludge   ECHO;
+<br>
+<p><br></pre>
+First "mega-" is matched and echoed to the output.  Then "kludge"
+is matched, but the previous "mega-" is still hanging around at the
+beginning of
+<b>yytext</b> 
+so the
+<b>ECHO</b> 
+for the "kludge" rule will actually write "mega-kludge".
+</dl>
+<p>
+Two notes regarding use of
+<b>yymore().</b> 
+First,
+<b>yymore()</b> 
+depends on the value of
+<i>yyleng</i> 
+correctly reflecting the size of the current token, so you must not
+modify
+<i>yyleng</i> 
+if you are using
+<b>yymore().</b> 
+Second, the presence of
+<b>yymore()</b> 
+in the scanner's action entails a minor performance penalty in the
+scanner's matching speed.
+<p><dl compact><dt>-<dd><b>yyless(n)</b> 
+returns all but the first
+<i>n</i> 
+characters of the current token back to the input stream, where they
+will be rescanned when the scanner looks for the next match.
+<b>yytext</b> 
+and
+<b>yyleng</b> 
+are adjusted appropriately (e.g.,
+<b>yyleng</b> 
+will now be equal to
+<i>n</i> 
+).  For example, on the input "foobar" the following will write out
+"foobarbar":
+<pre>
+
+<p><br>    %%
+<br>    foobar    ECHO; yyless(3);
+<br>    [a-z]+    ECHO;
+<br>
+<p><br></pre>
+An argument of 0 to
+<b>yyless</b> 
+will cause the entire current input string to be scanned again.  Unless you've
+changed how the scanner will subsequently process its input (using
+<b>BEGIN,</b> 
+for example), this will result in an endless loop.
+</dl>
+<p>
+Note that
+<b>yyless</b> 
+is a macro and can only be used in the flex input file, not from
+other source files.
+<p><dl compact><dt>-<dd><b>unput(c)</b> 
+puts the character
+<i>c</i> 
+back onto the input stream.  It will be the next character scanned.
+The following action will take the current token and cause it
+to be rescanned enclosed in parentheses.
+<pre>
+
+<p><br>    {
+<br>    int i;
+<br>    /* Copy yytext because unput() trashes yytext */
+<br>    char *yycopy = strdup( yytext );
+<br>    unput( ')' );
+<br>    for ( i = yyleng - 1; i &gt;= 0; --i )
+<br>        unput( yycopy[i] );
+<br>    unput( '(' );
+<br>    free( yycopy );
+<br>    }
+<br>
+<p><br></pre>
+Note that since each
+<b>unput()</b> 
+puts the given character back at the
+<i>beginning</i> 
+of the input stream, pushing back strings must be done back-to-front.
+</dl>
+<p>
+An important potential problem when using
+<b>unput()</b> 
+is that if you are using
+<b>%pointer</b> 
+(the default), a call to
+<b>unput()</b> 
+<i>destroys</i> 
+the contents of
+<i>yytext,</i> 
+starting with its rightmost character and devouring one character to
+the left with each call.  If you need the value of yytext preserved
+after a call to
+<b>unput()</b> 
+(as in the above example),
+you must either first copy it elsewhere, or build your scanner using
+<b>%array</b> 
+instead (see How The Input Is Matched).
+
+<p>
+Finally, note that you cannot put back
+<b>EOF</b> 
+to attempt to mark the input stream with an end-of-file.
+<p><dl compact><dt>-<dd><b>input()</b> 
+reads the next character from the input stream.  For example,
+the following is one way to eat up C comments:
+<pre>
+
+<p><br>    %%
+<br>    "/*"        {
+<br>                register int c;
+<br>
+<p><br>                for ( ; ; )
+<br>                    {
+<br>                    while ( (c = input()) != '*' &amp;&amp;
+<br>                            c != EOF )
+<br>                        ;    /* eat up text of comment */
+<br>
+<p><br>                    if ( c == '*' )
+<br>                        {
+<br>                        while ( (c = input()) == '*' )
+<br>                            ;
+<br>                        if ( c == '/' )
+<br>                            break;    /* found the end */
+<br>                        }
+<br>
+<p><br>                    if ( c == EOF )
+<br>                        {
+<br>                        error( "EOF in comment" );
+<br>                        break;
+<br>                        }
+<br>                    }
+<br>                }
+<br>
+<p><br></pre>
+(Note that if the scanner is compiled using
+<b>C++,</b> 
+then
+<b>input()</b> 
+is instead referred to as
+<b>yyinput(),</b> 
+in order to avoid a name clash with the
+<b>C++</b> 
+stream by the name of
+<i>input.)</i> 
+<dt>-<dd><b>YY_FLUSH_BUFFER</b> 
+flushes the scanner's internal buffer
+so that the next time the scanner attempts to match a token, it will
+first refill the buffer using
+<b>YY_INPUT</b> 
+(see The Generated Scanner, below).  This action is a special case
+of the more general
+<b>yy_flush_buffer()</b> 
+function, described below in the section Multiple Input Buffers.
+<dt>-<dd><b>yyterminate()</b> 
+can be used in lieu of a return statement in an action.  It terminates
+the scanner and returns a 0 to the scanner's caller, indicating "all done".
+By default,
+<b>yyterminate()</b> 
+is also called when an end-of-file is encountered.  It is a macro and
+may be redefined.
+</dl>
+</ul><H2>THE GENERATED SCANNER </H2><ul>
+
+The output of
+<i>flex</i> 
+is the file
+<b>lex.yy.c,</b> 
+which contains the scanning routine
+<b>yylex(),</b> 
+a number of tables used by it for matching tokens, and a number
+of auxiliary routines and macros.  By default,
+<b>yylex()</b> 
+is declared as follows:
+<pre>
+
+<p><br>    int yylex()
+<br>        {
+<br>        ... various definitions and the actions in here ...
+<br>        }
+<br>
+<p><br></pre>
+(If your environment supports function prototypes, then it will
+be "int yylex( void )".)  This definition may be changed by defining
+the "YY_DECL" macro.  For example, you could use:
+<pre>
+
+<p><br>    #define YY_DECL float lexscan( a, b ) float a, b;
+<br>
+<p><br></pre>
+to give the scanning routine the name
+<i>lexscan,</i> 
+returning a float, and taking two floats as arguments.  Note that
+if you give arguments to the scanning routine using a
+K&amp;R-style/non-prototyped function declaration, you must terminate
+the definition with a semi-colon (;).
+
+<p>
+Whenever
+<b>yylex()</b> 
+is called, it scans tokens from the global input file
+<i>yyin</i> 
+(which defaults to stdin).  It continues until it either reaches
+an end-of-file (at which point it returns the value 0) or
+one of its actions executes a
+<i>return</i> 
+statement.
+
+<p>
+If the scanner reaches an end-of-file, subsequent calls are undefined
+unless either
+<i>yyin</i> 
+is pointed at a new input file (in which case scanning continues from
+that file), or
+<b>yyrestart()</b> 
+is called.
+<b>yyrestart()</b> 
+takes one argument, a
+<b>FILE</b> <b>*</b> 
+pointer (which can be nil, if you've set up
+<b>YY_INPUT</b> 
+to scan from a source other than
+<i>yyin),</i> 
+and initializes
+<i>yyin</i> 
+for scanning from that file.  Essentially there is no difference between
+just assigning
+<i>yyin</i> 
+to a new input file or using
+<b>yyrestart()</b> 
+to do so; the latter is available for compatibility with previous versions
+of
+<i>flex,</i> 
+and because it can be used to switch input files in the middle of scanning.
+It can also be used to throw away the current input buffer, by calling
+it with an argument of
+<i>yyin;</i> 
+but better is to use
+<b>YY_FLUSH_BUFFER</b> 
+(see above).
+Note that
+<b>yyrestart()</b> 
+does
+<i>not</i> 
+reset the start condition to
+<b>INITIAL</b> 
+(see Start Conditions, below).
+
+<p>
+If
+<b>yylex()</b> 
+stops scanning due to executing a
+<i>return</i> 
+statement in one of the actions, the scanner may then be called again and it
+will resume scanning where it left off.
+
+<p>
+By default (and for purposes of efficiency), the scanner uses
+block-reads rather than simple
+<i>getc()</i> 
+calls to read characters from
+<i>yyin.</i> 
+The nature of how it gets its input can be controlled by defining the
+<b>YY_INPUT</b> 
+macro.
+YY_INPUT's calling sequence is "YY_INPUT(buf,result,max_size)".  Its
+action is to place up to
+<i>max_size</i> 
+characters in the character array
+<i>buf</i> 
+and return in the integer variable
+<i>result</i> 
+either the
+number of characters read or the constant YY_NULL (0 on Unix systems)
+to indicate EOF.  The default YY_INPUT reads from the
+global file-pointer "yyin".
+
+<p>
+A sample definition of YY_INPUT (in the definitions
+section of the input file):
+<pre>
+
+<p><br>    %{
+<br>    #define YY_INPUT(buf,result,max_size) \
+<br>        { \
+<br>        int c = getchar(); \
+<br>        result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \
+<br>        }
+<br>    %}
+<br>
+<p><br></pre>
+This definition will change the input processing to occur
+one character at a time.
+
+<p>
+When the scanner receives an end-of-file indication from YY_INPUT,
+it then checks the
+<b>yywrap()</b> 
+function.  If
+<b>yywrap()</b> 
+returns false (zero), then it is assumed that the
+function has gone ahead and set up
+<i>yyin</i> 
+to point to another input file, and scanning continues.  If it returns
+true (non-zero), then the scanner terminates, returning 0 to its
+caller.  Note that in either case, the start condition remains unchanged;
+it does
+<i>not</i> 
+revert to
+<b>INITIAL.</b> 
+
+<p>
+If you do not supply your own version of
+<b>yywrap(),</b> 
+then you must either use
+<b>%option</b> <b>noyywrap</b> 
+(in which case the scanner behaves as though
+<b>yywrap()</b> 
+returned 1), or you must link with
+<b>-lfl</b> 
+to obtain the default version of the routine, which always returns 1.
+
+<p>
+Three routines are available for scanning from in-memory buffers rather
+than files:
+<b>yy_scan_string(),</b> <b>yy_scan_bytes(),</b> 
+and
+<b>yy_scan_buffer().</b> 
+See the discussion of them below in the section Multiple Input Buffers.
+
+<p>
+The scanner writes its
+<b>ECHO</b> 
+output to the
+<i>yyout</i> 
+global (default, stdout), which may be redefined by the user simply
+by assigning it to some other
+<b>FILE</b> 
+pointer.
+
+</ul><H2>START CONDITIONS </H2><ul>
+
+<i>flex</i> 
+provides a mechanism for conditionally activating rules.  Any rule
+whose pattern is prefixed with "&lt;sc&gt;" will only be active when
+the scanner is in the start condition named "sc".  For example,
+<pre>
+
+<p><br>    &lt;STRING&gt;[^"]*        { /* eat up the string body ... */
+<br>                ...
+<br>                }
+<br>
+<p><br></pre>
+will be active only when the scanner is in the "STRING" start
+condition, and
+<pre>
+
+<p><br>    &lt;INITIAL,STRING,QUOTE&gt;\.        { /* handle an escape ... */
+<br>                ...
+<br>                }
+<br>
+<p><br></pre>
+will be active only when the current start condition is
+either "INITIAL", "STRING", or "QUOTE".
+
+<p>
+Start conditions
+are declared in the definitions (first) section of the input
+using unindented lines beginning with either
+<b>%s</b> 
+or
+<b>%x</b> 
+followed by a list of names.
+The former declares
+<i>inclusive</i> 
+start conditions, the latter
+<i>exclusive</i> 
+start conditions.  A start condition is activated using the
+<b>BEGIN</b> 
+action.  Until the next
+<b>BEGIN</b> 
+action is executed, rules with the given start
+condition will be active and
+rules with other start conditions will be inactive.
+If the start condition is
+<i>inclusive,</i> 
+then rules with no start conditions at all will also be active.
+If it is
+<i>exclusive,</i> 
+then
+<i>only</i> 
+rules qualified with the start condition will be active.
+A set of rules contingent on the same exclusive start condition
+describe a scanner which is independent of any of the other rules in the
+<i>flex</i> 
+input.  Because of this,
+exclusive start conditions make it easy to specify "mini-scanners"
+which scan portions of the input that are syntactically different
+from the rest (e.g., comments).
+
+<p>
+If the distinction between inclusive and exclusive start conditions
+is still a little vague, here's a simple example illustrating the
+connection between the two.  The set of rules:
+<pre>
+
+<p><br>    %s example
+<br>    %%
+<br>
+<p><br>    &lt;example&gt;foo   do_something();
+<br>
+<p><br>    bar            something_else();
+<br>
+<p><br></pre>
+is equivalent to
+<pre>
+
+<p><br>    %x example
+<br>    %%
+<br>
+<p><br>    &lt;example&gt;foo   do_something();
+<br>
+<p><br>    &lt;INITIAL,example&gt;bar    something_else();
+<br>
+<p><br></pre>
+Without the
+<b>&lt;INITIAL,example&gt;</b> 
+qualifier, the
+<i>bar</i> 
+pattern in the second example wouldn't be active (i.e., couldn't match)
+when in start condition
+<b>example.</b> 
+If we just used
+<b>&lt;example&gt;</b> 
+to qualify
+<i>bar,</i> 
+though, then it would only be active in
+<b>example</b> 
+and not in
+<b>INITIAL,</b> 
+while in the first example it's active in both, because in the first
+example the
+<b>example</b> 
+startion condition is an
+<i>inclusive</i> 
+<b>(%s)</b> 
+start condition.
+
+<p>
+Also note that the special start-condition specifier
+<b>&lt;*&gt;</b> 
+matches every start condition.  Thus, the above example could also
+have been written;
+<pre>
+
+<p><br>    %x example
+<br>    %%
+<br>
+<p><br>    &lt;example&gt;foo   do_something();
+<br>
+<p><br>    &lt;*&gt;bar    something_else();
+<br>
+<p><br></pre>
+
+<p>
+The default rule (to
+<b>ECHO</b> 
+any unmatched character) remains active in start conditions.  It
+is equivalent to:
+<pre>
+
+<p><br>    &lt;*&gt;.|\n     ECHO;
+<br>
+<p><br></pre>
+
+<p>
+<b>BEGIN(0)</b> 
+returns to the original state where only the rules with
+no start conditions are active.  This state can also be
+referred to as the start-condition "INITIAL", so
+<b>BEGIN(INITIAL)</b> 
+is equivalent to
+<b>BEGIN(0).</b> 
+(The parentheses around the start condition name are not required but
+are considered good style.)
+
+<p>
+<b>BEGIN</b> 
+actions can also be given as indented code at the beginning
+of the rules section.  For example, the following will cause
+the scanner to enter the "SPECIAL" start condition whenever
+<b>yylex()</b> 
+is called and the global variable
+<i>enter_special</i> 
+is true:
+<pre>
+
+<p><br>            int enter_special;
+<br>
+<p><br>    %x SPECIAL
+<br>    %%
+<br>            if ( enter_special )
+<br>                BEGIN(SPECIAL);
+<br>
+<p><br>    &lt;SPECIAL&gt;blahblahblah
+<br>    ...more rules follow...
+<br>
+<p><br></pre>
+
+<p>
+To illustrate the uses of start conditions,
+here is a scanner which provides two different interpretations
+of a string like "123.456".  By default it will treat it as
+as three tokens, the integer "123", a dot ('.'), and the integer "456".
+But if the string is preceded earlier in the line by the string
+"expect-floats"
+it will treat it as a single token, the floating-point number
+123.456:
+<pre>
+
+<p><br>    %{
+<br>    #include &lt;math.h&gt;
+<br>    %}
+<br>    %s expect
+<br>
+<p><br>    %%
+<br>    expect-floats        BEGIN(expect);
+<br>
+<p><br>    &lt;expect&gt;[0-9]+"."[0-9]+      {
+<br>                printf( "found a float, = %f\n",
+<br>                        atof( yytext ) );
+<br>                }
+<br>    &lt;expect&gt;\n           {
+<br>                /* that's the end of the line, so
+<br>                 * we need another "expect-number"
+<br>                 * before we'll recognize any more
+<br>                 * numbers
+<br>                 */
+<br>                BEGIN(INITIAL);
+<br>                }
+<br>
+<p><br>    [0-9]+      {
+<br>                printf( "found an integer, = %d\n",
+<br>                        atoi( yytext ) );
+<br>                }
+<br>
+<p><br>    "."         printf( "found a dot\n" );
+<br>
+<p><br></pre>
+Here is a scanner which recognizes (and discards) C comments while
+maintaining a count of the current input line.
+<pre>
+
+<p><br>    %x comment
+<br>    %%
+<br>            int line_num = 1;
+<br>
+<p><br>    "/*"         BEGIN(comment);
+<br>
+<p><br>    &lt;comment&gt;[^*\n]*        /* eat anything that's not a '*' */
+<br>    &lt;comment&gt;"*"+[^*/\n]*   /* eat up '*'s not followed by '/'s */
+<br>    &lt;comment&gt;\n             ++line_num;
+<br>    &lt;comment&gt;"*"+"/"        BEGIN(INITIAL);
+<br>
+<p><br></pre>
+This scanner goes to a bit of trouble to match as much
+text as possible with each rule.  In general, when attempting to write
+a high-speed scanner try to match as much possible in each rule, as
+it's a big win.
+
+<p>
+Note that start-conditions names are really integer values and
+can be stored as such.  Thus, the above could be extended in the
+following fashion:
+<pre>
+
+<p><br>    %x comment foo
+<br>    %%
+<br>            int line_num = 1;
+<br>            int comment_caller;
+<br>
+<p><br>    "/*"         {
+<br>                 comment_caller = INITIAL;
+<br>                 BEGIN(comment);
+<br>                 }
+<br>
+<p><br>    ...
+<br>
+<p><br>    &lt;foo&gt;"/*"    {
+<br>                 comment_caller = foo;
+<br>                 BEGIN(comment);
+<br>                 }
+<br>
+<p><br>    &lt;comment&gt;[^*\n]*        /* eat anything that's not a '*' */
+<br>    &lt;comment&gt;"*"+[^*/\n]*   /* eat up '*'s not followed by '/'s */
+<br>    &lt;comment&gt;\n             ++line_num;
+<br>    &lt;comment&gt;"*"+"/"        BEGIN(comment_caller);
+<br>
+<p><br></pre>
+Furthermore, you can access the current start condition using
+the integer-valued
+<b>YY_START</b> 
+macro.  For example, the above assignments to
+<i>comment_caller</i> 
+could instead be written
+<pre>
+
+<p><br>    comment_caller = YY_START;
+<br>
+<p><br></pre>
+Flex provides
+<b>YYSTATE</b> 
+as an alias for
+<b>YY_START</b> 
+(since that is what's used by AT&amp;T
+<i>lex).</i> 
+
+<p>
+Note that start conditions do not have their own name-space; %s's and %x's
+declare names in the same fashion as #define's.
+
+<p>
+Finally, here's an example of how to match C-style quoted strings using
+exclusive start conditions, including expanded escape sequences (but
+not including checking for a string that's too long):
+<pre>
+
+<p><br>    %x str
+<br>
+<p><br>    %%
+<br>            char string_buf[MAX_STR_CONST];
+<br>            char *string_buf_ptr;
+<br>
+<p><br>
+<p><br>    \"      string_buf_ptr = string_buf; BEGIN(str);
+<br>
+<p><br>    &lt;str&gt;\"        { /* saw closing quote - all done */
+<br>            BEGIN(INITIAL);
+<br>            *string_buf_ptr = '\0';
+<br>            /* return string constant token type and
+<br>             * value to parser
+<br>             */
+<br>            }
+<br>
+<p><br>    &lt;str&gt;\n        {
+<br>            /* error - unterminated string constant */
+<br>            /* generate error message */
+<br>            }
+<br>
+<p><br>    &lt;str&gt;\\[0-7]{1,3} {
+<br>            /* octal escape sequence */
+<br>            int result;
+<br>
+<p><br>            (void) sscanf( yytext + 1, "%o", &amp;result );
+<br>
+<p><br>            if ( result &gt; 0xff )
+<br>                    /* error, constant is out-of-bounds */
+<br>
+<p><br>            *string_buf_ptr++ = result;
+<br>            }
+<br>
+<p><br>    &lt;str&gt;\\[0-9]+ {
+<br>            /* generate error - bad escape sequence; something
+<br>             * like '\48' or '\0777777'
+<br>             */
+<br>            }
+<br>
+<p><br>    &lt;str&gt;\\n  *string_buf_ptr++ = '\n';
+<br>    &lt;str&gt;\\t  *string_buf_ptr++ = '\t';
+<br>    &lt;str&gt;\\r  *string_buf_ptr++ = '\r';
+<br>    &lt;str&gt;\\b  *string_buf_ptr++ = '\b';
+<br>    &lt;str&gt;\\f  *string_buf_ptr++ = '\f';
+<br>
+<p><br>    &lt;str&gt;\\(.|\n)  *string_buf_ptr++ = yytext[1];
+<br>
+<p><br>    &lt;str&gt;[^\\\n\"]+        {
+<br>            char *yptr = yytext;
+<br>
+<p><br>            while ( *yptr )
+<br>                    *string_buf_ptr++ = *yptr++;
+<br>            }
+<br>
+<p><br></pre>
+
+<p>
+Often, such as in some of the examples above, you wind up writing a
+whole bunch of rules all preceded by the same start condition(s).  Flex
+makes this a little easier and cleaner by introducing a notion of
+start condition
+<i>scope.</i> 
+A start condition scope is begun with:
+<pre>
+
+<p><br>    &lt;SCs&gt;{
+<br>
+<p><br></pre>
+where
+<i>SCs</i> 
+is a list of one or more start conditions.  Inside the start condition
+scope, every rule automatically has the prefix
+<i>&lt;SCs&gt;</i> 
+applied to it, until a
+<i>'}'</i> 
+which matches the initial
+<i>'{'.</i> 
+So, for example,
+<pre>
+
+<p><br>    &lt;ESC&gt;{
+<br>        "\\n"   return '\n';
+<br>        "\\r"   return '\r';
+<br>        "\\f"   return '\f';
+<br>        "\\0"   return '\0';
+<br>    }
+<br>
+<p><br></pre>
+is equivalent to:
+<pre>
+
+<p><br>    &lt;ESC&gt;"\\n"  return '\n';
+<br>    &lt;ESC&gt;"\\r"  return '\r';
+<br>    &lt;ESC&gt;"\\f"  return '\f';
+<br>    &lt;ESC&gt;"\\0"  return '\0';
+<br>
+<p><br></pre>
+Start condition scopes may be nested.
+
+<p>
+Three routines are available for manipulating stacks of start conditions:
+<p><dl compact><dt><b>void</b> <b>yy_push_state(int</b> <b>new_state)</b> 
+<dd>pushes the current start condition onto the top of the start condition
+stack and switches to
+<i>new_state</i> 
+as though you had used
+<b>BEGIN</b> <b>new_state</b> 
+(recall that start condition names are also integers).
+<dt><b>void</b> <b>yy_pop_state()</b> 
+<dd>pops the top of the stack and switches to it via
+<b>BEGIN.</b> 
+<dt><b>int</b> <b>yy_top_state()</b> 
+<dd>returns the top of the stack without altering the stack's contents.
+</dl>
+<p>
+The start condition stack grows dynamically and so has no built-in
+size limitation.  If memory is exhausted, program execution aborts.
+
+<p>
+To use start condition stacks, your scanner must include a
+<b>%option</b> <b>stack</b> 
+directive (see Options below).
+
+</ul><H2>MULTIPLE INPUT BUFFERS </H2><ul>
+
+Some scanners (such as those which support "include" files)
+require reading from several input streams.  As
+<i>flex</i> 
+scanners do a large amount of buffering, one cannot control
+where the next input will be read from by simply writing a
+<b>YY_INPUT</b> 
+which is sensitive to the scanning context.
+<b>YY_INPUT</b> 
+is only called when the scanner reaches the end of its buffer, which
+may be a long time after scanning a statement such as an "include"
+which requires switching the input source.
+
+<p>
+To negotiate these sorts of problems,
+<i>flex</i> 
+provides a mechanism for creating and switching between multiple
+input buffers.  An input buffer is created by using:
+<pre>
+
+<p><br>    YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
+<br>
+<p><br></pre>
+which takes a
+<i>FILE</i> 
+pointer and a size and creates a buffer associated with the given
+file and large enough to hold
+<i>size</i> 
+characters (when in doubt, use
+<b>YY_BUF_SIZE</b> 
+for the size).  It returns a
+<b>YY_BUFFER_STATE</b> 
+handle, which may then be passed to other routines (see below).  The
+<b>YY_BUFFER_STATE</b> 
+type is a pointer to an opaque
+<b>struct</b> <b>yy_buffer_state</b> 
+structure, so you may safely initialize YY_BUFFER_STATE variables to
+<b>((YY_BUFFER_STATE)</b> <b>0)</b> 
+if you wish, and also refer to the opaque structure in order to
+correctly declare input buffers in source files other than that
+of your scanner.  Note that the
+<i>FILE</i> 
+pointer in the call to
+<b>yy_create_buffer</b> 
+is only used as the value of
+<i>yyin</i> 
+seen by
+<b>YY_INPUT;</b> 
+if you redefine
+<b>YY_INPUT</b> 
+so it no longer uses
+<i>yyin,</i> 
+then you can safely pass a nil
+<i>FILE</i> 
+pointer to
+<b>yy_create_buffer.</b> 
+You select a particular buffer to scan from using:
+<pre>
+
+<p><br>    void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+<br>
+<p><br></pre>
+switches the scanner's input buffer so subsequent tokens will
+come from
+<i>new_buffer.</i> 
+Note that
+<b>yy_switch_to_buffer()</b> 
+may be used by yywrap() to set things up for continued scanning, instead
+of opening a new file and pointing
+<i>yyin</i> 
+at it.  Note also that switching input sources via either
+<b>yy_switch_to_buffer()</b> 
+or
+<b>yywrap()</b> 
+does
+<i>not</i> 
+change the start condition.
+<pre>
+
+<p><br>    void yy_delete_buffer( YY_BUFFER_STATE buffer )
+<br>
+<p><br></pre>
+is used to reclaim the storage associated with a buffer.
+You can also clear the current contents of a buffer using:
+<pre>
+
+<p><br>    void yy_flush_buffer( YY_BUFFER_STATE buffer )
+<br>
+<p><br></pre>
+This function discards the buffer's contents,
+so the next time the scanner attempts to match a token from the
+buffer, it will first fill the buffer anew using
+<b>YY_INPUT.</b> 
+
+<p>
+<b>yy_new_buffer()</b> 
+is an alias for
+<b>yy_create_buffer(),</b> 
+provided for compatibility with the C++ use of
+<i>new</i> 
+and
+<i>delete</i> 
+for creating and destroying dynamic objects.
+
+<p>
+Finally, the
+<b>YY_CURRENT_BUFFER</b> 
+macro returns a
+<b>YY_BUFFER_STATE</b> 
+handle to the current buffer.
+
+<p>
+Here is an example of using these features for writing a scanner
+which expands include files (the
+<b>&lt;&lt;EOF&gt;&gt;</b> 
+feature is discussed below):
+<pre>
+
+<p><br>    /* the "incl" state is used for picking up the name
+<br>     * of an include file
+<br>     */
+<br>    %x incl
+<br>
+<p><br>    %{
+<br>    #define MAX_INCLUDE_DEPTH 10
+<br>    YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
+<br>    int include_stack_ptr = 0;
+<br>    %}
+<br>
+<p><br>    %%
+<br>    include             BEGIN(incl);
+<br>
+<p><br>    [a-z]+              ECHO;
+<br>    [^a-z\n]*\n?        ECHO;
+<br>
+<p><br>    &lt;incl&gt;[ \t]*      /* eat the whitespace */
+<br>    &lt;incl&gt;[^ \t\n]+   { /* got the include file name */
+<br>            if ( include_stack_ptr &gt;= MAX_INCLUDE_DEPTH )
+<br>                {
+<br>                fprintf( stderr, "Includes nested too deeply" );
+<br>                exit( 1 );
+<br>                }
+<br>
+<p><br>            include_stack[include_stack_ptr++] =
+<br>                YY_CURRENT_BUFFER;
+<br>
+<p><br>            yyin = fopen( yytext, "r" );
+<br>
+<p><br>            if ( ! yyin )
+<br>                error( ... );
+<br>
+<p><br>            yy_switch_to_buffer(
+<br>                yy_create_buffer( yyin, YY_BUF_SIZE ) );
+<br>
+<p><br>            BEGIN(INITIAL);
+<br>            }
+<br>
+<p><br>    &lt;&lt;EOF&gt;&gt; {
+<br>            if ( --include_stack_ptr &lt; 0 )
+<br>                {
+<br>                yyterminate();
+<br>                }
+<br>
+<p><br>            else
+<br>                {
+<br>                yy_delete_buffer( YY_CURRENT_BUFFER );
+<br>                yy_switch_to_buffer(
+<br>                     include_stack[include_stack_ptr] );
+<br>                }
+<br>            }
+<br>
+<p><br></pre>
+Three routines are available for setting up input buffers for
+scanning in-memory strings instead of files.  All of them create
+a new input buffer for scanning the string, and return a corresponding
+<b>YY_BUFFER_STATE</b> 
+handle (which you should delete with
+<b>yy_delete_buffer()</b> 
+when done with it).  They also switch to the new buffer using
+<b>yy_switch_to_buffer(),</b> 
+so the next call to
+<b>yylex()</b> 
+will start scanning the string.
+<p><dl compact><dt><b>yy_scan_string(const</b> <b>char</b> <b>*str)</b> 
+<dd>scans a NUL-terminated string.
+<dt><b>yy_scan_bytes(const</b> <b>char</b> <b>*bytes,</b> <b>int</b> <b>len)</b> 
+<dd>scans
+<i>len</i> 
+bytes (including possibly NUL's)
+starting at location
+<i>bytes.</i> 
+</dl>
+<p>
+Note that both of these functions create and scan a
+<i>copy</i> 
+of the string or bytes.  (This may be desirable, since
+<b>yylex()</b> 
+modifies the contents of the buffer it is scanning.)  You can avoid the
+copy by using:
+<p><dl compact><dt><b>yy_scan_buffer(char</b> <b>*base,</b> <b>yy_size_t</b> <b>size)</b> 
+<dd>which scans in place the buffer starting at
+<i>base,</i> 
+consisting of
+<i>size</i> 
+bytes, the last two bytes of which
+<i>must</i> 
+be
+<b>YY_END_OF_BUFFER_CHAR</b> 
+(ASCII NUL).
+These last two bytes are not scanned; thus, scanning
+consists of
+<b>base[0]</b> 
+through
+<b>base[size-2],</b> 
+inclusive.
+<dt><dd>If you fail to set up
+<i>base</i> 
+in this manner (i.e., forget the final two
+<b>YY_END_OF_BUFFER_CHAR</b> 
+bytes), then
+<b>yy_scan_buffer()</b> 
+returns a nil pointer instead of creating a new input buffer.
+<dt><dd>The type
+<b>yy_size_t</b> 
+is an integral type to which you can cast an integer expression
+reflecting the size of the buffer.
+</dl>
+</ul><H2>END-OF-FILE RULES </H2><ul>
+
+The special rule "&lt;&lt;EOF&gt;&gt;" indicates
+actions which are to be taken when an end-of-file is
+encountered and yywrap() returns non-zero (i.e., indicates
+no further files to process).  The action must finish
+by doing one of four things:
+<p><dl compact><dt>-<dd>assigning
+<i>yyin</i> 
+to a new input file (in previous versions of flex, after doing the
+assignment you had to call the special action
+<b>YY_NEW_FILE;</b> 
+this is no longer necessary);
+<dt>-<dd>executing a
+<i>return</i> 
+statement;
+<dt>-<dd>executing the special
+<b>yyterminate()</b> 
+action;
+<dt>-<dd>or, switching to a new buffer using
+<b>yy_switch_to_buffer()</b> 
+as shown in the example above.
+</dl>
+<p>
+&lt;&lt;EOF&gt;&gt; rules may not be used with other
+patterns; they may only be qualified with a list of start
+conditions.  If an unqualified &lt;&lt;EOF&gt;&gt; rule is given, it
+applies to
+<i>all</i> 
+start conditions which do not already have &lt;&lt;EOF&gt;&gt; actions.  To
+specify an &lt;&lt;EOF&gt;&gt; rule for only the initial start condition, use
+<pre>
+
+<p><br>    &lt;INITIAL&gt;&lt;&lt;EOF&gt;&gt;
+<br>
+<p><br></pre>
+
+<p>
+These rules are useful for catching things like unclosed comments.
+An example:
+<pre>
+
+<p><br>    %x quote
+<br>    %%
+<br>
+<p><br>    ...other rules for dealing with quotes...
+<br>
+<p><br>    &lt;quote&gt;&lt;&lt;EOF&gt;&gt;   {
+<br>             error( "unterminated quote" );
+<br>             yyterminate();
+<br>             }
+<br>    &lt;&lt;EOF&gt;&gt;  {
+<br>             if ( *++filelist )
+<br>                 yyin = fopen( *filelist, "r" );
+<br>             else
+<br>                yyterminate();
+<br>             }
+<br>
+<p><br></pre>
+
+</ul><H2>MISCELLANEOUS MACROS </H2><ul>
+
+The macro
+<b>YY_USER_ACTION</b> 
+can be defined to provide an action
+which is always executed prior to the matched rule's action.  For example,
+it could be #define'd to call a routine to convert yytext to lower-case.
+When
+<b>YY_USER_ACTION</b> 
+is invoked, the variable
+<i>yy_act</i> 
+gives the number of the matched rule (rules are numbered starting with 1).
+Suppose you want to profile how often each of your rules is matched.  The
+following would do the trick:
+<pre>
+
+<p><br>    #define YY_USER_ACTION ++ctr[yy_act]
+<br>
+<p><br></pre>
+where
+<i>ctr</i> 
+is an array to hold the counts for the different rules.  Note that
+the macro
+<b>YY_NUM_RULES</b> 
+gives the total number of rules (including the default rule, even if
+you use
+<b>-s),</b> 
+so a correct declaration for
+<i>ctr</i> 
+is:
+<pre>
+
+<p><br>    int ctr[YY_NUM_RULES];
+<br>
+<p><br></pre>
+
+<p>
+The macro
+<b>YY_USER_INIT</b> 
+may be defined to provide an action which is always executed before
+the first scan (and before the scanner's internal initializations are done).
+For example, it could be used to call a routine to read
+in a data table or open a logging file.
+
+<p>
+The macro
+<b>yy_set_interactive(is_interactive)</b> 
+can be used to control whether the current buffer is considered
+<i>interactive.</i> 
+An interactive buffer is processed more slowly,
+but must be used when the scanner's input source is indeed
+interactive to avoid problems due to waiting to fill buffers
+(see the discussion of the
+<b>-I</b> 
+flag below).  A non-zero value
+in the macro invocation marks the buffer as interactive, a zero  
+value as non-interactive.  Note that use of this macro overrides
+<b>%option</b> <b>always-interactive</b> 
+or
+<b>%option</b> <b>never-interactive</b> 
+(see Options below).
+<b>yy_set_interactive()</b> 
+must be invoked prior to beginning to scan the buffer that is
+(or is not) to be considered interactive.
+
+<p>
+The macro
+<b>yy_set_bol(at_bol)</b> 
+can be used to control whether the current buffer's scanning
+context for the next token match is done as though at the
+beginning of a line.  A non-zero macro argument makes rules anchored with
+'^' active, while a zero argument makes '^' rules inactive.
+
+<p>
+The macro
+<b>YY_AT_BOL()</b> 
+returns true if the next token scanned from the current buffer
+will have '^' rules active, false otherwise.
+
+<p>
+In the generated scanner, the actions are all gathered in one large
+switch statement and separated using
+<b>YY_BREAK,</b> 
+which may be redefined.  By default, it is simply a "break", to separate
+each rule's action from the following rule's.
+Redefining
+<b>YY_BREAK</b> 
+allows, for example, C++ users to
+#define YY_BREAK to do nothing (while being very careful that every
+rule ends with a "break" or a "return"!) to avoid suffering from
+unreachable statement warnings where because a rule's action ends with
+"return", the
+<b>YY_BREAK</b> 
+is inaccessible.
+
+</ul><H2>VALUES AVAILABLE TO THE USER </H2><ul>
+
+This section summarizes the various values available to the user
+in the rule actions.
+<p><dl compact><dt>-<dd><b>char</b> <b>*yytext</b> 
+holds the text of the current token.  It may be modified but not lengthened
+(you cannot append characters to the end).
+<dt><dd>If the special directive
+<b>%array</b> 
+appears in the first section of the scanner description, then
+<b>yytext</b> 
+is instead declared
+<b>char</b> <b>yytext[YYLMAX],</b> 
+where
+<b>YYLMAX</b> 
+is a macro definition that you can redefine in the first section
+if you don't like the default value (generally 8KB).  Using
+<b>%array</b> 
+results in somewhat slower scanners, but the value of
+<b>yytext</b> 
+becomes immune to calls to
+<i>input()</i> 
+and
+<i>unput(),</i> 
+which potentially destroy its value when
+<b>yytext</b> 
+is a character pointer.  The opposite of
+<b>%array</b> 
+is
+<b>%pointer,</b> 
+which is the default.
+<dt><dd>You cannot use
+<b>%array</b> 
+when generating C++ scanner classes
+(the
+<b>-+</b> 
+flag).
+<dt>-<dd><b>int</b> <b>yyleng</b> 
+holds the length of the current token.
+<dt>-<dd><b>FILE</b> <b>*yyin</b> 
+is the file which by default
+<i>flex</i> 
+reads from.  It may be redefined but doing so only makes sense before
+scanning begins or after an EOF has been encountered.  Changing it in
+the midst of scanning will have unexpected results since
+<i>flex</i> 
+buffers its input; use
+<b>yyrestart()</b> 
+instead.
+Once scanning terminates because an end-of-file
+has been seen, you can assign
+<i>yyin</i> 
+at the new input file and then call the scanner again to continue scanning.
+<dt>-<dd><b>void</b> <b>yyrestart(</b> <b>FILE</b> <b>*new_file</b> <b>)</b> 
+may be called to point
+<i>yyin</i> 
+at the new input file.  The switch-over to the new file is immediate
+(any previously buffered-up input is lost).  Note that calling
+<b>yyrestart()</b> 
+with
+<i>yyin</i> 
+as an argument thus throws away the current input buffer and continues
+scanning the same input file.
+<dt>-<dd><b>FILE</b> <b>*yyout</b> 
+is the file to which
+<b>ECHO</b> 
+actions are done.  It can be reassigned by the user.
+<dt>-<dd><b>YY_CURRENT_BUFFER</b> 
+returns a
+<b>YY_BUFFER_STATE</b> 
+handle to the current buffer.
+<dt>-<dd><b>YY_START</b> 
+returns an integer value corresponding to the current start
+condition.  You can subsequently use this value with
+<b>BEGIN</b> 
+to return to that start condition.
+</dl>
+</ul><H2>INTERFACING WITH YACC </H2><ul>
+
+One of the main uses of
+<i>flex</i> 
+is as a companion to the
+<i>yacc</i> 
+parser-generator.
+<i>yacc</i> 
+parsers expect to call a routine named
+<b>yylex()</b> 
+to find the next input token.  The routine is supposed to
+return the type of the next token as well as putting any associated
+value in the global
+<b>yylval.</b> 
+To use
+<i>flex</i> 
+with
+<i>yacc,</i> 
+one specifies the
+<b>-d</b> 
+option to
+<i>yacc</i> 
+to instruct it to generate the file
+<b>y.tab.h</b> 
+containing definitions of all the
+<b>%tokens</b> 
+appearing in the
+<i>yacc</i> 
+input.  This file is then included in the
+<i>flex</i> 
+scanner.  For example, if one of the tokens is "TOK_NUMBER",
+part of the scanner might look like:
+<pre>
+
+<p><br>    %{
+<br>    #include "y.tab.h"
+<br>    %}
+<br>
+<p><br>    %%
+<br>
+<p><br>    [0-9]+        yylval = atoi( yytext ); return TOK_NUMBER;
+<br>
+<p><br></pre>
+
+</ul><H2>OPTIONS </H2><ul>
+
+<i>flex</i> 
+has the following options:
+<p><dl compact><dt><b>-b</b> 
+<dd>Generate backing-up information to
+<i>lex.backup.</i> 
+This is a list of scanner states which require backing up
+and the input characters on which they do so.  By adding rules one
+can remove backing-up states.  If
+<i>all</i> 
+backing-up states are eliminated and
+<b>-Cf</b> 
+or
+<b>-CF</b> 
+is used, the generated scanner will run faster (see the
+<b>-p</b> 
+flag).  Only users who wish to squeeze every last cycle out of their
+scanners need worry about this option.  (See the section on Performance
+Considerations below.)
+<dt><b>-c</b> 
+<dd>is a do-nothing, deprecated option included for POSIX compliance.
+<dt><b>-d</b> 
+<dd>makes the generated scanner run in
+<i>debug</i> 
+mode.  Whenever a pattern is recognized and the global
+<b>yy_flex_debug</b> 
+is non-zero (which is the default),
+the scanner will write to
+<i>stderr</i> 
+a line of the form:
+<pre>
+
+<p><br>    --accepting rule at line 53 ("the matched text")
+<br>
+<p><br></pre>
+The line number refers to the location of the rule in the file
+defining the scanner (i.e., the file that was fed to flex).  Messages
+are also generated when the scanner backs up, accepts the
+default rule, reaches the end of its input buffer (or encounters
+a NUL; at this point, the two look the same as far as the scanner's concerned),
+or reaches an end-of-file.
+<dt><b>-f</b> 
+<dd>specifies
+<i>fast</i> <i>scanner.</i> 
+No table compression is done and stdio is bypassed.
+The result is large but fast.  This option is equivalent to
+<b>-Cfr</b> 
+(see below).
+<dt><b>-h</b> 
+<dd>generates a "help" summary of
+<i>flex's</i> 
+options to
+<i>stdout</i> 
+and then exits.
+<b>-?</b> 
+and
+<b>--help</b> 
+are synonyms for
+<b>-h.</b> 
+<dt><b>-i</b> 
+<dd>instructs
+<i>flex</i> 
+to generate a
+<i>case-insensitive</i> 
+scanner.  The case of letters given in the
+<i>flex</i> 
+input patterns will
+be ignored, and tokens in the input will be matched regardless of case.  The
+matched text given in
+<i>yytext</i> 
+will have the preserved case (i.e., it will not be folded).
+<dt><b>-l</b> 
+<dd>turns on maximum compatibility with the original AT&amp;T
+<i>lex</i> 
+implementation.  Note that this does not mean
+<i>full</i> 
+compatibility.  Use of this option costs a considerable amount of
+performance, and it cannot be used with the
+<b>-+,</b> <b>-f,</b> <b>-F,</b> <b>-Cf,</b> 
+or
+<b>-CF</b> 
+options.  For details on the compatibilities it provides, see the section
+"Incompatibilities With Lex And POSIX" below.  This option also results
+in the name
+<b>YY_FLEX_LEX_COMPAT</b> 
+being #define'd in the generated scanner.
+<dt><b>-n</b> 
+<dd>is another do-nothing, deprecated option included only for
+POSIX compliance.
+<dt><b>-p</b> 
+<dd>generates a performance report to stderr.  The report
+consists of comments regarding features of the
+<i>flex</i> 
+input file which will cause a serious loss of performance in the resulting
+scanner.  If you give the flag twice, you will also get comments regarding
+features that lead to minor performance losses.
+<dt><dd>Note that the use of
+<b>REJECT,</b> 
+<b>%option</b> <b>yylineno,</b> 
+and variable trailing context (see the Deficiencies / Bugs section below)
+entails a substantial performance penalty; use of
+<i>yymore(),</i> 
+the
+<b>^</b> 
+operator,
+and the
+<b>-I</b> 
+flag entail minor performance penalties.
+<dt><b>-s</b> 
+<dd>causes the
+<i>default</i> <i>rule</i> 
+(that unmatched scanner input is echoed to
+<i>stdout)</i> 
+to be suppressed.  If the scanner encounters input that does not
+match any of its rules, it aborts with an error.  This option is
+useful for finding holes in a scanner's rule set.
+<dt><b>-t</b> 
+<dd>instructs
+<i>flex</i> 
+to write the scanner it generates to standard output instead
+of
+<b>lex.yy.c.</b> 
+<dt><b>-v</b> 
+<dd>specifies that
+<i>flex</i> 
+should write to
+<i>stderr</i> 
+a summary of statistics regarding the scanner it generates.
+Most of the statistics are meaningless to the casual
+<i>flex</i> 
+user, but the first line identifies the version of
+<i>flex</i> 
+(same as reported by
+<b>-V),</b> 
+and the next line the flags used when generating the scanner, including
+those that are on by default.
+<dt><b>-w</b> 
+<dd>suppresses warning messages.
+<dt><b>-B</b> 
+<dd>instructs
+<i>flex</i> 
+to generate a
+<i>batch</i> 
+scanner, the opposite of
+<i>interactive</i> 
+scanners generated by
+<b>-I</b> 
+(see below).  In general, you use
+<b>-B</b> 
+when you are
+<i>certain</i> 
+that your scanner will never be used interactively, and you want to
+squeeze a
+<i>little</i> 
+more performance out of it.  If your goal is instead to squeeze out a
+<i>lot</i> 
+more performance, you should  be using the
+<b>-Cf</b> 
+or
+<b>-CF</b> 
+options (discussed below), which turn on
+<b>-B</b> 
+automatically anyway.
+<dt><b>-F</b> 
+<dd>specifies that the
+fast
+scanner table representation should be used (and stdio
+bypassed).  This representation is
+about as fast as the full table representation
+<b>(-f),</b> 
+and for some sets of patterns will be considerably smaller (and for
+others, larger).  In general, if the pattern set contains both "keywords"
+and a catch-all, "identifier" rule, such as in the set:
+<pre>
+
+<p><br>    "case"    return TOK_CASE;
+<br>    "switch"  return TOK_SWITCH;
+<br>    ...
+<br>    "default" return TOK_DEFAULT;
+<br>    [a-z]+    return TOK_ID;
+<br>
+<p><br></pre>
+then you're better off using the full table representation.  If only
+the "identifier" rule is present and you then use a hash table or some such
+to detect the keywords, you're better off using
+<b>-F.</b> 
+<dt><dd>This option is equivalent to
+<b>-CFr</b> 
+(see below).  It cannot be used with
+<b>-+.</b> 
+<dt><b>-I</b> 
+<dd>instructs
+<i>flex</i> 
+to generate an
+<i>interactive</i> 
+scanner.  An interactive scanner is one that only looks ahead to decide
+what token has been matched if it absolutely must.  It turns out that
+always looking one extra character ahead, even if the scanner has already
+seen enough text to disambiguate the current token, is a bit faster than
+only looking ahead when necessary.  But scanners that always look ahead
+give dreadful interactive performance; for example, when a user types
+a newline, it is not recognized as a newline token until they enter
+<i>another</i> 
+token, which often means typing in another whole line.
+<dt><dd><i>Flex</i> 
+scanners default to
+<i>interactive</i> 
+unless you use the
+<b>-Cf</b> 
+or
+<b>-CF</b> 
+table-compression options (see below).  That's because if you're looking
+for high-performance you should be using one of these options, so if you
+didn't,
+<i>flex</i> 
+assumes you'd rather trade off a bit of run-time performance for intuitive
+interactive behavior.  Note also that you
+<i>cannot</i> 
+use
+<b>-I</b> 
+in conjunction with
+<b>-Cf</b> 
+or
+<b>-CF.</b> 
+Thus, this option is not really needed; it is on by default for all those
+cases in which it is allowed.
+<dt><dd>You can force a scanner to
+<i>not</i> 
+be interactive by using
+<b>-B</b> 
+(see above).
+<dt><b>-L</b> 
+<dd>instructs
+<i>flex</i> 
+not to generate
+<b>#line</b> 
+directives.  Without this option,
+<i>flex</i> 
+peppers the generated scanner
+with #line directives so error messages in the actions will be correctly
+located with respect to either the original
+<i>flex</i> 
+input file (if the errors are due to code in the input file), or
+<b>lex.yy.c</b> 
+(if the errors are
+<i>flex's</i> 
+fault -- you should report these sorts of errors to the email address
+given below).
+<dt><b>-T</b> 
+<dd>makes
+<i>flex</i> 
+run in
+<i>trace</i> 
+mode.  It will generate a lot of messages to
+<i>stderr</i> 
+concerning
+the form of the input and the resultant non-deterministic and deterministic
+finite automata.  This option is mostly for use in maintaining
+<i>flex.</i> 
+<dt><b>-V</b> 
+<dd>prints the version number to
+<i>stdout</i> 
+and exits.
+<b>--version</b> 
+is a synonym for
+<b>-V.</b> 
+<dt><b>-7</b> 
+<dd>instructs
+<i>flex</i> 
+to generate a 7-bit scanner, i.e., one which can only recognized 7-bit
+characters in its input.  The advantage of using
+<b>-7</b> 
+is that the scanner's tables can be up to half the size of those generated
+using the
+<b>-8</b> 
+option (see below).  The disadvantage is that such scanners often hang
+or crash if their input contains an 8-bit character.
+<dt><dd>Note, however, that unless you generate your scanner using the
+<b>-Cf</b> 
+or
+<b>-CF</b> 
+table compression options, use of
+<b>-7</b> 
+will save only a small amount of table space, and make your scanner
+considerably less portable.
+<i>Flex's</i> 
+default behavior is to generate an 8-bit scanner unless you use the
+<b>-Cf</b> 
+or
+<b>-CF,</b> 
+in which case
+<i>flex</i> 
+defaults to generating 7-bit scanners unless your site was always
+configured to generate 8-bit scanners (as will often be the case
+with non-USA sites).  You can tell whether flex generated a 7-bit
+or an 8-bit scanner by inspecting the flag summary in the
+<b>-v</b> 
+output as described above.
+<dt><dd>Note that if you use
+<b>-Cfe</b> 
+or
+<b>-CFe</b> 
+(those table compression options, but also using equivalence classes as
+discussed see below), flex still defaults to generating an 8-bit
+scanner, since usually with these compression options full 8-bit tables
+are not much more expensive than 7-bit tables.
+<dt><b>-8</b> 
+<dd>instructs
+<i>flex</i> 
+to generate an 8-bit scanner, i.e., one which can recognize 8-bit
+characters.  This flag is only needed for scanners generated using
+<b>-Cf</b> 
+or
+<b>-CF,</b> 
+as otherwise flex defaults to generating an 8-bit scanner anyway.
+<dt><dd>See the discussion of
+<b>-7</b> 
+above for flex's default behavior and the tradeoffs between 7-bit
+and 8-bit scanners.
+<dt><b>-+</b> 
+<dd>specifies that you want flex to generate a C++
+scanner class.  See the section on Generating C++ Scanners below for
+details.
+<dt><b>-C[aefFmr]</b> 
+<dd>controls the degree of table compression and, more generally, trade-offs
+between small scanners and fast scanners.
+<dt><dd><b>-Ca</b> 
+("align") instructs flex to trade off larger tables in the
+generated scanner for faster performance because the elements of
+the tables are better aligned for memory access and computation.  On some
+RISC architectures, fetching and manipulating longwords is more efficient
+than with smaller-sized units such as shortwords.  This option can
+double the size of the tables used by your scanner.
+<dt><dd><b>-Ce</b> 
+directs
+<i>flex</i> 
+to construct
+<i>equivalence</i> <i>classes,</i> 
+i.e., sets of characters
+which have identical lexical properties (for example, if the only
+appearance of digits in the
+<i>flex</i> 
+input is in the character class
+"[0-9]" then the digits '0', '1', ..., '9' will all be put
+in the same equivalence class).  Equivalence classes usually give
+dramatic reductions in the final table/object file sizes (typically
+a factor of 2-5) and are pretty cheap performance-wise (one array
+look-up per character scanned).
+<dt><dd><b>-Cf</b> 
+specifies that the
+<i>full</i> 
+scanner tables should be generated -
+<i>flex</i> 
+should not compress the
+tables by taking advantages of similar transition functions for
+different states.
+<dt><dd><b>-CF</b> 
+specifies that the alternate fast scanner representation (described
+above under the
+<b>-F</b> 
+flag)
+should be used.  This option cannot be used with
+<b>-+.</b> 
+<dt><dd><b>-Cm</b> 
+directs
+<i>flex</i> 
+to construct
+<i>meta-equivalence</i> <i>classes,</i> 
+which are sets of equivalence classes (or characters, if equivalence
+classes are not being used) that are commonly used together.  Meta-equivalence
+classes are often a big win when using compressed tables, but they
+have a moderate performance impact (one or two "if" tests and one
+array look-up per character scanned).
+<dt><dd><b>-Cr</b> 
+causes the generated scanner to
+<i>bypass</i> 
+use of the standard I/O library (stdio) for input.  Instead of calling
+<b>fread()</b> 
+or
+<b>getc(),</b> 
+the scanner will use the
+<b>read()</b> 
+system call, resulting in a performance gain which varies from system
+to system, but in general is probably negligible unless you are also using
+<b>-Cf</b> 
+or
+<b>-CF.</b> 
+Using
+<b>-Cr</b> 
+can cause strange behavior if, for example, you read from
+<i>yyin</i> 
+using stdio prior to calling the scanner (because the scanner will miss
+whatever text your previous reads left in the stdio input buffer).
+<dt><dd><b>-Cr</b> 
+has no effect if you define
+<b>YY_INPUT</b> 
+(see The Generated Scanner above).
+<dt><dd>A lone
+<b>-C</b> 
+specifies that the scanner tables should be compressed but neither
+equivalence classes nor meta-equivalence classes should be used.
+<dt><dd>The options
+<b>-Cf</b> 
+or
+<b>-CF</b> 
+and
+<b>-Cm</b> 
+do not make sense together - there is no opportunity for meta-equivalence
+classes if the table is not being compressed.  Otherwise the options
+may be freely mixed, and are cumulative.
+<dt><dd>The default setting is
+<b>-Cem,</b> 
+which specifies that
+<i>flex</i> 
+should generate equivalence classes
+and meta-equivalence classes.  This setting provides the highest
+degree of table compression.  You can trade off
+faster-executing scanners at the cost of larger tables with
+the following generally being true:
+<pre>
+
+<p><br>    slowest &amp; smallest
+<br>          -Cem
+<br>          -Cm
+<br>          -Ce
+<br>          -C
+<br>          -C{f,F}e
+<br>          -C{f,F}
+<br>          -C{f,F}a
+<br>    fastest &amp; largest
+<br>
+<p><br></pre>
+Note that scanners with the smallest tables are usually generated and
+compiled the quickest, so
+during development you will usually want to use the default, maximal
+compression.
+<dt><dd><b>-Cfe</b> 
+is often a good compromise between speed and size for production
+scanners.
+<dt><b>-ooutput</b> 
+<dd>directs flex to write the scanner to the file
+<b>output</b> 
+instead of
+<b>lex.yy.c.</b> 
+If you combine
+<b>-o</b> 
+with the
+<b>-t</b> 
+option, then the scanner is written to
+<i>stdout</i> 
+but its
+<b>#line</b> 
+directives (see the
+<b>\-L</b> 
+option above) refer to the file
+<b>output.</b> 
+<dt><b>-Pprefix</b> 
+<dd>changes the default
+<i>yy</i> 
+prefix used by
+<i>flex</i> 
+for all globally-visible variable and function names to instead be
+<i>prefix.</i> 
+For example,
+<b>-Pfoo</b> 
+changes the name of
+<b>yytext</b> 
+to
+<b>footext.</b> 
+It also changes the name of the default output file from
+<b>lex.yy.c</b> 
+to
+<b>lex.foo.c.</b> 
+Here are all of the names affected:
+<pre>
+
+<p><br>    yy_create_buffer
+<br>    yy_delete_buffer
+<br>    yy_flex_debug
+<br>    yy_init_buffer
+<br>    yy_flush_buffer
+<br>    yy_load_buffer_state
+<br>    yy_switch_to_buffer
+<br>    yyin
+<br>    yyleng
+<br>    yylex
+<br>    yylineno
+<br>    yyout
+<br>    yyrestart
+<br>    yytext
+<br>    yywrap
+<br>
+<p><br></pre>
+(If you are using a C++ scanner, then only
+<b>yywrap</b> 
+and
+<b>yyFlexLexer</b> 
+are affected.)
+Within your scanner itself, you can still refer to the global variables
+and functions using either version of their name; but externally, they
+have the modified name.
+<dt><dd>This option lets you easily link together multiple
+<i>flex</i> 
+programs into the same executable.  Note, though, that using this
+option also renames
+<b>yywrap(),</b> 
+so you now
+<i>must</i> 
+either
+provide your own (appropriately-named) version of the routine for your
+scanner, or use
+<b>%option</b> <b>noyywrap,</b> 
+as linking with
+<b>-lfl</b> 
+no longer provides one for you by default.
+<dt><b>-Sskeleton_file</b> 
+<dd>overrides the default skeleton file from which
+<i>flex</i> 
+constructs its scanners.  You'll never need this option unless you are doing
+<i>flex</i> 
+maintenance or development.
+</dl>
+<p>
+<i>flex</i> 
+also provides a mechanism for controlling options within the
+scanner specification itself, rather than from the flex command-line.
+This is done by including
+<b>%option</b> 
+directives in the first section of the scanner specification.
+You can specify multiple options with a single
+<b>%option</b> 
+directive, and multiple directives in the first section of your flex input
+file.  Most
+options are given simply as names, optionally preceded by the
+word "no" (with no intervening whitespace) to negate their meaning.
+A number are equivalent to flex flags or their negation:
+<pre>
+
+<p><br>    7bit            -7 option
+<br>    8bit            -8 option
+<br>    align           -Ca option
+<br>    backup          -b option
+<br>    batch           -B option
+<br>    c++             -+ option
+<br>
+<p><br>    caseful or
+<br>    case-sensitive  opposite of -i (default)
+<br>
+<p><br>    case-insensitive or
+<br>    caseless        -i option
+<br>
+<p><br>    debug           -d option
+<br>    default         opposite of -s option
+<br>    ecs             -Ce option
+<br>    fast            -F option
+<br>    full            -f option
+<br>    interactive     -I option
+<br>    lex-compat      -l option
+<br>    meta-ecs        -Cm option
+<br>    perf-report     -p option
+<br>    read            -Cr option
+<br>    stdout          -t option
+<br>    verbose         -v option
+<br>    warn            opposite of -w option
+<br>                    (use "%option nowarn" for -w)
+<br>
+<p><br>    array           equivalent to "%array"
+<br>    pointer         equivalent to "%pointer" (default)
+<br>
+<p><br></pre>
+Some
+<b>%option's</b> 
+provide features otherwise not available:
+<p><dl compact><dt><b>always-interactive</b> 
+<dd>instructs flex to generate a scanner which always considers its input
+"interactive".  Normally, on each new input file the scanner calls
+<b>isatty()</b> 
+in an attempt to determine whether
+the scanner's input source is interactive and thus should be read a
+character at a time.  When this option is used, however, then no
+such call is made.
+<dt><b>main</b> 
+<dd>directs flex to provide a default
+<b>main()</b> 
+program for the scanner, which simply calls
+<b>yylex().</b> 
+This option implies
+<b>noyywrap</b> 
+(see below).
+<dt><b>never-interactive</b> 
+<dd>instructs flex to generate a scanner which never considers its input
+"interactive" (again, no call made to
+<b>isatty()).</b> 
+This is the opposite of
+<b>always-interactive.</b> 
+<dt><b>stack</b> 
+<dd>enables the use of start condition stacks (see Start Conditions above).
+<dt><b>stdinit</b> 
+<dd>if unset (i.e.,
+<b>%option</b> <b>nostdinit)</b> 
+initializes
+<i>yyin</i> 
+and
+<i>yyout</i> 
+to nil
+<i>FILE</i> 
+pointers, instead of
+<i>stdin</i> 
+and
+<i>stdout.</i> 
+<dt><b>yylineno</b> 
+<dd>directs
+<i>flex</i> 
+to generate a scanner that maintains the number of the current line
+read from its input in the global variable
+<b>yylineno.</b> 
+This option is implied by
+<b>%option</b> <b>lex-compat.</b> 
+<dt><b>yywrap</b> 
+<dd>if unset (i.e.,
+<b>%option</b> <b>noyywrap),</b> 
+makes the scanner not call
+<b>yywrap()</b> 
+upon an end-of-file, but simply assume that there are no more
+files to scan (until the user points
+<i>yyin</i> 
+at a new file and calls
+<b>yylex()</b> 
+again).
+</dl>
+<p>
+<i>flex</i> 
+scans your rule actions to determine whether you use the
+<b>REJECT</b> 
+or
+<b>yymore()</b> 
+features.  The
+<b>reject</b> 
+and
+<b>yymore</b> 
+options are available to override its decision as to whether you use the
+options, either by setting them (e.g.,
+<b>%option</b> <b>reject)</b> 
+to indicate the feature is indeed used, or
+unsetting them to indicate it actually is not used
+(e.g.,
+<b>%option</b> <b>noyymore).</b> 
+
+<p>
+Three options take string-delimited values, offset with '=':
+<pre>
+
+<p><br>    %option outfile="ABC"
+<br>
+<p><br></pre>
+is equivalent to
+<b>-oABC,</b> 
+and
+<pre>
+
+<p><br>    %option prefix="XYZ"
+<br>
+<p><br></pre>
+is equivalent to
+<b>-PXYZ.</b> 
+Finally,
+<pre>
+
+<p><br>    %option yyclass="foo"
+<br>
+<p><br></pre>
+only applies when generating a C++ scanner (
+<b>-+</b> 
+option).  It informs
+<i>flex</i> 
+that you have derived
+<b>foo</b> 
+as a subclass of
+<b>yyFlexLexer,</b> 
+so
+<i>flex</i> 
+will place your actions in the member function
+<b>foo::yylex()</b> 
+instead of
+<b>yyFlexLexer::yylex().</b> 
+It also generates a
+<b>yyFlexLexer::yylex()</b> 
+member function that emits a run-time error (by invoking
+<b>yyFlexLexer::LexerError())</b> 
+if called.
+See Generating C++ Scanners, below, for additional information.
+
+<p>
+A number of options are available for lint purists who want to suppress
+the appearance of unneeded routines in the generated scanner.  Each of the
+following, if unset, results in the corresponding routine not appearing in
+the generated scanner:
+<pre>
+
+<p><br>    input, unput
+<br>    yy_push_state, yy_pop_state, yy_top_state
+<br>    yy_scan_buffer, yy_scan_bytes, yy_scan_string
+<br>
+<p><br></pre>
+(though
+<b>yy_push_state()</b> 
+and friends won't appear anyway unless you use
+<b>%option</b> <b>stack).</b> 
+
+</ul><H2>PERFORMANCE CONSIDERATIONS </H2><ul>
+
+The main design goal of
+<i>flex</i> 
+is that it generate high-performance scanners.  It has been optimized
+for dealing well with large sets of rules.  Aside from the effects on
+scanner speed of the table compression
+<b>-C</b> 
+options outlined above,
+there are a number of options/actions which degrade performance.  These
+are, from most expensive to least:
+<pre>
+
+<p><br>    REJECT
+<br>    %option yylineno
+<br>    arbitrary trailing context
+<br>
+<p><br>    pattern sets that require backing up
+<br>    %array
+<br>    %option interactive
+<br>    %option always-interactive
+<br>
+<p><br>    '^' beginning-of-line operator
+<br>    yymore()
+<br>
+<p><br></pre>
+with the first three all being quite expensive and the last two
+being quite cheap.  Note also that
+<b>unput()</b> 
+is implemented as a routine call that potentially does quite a bit of
+work, while
+<b>yyless()</b> 
+is a quite-cheap macro; so if just putting back some excess text you
+scanned, use
+<b>yyless().</b> 
+
+<p>
+<b>REJECT</b> 
+should be avoided at all costs when performance is important.
+It is a particularly expensive option.
+
+<p>
+Getting rid of backing up is messy and often may be an enormous
+amount of work for a complicated scanner.  In principal, one begins
+by using the
+<b>-b</b> 
+flag to generate a
+<i>lex.backup</i> 
+file.  For example, on the input
+<pre>
+
+<p><br>    %%
+<br>    foo        return TOK_KEYWORD;
+<br>    foobar     return TOK_KEYWORD;
+<br>
+<p><br></pre>
+the file looks like:
+<pre>
+
+<p><br>    State #6 is non-accepting -
+<br>     associated rule line numbers:
+<br>           2       3
+<br>     out-transitions: [ o ]
+<br>     jam-transitions: EOF [ \001-n  p-\177 ]
+<br>
+<p><br>    State #8 is non-accepting -
+<br>     associated rule line numbers:
+<br>           3
+<br>     out-transitions: [ a ]
+<br>     jam-transitions: EOF [ \001-`  b-\177 ]
+<br>
+<p><br>    State #9 is non-accepting -
+<br>     associated rule line numbers:
+<br>           3
+<br>     out-transitions: [ r ]
+<br>     jam-transitions: EOF [ \001-q  s-\177 ]
+<br>
+<p><br>    Compressed tables always back up.
+<br>
+<p><br></pre>
+The first few lines tell us that there's a scanner state in
+which it can make a transition on an 'o' but not on any other
+character, and that in that state the currently scanned text does not match
+any rule.  The state occurs when trying to match the rules found
+at lines 2 and 3 in the input file.
+If the scanner is in that state and then reads
+something other than an 'o', it will have to back up to find
+a rule which is matched.  With
+a bit of headscratching one can see that this must be the
+state it's in when it has seen "fo".  When this has happened,
+if anything other than another 'o' is seen, the scanner will
+have to back up to simply match the 'f' (by the default rule).
+
+<p>
+The comment regarding State #8 indicates there's a problem
+when "foob" has been scanned.  Indeed, on any character other
+than an 'a', the scanner will have to back up to accept "foo".
+Similarly, the comment for State #9 concerns when "fooba" has
+been scanned and an 'r' does not follow.
+
+<p>
+The final comment reminds us that there's no point going to
+all the trouble of removing backing up from the rules unless
+we're using
+<b>-Cf</b> 
+or
+<b>-CF,</b> 
+since there's no performance gain doing so with compressed scanners.
+
+<p>
+The way to remove the backing up is to add "error" rules:
+<pre>
+
+<p><br>    %%
+<br>    foo         return TOK_KEYWORD;
+<br>    foobar      return TOK_KEYWORD;
+<br>
+<p><br>    fooba       |
+<br>    foob        |
+<br>    fo          {
+<br>                /* false alarm, not really a keyword */
+<br>                return TOK_ID;
+<br>                }
+<br>
+<p><br></pre>
+
+<p>
+Eliminating backing up among a list of keywords can also be
+done using a "catch-all" rule:
+<pre>
+
+<p><br>    %%
+<br>    foo         return TOK_KEYWORD;
+<br>    foobar      return TOK_KEYWORD;
+<br>
+<p><br>    [a-z]+      return TOK_ID;
+<br>
+<p><br></pre>
+This is usually the best solution when appropriate.
+
+<p>
+Backing up messages tend to cascade.
+With a complicated set of rules it's not uncommon to get hundreds
+of messages.  If one can decipher them, though, it often
+only takes a dozen or so rules to eliminate the backing up (though
+it's easy to make a mistake and have an error rule accidentally match
+a valid token.  A possible future
+<i>flex</i> 
+feature will be to automatically add rules to eliminate backing up).
+
+<p>
+It's important to keep in mind that you gain the benefits of eliminating
+backing up only if you eliminate
+<i>every</i> 
+instance of backing up.  Leaving just one means you gain nothing.
+
+<p>
+<i>Variable</i> 
+trailing context (where both the leading and trailing parts do not have
+a fixed length) entails almost the same performance loss as
+<b>REJECT</b> 
+(i.e., substantial).  So when possible a rule like:
+<pre>
+
+<p><br>    %%
+<br>    mouse|rat/(cat|dog)   run();
+<br>
+<p><br></pre>
+is better written:
+<pre>
+
+<p><br>    %%
+<br>    mouse/cat|dog         run();
+<br>    rat/cat|dog           run();
+<br>
+<p><br></pre>
+or as
+<pre>
+
+<p><br>    %%
+<br>    mouse|rat/cat         run();
+<br>    mouse|rat/dog         run();
+<br>
+<p><br></pre>
+Note that here the special '|' action does
+<i>not</i> 
+provide any savings, and can even make things worse (see
+Deficiencies / Bugs below).
+
+<p>
+Another area where the user can increase a scanner's performance
+(and one that's easier to implement) arises from the fact that
+the longer the tokens matched, the faster the scanner will run.
+This is because with long tokens the processing of most input
+characters takes place in the (short) inner scanning loop, and
+does not often have to go through the additional work of setting up
+the scanning environment (e.g.,
+<b>yytext)</b> 
+for the action.  Recall the scanner for C comments:
+<pre>
+
+<p><br>    %x comment
+<br>    %%
+<br>            int line_num = 1;
+<br>
+<p><br>    "/*"         BEGIN(comment);
+<br>
+<p><br>    &lt;comment&gt;[^*\n]*
+<br>    &lt;comment&gt;"*"+[^*/\n]*
+<br>    &lt;comment&gt;\n             ++line_num;
+<br>    &lt;comment&gt;"*"+"/"        BEGIN(INITIAL);
+<br>
+<p><br></pre>
+This could be sped up by writing it as:
+<pre>
+
+<p><br>    %x comment
+<br>    %%
+<br>            int line_num = 1;
+<br>
+<p><br>    "/*"         BEGIN(comment);
+<br>
+<p><br>    &lt;comment&gt;[^*\n]*
+<br>    &lt;comment&gt;[^*\n]*\n      ++line_num;
+<br>    &lt;comment&gt;"*"+[^*/\n]*
+<br>    &lt;comment&gt;"*"+[^*/\n]*\n ++line_num;
+<br>    &lt;comment&gt;"*"+"/"        BEGIN(INITIAL);
+<br>
+<p><br></pre>
+Now instead of each newline requiring the processing of another
+action, recognizing the newlines is "distributed" over the other rules
+to keep the matched text as long as possible.  Note that
+<i>adding</i> 
+rules does
+<i>not</i> 
+slow down the scanner!  The speed of the scanner is independent
+of the number of rules or (modulo the considerations given at the
+beginning of this section) how complicated the rules are with
+regard to operators such as '*' and '|'.
+
+<p>
+A final example in speeding up a scanner: suppose you want to scan
+through a file containing identifiers and keywords, one per line
+and with no other extraneous characters, and recognize all the
+keywords.  A natural first approach is:
+<pre>
+
+<p><br>    %%
+<br>    asm      |
+<br>    auto     |
+<br>    break    |
+<br>    ... etc ...
+<br>    volatile |
+<br>    while    /* it's a keyword */
+<br>
+<p><br>    .|\n     /* it's not a keyword */
+<br>
+<p><br></pre>
+To eliminate the back-tracking, introduce a catch-all rule:
+<pre>
+
+<p><br>    %%
+<br>    asm      |
+<br>    auto     |
+<br>    break    |
+<br>    ... etc ...
+<br>    volatile |
+<br>    while    /* it's a keyword */
+<br>
+<p><br>    [a-z]+   |
+<br>    .|\n     /* it's not a keyword */
+<br>
+<p><br></pre>
+Now, if it's guaranteed that there's exactly one word per line,
+then we can reduce the total number of matches by a half by
+merging in the recognition of newlines with that of the other
+tokens:
+<pre>
+
+<p><br>    %%
+<br>    asm\n    |
+<br>    auto\n   |
+<br>    break\n  |
+<br>    ... etc ...
+<br>    volatile\n |
+<br>    while\n  /* it's a keyword */
+<br>
+<p><br>    [a-z]+\n |
+<br>    .|\n     /* it's not a keyword */
+<br>
+<p><br></pre>
+One has to be careful here, as we have now reintroduced backing up
+into the scanner.  In particular, while
+<i>we</i> 
+know that there will never be any characters in the input stream
+other than letters or newlines,
+<i>flex</i> 
+can't figure this out, and it will plan for possibly needing to back up
+when it has scanned a token like "auto" and then the next character
+is something other than a newline or a letter.  Previously it would
+then just match the "auto" rule and be done, but now it has no "auto"
+rule, only a "auto\n" rule.  To eliminate the possibility of backing up,
+we could either duplicate all rules but without final newlines, or,
+since we never expect to encounter such an input and therefore don't
+how it's classified, we can introduce one more catch-all rule, this
+one which doesn't include a newline:
+<pre>
+
+<p><br>    %%
+<br>    asm\n    |
+<br>    auto\n   |
+<br>    break\n  |
+<br>    ... etc ...
+<br>    volatile\n |
+<br>    while\n  /* it's a keyword */
+<br>
+<p><br>    [a-z]+\n |
+<br>    [a-z]+   |
+<br>    .|\n     /* it's not a keyword */
+<br>
+<p><br></pre>
+Compiled with
+<b>-Cf,</b> 
+this is about as fast as one can get a
+<i>flex</i> 
+scanner to go for this particular problem.
+
+<p>
+A final note:
+<i>flex</i> 
+is slow when matching NUL's, particularly when a token contains
+multiple NUL's.
+It's best to write rules which match
+<i>short</i> 
+amounts of text if it's anticipated that the text will often include NUL's.
+
+<p>
+Another final note regarding performance: as mentioned above in the section
+How the Input is Matched, dynamically resizing
+<b>yytext</b> 
+to accommodate huge tokens is a slow process because it presently requires that
+the (huge) token be rescanned from the beginning.  Thus if performance is
+vital, you should attempt to match "large" quantities of text but not
+"huge" quantities, where the cutoff between the two is at about 8K
+characters/token.
+
+</ul><H2>GENERATING C++ SCANNERS </H2><ul>
+
+<i>flex</i> 
+provides two different ways to generate scanners for use with C++.  The
+first way is to simply compile a scanner generated by
+<i>flex</i> 
+using a C++ compiler instead of a C compiler.  You should not encounter
+any compilations errors (please report any you find to the email address
+given in the Author section below).  You can then use C++ code in your
+rule actions instead of C code.  Note that the default input source for
+your scanner remains
+<i>yyin,</i> 
+and default echoing is still done to
+<i>yyout.</i> 
+Both of these remain
+<i>FILE</i> <i>*</i> 
+variables and not C++
+<i>streams.</i> 
+
+<p>
+You can also use
+<i>flex</i> 
+to generate a C++ scanner class, using the
+<b>-+</b> 
+option (or, equivalently,
+<b>%option</b> <b>c++),</b> 
+which is automatically specified if the name of the flex
+executable ends in a '+', such as
+<i>flex++.</i> 
+When using this option, flex defaults to generating the scanner to the file
+<b>lex.yy.cc</b> 
+instead of
+<b>lex.yy.c.</b> 
+The generated scanner includes the header file
+<i>FlexLexer.h,</i> 
+which defines the interface to two C++ classes.
+
+<p>
+The first class,
+<b>FlexLexer,</b> 
+provides an abstract base class defining the general scanner class
+interface.  It provides the following member functions:
+<p><dl compact><dt><b>const</b> <b>char*</b> <b>YYText()</b> 
+<dd>returns the text of the most recently matched token, the equivalent of
+<b>yytext.</b> 
+<dt><b>int</b> <b>YYLeng()</b> 
+<dd>returns the length of the most recently matched token, the equivalent of
+<b>yyleng.</b> 
+<dt><b>int</b> <b>lineno()</b> <b>const</b> 
+<dd>returns the current input line number
+(see
+<b>%option</b> <b>yylineno),</b> 
+or
+<b>1</b> 
+if
+<b>%option</b> <b>yylineno</b> 
+was not used.
+<dt><b>void</b> <b>set_debug(</b> <b>int</b> <b>flag</b> <b>)</b> 
+<dd>sets the debugging flag for the scanner, equivalent to assigning to
+<b>yy_flex_debug</b> 
+(see the Options section above).  Note that you must build the scanner
+using
+<b>%option</b> <b>debug</b> 
+to include debugging information in it.
+<dt><b>int</b> <b>debug()</b> <b>const</b> 
+<dd>returns the current setting of the debugging flag.
+</dl>
+<p>
+Also provided are member functions equivalent to
+<b>yy_switch_to_buffer(),</b> 
+<b>yy_create_buffer()</b> 
+(though the first argument is an
+<b>istream*</b> 
+object pointer and not a
+<b>FILE*),</b> 
+<b>yy_flush_buffer(),</b> 
+<b>yy_delete_buffer(),</b> 
+and
+<b>yyrestart()</b> 
+(again, the first argument is a
+<b>istream*</b> 
+object pointer).
+
+<p>
+The second class defined in
+<i>FlexLexer.h</i> 
+is
+<b>yyFlexLexer,</b> 
+which is derived from
+<b>FlexLexer.</b> 
+It defines the following additional member functions:
+<p><dl compact><dt><b>yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 )
+</b><dd>constructs a
+<b>yyFlexLexer</b> 
+object using the given streams for input and output.  If not specified,
+the streams default to
+<b>cin</b> 
+and
+<b>cout,</b> 
+respectively.
+<dt><b>virtual</b> <b>int</b> <b>yylex()</b> 
+<dd>performs the same role is
+<b>yylex()</b> 
+does for ordinary flex scanners: it scans the input stream, consuming
+tokens, until a rule's action returns a value.  If you derive a subclass
+<b>S</b> 
+from
+<b>yyFlexLexer</b> 
+and want to access the member functions and variables of
+<b>S</b> 
+inside
+<b>yylex(),</b> 
+then you need to use
+<b>%option</b> <b>yyclass=S</b> 
+to inform
+<i>flex</i> 
+that you will be using that subclass instead of
+<b>yyFlexLexer.</b> 
+In this case, rather than generating
+<b>yyFlexLexer::yylex(),</b> 
+<i>flex</i> 
+generates
+<b>S::yylex()</b> 
+(and also generates a dummy
+<b>yyFlexLexer::yylex()</b> 
+that calls
+<b>yyFlexLexer::LexerError()</b> 
+if called).
+<dt><b>virtual void switch_streams(istream* new_in = 0,
+</b><b><dd>ostream* new_out = 0)
+</b>reassigns
+<b>yyin</b> 
+to
+<b>new_in</b> 
+(if non-nil)
+and
+<b>yyout</b> 
+to
+<b>new_out</b> 
+(ditto), deleting the previous input buffer if
+<b>yyin</b> 
+is reassigned.
+<dt><b>int yylex( istream* new_in = 0, ostream* new_out = 0 )
+</b><dd>first switches the input streams via
+<b>switch_streams(</b> <b>new_in,</b> <b>new_out</b> <b>)</b> 
+and then returns the value of
+<b>yylex().</b> 
+</dl>
+<p>
+In addition,
+<b>yyFlexLexer</b> 
+defines the following protected virtual functions which you can redefine
+in derived classes to tailor the scanner:
+<p><dl compact><dt><b>virtual int LexerInput( char* buf, int max_size )
+</b><dd>reads up to
+<b>max_size</b> 
+characters into
+<b>buf</b> 
+and returns the number of characters read.  To indicate end-of-input,
+return 0 characters.  Note that "interactive" scanners (see the
+<b>-B</b> 
+and
+<b>-I</b> 
+flags) define the macro
+<b>YY_INTERACTIVE.</b> 
+If you redefine
+<b>LexerInput()</b> 
+and need to take different actions depending on whether or not
+the scanner might be scanning an interactive input source, you can
+test for the presence of this name via
+<b>#ifdef.</b> 
+<dt><b>virtual void LexerOutput( const char* buf, int size )
+</b><dd>writes out
+<b>size</b> 
+characters from the buffer
+<b>buf,</b> 
+which, while NUL-terminated, may also contain "internal" NUL's if
+the scanner's rules can match text with NUL's in them.
+<dt><b>virtual void LexerError( const char* msg )
+</b><dd>reports a fatal error message.  The default version of this function
+writes the message to the stream
+<b>cerr</b> 
+and exits.
+</dl>
+<p>
+Note that a
+<b>yyFlexLexer</b> 
+object contains its
+<i>entire</i> 
+scanning state.  Thus you can use such objects to create reentrant
+scanners.  You can instantiate multiple instances of the same
+<b>yyFlexLexer</b> 
+class, and you can also combine multiple C++ scanner classes together
+in the same program using the
+<b>-P</b> 
+option discussed above.
+
+<p>
+Finally, note that the
+<b>%array</b> 
+feature is not available to C++ scanner classes; you must use
+<b>%pointer</b> 
+(the default).
+
+<p>
+Here is an example of a simple C++ scanner:
+<pre>
+
+<p><br>        // An example of using the flex C++ scanner class.
+<br>
+<p><br>    %{
+<br>    int mylineno = 0;
+<br>    %}
+<br>
+<p><br>    string  \"[^\n"]+\"
+<br>
+<p><br>    ws      [ \t]+
+<br>
+<p><br>    alpha   [A-Za-z]
+<br>    dig     [0-9]
+<br>    name    ({alpha}|{dig}|\$)({alpha}|{dig}|[_.\-/$])*
+<br>    num1    [-+]?{dig}+\.?([eE][-+]?{dig}+)?
+<br>    num2    [-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)?
+<br>    number  {num1}|{num2}
+<br>
+<p><br>    %%
+<br>
+<p><br>    {ws}    /* skip blanks and tabs */
+<br>
+<p><br>    "/*"    {
+<br>            int c;
+<br>
+<p><br>            while((c = yyinput()) != 0)
+<br>                {
+<br>                if(c == '\n')
+<br>                    ++mylineno;
+<br>
+<p><br>                else if(c == '*')
+<br>                    {
+<br>                    if((c = yyinput()) == '/')
+<br>                        break;
+<br>                    else
+<br>                        unput(c);
+<br>                    }
+<br>                }
+<br>            }
+<br>
+<p><br>    {number}  cout &lt;&lt; "number " &lt;&lt; YYText() &lt;&lt; '\n';
+<br>
+<p><br>    \n        mylineno++;
+<br>
+<p><br>    {name}    cout &lt;&lt; "name " &lt;&lt; YYText() &lt;&lt; '\n';
+<br>
+<p><br>    {string}  cout &lt;&lt; "string " &lt;&lt; YYText() &lt;&lt; '\n';
+<br>
+<p><br>    %%
+<br>
+<p><br>    int main( int /* argc */, char** /* argv */ )
+<br>        {
+<br>        FlexLexer* lexer = new yyFlexLexer;
+<br>        while(lexer-&gt;yylex() != 0)
+<br>            ;
+<br>        return 0;
+<br>        }
+<br></pre>
+If you want to create multiple (different) lexer classes, you use the
+<b>-P</b> 
+flag (or the
+<b>prefix=</b> 
+option) to rename each
+<b>yyFlexLexer</b> 
+to some other
+<b>xxFlexLexer.</b> 
+You then can include
+<b>&lt;FlexLexer.h&gt;</b> 
+in your other sources once per lexer class, first renaming
+<b>yyFlexLexer</b> 
+as follows:
+<pre>
+
+<p><br>    #undef yyFlexLexer
+<br>    #define yyFlexLexer xxFlexLexer
+<br>    #include &lt;FlexLexer.h&gt;
+<br>
+<p><br>    #undef yyFlexLexer
+<br>    #define yyFlexLexer zzFlexLexer
+<br>    #include &lt;FlexLexer.h&gt;
+<br>
+<p><br></pre>
+if, for example, you used
+<b>%option</b> <b>prefix=xx</b> 
+for one of your scanners and
+<b>%option</b> <b>prefix=zz</b> 
+for the other.
+
+<p>
+IMPORTANT: the present form of the scanning class is
+<i>experimental</i> 
+and may change considerably between major releases. 
+
+</ul><H2>INCOMPATIBILITIES WITH LEX AND POSIX </H2><ul>
+
+<i>flex</i> 
+is a rewrite of the AT&amp;T Unix
+<i>lex</i> 
+tool (the two implementations do not share any code, though),
+with some extensions and incompatibilities, both of which
+are of concern to those who wish to write scanners acceptable
+to either implementation.  Flex is fully compliant with the POSIX
+<i>lex</i> 
+specification, except that when using
+<b>%pointer</b> 
+(the default), a call to
+<b>unput()</b> 
+destroys the contents of
+<b>yytext,</b> 
+which is counter to the POSIX specification.
+
+<p>
+In this section we discuss all of the known areas of incompatibility
+between flex, AT&amp;T lex, and the POSIX specification.
+
+<p>
+<i>flex's</i> 
+<b>-l</b> 
+option turns on maximum compatibility with the original AT&amp;T
+<i>lex</i> 
+implementation, at the cost of a major loss in the generated scanner's
+performance.  We note below which incompatibilities can be overcome
+using the
+<b>-l</b> 
+option.
+
+<p>
+<i>flex</i> 
+is fully compatible with
+<i>lex</i> 
+with the following exceptions:
+<p><dl compact><dt>-<dd>The undocumented
+<i>lex</i> 
+scanner internal variable
+<b>yylineno</b> 
+is not supported unless
+<b>-l</b> 
+or
+<b>%option</b> <b>yylineno</b> 
+is used.
+<dt><dd><b>yylineno</b> 
+should be maintained on a per-buffer basis, rather than a per-scanner
+(single global variable) basis.
+<dt><dd><b>yylineno</b> 
+is not part of the POSIX specification.
+<dt>-<dd>The
+<b>input()</b> 
+routine is not redefinable, though it may be called to read characters
+following whatever has been matched by a rule.  If
+<b>input()</b> 
+encounters an end-of-file the normal
+<b>yywrap()</b> 
+processing is done.  A ``real'' end-of-file is returned by
+<b>input()</b> 
+as
+<i>EOF.</i> 
+<dt><dd>Input is instead controlled by defining the
+<b>YY_INPUT</b> 
+macro.
+<dt><dd>The
+<i>flex</i> 
+restriction that
+<b>input()</b> 
+cannot be redefined is in accordance with the POSIX specification,
+which simply does not specify any way of controlling the
+scanner's input other than by making an initial assignment to
+<i>yyin.</i> 
+<dt>-<dd>The
+<b>unput()</b> 
+routine is not redefinable.  This restriction is in accordance with POSIX.
+<dt>-<dd><i>flex</i> 
+scanners are not as reentrant as
+<i>lex</i> 
+scanners.  In particular, if you have an interactive scanner and
+an interrupt handler which long-jumps out of the scanner, and
+the scanner is subsequently called again, you may get the following
+message:
+<pre>
+
+<p><br>    fatal flex scanner internal error--end of buffer missed
+<br>
+<p><br></pre>
+To reenter the scanner, first use
+<pre>
+
+<p><br>    yyrestart( yyin );
+<br>
+<p><br></pre>
+Note that this call will throw away any buffered input; usually this
+isn't a problem with an interactive scanner.
+<dt><dd>Also note that flex C++ scanner classes
+<i>are</i> 
+reentrant, so if using C++ is an option for you, you should use
+them instead.  See "Generating C++ Scanners" above for details.
+<dt>-<dd><b>output()</b> 
+is not supported.
+Output from the
+<b>ECHO</b> 
+macro is done to the file-pointer
+<i>yyout</i> 
+(default
+<i>stdout).</i> 
+<dt><dd><b>output()</b> 
+is not part of the POSIX specification.
+<dt>-<dd><i>lex</i> 
+does not support exclusive start conditions (%x), though they
+are in the POSIX specification.
+<dt>-<dd>When definitions are expanded,
+<i>flex</i> 
+encloses them in parentheses.
+With lex, the following:
+<pre>
+
+<p><br>    NAME    [A-Z][A-Z0-9]*
+<br>    %%
+<br>    foo{NAME}?      printf( "Found it\n" );
+<br>    %%
+<br>
+<p><br></pre>
+will not match the string "foo" because when the macro
+is expanded the rule is equivalent to "foo[A-Z][A-Z0-9]*?"
+and the precedence is such that the '?' is associated with
+"[A-Z0-9]*".  With
+<i>flex,</i> 
+the rule will be expanded to
+"foo([A-Z][A-Z0-9]*)?" and so the string "foo" will match.
+<dt><dd>Note that if the definition begins with
+<b>^</b> 
+or ends with
+<b>$</b> 
+then it is
+<i>not</i> 
+expanded with parentheses, to allow these operators to appear in
+definitions without losing their special meanings.  But the
+<b>&lt;s&gt;,</b> <b>/,</b> 
+and
+<b>&lt;&lt;EOF&gt;&gt;</b> 
+operators cannot be used in a
+<i>flex</i> 
+definition.
+<dt><dd>Using
+<b>-l</b> 
+results in the
+<i>lex</i> 
+behavior of no parentheses around the definition.
+<dt><dd>The POSIX specification is that the definition be enclosed in parentheses.
+<dt>-<dd>Some implementations of
+<i>lex</i> 
+allow a rule's action to begin on a separate line, if the rule's pattern
+has trailing whitespace:
+<pre>
+
+<p><br>    %%
+<br>    foo|bar&lt;space here&gt;
+<br>      { foobar_action(); }
+<br>
+<p><br></pre>
+<i>flex</i> 
+does not support this feature.
+<dt>-<dd>The
+<i>lex</i> 
+<b>%r</b> 
+(generate a Ratfor scanner) option is not supported.  It is not part
+of the POSIX specification.
+<dt>-<dd>After a call to
+<b>unput(),</b> 
+<i>yytext</i> 
+is undefined until the next token is matched, unless the scanner
+was built using
+<b>%array.</b> 
+This is not the case with
+<i>lex</i> 
+or the POSIX specification.  The
+<b>-l</b> 
+option does away with this incompatibility.
+<dt>-<dd>The precedence of the
+<b>{}</b> 
+(numeric range) operator is different.
+<i>lex</i> 
+interprets "abc{1,3}" as "match one, two, or
+three occurrences of 'abc'", whereas
+<i>flex</i> 
+interprets it as "match 'ab'
+followed by one, two, or three occurrences of 'c'".  The latter is
+in agreement with the POSIX specification.
+<dt>-<dd>The precedence of the
+<b>^</b> 
+operator is different.
+<i>lex</i> 
+interprets "^foo|bar" as "match either 'foo' at the beginning of a line,
+or 'bar' anywhere", whereas
+<i>flex</i> 
+interprets it as "match either 'foo' or 'bar' if they come at the beginning
+of a line".  The latter is in agreement with the POSIX specification.
+<dt>-<dd>The special table-size declarations such as
+<b>%a</b> 
+supported by
+<i>lex</i> 
+are not required by
+<i>flex</i> 
+scanners;
+<i>flex</i> 
+ignores them.
+<dt>-<dd>The name
+FLEX_SCANNER
+is #define'd so scanners may be written for use with either
+<i>flex</i> 
+or
+<i>lex.</i> 
+Scanners also include
+<b>YY_FLEX_MAJOR_VERSION</b> 
+and
+<b>YY_FLEX_MINOR_VERSION</b> 
+indicating which version of
+<i>flex</i> 
+generated the scanner
+(for example, for the 2.5 release, these defines would be 2 and 5
+respectively).
+</dl>
+<p>
+The following
+<i>flex</i> 
+features are not included in
+<i>lex</i> 
+or the POSIX specification:
+<pre>
+
+<p><br>    C++ scanners
+<br>    %option
+<br>    start condition scopes
+<br>    start condition stacks
+<br>    interactive/non-interactive scanners
+<br>    yy_scan_string() and friends
+<br>    yyterminate()
+<br>    yy_set_interactive()
+<br>    yy_set_bol()
+<br>    YY_AT_BOL()
+<br>    &lt;&lt;EOF&gt;&gt;
+<br>    &lt;*&gt;
+<br>    YY_DECL
+<br>    YY_START
+<br>    YY_USER_ACTION
+<br>    YY_USER_INIT
+<br>    #line directives
+<br>    %{}'s around actions
+<br>    multiple actions on a line
+<br>
+<p><br></pre>
+plus almost all of the flex flags.
+The last feature in the list refers to the fact that with
+<i>flex</i> 
+you can put multiple actions on the same line, separated with
+semi-colons, while with
+<i>lex,</i> 
+the following
+<pre>
+
+<p><br>    foo    handle_foo(); ++num_foos_seen;
+<br>
+<p><br></pre>
+is (rather surprisingly) truncated to
+<pre>
+
+<p><br>    foo    handle_foo();
+<br>
+<p><br></pre>
+<i>flex</i> 
+does not truncate the action.  Actions that are not enclosed in
+braces are simply terminated at the end of the line.
+
+</ul><H2>DIAGNOSTICS </H2><ul>
+
+
+<p>
+<i>warning,</i> <i>rule</i> <i>cannot</i> <i>be</i> <i>matched</i> 
+indicates that the given rule
+cannot be matched because it follows other rules that will
+always match the same text as it.  For
+example, in the following "foo" cannot be matched because it comes after
+an identifier "catch-all" rule:
+<pre>
+
+<p><br>    [a-z]+    got_identifier();
+<br>    foo       got_foo();
+<br>
+<p><br></pre>
+Using
+<b>REJECT</b> 
+in a scanner suppresses this warning.
+
+<p>
+<i>warning,</i> 
+<b>-s</b> 
+<i>option given but default rule can be matched
+</i>means that it is possible (perhaps only in a particular start condition)
+that the default rule (match any single character) is the only one
+that will match a particular input.  Since
+<b>-s</b> 
+was given, presumably this is not intended.
+
+<p>
+<i>reject_used_but_not_detected</i> <i>undefined</i> 
+or
+<i>yymore_used_but_not_detected</i> <i>undefined</i> <i>-</i> 
+These errors can occur at compile time.  They indicate that the
+scanner uses
+<b>REJECT</b> 
+or
+<b>yymore()</b> 
+but that
+<i>flex</i> 
+failed to notice the fact, meaning that
+<i>flex</i> 
+scanned the first two sections looking for occurrences of these actions
+and failed to find any, but somehow you snuck some in (via a #include
+file, for example).  Use
+<b>%option</b> <b>reject</b> 
+or
+<b>%option</b> <b>yymore</b> 
+to indicate to flex that you really do use these features.
+
+<p>
+<i>flex</i> <i>scanner</i> <i>jammed</i> <i>-</i> 
+a scanner compiled with
+<b>-s</b> 
+has encountered an input string which wasn't matched by
+any of its rules.  This error can also occur due to internal problems.
+
+<p>
+<i>token</i> <i>too</i> <i>large,</i> <i>exceeds</i> <i>YYLMAX</i> <i>-</i> 
+your scanner uses
+<b>%array</b> 
+and one of its rules matched a string longer than the
+<b>YYLMAX</b> 
+constant (8K bytes by default).  You can increase the value by
+#define'ing
+<b>YYLMAX</b> 
+in the definitions section of your
+<i>flex</i> 
+input.
+
+<p>
+<i>scanner</i> <i>requires</i> <i>-8</i> <i>flag</i> <i>to</i> 
+<i>use</i> <i>the</i> <i>character</i> <i>'x'</i> <i>-</i> 
+Your scanner specification includes recognizing the 8-bit character
+<i>'x'</i> 
+and you did not specify the -8 flag, and your scanner defaulted to 7-bit
+because you used the
+<b>-Cf</b> 
+or
+<b>-CF</b> 
+table compression options.  See the discussion of the
+<b>-7</b> 
+flag for details.
+
+<p>
+<i>flex</i> <i>scanner</i> <i>push-back</i> <i>overflow</i> <i>-</i> 
+you used
+<b>unput()</b> 
+to push back so much text that the scanner's buffer could not hold
+both the pushed-back text and the current token in
+<b>yytext.</b> 
+Ideally the scanner should dynamically resize the buffer in this case, but at
+present it does not.
+
+<p>
+<i>input buffer overflow, can't enlarge buffer because scanner uses REJECT -
+</i>the scanner was working on matching an extremely large token and needed
+to expand the input buffer.  This doesn't work with scanners that use
+<b>REJECT.
+</b>
+<p>
+<i>fatal flex scanner internal error--end of buffer missed -
+</i>This can occur in an scanner which is reentered after a long-jump
+has jumped out (or over) the scanner's activation frame.  Before
+reentering the scanner, use:
+<pre>
+
+<p><br>    yyrestart( yyin );
+<br>
+<p><br></pre>
+or, as noted above, switch to using the C++ scanner class.
+
+<p>
+<i>too</i> <i>many</i> <i>start</i> <i>conditions</i> <i>in</i> <i>&lt;&gt;</i> <i>construct!</i> <i>-</i> 
+you listed more start conditions in a &lt;&gt; construct than exist (so
+you must have listed at least one of them twice).
+
+</ul><H2>FILES </H2><ul>
+
+<p><dl compact><dt><b>-lfl</b> 
+<dd>library with which scanners must be linked.
+<dt><i>lex.yy.c</i> 
+<dd>generated scanner (called
+<i>lexyy.c</i> 
+on some systems).
+<dt><i>lex.yy.cc</i> 
+<dd>generated C++ scanner class, when using
+<b>-+.</b> 
+<dt><i>&lt;FlexLexer.h&gt;</i> 
+<dd>header file defining the C++ scanner base class,
+<b>FlexLexer,</b> 
+and its derived class,
+<b>yyFlexLexer.</b> 
+<dt><i>flex.skl</i> 
+<dd>skeleton scanner.  This file is only used when building flex, not when
+flex executes.
+<dt><i>lex.backup</i> 
+<dd>backing-up information for
+<b>-b</b> 
+flag (called
+<i>lex.bck</i> 
+on some systems).
+</dl>
+</ul><H2>DEFICIENCIES / BUGS </H2><ul>
+
+
+<p>
+Some trailing context
+patterns cannot be properly matched and generate
+warning messages ("dangerous trailing context").  These are
+patterns where the ending of the
+first part of the rule matches the beginning of the second
+part, such as "zx*/xy*", where the 'x*' matches the 'x' at
+the beginning of the trailing context.  (Note that the POSIX draft
+states that the text matched by such patterns is undefined.)
+
+<p>
+For some trailing context rules, parts which are actually fixed-length are
+not recognized as such, leading to the abovementioned performance loss.
+In particular, parts using '|' or {n} (such as "foo{3}") are always
+considered variable-length.
+
+<p>
+Combining trailing context with the special '|' action can result in
+<i>fixed</i> 
+trailing context being turned into the more expensive
+<i>variable</i> 
+trailing context.  For example, in the following:
+<pre>
+
+<p><br>    %%
+<br>    abc      |
+<br>    xyz/def
+<br>
+<p><br></pre>
+
+<p>
+Use of
+<b>unput()</b> 
+invalidates yytext and yyleng, unless the
+<b>%array</b> 
+directive
+or the
+<b>-l</b> 
+option has been used.
+
+<p>
+Pattern-matching of NUL's is substantially slower than matching other
+characters.
+
+<p>
+Dynamic resizing of the input buffer is slow, as it entails rescanning
+all the text matched so far by the current (generally huge) token.
+
+<p>
+Due to both buffering of input and read-ahead, you cannot intermix
+calls to &lt;stdio.h&gt; routines, such as, for example,
+<b>getchar(),</b> 
+with
+<i>flex</i> 
+rules and expect it to work.  Call
+<b>input()</b> 
+instead.
+
+<p>
+The total table entries listed by the
+<b>-v</b> 
+flag excludes the number of table entries needed to determine
+what rule has been matched.  The number of entries is equal
+to the number of DFA states if the scanner does not use
+<b>REJECT,</b> 
+and somewhat greater than the number of states if it does.
+
+<p>
+<b>REJECT</b> 
+cannot be used with the
+<b>-f</b> 
+or
+<b>-F</b> 
+options.
+
+<p>
+The
+<i>flex</i> 
+internal algorithms need documentation.
+
+</ul><H2>SEE ALSO </H2><ul>
+
+
+<p>
+lex(1), yacc(1), sed(1), awk(1).
+
+<p>
+John Levine, Tony Mason, and Doug Brown,
+<i>Lex</i> <i>&amp;</i> <i>Yacc,</i> 
+O'Reilly and Associates.  Be sure to get the 2nd edition.
+
+<p>
+M. E. Lesk and E. Schmidt,
+<i>LEX</i> <i>-</i> <i>Lexical</i> <i>Analyzer</i> <i>Generator</i> 
+
+<p>
+Alfred Aho, Ravi Sethi and Jeffrey Ullman,
+<i>Compilers:</i> <i>Principles,</i> <i>Techniques</i> <i>and</i> <i>Tools,</i> 
+Addison-Wesley (1986).  Describes the pattern-matching techniques used by
+<i>flex</i> 
+(deterministic finite automata).
+
+</ul><H2>AUTHOR </H2><ul>
+
+Vern Paxson, with the help of many ideas and much inspiration from
+Van Jacobson.  Original version by Jef Poskanzer.  The fast table
+representation is a partial implementation of a design done by Van
+Jacobson.  The implementation was done by Kevin Gong and Vern Paxson.
+
+<p>
+Thanks to the many
+<i>flex</i> 
+beta-testers, feedbackers, and contributors, especially Francois Pinard,
+Casey Leedom,
+Stan Adermann, Terry Allen, David Barker-Plummer, John Basrai,
+Nelson H.F. Beebe, [email protected],
+Karl Berry, Peter A. Bigot, Simon Blanchard,
+Keith Bostic, Frederic Brehm, Ian Brockbank, Kin Cho, Nick Christopher,
+Brian Clapper, J.T. Conklin,
+Jason Coughlin, Bill Cox, Nick Cropper, Dave Curtis, Scott David
+Daniels, Chris G. Demetriou, Theo Deraadt,
+Mike Donahue, Chuck Doucette, Tom Epperly, Leo Eskin,
+Chris Faylor, Chris Flatters, Jon Forrest, Joe Gayda, Kaveh R. Ghazi,
+Eric Goldman, Christopher M. Gould, Ulrich Grepel, Peer Griebel,
+Jan Hajic, Charles Hemphill, NORO Hideo,
+Jarkko Hietaniemi, Scott Hofmann,
+Jeff Honig, Dana Hudes, Eric Hughes, John Interrante,
+Ceriel Jacobs, Michal Jaegermann, Sakari Jalovaara, Jeffrey R. Jones,
+Henry Juengst, Klaus Kaempf, Jonathan I. Kamens, Terrence O Kane,
+Amir Katz, [email protected], Kevin B. Kenny,
+Steve Kirsch, Winfried Koenig, Marq Kole, Ronald Lamprecht,
+Greg Lee, Rohan Lenard, Craig Leres, John Levine, Steve Liddle, Mike Long,
+Mohamed el Lozy, Brian Madsen, Malte, Joe Marshall,
+Bengt Martensson, Chris Metcalf,
+Luke Mewburn, Jim Meyering, R. Alexander Milowski, Erik Naggum,
+G.T. Nicol, Landon Noll, James Nordby, Marc Nozell,
+Richard Ohnemus, Karsten Pahnke,
+Sven Panne, Roland Pesch, Walter Pelissero, Gaumond
+Pierre, Esmond Pitt, Jef Poskanzer, Joe Rahmeh, Jarmo Raiha,
+Frederic Raimbault, Pat Rankin, Rick Richardson,
+Kevin Rodgers, Kai Uwe Rommel, Jim Roskind, Alberto Santini,
+Andreas Scherer, Darrell Schiebel, Raf Schietekat,
+Doug Schmidt, Philippe Schnoebelen, Andreas Schwab,
+Alex Siegel, Eckehard Stolz, Jan-Erik Strvmquist,
+Mike Stump, Paul Stuart, Dave Tallman, Ian Lance Taylor,
+Chris Thewalt, Richard M. Timoney, Jodi Tsai,
+Paul Tuinenga, Gary Weik, Frank Whaley, Gerhard Wilhelms, Kent Williams, Ken
+Yap, Ron Zellar, Nathan Zelle, David Zuhn,
+and those whose names have slipped my marginal
+mail-archiving skills but whose contributions are appreciated all the
+same.
+
+<p>
+Thanks to Keith Bostic, Jon Forrest, Noah Friedman,
+John Gilmore, Craig Leres, John Levine, Bob Mulcahy, G.T.
+Nicol, Francois Pinard, Rich Salz, and Richard Stallman for help with various
+distribution headaches.
+
+<p>
+Thanks to Esmond Pitt and Earle Horton for 8-bit character support; to
+Benson Margulies and Fred Burke for C++ support; to Kent Williams and Tom
+Epperly for C++ class support; to Ove Ewerlid for support of NUL's; and to
+Eric Hughes for support of multiple buffers.
+
+<p>
+This work was primarily done when I was with the Real Time Systems Group
+at the Lawrence Berkeley Laboratory in Berkeley, CA.  Many thanks to all there
+for the support I received.
+
+<p>
+Send comments to [email protected].
+</ul></body></html>

+ 357 - 0
engine/bin/nasm/Licence

@@ -0,0 +1,357 @@
+
+
+
+Terms and Conditions for the use of the Netwide Assembler
+
+
+=========================================================
+
+
+
+
+
+Can I have the gist without reading the legalese?
+
+
+-------------------------------------------------
+
+
+
+
+
+Basically, NASM is free. You can't charge for it. You can copy it as
+
+
+much as you like. You can incorporate it, or bits of it, into other
+
+
+free programs if you want. (But we want to know about it if you do,
+
+
+and we want to be mentioned in the credits.) We may well allow you
+
+
+to incorporate it into commercial software too, but we'll probably
+
+
+demand some money for it, and we'll certainly demand to be given
+
+
+credit. And in extreme cases (although I can't immediately think of
+
+
+a reason we might actually want to do this) we may refuse to let you
+
+
+do it at all.
+
+
+
+
+
+NASM LICENCE AGREEMENT
+
+
+======================
+
+
+
+
+
+By "the Software" this licence refers to the complete contents of
+
+
+the NASM archive, excluding this licence document itself, and
+
+
+excluding the contents of the `test' directory. The Netwide
+
+
+Disassembler, NDISASM, is specifically included under this licence.
+
+
+
+
+
+I. The Software is freely redistributable; anyone may copy the
+
+
+Software, or parts of the Software, and give away as many copies as
+
+
+they like to anyone, as long as this licence document is kept with
+
+
+the Software. Charging a fee for the Software is prohibited,
+
+
+although a fee may be charged for the act of transferring a copy,
+
+
+and you can offer warranty protection and charge a fee for that.
+
+
+
+
+
+II. The Software, or parts thereof, may be incorporated into other
+
+
+freely redistributable software (by which we mean software that may
+
+
+be obtained free of charge) without requiring permission from the
+
+
+authors, as long as due credit is given to the authors of the
+
+
+Software in the resulting work, as long as the authors are informed
+
+
+of this action if possible, and as long as those parts of the
+
+
+Software that are used remain under this licence.
+
+
+
+
+
+III. Modified forms of the Software may be created and distributed
+
+
+as long as the authors are informed of this action if possible, as
+
+
+long as the resulting work remains under this licence, as long as
+
+
+the modified form of the Software is distributed with documentation
+
+
+which still gives credit to the original authors of the Software,
+
+
+and as long as the modified form of the Software is distributed with
+
+
+a clear statement that it is not the original form of the Software
+
+
+in the form that it was distributed by the authors.
+
+
+
+
+
+IV. The Software, or parts thereof, may be incorporated into other
+
+
+software which is not freely redistributable (i.e. software for
+
+
+which a fee is charged), as long as permission is granted from the
+
+
+authors of the Software. The authors reserve the right to grant this
+
+
+permission only for a fee, which may at our option take the form of
+
+
+royalty payments. The authors also reserve the right to refuse to
+
+
+grant permission if they deem it necessary. For further information
+
+
+about who exactly the authors are, see clause XI below.
+
+
+
+
+
+V. The Software may be incorporated, in its original archive form,
+
+
+into software collections or archives which are not freely
+
+
+redistributable, as long as it is clearly stated that the Software
+
+
+itself remains freely redistributable and remains under this licence
+
+
+and no other. Such collections are deemed not to fall under article
+
+
+IV of this licence.
+
+
+
+
+
+VI. Object files or programs generated by the Software as output do
+
+
+not fall under this licence at all, and may be placed under any
+
+
+licence the author wishes. The authors explicitly lay no claim to,
+
+
+and assert no rights over, any programs written by other people and
+
+
+assembled into object form by the Software.
+
+
+
+
+
+VII. You may not copy, modify or distribute the Software except
+
+
+under the terms given in this licence document. You may not
+
+
+sublicense the Software or in any way place it under any other
+
+
+licence than this one. Since you have not signed this licence, you
+
+
+are not of course required to accept it; however, no other licence
+
+
+applies to the Software, and nothing else grants you any permission
+
+
+to copy, modify, sublicense or distribute the Software in any way.
+
+
+These actions are therefore prohibited if you do not accept this
+
+
+licence.
+
+
+
+
+
+VIII. There is no warranty for the Software, to the extent permitted
+
+
+by applicable law. The authors provide the Software "as is" without
+
+
+warranty of any kind, either expressed or implied, including but not
+
+
+limited to the implied warranties of merchantability and fitness for
+
+
+a particular purpose. The entire risk as to the quality and
+
+
+performance of the Software is with you. Should the Software prove
+
+
+defective, you assume the cost of all necessary servicing, repair or
+
+
+correction.
+
+
+
+
+
+IX. In no event, unless required by applicable law or agreed to in
+
+
+writing, will any of the authors be liable to you for damages,
+
+
+including any general, special, incidental or consequential damages,
+
+
+arising out of the use or the inability to use the Software,
+
+
+including but not limited to loss of data or data being rendered
+
+
+inaccurate or a failure of the Software to operate with any other
+
+
+programs, even if you have been advised of the possibility of such
+
+
+damages.
+
+
+
+
+
+X. In addition to what this Licence otherwise provides, the Software
+
+
+may be distributed in such a way as to be compliant with the GNU
+
+
+General Public Licence, as published by the Free Software Foundation,
+
+
+Cambridge, MA, USA; version 2, or, at your option, any later version;
+
+
+incorporated herein by reference.  You must include a copy of this
+
+
+Licence with such distribution.  Furthermore, patches sent to the
+
+
+authors for the purpose of inclusion in the official release version
+
+
+are considered cleared for release under the full terms of this
+
+
+Licence.
+
+
+
+
+
+XI. The authors of NASM are the original authors (Simon Tatham and
+
+
+Julian Hall) and all those who the original authors feel have
+
+
+contributed significantly to the overall project.  If you wish to
+
+
+contact the authors, Julian Hall ([email protected]) should be your
+
+
+first port of call.
+
+
+
+
+
+XII. Should any part of this agreement be deemed unenforcable, it is
+
+
+intended that the remainder of the agreement be held in force.
+
+
+
+
+
+END OF LICENCE AGREEMENT
+
+

+ 179 - 0
engine/bin/nasm/Readme

@@ -0,0 +1,179 @@
+This is a distribution of NASM, the Netwide Assembler. NASM is a
+prototype general-purpose x86 assembler. It will currently output
+flat-form binary files, a.out, COFF and ELF Unix object files,
+Microsoft Win32 and 16-bit DOS object files, OS/2 object files, the
+as86 object format, and a home-grown format called RDOFF.
+
+Also included is NDISASM, a prototype x86 binary-file disassembler
+which uses the same instruction table as NASM.
+
+To install NASM on UNIX or Linux, type `./configure', then `make', and
+then either `make install', or copy the file `nasm' (and maybe
+`ndisasm') to a directory on your search path (maybe /usr/local/bin,
+or ~/bin if you don't have root access). You may also want to copy the
+man page `nasm.1' (and maybe `ndisasm.1') to somewhere sensible.  Note
+that source and binaries are also available in RPM format; to install
+an RPM on a system which uses this packaging format (mostly Linux
+distributions) simply do "rpm -Uivh filename.rpm".
+
+To install under DOS, if you don't need to rebuild from the sources,
+you can just copy either nasm.exe and ndisasm.exe (32-bit DOS-extended
+versions), nasmr.exe and ndisasmr.exe (16-bit classical DOS
+executables), or nasmw.exe and ndisasmw.exe (Win32 console
+applications - less likely to run out of memory), to somewhere on your
+PATH.
+
+The 32-bit applications require a DPMI server.  If you're running
+under plain DOS and don't have a DPMI server already, you can get
+CSDPMI from ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/.
+
+To rebuild the DOS sources, various makefiles are provided:
+
+- Makefile.dos, the one I build the standard 16-bit releases from,
+  designed for a hybrid system using Microsoft C and Borland Make
+  (don't ask why :-)
+- Makefile.vc, for Microsoft Visual C++ compiling to a Win32
+  command-line application. This is the one I build the standard
+  Win32 release binaries from.
+
+- Makefile.bor, for Borland C.
+- Makefile.bc2, also for Borland C, contributed by Fox Cutter.
+  Reported to work better than Makefile.bor on some systems.
+
+- Makefile.sc, for Symantec C++, compiling to a 32-bit extended DOS
+  executable.. Contributed by Mark Junker.
+- Makefile.scw, also for Symantec C++, compiling to a Win32 command-
+  line application. Also contributed by Mark Junker.
+
+- Makefile.wc, for Watcom C, compiling to a 32-bit extended DOS
+  executable. Contributed by Dominik Behr.
+- Makefile.wcw, also for Watcom C, compiling to a Win32 command-
+  line application. Also contributed by Dominik Behr.
+
+- Makefile.dj, for DJGPP, compiling to a 32-bit extended DOS
+  executable. Contributed by Dominik Behr.
+
+- Makefile.lcc, for lcc-win32, compiling to a Win32 command line
+  application. (The lcc-win32 compiler and tools are available from
+  http://www.remcomp.com/lcc-win32/)
+
+I can't guarantee that all of those makefiles work, because I don't
+have all of those compilers. However, Makefile.dos and Makefile.vc
+work on my system, and so do Makefile.bor and Makefile.bc2.
+
+Be careful with Borland C: there have been various conflicting
+reports about how reliable the Huge memory model is. If you try to
+compile NASM in Large model, you may get DGROUP overflows due to the
+vast quantity of data in the instruction tables. I've had reports
+from some people that Huge model doesn't work at all (and also
+reports from others that it works fine), so if you don't want to try
+moving to Huge, you could try adding the option `-dc' to the
+compiler command line instead, which causes string literals to be
+moved from DGROUP to the code segments and might make Large model
+start working. (Either solution works for me.)
+
+To rebuild truly from scratch, or to make any changes to insns.dat or
+standard.mac, you need a Perl interpreter installed.  Perl
+interpreters are available for a number of platforms, from:
+
+	http://www.cpan.org/ports/
+
+For DOS you can also get one from:
+
+	ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/
+
+Dominik Behr has also contributed the file misc/pmw.bat, which is a
+batch file to turn the output from Makefile.wc (NASM.EXE and
+NDISASM.EXE) into standalone executables incorporating Tran's
+PMODE/W DOS extender, rather than depending on an external extender
+program.
+
+Some of the Windows makefiles produce executables called nasmw.exe
+and ndisasmw.exe, and some don't. Be prepared for either...
+
+If you want to build a restricted version of NASM containing only
+some of the object file formats, you can achieve this by adding
+#defines to `outform.h' (see the file itself for documentation), or
+equivalently by adding compiler command line options in the
+Makefile.
+
+There is a machine description file for the `LCC' retargetable C
+compiler (version 4.0), in the directory `lcc', along with
+instructions for its use. This means that NASM can now be used as
+the code-generator back end for a useful C compiler.
+
+Michael `Wuschel' Tippach has ported his DOS extender `WDOSX' to
+enable it to work with the 32-bit binary files NASM can output: the
+original extender and his port `WDOSX/N' are available from his web
+page, http://www.geocities.com/SiliconValley/Park/4493.
+
+Matt Mastracci has written a document explaining how to write
+assembly language modules in DJGPP programs using NASM: it's on his
+web site at http://www.ucalgary.ca/~mmastrac/djgppasm.doc.
+
+The `misc' directory contains `nasm.sl', a NASM editing mode for the
+JED programmers' editor (see http://space.mit.edu/~davis/jed.html
+for details about JED). The comment at the start of the file gives
+instructions on how to install the mode. This directory also
+contains a file (`magic') containing lines to add to /etc/magic on
+Unix systems to allow the `file' command to recognise RDF files, and
+a zip file (`exasm.zip') containing the necessary files for syntax
+highlighting in the Aurora DOS editor. (The Aurora files were
+contributed by <[email protected]>; I haven't tested them as I
+don't have Aurora.)
+
+The `rdoff' directory contains sources for a linker and loader for
+the RDF object file format, to run under Linux, and also
+documentation on the internal structure of RDF files.
+
+For information about how you can distribute and use NASM, see the
+file Licence. We were tempted to put NASM under the GPL, but decided
+that in many ways it was too restrictive for developers.
+
+For release 0.98 and later, the NASM source distribution contains the
+following components:
+
+          Unix                      Windows, OS/2               DOS
+
+          nasm-X.XX.tar.gz          nasm-X.XX.zip               nasmXXXs.zip
+
+          Main archive: Contain all sources you need to build NASM,
+          plus the documentation source code.  If you have a Perl
+          interpreter and (possibly) Winhelp compiler installed, you
+          don't need any additional files.
+
+          nasm-X.XX-xdoc.tar.gz     nasm-X.XX-xdoc.zip          nasmXXXd.zip
+
+          Documentation in HTML, INFO, text, and PostScript format.
+          You can compile these files yourself from the main archive
+          if you have a Perl interpreter installed.
+
+          N/A                       nasm-X.XX-whlp.zip          N/A
+
+          Documentation in Windows help format.  You can compile this
+          file yourself from the main archive if you have a Perl
+          interpreter and a Winhelp compiler installed.
+
+The Unix, Windows-OS/2, and DOS versions differ in the following ways:
+
+The Unix version uses the Unix line ending convention (LF), and long file
+names with upper and lower case.
+
+The Windows-OS/2 version uses the Microsoft line ending convention
+(CR+LF), and long file names with upper and lower case.
+
+The DOS version uses the Microsoft line ending convention (CR+LF),
+with all filenames in 8.3 monocase.
+
+For information about how to use NASM, see the various forms of
+documentation in the `doc' directory: documentation is provided in
+HTML, PostScript, plain text, Texinfo, and Windows Help formats. For
+information about how to use NDISASM, see `ndisasm.doc'. For
+information about the internal structure of NASM, see
+`internal.doc'. (In particular, _please_ read `internal.doc' before
+writing any code for us...)
+
+The NASM web page is at http://www.cryogen.com/Nasm/
+
+Bug reports (and patches if you can) should be sent to
+<[email protected]>.

BIN
engine/bin/nasm/nasmw.exe


BIN
engine/bin/nasm/ndisasmw.exe


BIN
engine/compilers/VisualStudio 2010/Torque 2D.ico


+ 110 - 0
engine/compilers/VisualStudio 2010/Torque 2D.rc

@@ -0,0 +1,110 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "../../Source/game/resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "windows.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_TORQUE2D               ICON    DISCARDABLE     "Torque 2D.ico"
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,5,0,0
+ PRODUCTVERSION 1,5,0,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "CompanyName", "GarageGames LLC"
+            VALUE "FileDescription", "Torque 2D MIT"
+            VALUE "FileVersion", "2, 0, 0, 0"
+            VALUE "InternalName", "Torque 2D"
+            VALUE "LegalCopyright", "Copyright (c) 2013 GarageGames, LLC"
+            VALUE "OriginalFilename", "Torque2D.exe"
+            VALUE "ProductName", "Torque 2D MIT"
+            VALUE "ProductVersion", "2, 0, 0, 0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

+ 53 - 0
engine/compilers/VisualStudio 2010/Torque 2D.sln

@@ -0,0 +1,53 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Torque 2D", "Torque 2D.vcxproj", "{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ljpeg", "ljpeg.vcxproj", "{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpng", "lpng.vcxproj", "{AF1179E3-A838-46A3-A427-1E62AA4C52F4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcxproj", "{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{963EAD38-C2E9-442D-89B2-299D450E3F43}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+		Shipping|Win32 = Shipping|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Debug|Win32.Build.0 = Debug|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Release|Win32.ActiveCfg = Release|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Release|Win32.Build.0 = Release|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}.Shipping|Win32.Build.0 = Shipping|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Debug|Win32.Build.0 = Debug|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Release|Win32.ActiveCfg = Release|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Release|Win32.Build.0 = Release|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}.Shipping|Win32.Build.0 = Shipping|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Debug|Win32.Build.0 = Debug|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Release|Win32.ActiveCfg = Release|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Release|Win32.Build.0 = Release|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4}.Shipping|Win32.Build.0 = Shipping|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Debug|Win32.Build.0 = Debug|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Release|Win32.ActiveCfg = Release|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Release|Win32.Build.0 = Release|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Shipping|Win32.ActiveCfg = Shipping|Win32
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}.Shipping|Win32.Build.0 = Shipping|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36} = {963EAD38-C2E9-442D-89B2-299D450E3F43}
+		{AF1179E3-A838-46A3-A427-1E62AA4C52F4} = {963EAD38-C2E9-442D-89B2-299D450E3F43}
+		{86CB2525-0CF3-40D3-BF42-A0A95035EE8C} = {963EAD38-C2E9-442D-89B2-299D450E3F43}
+	EndGlobalSection
+EndGlobal

+ 1095 - 0
engine/compilers/VisualStudio 2010/Torque 2D.vcxproj

@@ -0,0 +1,1095 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Shipping|Win32">
+      <Configuration>Shipping</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1564A07D-230E-4C90-AEE6-52AC9A58D6C9}</ProjectGuid>
+    <RootNamespace>TorqueGame</RootNamespace>
+    <ProjectName>Torque2D</ProjectName>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../../</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    </LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../../</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../../</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">../../Link/VC2010.$(Configuration).$(PlatformName)/$(ProjectName)/</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">false</LinkIncremental>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Torque2D_DEBUG</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Torque2D</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">Torque2D</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_DEBUG;TORQUE_DEBUG_GUARD;_CRT_SECURE_NO_DEPRECATE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <WarningLevel>Level3</WarningLevel>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;RPCRT4.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>../../../Torque2D_DEBUG.exe</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../Lib/unicode;../../lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;LIBCD;LIBCMTD;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;../../source/testing/googleTest;../../source/testing/googleTest/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;RPCRT4.LIB;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>../../../Torque2D.exe</OutputFile>
+      <SuppressStartupBanner>false</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../Lib/unicode;../../Lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <EnableUAC>false</EnableUAC>
+      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <CustomBuildStep />
+    <CustomBuildStep>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
+    <Midl>
+      <TypeLibraryName>$(OutDir)Torque2D.tlb</TypeLibraryName>
+      <HeaderFileName>
+      </HeaderFileName>
+    </Midl>
+    <ClCompile>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>../../Lib/zlib;../../Lib/lpng;../../Lib/ljpeg;../../Lib/openal/win32;../../Source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_SHIPPING;UNICODE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(OutDir)</AssemblerListingLocation>
+      <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
+      <BrowseInformation>false</BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DisableSpecificWarnings>4800;4100;4127;4512</DisableSpecificWarnings>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+      <AdditionalIncludeDirectories>../../Lib/MSPlatformSDK/Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;unicows.lib;shell32.lib;shlwapi.lib;ole32.lib;RPCRT4.LIB;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>../../../Torque2D.exe</OutputFile>
+      <SuppressStartupBanner>false</SuppressStartupBanner>
+      <AdditionalLibraryDirectories>../../Lib/unicode;../../Lib/MSPlatformSDK/Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBC;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(IntDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <EnableUAC>false</EnableUAC>
+      <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <CustomBuildStep />
+    <CustomBuildStep>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Torque 2D.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\AnimationController.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc" />
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc" />
+    <ClCompile Include="..\..\source\2d\core\BatchRender.cc" />
+    <ClCompile Include="..\..\source\2d\core\CoreMath.cc" />
+    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc" />
+    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc" />
+    <ClCompile Include="..\..\source\2d\core\SpriteProxyBase.cc" />
+    <ClCompile Include="..\..\source\2d\core\Utility.cc" />
+    <ClCompile Include="..\..\source\2d\core\Vector2.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc" />
+    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc" />
+    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc" />
+    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc" />
+    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc" />
+    <ClCompile Include="..\..\source\2d\scene\Scene.cc" />
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp" />
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp" />
+    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc" />
+    <ClCompile Include="..\..\source\algorithm\crc.cc" />
+    <ClCompile Include="..\..\source\algorithm\hashFunction.cc" />
+    <ClCompile Include="..\..\source\assets\assetBase.cc" />
+    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc" />
+    <ClCompile Include="..\..\source\assets\assetManager.cc" />
+    <ClCompile Include="..\..\source\assets\assetQuery.cc" />
+    <ClCompile Include="..\..\source\assets\assetSnapshot.cc" />
+    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc" />
+    <ClCompile Include="..\..\source\assets\declaredAssets.cc" />
+    <ClCompile Include="..\..\source\assets\referencedAssets.cc" />
+    <ClCompile Include="..\..\source\audio\AudioAsset.cc" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp" />
+    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp" />
+    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp" />
+    <ClCompile Include="..\..\source\collection\bitTables.cc" />
+    <ClCompile Include="..\..\source\collection\hashTable.cc" />
+    <ClCompile Include="..\..\source\collection\nameTags.cpp" />
+    <ClCompile Include="..\..\source\collection\undo.cc" />
+    <ClCompile Include="..\..\source\collection\vector.cc" />
+    <ClCompile Include="..\..\source\console\consoleBaseType.cc" />
+    <ClCompile Include="..\..\source\console\consoleDictionary.cc" />
+    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc" />
+    <ClCompile Include="..\..\source\console\consoleNamespace.cc" />
+    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc" />
+    <ClCompile Include="..\..\source\debug\profiler.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc" />
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc" />
+    <ClCompile Include="..\..\source\debug\telnetDebugger.cc" />
+    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp" />
+    <ClCompile Include="..\..\source\game\defaultGame.cc" />
+    <ClCompile Include="..\..\source\game\gameInterface.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc" />
+    <ClCompile Include="..\..\source\graphics\bitmapPng.cc" />
+    <ClCompile Include="..\..\source\graphics\color.cc" />
+    <ClCompile Include="..\..\source\graphics\dgl.cc" />
+    <ClCompile Include="..\..\source\graphics\dglMatrix.cc" />
+    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc" />
+    <ClCompile Include="..\..\source\graphics\gBitmap.cc" />
+    <ClCompile Include="..\..\source\graphics\gFont.cc" />
+    <ClCompile Include="..\..\source\graphics\gPalette.cc" />
+    <ClCompile Include="..\..\source\graphics\PNGImage.cpp" />
+    <ClCompile Include="..\..\source\graphics\splineUtil.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureHandle.cc" />
+    <ClCompile Include="..\..\source\graphics\TextureManager.cc" />
+    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiCanvas.cc" />
+    <ClCompile Include="..\..\source\gui\guiColorPicker.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsole.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiControl.cc" />
+    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc" />
+    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc" />
+    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc" />
+    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\guiTypes.cc" />
+    <ClCompile Include="..\..\source\gui\language\lang.cc" />
+    <ClCompile Include="..\..\source\gui\messageVector.cc" />
+    <ClCompile Include="..\..\source\input\actionMap.cc" />
+    <ClCompile Include="..\..\source\io\bitStream.cc" />
+    <ClCompile Include="..\..\source\io\bufferStream.cc" />
+    <ClCompile Include="..\..\source\io\fileObject.cc" />
+    <ClCompile Include="..\..\source\io\fileStream.cc" />
+    <ClCompile Include="..\..\source\io\fileStreamObject.cc" />
+    <ClCompile Include="..\..\source\io\fileSystemFunctions.cpp" />
+    <ClCompile Include="..\..\source\io\filterStream.cc" />
+    <ClCompile Include="..\..\source\io\memStream.cc" />
+    <ClCompile Include="..\..\source\io\nStream.cc" />
+    <ClCompile Include="..\..\source\io\resizeStream.cc" />
+    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc" />
+    <ClCompile Include="..\..\source\io\resource\resourceManager.cc" />
+    <ClCompile Include="..\..\source\io\streamObject.cc" />
+    <ClCompile Include="..\..\source\io\zip\centralDir.cc" />
+    <ClCompile Include="..\..\source\io\zip\compressor.cc" />
+    <ClCompile Include="..\..\source\io\zip\deflate.cc" />
+    <ClCompile Include="..\..\source\io\zip\extraField.cc" />
+    <ClCompile Include="..\..\source\io\zip\fileHeader.cc" />
+    <ClCompile Include="..\..\source\io\zip\stored.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipArchive.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipObject.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipSubStream.cc" />
+    <ClCompile Include="..\..\source\io\zip\zipTempStream.cc" />
+    <ClCompile Include="..\..\source\math\rectClipper.cpp" />
+    <ClCompile Include="..\..\source\memory\dataChunker.cc" />
+    <ClCompile Include="..\..\source\memory\frameAllocator.cc" />
+    <ClCompile Include="..\..\source\messaging\dispatcher.cc" />
+    <ClCompile Include="..\..\source\messaging\eventManager.cc" />
+    <ClCompile Include="..\..\source\messaging\message.cc" />
+    <ClCompile Include="..\..\source\messaging\messageForwarder.cc" />
+    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc" />
+    <ClCompile Include="..\..\source\module\moduleDefinition.cc" />
+    <ClCompile Include="..\..\source\module\moduleManager.cc" />
+    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc" />
+    <ClCompile Include="..\..\source\network\connectionProtocol.cc" />
+    <ClCompile Include="..\..\source\network\connectionStringTable.cc" />
+    <ClCompile Include="..\..\source\network\httpObject.cc" />
+    <ClCompile Include="..\..\source\network\netConnection.cc" />
+    <ClCompile Include="..\..\source\network\netDownload.cc" />
+    <ClCompile Include="..\..\source\network\netEvent.cc" />
+    <ClCompile Include="..\..\source\network\netGhost.cc" />
+    <ClCompile Include="..\..\source\network\netInterface.cc" />
+    <ClCompile Include="..\..\source\network\netObject.cc" />
+    <ClCompile Include="..\..\source\network\netStringTable.cc" />
+    <ClCompile Include="..\..\source\network\netTest.cc" />
+    <ClCompile Include="..\..\source\network\networkProcessList.cc" />
+    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc" />
+    <ClCompile Include="..\..\source\network\serverQuery.cc" />
+    <ClCompile Include="..\..\source\network\tcpObject.cc" />
+    <ClCompile Include="..\..\source\network\telnetConsole.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\taml.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlXmlParser.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlXmlReader.cc" />
+    <ClCompile Include="..\..\source\persistence\taml\tamlXmlWriter.cc" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp" />
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp" />
+    <ClCompile Include="..\..\source\audio\audio.cc" />
+    <ClCompile Include="..\..\source\audio\audioBuffer.cc" />
+    <ClCompile Include="..\..\source\audio\audioDataBlock.cc" />
+    <ClCompile Include="..\..\source\audio\audioFunctions.cc" />
+    <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc" />
+    <ClCompile Include="..\..\source\audio\wavStreamSource.cc" />
+    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp" />
+    <ClCompile Include="..\..\source\component\simComponent.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp" />
+    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp" />
+    <ClCompile Include="..\..\source\console\astAlloc.cc" />
+    <ClCompile Include="..\..\source\console\astNodes.cc" />
+    <ClCompile Include="..\..\source\console\cmdgram.cc" />
+    <ClCompile Include="..\..\source\console\CMDscan.cc" />
+    <ClCompile Include="..\..\source\console\codeBlock.cc" />
+    <ClCompile Include="..\..\source\console\compiledEval.cc" />
+    <ClCompile Include="..\..\source\console\compiler.cc" />
+    <ClCompile Include="..\..\source\console\console.cc" />
+    <ClCompile Include="..\..\source\console\consoleDoc.cc" />
+    <ClCompile Include="..\..\source\console\consoleFunctions.cc" />
+    <ClCompile Include="..\..\source\console\consoleLogger.cc" />
+    <ClCompile Include="..\..\source\console\consoleObject.cc" />
+    <ClCompile Include="..\..\source\console\consoleParser.cc" />
+    <ClCompile Include="..\..\source\console\consoleTypes.cc" />
+    <ClCompile Include="..\..\source\game\gameConnection.cc" />
+    <ClCompile Include="..\..\source\game\version.cc" />
+    <ClCompile Include="..\..\source\math\mathTypes.cc" />
+    <ClCompile Include="..\..\source\math\mathUtils.cc" />
+    <ClCompile Include="..\..\source\math\mBox.cc" />
+    <ClCompile Include="..\..\source\math\mConsoleFunctions.cc" />
+    <ClCompile Include="..\..\source\math\mMath_C.cc" />
+    <ClCompile Include="..\..\source\math\mMathAltivec.cc" />
+    <ClCompile Include="..\..\source\math\mMathAMD.cc" />
+    <ClCompile Include="..\..\source\math\mMathFn.cc" />
+    <ClCompile Include="..\..\source\math\mMathSSE.cc" />
+    <ClCompile Include="..\..\source\math\mMatrix.cc" />
+    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc" />
+    <ClCompile Include="..\..\source\math\mQuadPatch.cc" />
+    <ClCompile Include="..\..\source\math\mQuat.cc" />
+    <ClCompile Include="..\..\source\math\mRandom.cc" />
+    <ClCompile Include="..\..\source\math\mSolver.cc" />
+    <ClCompile Include="..\..\source\math\mSplinePatch.cc" />
+    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc" />
+    <ClCompile Include="..\..\source\platform\CursorManager.cc" />
+    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc" />
+    <ClCompile Include="..\..\source\platform\platform.cc" />
+    <ClCompile Include="..\..\source\platform\platformAssert.cc" />
+    <ClCompile Include="..\..\source\platform\platformCPU.cc" />
+    <ClCompile Include="..\..\source\platform\platformFileIO.cc" />
+    <ClCompile Include="..\..\source\platform\platformFont.cc" />
+    <ClCompile Include="..\..\source\platform\platformMemory.cc" />
+    <ClCompile Include="..\..\source\platform\platformNetwork.cc" />
+    <ClCompile Include="..\..\source\platform\platformString.cc" />
+    <ClCompile Include="..\..\source\platform\platformVideo.cc" />
+    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc" />
+    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winConsole.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winExec.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winFileio.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winFont.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winGL.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winInput.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMath.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winMemory.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winNet.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winStrings.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winTime.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winTLS.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winUser.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winVFS.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winVideo.cc" />
+    <ClCompile Include="..\..\source\platformWin32\winWindow.cc" />
+    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp" />
+    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc" />
+    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc" />
+    <ClCompile Include="..\..\source\platform\Tickable.cc" />
+    <ClCompile Include="..\..\source\sim\scriptGroup.cc" />
+    <ClCompile Include="..\..\source\sim\scriptObject.cc" />
+    <ClCompile Include="..\..\source\sim\simBase.cc" />
+    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc" />
+    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc" />
+    <ClCompile Include="..\..\source\sim\simDatablock.cc" />
+    <ClCompile Include="..\..\source\sim\simDictionary.cc" />
+    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc" />
+    <ClCompile Include="..\..\source\sim\simManager.cc" />
+    <ClCompile Include="..\..\source\sim\simObject.cc" />
+    <ClCompile Include="..\..\source\sim\SimObjectList.cc" />
+    <ClCompile Include="..\..\source\sim\simSerialize.cpp" />
+    <ClCompile Include="..\..\source\sim\simSet.cc" />
+    <ClCompile Include="..\..\source\string\findMatch.cc" />
+    <ClCompile Include="..\..\source\string\stringBuffer.cc" />
+    <ClCompile Include="..\..\source\string\stringStack.cc" />
+    <ClCompile Include="..\..\source\string\stringTable.cc" />
+    <ClCompile Include="..\..\source\string\stringUnit.cpp" />
+    <ClCompile Include="..\..\source\string\unicode.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc" />
+    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc" />
+    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc" />
+    <ClCompile Include="..\..\source\testing\unitTesting.cc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\AnimationController.h" />
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h" />
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\BatchRender.h" />
+    <ClInclude Include="..\..\source\2d\core\CoreMath.h" />
+    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h" />
+    <ClInclude Include="..\..\source\2d\core\RenderProxy.h" />
+    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBase.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h" />
+    <ClInclude Include="..\..\source\2d\core\SpriteProxyBase.h" />
+    <ClInclude Include="..\..\source\2d\core\Utility.h" />
+    <ClInclude Include="..\..\source\2d\core\Vector2.h" />
+    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h" />
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h" />
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h" />
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectRotateToEvent.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectTimerEvent.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h" />
+    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h" />
+    <ClInclude Include="..\..\source\2d\scene\DebugStats.h" />
+    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h" />
+    <ClInclude Include="..\..\source\2d\scene\Scene.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h" />
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h" />
+    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h" />
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h" />
+    <ClInclude Include="..\..\source\algorithm\crc.h" />
+    <ClInclude Include="..\..\source\algorithm\crctab.h" />
+    <ClInclude Include="..\..\source\algorithm\hashFunction.h" />
+    <ClInclude Include="..\..\source\algorithm\md5.h" />
+    <ClInclude Include="..\..\source\assets\assetBase.h" />
+    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetDefinition.h" />
+    <ClInclude Include="..\..\source\assets\assetFieldTypes.h" />
+    <ClInclude Include="..\..\source\assets\assetManager.h" />
+    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetPtr.h" />
+    <ClInclude Include="..\..\source\assets\assetQuery.h" />
+    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\assetSnapshot.h" />
+    <ClInclude Include="..\..\source\assets\assetTagsManifest.h" />
+    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\assets\declaredAssets.h" />
+    <ClInclude Include="..\..\source\assets\referencedAssets.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h" />
+    <ClInclude Include="..\..\source\assets\tamlAssetUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\audio\AudioAsset.h" />
+    <ClInclude Include="..\..\source\box2d\Box2D.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h" />
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Math.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h" />
+    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h" />
+    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h" />
+    <ClInclude Include="..\..\source\collection\bitMatrix.h" />
+    <ClInclude Include="..\..\source\collection\bitSet.h" />
+    <ClInclude Include="..\..\source\collection\bitTables.h" />
+    <ClInclude Include="..\..\source\collection\bitVector.h" />
+    <ClInclude Include="..\..\source\collection\bitVectorW.h" />
+    <ClInclude Include="..\..\source\collection\findIterator.h" />
+    <ClInclude Include="..\..\source\collection\hashTable.h" />
+    <ClInclude Include="..\..\source\collection\linkedList.h" />
+    <ClInclude Include="..\..\source\collection\nameTags.h" />
+    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\collection\simpleHashTable.h" />
+    <ClInclude Include="..\..\source\collection\sparseArray.h" />
+    <ClInclude Include="..\..\source\collection\undo.h" />
+    <ClInclude Include="..\..\source\collection\vector.h" />
+    <ClInclude Include="..\..\source\collection\vector2d.h" />
+    <ClInclude Include="..\..\source\collection\vectorHeap.h" />
+    <ClInclude Include="..\..\source\collection\vectorQueue.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\console\consoleBaseType.h" />
+    <ClInclude Include="..\..\source\console\consoleDictionary.h" />
+    <ClInclude Include="..\..\source\console\consoleExprEvalState.h" />
+    <ClInclude Include="..\..\source\console\consoleInternal.h" />
+    <ClInclude Include="..\..\source\console\consoleNamespace.h" />
+    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h" />
+    <ClInclude Include="..\..\source\debug\profiler.h" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h" />
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\debug\telnetDebugger.h" />
+    <ClInclude Include="..\..\source\delegates\delegate.h" />
+    <ClInclude Include="..\..\source\delegates\delegateSignal.h" />
+    <ClInclude Include="..\..\source\delegates\FastDelegate.h" />
+    <ClInclude Include="..\..\source\game\defaultGame.h" />
+    <ClInclude Include="..\..\source\game\gameInterface.h" />
+    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\graphics\color.h" />
+    <ClInclude Include="..\..\source\graphics\dgl.h" />
+    <ClInclude Include="..\..\source\graphics\DynamicTexture.h" />
+    <ClInclude Include="..\..\source\graphics\gBitmap.h" />
+    <ClInclude Include="..\..\source\graphics\gFont.h" />
+    <ClInclude Include="..\..\source\graphics\gPalette.h" />
+    <ClInclude Include="..\..\source\graphics\PNGImage.h" />
+    <ClInclude Include="..\..\source\graphics\splineUtil.h" />
+    <ClInclude Include="..\..\source\graphics\TextureDictionary.h" />
+    <ClInclude Include="..\..\source\graphics\TextureHandle.h" />
+    <ClInclude Include="..\..\source\graphics\TextureManager.h" />
+    <ClInclude Include="..\..\source\graphics\TextureObject.h" />
+    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiCanvas.h" />
+    <ClInclude Include="..\..\source\gui\guiColorPicker.h" />
+    <ClInclude Include="..\..\source\gui\guiConsole.h" />
+    <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiControl.h" />
+    <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h" />
+    <ClInclude Include="..\..\source\gui\guiInputCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h" />
+    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h" />
+    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTickCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h" />
+    <ClInclude Include="..\..\source\gui\guiTypes.h" />
+    <ClInclude Include="..\..\source\gui\language\lang.h" />
+    <ClInclude Include="..\..\source\gui\messageVector.h" />
+    <ClInclude Include="..\..\source\input\actionMap.h" />
+    <ClInclude Include="..\..\source\io\bitStream.h" />
+    <ClInclude Include="..\..\source\io\bufferStream.h" />
+    <ClInclude Include="..\..\source\io\fileio.h" />
+    <ClInclude Include="..\..\source\io\fileObject.h" />
+    <ClInclude Include="..\..\source\io\fileStream.h" />
+    <ClInclude Include="..\..\source\io\fileStreamObject.h" />
+    <ClInclude Include="..\..\source\io\filterStream.h" />
+    <ClInclude Include="..\..\source\io\memstream.h" />
+    <ClInclude Include="..\..\source\io\resizeStream.h" />
+    <ClInclude Include="..\..\source\io\resource\resourceManager.h" />
+    <ClInclude Include="..\..\source\io\stream.h" />
+    <ClInclude Include="..\..\source\io\streamObject.h" />
+    <ClInclude Include="..\..\source\io\zip\centralDir.h" />
+    <ClInclude Include="..\..\source\io\zip\compressor.h" />
+    <ClInclude Include="..\..\source\io\zip\extraField.h" />
+    <ClInclude Include="..\..\source\io\zip\fileHeader.h" />
+    <ClInclude Include="..\..\source\io\zip\zipArchive.h" />
+    <ClInclude Include="..\..\source\io\zip\zipCryptStream.h" />
+    <ClInclude Include="..\..\source\io\zip\zipObject.h" />
+    <ClInclude Include="..\..\source\io\zip\zipStatFilter.h" />
+    <ClInclude Include="..\..\source\io\zip\zipSubStream.h" />
+    <ClInclude Include="..\..\source\io\zip\zipTempStream.h" />
+    <ClInclude Include="..\..\source\math\rectClipper.h" />
+    <ClInclude Include="..\..\source\memory\dataChunker.h" />
+    <ClInclude Include="..\..\source\memory\factoryCache.h" />
+    <ClInclude Include="..\..\source\memory\frameAllocator.h" />
+    <ClInclude Include="..\..\source\memory\safeDelete.h" />
+    <ClInclude Include="..\..\source\messaging\dispatcher.h" />
+    <ClInclude Include="..\..\source\messaging\eventManager.h" />
+    <ClInclude Include="..\..\source\messaging\message.h" />
+    <ClInclude Include="..\..\source\messaging\messageForwarder.h" />
+    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h" />
+    <ClInclude Include="..\..\source\module\moduleCallbacks.h" />
+    <ClInclude Include="..\..\source\module\moduleDefinition.h" />
+    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\module\moduleManager.h" />
+    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h" />
+    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h" />
+    <ClInclude Include="..\..\source\network\connectionProtocol.h" />
+    <ClInclude Include="..\..\source\network\connectionStringTable.h" />
+    <ClInclude Include="..\..\source\network\httpObject.h" />
+    <ClInclude Include="..\..\source\network\netConnection.h" />
+    <ClInclude Include="..\..\source\network\netInterface.h" />
+    <ClInclude Include="..\..\source\network\netObject.h" />
+    <ClInclude Include="..\..\source\network\netStringTable.h" />
+    <ClInclude Include="..\..\source\network\networkProcessList.h" />
+    <ClInclude Include="..\..\source\network\serverQuery.h" />
+    <ClInclude Include="..\..\source\network\tcpObject.h" />
+    <ClInclude Include="..\..\source\network\telnetConsole.h" />
+    <ClInclude Include="..\..\source\persistence\taml\taml.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryReader.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryWriter.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlParser.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlReader.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlVisitor.h" />
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlWriter.h" />
+    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h" />
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h" />
+    <ClInclude Include="..\..\source\audio\audio.h" />
+    <ClInclude Include="..\..\source\audio\audioBuffer.h" />
+    <ClInclude Include="..\..\source\audio\audioDataBlock.h" />
+    <ClInclude Include="..\..\source\audio\audioStreamSource.h" />
+    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h" />
+    <ClInclude Include="..\..\source\audio\wavStreamSource.h" />
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h" />
+    <ClInclude Include="..\..\source\component\simComponent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h" />
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h" />
+    <ClInclude Include="..\..\source\console\ast.h" />
+    <ClInclude Include="..\..\source\console\astNodeSizes.h" />
+    <ClInclude Include="..\..\source\console\cmdgram.h" />
+    <ClInclude Include="..\..\source\console\codeBlock.h" />
+    <ClInclude Include="..\..\source\console\compiler.h" />
+    <ClInclude Include="..\..\source\console\console.h" />
+    <ClInclude Include="..\..\source\console\consoleDoc.h" />
+    <ClInclude Include="..\..\source\console\consoleLogger.h" />
+    <ClInclude Include="..\..\source\console\consoleObject.h" />
+    <ClInclude Include="..\..\source\console\consoleParser.h" />
+    <ClInclude Include="..\..\source\console\consoleTypes.h" />
+    <ClInclude Include="..\..\source\game\gameConnection.h" />
+    <ClInclude Include="..\..\source\game\resource.h" />
+    <ClInclude Include="..\..\source\game\version.h" />
+    <ClInclude Include="..\..\source\math\mathIO.h" />
+    <ClInclude Include="..\..\source\math\mathTypes.h" />
+    <ClInclude Include="..\..\source\math\mathUtils.h" />
+    <ClInclude Include="..\..\source\math\mBox.h" />
+    <ClInclude Include="..\..\source\math\mConstants.h" />
+    <ClInclude Include="..\..\source\math\mMath.h" />
+    <ClInclude Include="..\..\source\math\mMathFn.h" />
+    <ClInclude Include="..\..\source\math\mMatrix.h" />
+    <ClInclude Include="..\..\source\math\mPlane.h" />
+    <ClInclude Include="..\..\source\math\mPlaneTransformer.h" />
+    <ClInclude Include="..\..\source\math\mPoint.h" />
+    <ClInclude Include="..\..\source\math\mQuadPatch.h" />
+    <ClInclude Include="..\..\source\math\mQuat.h" />
+    <ClInclude Include="..\..\source\math\mRandom.h" />
+    <ClInclude Include="..\..\source\math\mRect.h" />
+    <ClInclude Include="..\..\source\math\mSphere.h" />
+    <ClInclude Include="..\..\source\math\mSplinePatch.h" />
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h" />
+    <ClInclude Include="..\..\source\platformWin32\winWindow.h" />
+    <ClInclude Include="..\..\source\platform\event.h" />
+    <ClInclude Include="..\..\source\platform\GLCoreFunc.h" />
+    <ClInclude Include="..\..\source\platform\GLExtFunc.h" />
+    <ClInclude Include="..\..\source\platform\GLUFunc.h" />
+    <ClInclude Include="..\..\source\platform\platform.h" />
+    <ClInclude Include="..\..\source\platform\platformAL.h" />
+    <ClInclude Include="..\..\source\platform\platformAssert.h" />
+    <ClInclude Include="..\..\source\platform\platformAudio.h" />
+    <ClInclude Include="..\..\source\platform\platformCPU.h" />
+    <ClInclude Include="..\..\source\platform\platformEndian.h" />
+    <ClInclude Include="..\..\source\platform\platformFileIO.h" />
+    <ClInclude Include="..\..\source\platform\platformFont.h" />
+    <ClInclude Include="..\..\source\platform\platformGL.h" />
+    <ClInclude Include="..\..\source\platform\platformInput.h" />
+    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\platformMath.h" />
+    <ClInclude Include="..\..\source\platform\platformMemory.h" />
+    <ClInclude Include="..\..\source\platform\platformNetwork.h" />
+    <ClInclude Include="..\..\source\platform\platformSemaphore.h" />
+    <ClInclude Include="..\..\source\platform\platformString.h" />
+    <ClInclude Include="..\..\source\platform\platformTimeManager.h" />
+    <ClInclude Include="..\..\source\platform\platformTLS.h" />
+    <ClInclude Include="..\..\source\platform\platformVFS.h" />
+    <ClInclude Include="..\..\source\platform\platformVideo.h" />
+    <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h" />
+    <ClInclude Include="..\..\source\platform\Tickable.h" />
+    <ClInclude Include="..\..\source\platform\types.codewarrior.h" />
+    <ClInclude Include="..\..\source\platform\types.gcc.h" />
+    <ClInclude Include="..\..\source\platform\types.h" />
+    <ClInclude Include="..\..\source\platform\types.posix.h" />
+    <ClInclude Include="..\..\source\platform\types.ppc.h" />
+    <ClInclude Include="..\..\source\platform\types.visualc.h" />
+    <ClInclude Include="..\..\source\platform\types.win32.h" />
+    <ClInclude Include="..\..\source\platform\typesLinux.h" />
+    <ClInclude Include="..\..\source\platform\typesPPC.h" />
+    <ClInclude Include="..\..\source\platform\typesWin32.h" />
+    <ClInclude Include="..\..\source\platform\typesX86UNIX.h" />
+    <ClInclude Include="..\..\source\platform\menus\popupMenu.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h" />
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h" />
+    <ClInclude Include="..\..\source\platform\threads\mutex.h" />
+    <ClInclude Include="..\..\source\platform\threads\semaphore.h" />
+    <ClInclude Include="..\..\source\platform\threads\thread.h" />
+    <ClInclude Include="..\..\source\platformWin32\gl_types.h" />
+    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h" />
+    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h" />
+    <ClInclude Include="..\..\source\platformWin32\platformGL.h" />
+    <ClInclude Include="..\..\source\platformWin32\platformWin32.h" />
+    <ClInclude Include="..\..\source\platformWin32\VFSRes.h" />
+    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h" />
+    <ClInclude Include="..\..\source\platformWin32\winConsole.h" />
+    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h" />
+    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h" />
+    <ClInclude Include="..\..\source\platformWin32\winFont.h" />
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h" />
+    <ClInclude Include="..\..\source\platformWin32\winVideo.h" />
+    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h" />
+    <ClInclude Include="..\..\source\sim\scriptGroup.h" />
+    <ClInclude Include="..\..\source\sim\scriptObject.h" />
+    <ClInclude Include="..\..\source\sim\simBase.h" />
+    <ClInclude Include="..\..\source\sim\simConsoleEvent.h" />
+    <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h" />
+    <ClInclude Include="..\..\source\sim\simDatablock.h" />
+    <ClInclude Include="..\..\source\sim\simDatablockGroup.h" />
+    <ClInclude Include="..\..\source\sim\simDictionary.h" />
+    <ClInclude Include="..\..\source\sim\simEvent.h" />
+    <ClInclude Include="..\..\source\sim\simFieldDictionary.h" />
+    <ClInclude Include="..\..\source\sim\simObject.h" />
+    <ClInclude Include="..\..\source\sim\SimObjectList.h" />
+    <ClInclude Include="..\..\source\sim\simObjectPtr.h" />
+    <ClInclude Include="..\..\source\sim\simSet.h" />
+    <ClInclude Include="..\..\source\string\findMatch.h" />
+    <ClInclude Include="..\..\source\string\stringBuffer.h" />
+    <ClInclude Include="..\..\source\string\stringStack.h" />
+    <ClInclude Include="..\..\source\string\stringTable.h" />
+    <ClInclude Include="..\..\source\string\stringUnit.h" />
+    <ClInclude Include="..\..\source\string\unicode.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h" />
+    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h" />
+    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiImageList.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiInspector.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h" />
+    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h" />
+    <ClInclude Include="..\..\source\testing\unitTesting.h" />
+    <ClInclude Include="..\..\source\torqueConfig.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">"$(SolutionDir)..\..\Bin\nasm\nasmw.exe" -f win32 "%(FullPath)" -o "$(IntDir)%(Filename).obj"</Command>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">$(IntDir)%(Filename).obj;%(Outputs)</Outputs>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="ljpeg.vcxproj">
+      <Project>{0b07ba94-aa53-4fd4-adb4-79ec2da53b36}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="lpng.vcxproj">
+      <Project>{af1179e3-a838-46a3-a427-1e62aa4c52f4}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="zlib.vcxproj">
+      <Project>{86cb2525-0cf3-40d3-bf42-a0a95035ee8c}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 2607 - 0
engine/compilers/VisualStudio 2010/Torque 2D.vcxproj.filters

@@ -0,0 +1,2607 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="2d">
+      <UniqueIdentifier>{b90d3c2c-9694-4051-8b22-325c00d37951}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\assets">
+      <UniqueIdentifier>{57099cfd-2f9b-468f-88a5-df769a6235b0}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\sceneobject">
+      <UniqueIdentifier>{8b011278-0d15-4ba9-ba57-24056b918233}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\core">
+      <UniqueIdentifier>{b0a55e16-3a1f-4eb5-8f5b-3396d456be74}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\scene">
+      <UniqueIdentifier>{71933100-a4a2-464e-bb3f-bb04d9f078af}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="2d\gui">
+      <UniqueIdentifier>{7824869e-4359-4413-a615-38c8534d641b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="algorithm">
+      <UniqueIdentifier>{baaa5934-0805-46eb-be6e-ae5643535b4b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="assets">
+      <UniqueIdentifier>{6a14bfc6-1f7c-4527-91d3-ccf897ff4002}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="audio">
+      <UniqueIdentifier>{bfd4849e-66c6-450b-9a01-0873aa28e21a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d">
+      <UniqueIdentifier>{1f640da6-77a4-4176-a018-9bfad5becf95}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Collision">
+      <UniqueIdentifier>{4faf4110-842d-4178-81ca-0375f3804cac}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Collision\Shapes">
+      <UniqueIdentifier>{2f939a2b-3cd9-4e67-8311-bf751093f2a5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Common">
+      <UniqueIdentifier>{84907fc2-76e8-4a3b-9df4-76451387d3f9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics">
+      <UniqueIdentifier>{e2574a74-ff0d-401d-818d-96e6c155a4b4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics\Contacts">
+      <UniqueIdentifier>{18c9fe85-da18-45d5-9573-a71ce9373961}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Dynamics\Joints">
+      <UniqueIdentifier>{4f9157b1-a024-450f-a352-1849cf2bddcc}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="box2d\Rope">
+      <UniqueIdentifier>{14385fbb-f8af-4849-bdd9-8c8f67d3928e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="collection">
+      <UniqueIdentifier>{9ec04d21-b122-45be-bd70-2869fa9cdd8e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="component">
+      <UniqueIdentifier>{09cd4b77-b9b4-41f4-b17e-3ac25c27beee}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="component\behaviors">
+      <UniqueIdentifier>{47a0d755-122c-490b-b11c-d06a74fe2ab2}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="console">
+      <UniqueIdentifier>{ec2d3f1a-e3d1-49d5-98d6-a3084e37d077}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="debug">
+      <UniqueIdentifier>{b3b96a6a-462f-4c7d-92a5-009cabbe94a3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="debug\remote">
+      <UniqueIdentifier>{d55ba677-1863-4206-92b7-1df94c48df84}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="delegates">
+      <UniqueIdentifier>{d016b107-aefd-41ac-a04c-6b75caaf114d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="game">
+      <UniqueIdentifier>{d48f2bd5-39e5-4fdb-8472-79839fcd7e21}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="graphics">
+      <UniqueIdentifier>{187e7671-960f-49a7-898b-a10cf5900751}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui">
+      <UniqueIdentifier>{c17330c5-953e-4e71-9acb-1b7806b3c932}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\buttons">
+      <UniqueIdentifier>{92e20c7c-410f-4df4-a9b9-7662dac44699}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\containers">
+      <UniqueIdentifier>{513dc4d3-ba16-414a-8576-16b1dba4f6e8}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\editor">
+      <UniqueIdentifier>{c48781cd-5e6a-4ffe-b866-e64582f00d6d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\language">
+      <UniqueIdentifier>{eee14c00-6a21-4fa8-9339-572a11819062}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="input">
+      <UniqueIdentifier>{fcfa64cc-dd46-41c1-9ada-8b4a15051285}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io">
+      <UniqueIdentifier>{fa588b4f-a8dd-4615-beee-dab4db372118}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io\zip">
+      <UniqueIdentifier>{27eea104-6e41-4cfb-bc50-56f9157081ce}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="io\resource">
+      <UniqueIdentifier>{0688e2d7-d313-4a35-b90d-1df191825361}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="math">
+      <UniqueIdentifier>{04e382a2-a0a9-40c9-b227-a46e345fb032}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="memory">
+      <UniqueIdentifier>{5c7d23f1-7194-4a6f-8bd3-fd5b6a0beb4f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="messaging">
+      <UniqueIdentifier>{66757e8b-c204-4b92-92ab-19278019d17d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="module">
+      <UniqueIdentifier>{23024162-0d6f-4259-8dac-a3a621d55065}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="network">
+      <UniqueIdentifier>{c1b891be-db08-48e9-b52a-f0cf3bac185e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence">
+      <UniqueIdentifier>{87703b23-784c-4769-b085-57c72b1b536e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\taml">
+      <UniqueIdentifier>{a2568a68-f396-4b3e-9ed6-bf73656752d3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="persistence\tinyXML">
+      <UniqueIdentifier>{d13f86bc-f4dd-4329-8337-dd41e2db04a1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform">
+      <UniqueIdentifier>{f5858e14-ed7e-4887-a22e-4123ab41a6f1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\menus">
+      <UniqueIdentifier>{a9dbe516-9ed6-43a6-987e-6f2bc6f59928}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\nativeDialogs">
+      <UniqueIdentifier>{d98ec67b-b10a-4c7b-bb2f-a6394a861b67}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platform\threads">
+      <UniqueIdentifier>{04d21b23-41a0-44a7-810e-f31c81fd5c81}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32">
+      <UniqueIdentifier>{3f7e4a0c-c3da-4972-a9bc-9cb0e0ce622e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\menus">
+      <UniqueIdentifier>{d77ee12f-a922-4d39-9e6c-2ad87a5b4a4e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\nativeDialogs">
+      <UniqueIdentifier>{9da3da8f-0660-4a53-b5cf-3994c2dca7e3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="platformWin32\threads">
+      <UniqueIdentifier>{78695f15-84c6-4505-a999-716fe79bdabe}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="sim">
+      <UniqueIdentifier>{e706ea06-aa20-4487-a010-e0d00adc658f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="string">
+      <UniqueIdentifier>{fa7e2f20-cd6d-4118-8a74-9f9c95119064}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="testing">
+      <UniqueIdentifier>{7b04617f-42ef-4238-9a98-9d8309b64c93}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="testing\tests">
+      <UniqueIdentifier>{57e1271d-4358-4180-b168-4b9c2cbac907}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\source\audio\audio.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioBuffer.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioDataBlock.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioFunctions.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\audioStreamSourceFactory.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\wavStreamSource.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\dynamicConsoleMethodComponent.cpp">
+      <Filter>component</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\simComponent.cpp">
+      <Filter>component</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorComponent.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorInstance.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\component\behaviors\behaviorTemplate.cpp">
+      <Filter>component\behaviors</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\astAlloc.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\astNodes.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\cmdgram.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\CMDscan.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\codeBlock.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\compiledEval.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\compiler.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\console.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleDoc.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleFunctions.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleLogger.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleObject.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleParser.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleTypes.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\gameConnection.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\version.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mathTypes.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mathUtils.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mBox.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mConsoleFunctions.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMath_C.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathAltivec.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathAMD.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathFn.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMathSSE.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mMatrix.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mPlaneTransformer.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mQuadPatch.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mQuat.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mRandom.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mSolver.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\mSplinePatch.cc">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\SimXMLDocument.cpp">
+      <Filter>persistence</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\CursorManager.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platform.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformAssert.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformCPU.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformFileIO.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformMemory.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformString.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformVideo.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\menus\popupMenu.cc">
+      <Filter>platform\menus</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\nativeDialogs\msgBox.cpp">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\cardProfile.cpp">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winAsmBlit.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winConsole.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winCPUInfo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winDInputDevice.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winDirectInput.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winExec.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winFileio.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winFont.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winGL.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winGLSpecial.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winInput.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMath.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMath_ASM.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winMemory.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winNet.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winOGLVideo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winOpenAL.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winProcessControl.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winSemaphore.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winStrings.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winTime.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winTLS.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winUser.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winVFS.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winVideo.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\winWindow.cc">
+      <Filter>platformWin32</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\menus\popupMenuWin32.cc">
+      <Filter>platformWin32\menus</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.cpp">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32MsgBox.cpp">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\threads\mutex.cc">
+      <Filter>platformWin32\threads</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\threads\thread.cc">
+      <Filter>platformWin32\threads</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiBorderButton.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonBaseCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiCheckBoxCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiIconButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiRadioCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.cc">
+      <Filter>gui\buttons</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiAutoScrollCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiCtrlArrayCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiDragAndDropCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiFormCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiFrameCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiPaneCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiRolloutCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiScrollCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiStackCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiTabBookCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\containers\guiWindowCtrl.cc">
+      <Filter>gui\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiControlListPopup.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiDebugger.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiEditCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiFilterCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiGraphCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiImageList.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiInspector.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiInspectorTypes.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiMenuBar.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\editor\guiSeparatorCtrl.cc">
+      <Filter>gui\editor</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2BroadPhase.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideCircle.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollideEdge.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2CollidePolygon.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2Collision.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2Distance.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2DynamicTree.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\b2TimeOfImpact.cpp">
+      <Filter>box2d\Collision</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.cpp">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2BlockAllocator.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Draw.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Math.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Settings.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2StackAllocator.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Common\b2Timer.cpp">
+      <Filter>box2d\Common</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Body.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2ContactManager.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Fixture.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2Island.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2World.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.cpp">
+      <Filter>box2d\Dynamics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.cpp">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2Joint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.cpp">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\box2d\Rope\b2Rope.cpp">
+      <Filter>box2d\Rope</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\taml.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlXmlWriter.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlXmlReader.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleDefinition.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleManager.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinystr.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxml.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlerror.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\tinyXML\tinyxmlparser.cpp">
+      <Filter>persistence\tinyXML</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryWriter.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlBinaryReader.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\module\moduleMergeDefinition.cc">
+      <Filter>module</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetManager.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetFieldTypes.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlXmlParser.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetQuery.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetTagsManifest.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetSnapshot.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\assetBase.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\language\lang.cc">
+      <Filter>gui\language</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapBmp.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapJpeg.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\bitmapPng.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\dgl.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\dglMatrix.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gBitmap.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gPalette.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\splineUtil.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\dispatcher.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\eventManager.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\message.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\messageForwarder.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\messaging\scriptMsgListener.cc">
+      <Filter>messaging</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\defaultGame.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\profiler.cc">
+      <Filter>debug</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\math\rectClipper.cpp">
+      <Filter>math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\input\actionMap.cc">
+      <Filter>input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiArrayCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBackgroundCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBitmapBorderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBitmapCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiBubbleTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiCanvas.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiColorPicker.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsole.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsoleEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiConsoleTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiControl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiDefaultControlRender.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiFadeinBitmapCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiInputCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiListBoxCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMessageVectorCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMLTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMLTextEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiMouseEventCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiPopUpCtrlEx.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiProgressCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiScriptNotifyControl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiSliderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTabPageCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextEditCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextEditSliderCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTextListCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTickCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTreeViewCtrl.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\guiTypes.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\gui\messageVector.cc">
+      <Filter>gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\PNGImage.cpp">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\bitTables.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\hashTable.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\vector.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\bitStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\bufferStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileStreamObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\filterStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\memStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\nStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resizeStream.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\streamObject.cc">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\centralDir.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\compressor.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\extraField.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\fileHeader.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipArchive.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipCryptStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipObject.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipSubStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\zipTempStream.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\deflate.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\zip\stored.cc">
+      <Filter>io\zip</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\dataChunker.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\memory\frameAllocator.cc">
+      <Filter>memory</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\crc.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\algorithm\hashFunction.cc">
+      <Filter>algorithm</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\game\gameInterface.cc">
+      <Filter>game</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simBase.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simDictionary.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simManager.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simSerialize.cpp">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simSet.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\connectionStringTable.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\httpObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netConnection.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netDownload.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netEvent.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netGhost.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netInterface.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netStringTable.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\netTest.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\serverQuery.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\tcpObject.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\fileSystemFunctions.cpp">
+      <Filter>io</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringBuffer.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringTable.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\unicode.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\findMatch.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringUnit.cpp">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resource\resourceDictionary.cc">
+      <Filter>io\resource</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\io\resource\resourceManager.cc">
+      <Filter>io\resource</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\nameTags.cpp">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\collection\undo.cc">
+      <Filter>collection</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\Tickable.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\telnetConsole.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\telnetDebugger.cc">
+      <Filter>debug</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\string\stringStack.cc">
+      <Filter>string</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\connectionProtocol.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\RemoteCommandEvent.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\scriptObject.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\scriptGroup.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\SimObjectList.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simObject.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simFieldDictionary.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simConsoleEvent.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simConsoleThreadExecEvent.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\sim\simDatablock.cc">
+      <Filter>sim</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleBaseType.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\ConsoleTypeValidators.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleDictionary.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleExprEvalState.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\console\consoleNamespace.cc">
+      <Filter>console</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\audio\AudioAsset.cc">
+      <Filter>audio</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureManager.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureHandle.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\TextureDictionary.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\DynamicTexture.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlWriteNode.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\delegates\delegateSignal.cpp">
+      <Filter>delegates</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\AnimationAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\AnimationController.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ImageAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\CompositeSprite.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\SceneObject.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Scroller.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ShapeVector.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Sprite.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\Trigger.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\BatchRender.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\RenderProxy.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBase.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatch.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteBatchItem.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\SpriteProxyBase.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\Utility.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\Vector2.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\ContactFilter.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\DebugDraw.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\Scene.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\WorldQuery.cc">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiImageButtonCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiSpriteCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\guiSceneObjectCtrl.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\CoreMath.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderFactories.cpp">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\scene\SceneRenderQueue.cpp">
+      <Filter>2d\scene</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\gui\SceneWindow.cc">
+      <Filter>2d\gui</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBase.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebuggerBridge.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\debug\remote\RemoteDebugger1.cc">
+      <Filter>debug\remote</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\gFont.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformFont.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\platformNetwork.cc">
+      <Filter>platform</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\network\networkProcessList.cc">
+      <Filter>network</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformFileIoTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\unitTesting.cc">
+      <Filter>testing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformStringTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\testing\tests\platformMemoryTests.cc">
+      <Filter>testing\tests</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platform\nativeDialogs\fileDialog.cc">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\platformWin32\nativeDialogs\win32FileDialog.cc">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\graphics\color.cc">
+      <Filter>graphics</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAsset.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetEmitter.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetField.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\assets\ParticleAssetFieldCollection.cc">
+      <Filter>2d\assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ParticlePlayer.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\core\ParticleSystem.cc">
+      <Filter>2d\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\2d\sceneobject\ImageFont.cc">
+      <Filter>2d\sceneobject</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\declaredAssets.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\assets\referencedAssets.cc">
+      <Filter>assets</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\source\persistence\taml\tamlCustom.cc">
+      <Filter>persistence\taml</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\source\audio\audio.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioBuffer.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioDataBlock.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioStreamSource.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\audioStreamSourceFactory.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\wavStreamSource.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\dynamicConsoleMethodComponent.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\simComponent.h">
+      <Filter>component</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\ast.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\astNodeSizes.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\cmdgram.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\codeBlock.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\compiler.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\console.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDoc.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleLogger.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleObject.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleParser.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleTypes.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameConnection.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\resource.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\version.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathIO.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathTypes.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mathUtils.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mBox.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mConstants.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMath.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMathFn.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mMatrix.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPlane.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPlaneTransformer.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mPoint.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mQuadPatch.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mQuat.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mRandom.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mRect.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mSphere.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\mSplinePatch.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\SimXMLDocument.h">
+      <Filter>persistence</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\event.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLCoreFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLExtFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\GLUFunc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platform.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAL.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAssert.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformAudio.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFont.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformGL.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformInput.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformSemaphore.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformTLS.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVFS.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformVideo.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.codewarrior.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.gcc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.posix.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.ppc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.visualc.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\types.win32.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesLinux.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesPPC.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesWin32.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\typesX86UNIX.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\menus\popupMenu.h">
+      <Filter>platform\menus</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\fileDialog.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\nativeDialogs\msgBox.h">
+      <Filter>platform\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\mutex.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\semaphore.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\threads\thread.h">
+      <Filter>platform\threads</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\gl_types.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\GLWinExtFunc.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\GLWinFunc.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\platformGL.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\platformWin32.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\VFSRes.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win32NPatch.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_common_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_debug_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\win_release_prefix.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winConsole.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winDInputDevice.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winDirectInput.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winFont.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winOGLVideo.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winVideo.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\nativeDialogs\win32DirectoryResolver.h">
+      <Filter>platformWin32\nativeDialogs</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiBitmapButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonBaseCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiCheckBoxCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiIconButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiRadioCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\buttons\guiToolboxButtonCtrl.h">
+      <Filter>gui\buttons</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiAutoScrollCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiCtrlArrayCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiDragAndDropCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiDynamicCtrlArrayCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiFormCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiFrameCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiPaneCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiRolloutCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiScrollCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiStackCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiTabBookCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\containers\guiWindowCtrl.h">
+      <Filter>gui\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiDebugger.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiEditCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiFilterCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiGraphCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiImageList.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiInspector.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiInspectorTypes.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiMenuBar.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\editor\guiSeparatorCtrl.h">
+      <Filter>gui\editor</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Box2D.h">
+      <Filter>box2d</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2BroadPhase.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2Collision.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2Distance.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2DynamicTree.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\b2TimeOfImpact.h">
+      <Filter>box2d\Collision</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2ChainShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2CircleShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2EdgeShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2PolygonShape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Collision\Shapes\b2Shape.h">
+      <Filter>box2d\Collision\Shapes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2BlockAllocator.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Draw.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2GrowableStack.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Math.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Settings.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2StackAllocator.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Common\b2Timer.h">
+      <Filter>box2d\Common</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Body.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2ContactManager.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Fixture.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2Island.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2TimeStep.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2World.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\b2WorldCallbacks.h">
+      <Filter>box2d\Dynamics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ChainAndPolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2CircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2Contact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2ContactSolver.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2EdgeAndPolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonAndCircleContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Contacts\b2PolygonContact.h">
+      <Filter>box2d\Dynamics\Contacts</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2DistanceJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2FrictionJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2GearJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2Joint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MotorJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2MouseJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PrismaticJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2PulleyJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RevoluteJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2RopeJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WeldJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Dynamics\Joints\b2WheelJoint.h">
+      <Filter>box2d\Dynamics\Joints</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\box2d\Rope\b2Rope.h">
+      <Filter>box2d\Rope</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponent_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorInstance_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorTemplate_ScriptBinding.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\component\behaviors\behaviorComponentRaiseEvent.h">
+      <Filter>component\behaviors</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\taml.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlCallbacks.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\taml_ScriptBinding.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlWriter.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlReader.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleDefinition.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleManager.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleManager_ScriptBinding.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinystr.h">
+      <Filter>persistence\tinyXML</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\tinyXML\tinyxml.h">
+      <Filter>persistence\tinyXML</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryWriter.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlBinaryReader.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleDefinition_ScriptBinding.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleMergeDefinition.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetDefinition.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetManager.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetManager_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetFieldTypes.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlParser.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlXmlVisitor.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetDeclaredUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\tamlAssetReferencedUpdateVisitor.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetQuery.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetQuery_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetPtr.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetTagsManifest.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetTagsManifest_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\tamlModuleIdUpdateVisitor.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\module\moduleCallbacks.h">
+      <Filter>module</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetSnapshot.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetBase.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\assetBase_ScriptBinding.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\language\lang.h">
+      <Filter>gui\language</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\dgl.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gBitmap.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gPalette.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\splineUtil.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\dispatcher.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\eventManager.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\message.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\messageForwarder.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\messaging\scriptMsgListener.h">
+      <Filter>messaging</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\defaultGame.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\profiler.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\math\rectClipper.h">
+      <Filter>math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\input\actionMap.h">
+      <Filter>input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiArrayCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBackgroundCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBitmapCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiBubbleTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiCanvas.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiColorPicker.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsole.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsoleEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiConsoleTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiControl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiDefaultControlRender.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiInputCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiListBoxCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMessageVectorCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMLTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMLTextEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiMouseEventCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiPopUpCtrlEx.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiProgressCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiScriptNotifyControl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiSliderCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTabPageCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextEditCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextEditSliderCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTextListCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTickCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTreeViewCtrl.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\guiTypes.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\gui\messageVector.h">
+      <Filter>gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\PNGImage.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitTables.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitVector.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitVectorW.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\hashTable.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\linkedList.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\simpleHashTable.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\sparseArray.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vector.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vector2d.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vectorHeap.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\vectorQueue.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\bitStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\bufferStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileio.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\fileStreamObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\filterStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\memstream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resizeStream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\stream.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\streamObject.h">
+      <Filter>io</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\centralDir.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\compressor.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\extraField.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\fileHeader.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipArchive.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipCryptStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipObject.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipStatFilter.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipSubStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\zip\zipTempStream.h">
+      <Filter>io\zip</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\dataChunker.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\frameAllocator.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\findIterator.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitSet.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\crc.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\crctab.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\hashFunction.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\color.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\bitMatrix.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameInterface.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simBase.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDictionary.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simSet.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionStringTable.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\httpObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netConnection.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netInterface.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\netStringTable.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\serverQuery.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\tcpObject.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringBuffer.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringTable.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\unicode.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\findMatch.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringUnit.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\safeDelete.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\io\resource\resourceManager.h">
+      <Filter>io\resource</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\memory\factoryCache.h">
+      <Filter>memory</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\nameTags.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\nameTags_ScriptBinding.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\collection\undo.h">
+      <Filter>collection</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\Tickable.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\telnetConsole.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\telnetDebugger.h">
+      <Filter>debug</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\string\stringStack.h">
+      <Filter>string</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\connectionProtocol.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\scriptObject.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\scriptGroup.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\SimObjectList.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObject.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simFieldDictionary.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simConsoleEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simConsoleThreadExecEvent.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simObjectPtr.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablock.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\sim\simDatablockGroup.h">
+      <Filter>sim</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleBaseType.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\ConsoleTypeValidators.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleInternal.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleDictionary.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleExprEvalState.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\console\consoleNamespace.h">
+      <Filter>console</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\audio\AudioAsset.h">
+      <Filter>audio</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureManager.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureObject.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureHandle.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\TextureDictionary.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\DynamicTexture.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlWriteNode.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\delegate.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\FastDelegate.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\delegates\delegateSignal.h">
+      <Filter>delegates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\AnimationController.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ImageAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\CompositeSprite_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObject_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectMoveToEvent.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectRotateToEvent.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\SceneObjectTimerEvent.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Scroller_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ShapeVector_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Sprite_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\Trigger_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\BatchRender.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\RenderProxy.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\RenderProxy_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBase.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBase_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatch.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteBatchItem.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\SpriteProxyBase.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Utility.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Vector2.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\Vector2_ScriptBinding.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\ContactFilter.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\DebugDraw.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\DebugStats.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\PhysicsProxy.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\Scene.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\Scene_ScriptBinding.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderObject.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderQueue.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderRequest.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderState.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQuery.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiImageButtonCtrl_ScriptBindings.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSpriteCtrl_ScriptBindings.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\guiSceneObjectCtrl.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\CoreMath.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\SceneRenderFactories.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryFilter.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\scene\WorldQueryResult.h">
+      <Filter>2d\scene</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\algorithm\md5.h">
+      <Filter>algorithm</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\gui\SceneWindow_ScriptBinding.h">
+      <Filter>2d\gui</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBridge_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebugger1_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\debug\remote\RemoteDebuggerBase_ScriptBinding.h">
+      <Filter>debug\remote</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\graphics\gFont.h">
+      <Filter>graphics</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformEndian.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformCPU.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformString.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformNetwork.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformMemory.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformMath.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformTimeManager.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platform_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\game\gameInterface_ScriptBinding.h">
+      <Filter>game</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\network\networkProcessList.h">
+      <Filter>network</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\testing\unitTesting.h">
+      <Filter>testing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformFileIO.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platform\platformInput_ScriptBinding.h">
+      <Filter>platform</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\platformWin32\winWindow.h">
+      <Filter>platformWin32</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlChildren.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAsset_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetField.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetFieldCollection.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ParticlePlayer_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\assets\ParticleAssetEmitter_ScriptBinding.h">
+      <Filter>2d\assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\core\ParticleSystem.h">
+      <Filter>2d\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\torqueConfig.h" />
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\2d\sceneobject\ImageFont_ScriptBinding.h">
+      <Filter>2d\sceneobject</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\declaredAssets.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\assets\referencedAssets.h">
+      <Filter>assets</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\source\persistence\taml\tamlCustom.h">
+      <Filter>persistence\taml</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="..\..\source\math\mMath_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathAMD_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\math\mMathSSE_ASM.asm">
+      <Filter>math</Filter>
+    </CustomBuild>
+    <CustomBuild Include="..\..\source\platform\platformCPUInfo.asm">
+      <Filter>platform</Filter>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="Torque 2D.rc" />
+  </ItemGroup>
+</Project>

+ 627 - 0
engine/compilers/VisualStudio 2010/ljpeg.vcxproj

@@ -0,0 +1,627 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Shipping|Win32">
+      <Configuration>Shipping</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0B07BA94-AA53-4FD4-ADB4-79EC2DA53B36}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../Link/Release\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">.\../../Link/Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../Link/Release/ljpeg\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">.\../../Link/Release/ljpeg\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../Link/Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../Link/Debug/ljpeg\</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_DEBUG</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>ljpeg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Release/ljpeg/ljpeg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Release/ljpeg/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Release/ljpeg/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Release/ljpeg/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\../../Link/Release\ljpeg.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>ljpeg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Release/ljpeg/ljpeg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Release/ljpeg/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Release/ljpeg/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Release/ljpeg/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\../../Link/Release\ljpeg.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>ljpeg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Debug/ljpeg/ljpeg.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Debug/ljpeg/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Debug/ljpeg/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Debug/ljpeg/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Lib\ljpeg\jcapimin.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcapistd.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jccoefct.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jccolor.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcdctmgr.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jchuff.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcinit.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcmainct.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcmarker.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcmaster.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcomapi.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcparam.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcphuff.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcprepct.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jcsample.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jctrans.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdapimin.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdapistd.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdatadst.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdatasrc.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdcoefct.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdcolor.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jddctmgr.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdhuff.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdinput.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdmainct.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdmarker.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdmaster.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdmerge.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdphuff.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdpostct.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdsample.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jdtrans.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jerror.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jfdctflt.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jfdctfst.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jfdctint.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jidctflt.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jidctfst.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jidctint.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jidctred.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jmemmgr.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jmemnobs.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jquant1.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jquant2.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <ClCompile Include="..\..\Lib\ljpeg\jutils.c">
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+      <Optimization Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">MaxSpeed</Optimization>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Lib\ljpeg\jchuff.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jconfig.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jconfig.vc.win.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jdct.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jdhuff.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jerror.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jinclude.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jmemsys.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jmorecfg.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jpegint.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jpeglib.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jversion.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 65 - 0
engine/compilers/VisualStudio 2010/ljpeg.vcxproj.filters

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="..\..\Lib\ljpeg\jcapimin.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jutils.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcapistd.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jccoefct.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jccolor.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcdctmgr.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jchuff.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcinit.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcmainct.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcmarker.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcmaster.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcomapi.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcparam.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcphuff.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcprepct.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jcsample.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jctrans.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdapimin.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdapistd.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdatadst.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdatasrc.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdcoefct.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdcolor.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jddctmgr.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdhuff.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdinput.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdmainct.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdmarker.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdmaster.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdmerge.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdphuff.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdpostct.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdsample.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jdtrans.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jerror.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jfdctflt.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jfdctfst.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jfdctint.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jidctflt.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jidctfst.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jidctint.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jidctred.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jmemmgr.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jmemnobs.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jquant1.c" />
+    <ClCompile Include="..\..\Lib\ljpeg\jquant2.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Lib\ljpeg\jchuff.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jpeglib.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jconfig.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jconfig.vc.win.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jdct.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jdhuff.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jerror.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jinclude.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jmemsys.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jmorecfg.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jpegint.h" />
+    <ClInclude Include="..\..\Lib\ljpeg\jversion.h" />
+  </ItemGroup>
+</Project>

+ 183 - 0
engine/compilers/VisualStudio 2010/lpng.vcxproj

@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Shipping|Win32">
+      <Configuration>Shipping</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{AF1179E3-A838-46A3-A427-1E62AA4C52F4}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../Link/Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../Link/Debug/lpng\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../Link/Release\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">.\../../Link/Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../Link/Release/lpng\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">.\../../Link/Release/lpng\</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_DEBUG</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\Lib\lpng;..\..\Lib\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Debug/lpng/lpng.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Debug/lpng/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Debug/lpng/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Debug/lpng/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\Lib\lpng;..\..\Lib\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Release/lpng/lpng.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Release/lpng/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Release/lpng/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Release/lpng/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\../../Link/Release\lpng.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\Lib\lpng;..\..\Lib\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Release/lpng/lpng.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Release/lpng/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Release/lpng/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Release/lpng/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\../../Link/Release\lpng.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlib.vcxproj">
+      <Project>{86cb2525-0cf3-40d3-bf42-a0a95035ee8c}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\lib\lpng\png.c" />
+    <ClCompile Include="..\..\lib\lpng\pngerror.c" />
+    <ClCompile Include="..\..\lib\lpng\pngget.c" />
+    <ClCompile Include="..\..\lib\lpng\pngmem.c" />
+    <ClCompile Include="..\..\lib\lpng\pngpread.c" />
+    <ClCompile Include="..\..\lib\lpng\pngread.c" />
+    <ClCompile Include="..\..\lib\lpng\pngrio.c" />
+    <ClCompile Include="..\..\lib\lpng\pngrtran.c" />
+    <ClCompile Include="..\..\lib\lpng\pngrutil.c" />
+    <ClCompile Include="..\..\lib\lpng\pngset.c" />
+    <ClCompile Include="..\..\lib\lpng\pngtrans.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwio.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwrite.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwtran.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\lib\lpng\png.h" />
+    <ClInclude Include="..\..\lib\lpng\pngconf.h" />
+    <ClInclude Include="..\..\lib\lpng\pngdebug.h" />
+    <ClInclude Include="..\..\lib\lpng\pnginfo.h" />
+    <ClInclude Include="..\..\lib\lpng\pnglibconf.h" />
+    <ClInclude Include="..\..\lib\lpng\pngpriv.h" />
+    <ClInclude Include="..\..\lib\lpng\pngstruct.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 29 - 0
engine/compilers/VisualStudio 2010/lpng.vcxproj.filters

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="..\..\lib\lpng\png.c" />
+    <ClCompile Include="..\..\lib\lpng\pngerror.c" />
+    <ClCompile Include="..\..\lib\lpng\pngget.c" />
+    <ClCompile Include="..\..\lib\lpng\pngmem.c" />
+    <ClCompile Include="..\..\lib\lpng\pngpread.c" />
+    <ClCompile Include="..\..\lib\lpng\pngread.c" />
+    <ClCompile Include="..\..\lib\lpng\pngrio.c" />
+    <ClCompile Include="..\..\lib\lpng\pngrtran.c" />
+    <ClCompile Include="..\..\lib\lpng\pngrutil.c" />
+    <ClCompile Include="..\..\lib\lpng\pngset.c" />
+    <ClCompile Include="..\..\lib\lpng\pngtrans.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwio.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwrite.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwtran.c" />
+    <ClCompile Include="..\..\lib\lpng\pngwutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\lib\lpng\png.h" />
+    <ClInclude Include="..\..\lib\lpng\pngconf.h" />
+    <ClInclude Include="..\..\lib\lpng\pngdebug.h" />
+    <ClInclude Include="..\..\lib\lpng\pnginfo.h" />
+    <ClInclude Include="..\..\lib\lpng\pnglibconf.h" />
+    <ClInclude Include="..\..\lib\lpng\pngpriv.h" />
+    <ClInclude Include="..\..\lib\lpng\pngstruct.h" />
+  </ItemGroup>
+</Project>

+ 181 - 0
engine/compilers/VisualStudio 2010/zlib.vcxproj

@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Shipping|Win32">
+      <Configuration>Shipping</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\lib\zlib\adler32.c" />
+    <ClCompile Include="..\..\lib\zlib\compress.c" />
+    <ClCompile Include="..\..\lib\zlib\crc32.c" />
+    <ClCompile Include="..\..\lib\zlib\deflate.c" />
+    <ClCompile Include="..\..\lib\zlib\gzclose.c" />
+    <ClCompile Include="..\..\lib\zlib\gzlib.c" />
+    <ClCompile Include="..\..\lib\zlib\gzread.c" />
+    <ClCompile Include="..\..\lib\zlib\gzwrite.c" />
+    <ClCompile Include="..\..\lib\zlib\infback.c" />
+    <ClCompile Include="..\..\lib\zlib\inffast.c" />
+    <ClCompile Include="..\..\lib\zlib\inflate.c" />
+    <ClCompile Include="..\..\lib\zlib\inftrees.c" />
+    <ClCompile Include="..\..\lib\zlib\trees.c" />
+    <ClCompile Include="..\..\lib\zlib\uncompr.c" />
+    <ClCompile Include="..\..\lib\zlib\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\lib\zlib\crc32.h" />
+    <ClInclude Include="..\..\lib\zlib\deflate.h" />
+    <ClInclude Include="..\..\lib\zlib\gzguts.h" />
+    <ClInclude Include="..\..\lib\zlib\inffast.h" />
+    <ClInclude Include="..\..\lib\zlib\inffixed.h" />
+    <ClInclude Include="..\..\lib\zlib\inflate.h" />
+    <ClInclude Include="..\..\lib\zlib\inftrees.h" />
+    <ClInclude Include="..\..\lib\zlib\trees.h" />
+    <ClInclude Include="..\..\lib\zlib\zconf.h" />
+    <ClInclude Include="..\..\lib\zlib\zlib.h" />
+    <ClInclude Include="..\..\lib\zlib\zutil.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{86CB2525-0CF3-40D3-BF42-A0A95035EE8C}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../Link/Debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\../../Link/Debug/zlib\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../Link/Release\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">.\../../Link/Release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\../../Link/Release/zlib\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">.\../../Link/Release/zlib\</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_DEBUG</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TORQUE_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Debug/zlib/zlib.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Debug/zlib/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Debug/zlib/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Debug/zlib/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Release/zlib/zlib.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Release/zlib/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Release/zlib/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Release/zlib/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\../../Link/Release\zlib.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Shipping|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <PrecompiledHeaderOutputFile>.\../../Link/Release/zlib/zlib.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>.\../../Link/Release/zlib/</AssemblerListingLocation>
+      <ObjectFileName>.\../../Link/Release/zlib/</ObjectFileName>
+      <ProgramDataBaseFileName>.\../../Link/Release/zlib/</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <CompileAs>Default</CompileAs>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x0409</Culture>
+    </ResourceCompile>
+    <Lib>
+      <OutputFile>.\../../Link/Release\zlib.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 33 - 0
engine/compilers/VisualStudio 2010/zlib.vcxproj.filters

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="..\..\lib\zlib\adler32.c" />
+    <ClCompile Include="..\..\lib\zlib\compress.c" />
+    <ClCompile Include="..\..\lib\zlib\crc32.c" />
+    <ClCompile Include="..\..\lib\zlib\deflate.c" />
+    <ClCompile Include="..\..\lib\zlib\gzclose.c" />
+    <ClCompile Include="..\..\lib\zlib\gzlib.c" />
+    <ClCompile Include="..\..\lib\zlib\gzread.c" />
+    <ClCompile Include="..\..\lib\zlib\gzwrite.c" />
+    <ClCompile Include="..\..\lib\zlib\infback.c" />
+    <ClCompile Include="..\..\lib\zlib\inffast.c" />
+    <ClCompile Include="..\..\lib\zlib\inflate.c" />
+    <ClCompile Include="..\..\lib\zlib\inftrees.c" />
+    <ClCompile Include="..\..\lib\zlib\trees.c" />
+    <ClCompile Include="..\..\lib\zlib\uncompr.c" />
+    <ClCompile Include="..\..\lib\zlib\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\lib\zlib\crc32.h" />
+    <ClInclude Include="..\..\lib\zlib\deflate.h" />
+    <ClInclude Include="..\..\lib\zlib\gzguts.h" />
+    <ClInclude Include="..\..\lib\zlib\inffast.h" />
+    <ClInclude Include="..\..\lib\zlib\inffixed.h" />
+    <ClInclude Include="..\..\lib\zlib\inflate.h" />
+    <ClInclude Include="..\..\lib\zlib\inftrees.h" />
+    <ClInclude Include="..\..\lib\zlib\trees.h" />
+    <ClInclude Include="..\..\lib\zlib\zconf.h" />
+    <ClInclude Include="..\..\lib\zlib\zlib.h" />
+    <ClInclude Include="..\..\lib\zlib\zutil.h" />
+  </ItemGroup>
+</Project>

+ 3432 - 0
engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj

@@ -0,0 +1,3432 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		2A03300D165D1D2100E9CD70 /* unitTesting.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2A03300B165D1D2100E9CD70 /* unitTesting.cc */; };
+		2A033011165D1D4100E9CD70 /* platformFileIoTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2A033010165D1D4100E9CD70 /* platformFileIoTests.cc */; };
+		2A25739016A48DAC00363C6F /* ParticlePlayer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2A25738E16A48DAC00363C6F /* ParticlePlayer.cc */; };
+		2A6F78CE16A4528C005C76D9 /* ParticleAssetEmitter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2A6F78CC16A4528C005C76D9 /* ParticleAssetEmitter.cc */; };
+		2AB97A1D16B66BC70080F940 /* tamlCustom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AB97A1B16B66BC70080F940 /* tamlCustom.cc */; };
+		2ABF5C8F16569A0C00BBBF1D /* osxMutex.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2ABF5C8E16569A0C00BBBF1D /* osxMutex.mm */; };
+		2AC4404516B0142B00FC4091 /* ImageFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC4404316B0142B00FC4091 /* ImageFont.cc */; };
+		2AC5C7E81667C85700A0D046 /* platformStringTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC5C7E71667C85700A0D046 /* platformStringTests.cc */; };
+		2ACFC0A8166CE1AB00FE7370 /* platformMemoryTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */; };
+		2ADCAC1516A41E5500E07619 /* ParticleAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */; };
+		2ADCAC1716A41E5500E07619 /* ParticleAssetField.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2ADCAC1316A41E5500E07619 /* ParticleAssetField.cc */; };
+		2AE5B54216A6D860006908D5 /* ParticleAssetFieldCollection.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE5B54016A6D860006908D5 /* ParticleAssetFieldCollection.cc */; };
+		2AE851D21681E56E00193F17 /* color.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AE851D11681E56E00193F17 /* color.cc */; };
+		2AF1C54016B439BB00C1CF3A /* declaredAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C53C16B439BB00C1CF3A /* declaredAssets.cc */; };
+		2AF1C54116B439BB00C1CF3A /* referencedAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C53E16B439BB00C1CF3A /* referencedAssets.cc */; };
+		2AF3633916A9BBE0004ED7AA /* ParticleSystem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF3633716A9BBE0004ED7AA /* ParticleSystem.cc */; };
+		86063A251654180000362D83 /* platformOSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86063A241654180000362D83 /* platformOSX.mm */; };
+		8609FE2F16556DD2004662ED /* osxSemaphore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE2E16556DD2004662ED /* osxSemaphore.mm */; };
+		8609FE3116556E5A004662ED /* osxThread.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE3016556E5A004662ED /* osxThread.mm */; };
+		8609FE361655716E004662ED /* osxPopupMenu.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE351655716E004662ED /* osxPopupMenu.mm */; };
+		8609FE38165572EC004662ED /* osxFont.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE37165572EC004662ED /* osxFont.mm */; };
+		861CD8D01678F6C200DAE1A0 /* fileDialog.cc in Sources */ = {isa = PBXBuildFile; fileRef = 861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */; };
+		8652C279165586520052D0CB /* osxAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8652C278165586520052D0CB /* osxAudio.mm */; };
+		8658B174165A7BFB0087ABC1 /* osxCPU.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8658B171165A7BFB0087ABC1 /* osxCPU.mm */; };
+		8658B175165A7BFB0087ABC1 /* osxNetwork.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8658B172165A7BFB0087ABC1 /* osxNetwork.mm */; };
+		8658B176165A7BFB0087ABC1 /* osxString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8658B173165A7BFB0087ABC1 /* osxString.mm */; };
+		865A20B11651530B00527C44 /* Config.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 865A20B01651530B00527C44 /* Config.xcconfig */; };
+		865A20BF165158CA00527C44 /* torque2d.icns in Resources */ = {isa = PBXBuildFile; fileRef = 865A20BE165158CA00527C44 /* torque2d.icns */; };
+		865A20CA16515B1E00527C44 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8BF1651518C002FE082 /* AppKit.framework */; };
+		865A20CB16515B1E00527C44 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 865A20C116515ACE00527C44 /* AVFoundation.framework */; };
+		865A20CC16515B1E00527C44 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8BC1651518C002FE082 /* Cocoa.framework */; };
+		865A20CD16515B1E00527C44 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8C01651518C002FE082 /* CoreData.framework */; };
+		865A20CE16515B1E00527C44 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 865A20C216515ACE00527C44 /* CoreFoundation.framework */; };
+		865A20CF16515B1E00527C44 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 869FF8C11651518C002FE082 /* Foundation.framework */; };
+		865A20D016515B1E00527C44 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 865A20C316515ACE00527C44 /* OpenAL.framework */; };
+		865A20D116515B1E00527C44 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 865A20C416515ACE00527C44 /* OpenGL.framework */; };
+		865A227B165187B600527C44 /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21EB165187B600527C44 /* b2BroadPhase.cpp */; };
+		865A227C165187B600527C44 /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21ED165187B600527C44 /* b2CollideCircle.cpp */; };
+		865A227D165187B600527C44 /* b2CollideEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21EE165187B600527C44 /* b2CollideEdge.cpp */; };
+		865A227E165187B600527C44 /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21EF165187B600527C44 /* b2CollidePolygon.cpp */; };
+		865A227F165187B600527C44 /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21F0165187B600527C44 /* b2Collision.cpp */; };
+		865A2280165187B600527C44 /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21F2165187B600527C44 /* b2Distance.cpp */; };
+		865A2281165187B600527C44 /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21F4165187B600527C44 /* b2DynamicTree.cpp */; };
+		865A2282165187B600527C44 /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21F6165187B600527C44 /* b2TimeOfImpact.cpp */; };
+		865A2283165187B600527C44 /* b2ChainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21F9165187B600527C44 /* b2ChainShape.cpp */; };
+		865A2284165187B600527C44 /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21FB165187B600527C44 /* b2CircleShape.cpp */; };
+		865A2285165187B600527C44 /* b2EdgeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21FD165187B600527C44 /* b2EdgeShape.cpp */; };
+		865A2286165187B600527C44 /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A21FF165187B600527C44 /* b2PolygonShape.cpp */; };
+		865A2287165187B600527C44 /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2203165187B600527C44 /* b2BlockAllocator.cpp */; };
+		865A2288165187B600527C44 /* b2Draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2205165187B600527C44 /* b2Draw.cpp */; };
+		865A2289165187B600527C44 /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2208165187B600527C44 /* b2Math.cpp */; };
+		865A228A165187B600527C44 /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A220A165187B600527C44 /* b2Settings.cpp */; };
+		865A228B165187B600527C44 /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A220C165187B600527C44 /* b2StackAllocator.cpp */; };
+		865A228C165187B600527C44 /* b2Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A220E165187B600527C44 /* b2Timer.cpp */; };
+		865A228D165187B600527C44 /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2211165187B600527C44 /* b2Body.cpp */; };
+		865A228E165187B600527C44 /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2213165187B600527C44 /* b2ContactManager.cpp */; };
+		865A228F165187B600527C44 /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2215165187B600527C44 /* b2Fixture.cpp */; };
+		865A2290165187B600527C44 /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2217165187B600527C44 /* b2Island.cpp */; };
+		865A2291165187B600527C44 /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A221A165187B600527C44 /* b2World.cpp */; };
+		865A2292165187B600527C44 /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A221C165187B600527C44 /* b2WorldCallbacks.cpp */; };
+		865A2293165187B600527C44 /* b2ChainAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A221F165187B600527C44 /* b2ChainAndCircleContact.cpp */; };
+		865A2294165187B600527C44 /* b2ChainAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2221165187B600527C44 /* b2ChainAndPolygonContact.cpp */; };
+		865A2295165187B600527C44 /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2223165187B600527C44 /* b2CircleContact.cpp */; };
+		865A2296165187B600527C44 /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2225165187B600527C44 /* b2Contact.cpp */; };
+		865A2297165187B600527C44 /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2227165187B600527C44 /* b2ContactSolver.cpp */; };
+		865A2298165187B600527C44 /* b2EdgeAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2229165187B600527C44 /* b2EdgeAndCircleContact.cpp */; };
+		865A2299165187B600527C44 /* b2EdgeAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A222B165187B600527C44 /* b2EdgeAndPolygonContact.cpp */; };
+		865A229A165187B600527C44 /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A222D165187B600527C44 /* b2PolygonAndCircleContact.cpp */; };
+		865A229B165187B600527C44 /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A222F165187B600527C44 /* b2PolygonContact.cpp */; };
+		865A229C165187B600527C44 /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2232165187B600527C44 /* b2DistanceJoint.cpp */; };
+		865A229D165187B600527C44 /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2234165187B600527C44 /* b2FrictionJoint.cpp */; };
+		865A229E165187B600527C44 /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2236165187B600527C44 /* b2GearJoint.cpp */; };
+		865A229F165187B600527C44 /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2238165187B600527C44 /* b2Joint.cpp */; };
+		865A22A0165187B600527C44 /* b2MotorJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A223A165187B600527C44 /* b2MotorJoint.cpp */; };
+		865A22A1165187B600527C44 /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A223C165187B600527C44 /* b2MouseJoint.cpp */; };
+		865A22A2165187B600527C44 /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A223E165187B600527C44 /* b2PrismaticJoint.cpp */; };
+		865A22A3165187B600527C44 /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2240165187B600527C44 /* b2PulleyJoint.cpp */; };
+		865A22A4165187B600527C44 /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2242165187B600527C44 /* b2RevoluteJoint.cpp */; };
+		865A22A5165187B600527C44 /* b2RopeJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2244165187B600527C44 /* b2RopeJoint.cpp */; };
+		865A22A6165187B600527C44 /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2246165187B600527C44 /* b2WeldJoint.cpp */; };
+		865A22A7165187B600527C44 /* b2WheelJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2248165187B600527C44 /* b2WheelJoint.cpp */; };
+		865A22D4165187B600527C44 /* b2Rope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 865A2279165187B600527C44 /* b2Rope.cpp */; };
+		865A2305165187FF00527C44 /* jcapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22D7165187FF00527C44 /* jcapimin.c */; };
+		865A2306165187FF00527C44 /* jcapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22D8165187FF00527C44 /* jcapistd.c */; };
+		865A2307165187FF00527C44 /* jccoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22D9165187FF00527C44 /* jccoefct.c */; };
+		865A2308165187FF00527C44 /* jccolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22DA165187FF00527C44 /* jccolor.c */; };
+		865A2309165187FF00527C44 /* jcdctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22DB165187FF00527C44 /* jcdctmgr.c */; };
+		865A230A165187FF00527C44 /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22DC165187FF00527C44 /* jchuff.c */; };
+		865A230B165187FF00527C44 /* jcinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22DD165187FF00527C44 /* jcinit.c */; };
+		865A230C165187FF00527C44 /* jcmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22DE165187FF00527C44 /* jcmainct.c */; };
+		865A230D165187FF00527C44 /* jcmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22DF165187FF00527C44 /* jcmarker.c */; };
+		865A230E165187FF00527C44 /* jcmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E0165187FF00527C44 /* jcmaster.c */; };
+		865A230F165187FF00527C44 /* jcomapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E1165187FF00527C44 /* jcomapi.c */; };
+		865A2310165187FF00527C44 /* jcparam.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E2165187FF00527C44 /* jcparam.c */; };
+		865A2311165187FF00527C44 /* jcphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E3165187FF00527C44 /* jcphuff.c */; };
+		865A2312165187FF00527C44 /* jcprepct.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E4165187FF00527C44 /* jcprepct.c */; };
+		865A2313165187FF00527C44 /* jcsample.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E5165187FF00527C44 /* jcsample.c */; };
+		865A2314165187FF00527C44 /* jctrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E6165187FF00527C44 /* jctrans.c */; };
+		865A2315165187FF00527C44 /* jdapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E7165187FF00527C44 /* jdapimin.c */; };
+		865A2316165187FF00527C44 /* jdapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E8165187FF00527C44 /* jdapistd.c */; };
+		865A2317165187FF00527C44 /* jdatadst.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22E9165187FF00527C44 /* jdatadst.c */; };
+		865A2318165187FF00527C44 /* jdatasrc.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22EA165187FF00527C44 /* jdatasrc.c */; };
+		865A2319165187FF00527C44 /* jdcoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22EB165187FF00527C44 /* jdcoefct.c */; };
+		865A231A165187FF00527C44 /* jdcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22EC165187FF00527C44 /* jdcolor.c */; };
+		865A231B165187FF00527C44 /* jddctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22ED165187FF00527C44 /* jddctmgr.c */; };
+		865A231C165187FF00527C44 /* jdhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22EE165187FF00527C44 /* jdhuff.c */; };
+		865A231D165187FF00527C44 /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22EF165187FF00527C44 /* jdinput.c */; };
+		865A231E165187FF00527C44 /* jdmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F0165187FF00527C44 /* jdmainct.c */; };
+		865A231F165187FF00527C44 /* jdmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F1165187FF00527C44 /* jdmarker.c */; };
+		865A2320165187FF00527C44 /* jdmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F2165187FF00527C44 /* jdmaster.c */; };
+		865A2321165187FF00527C44 /* jdmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F3165187FF00527C44 /* jdmerge.c */; };
+		865A2322165187FF00527C44 /* jdphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F4165187FF00527C44 /* jdphuff.c */; };
+		865A2323165187FF00527C44 /* jdpostct.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F5165187FF00527C44 /* jdpostct.c */; };
+		865A2324165187FF00527C44 /* jdsample.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F6165187FF00527C44 /* jdsample.c */; };
+		865A2325165187FF00527C44 /* jdtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F7165187FF00527C44 /* jdtrans.c */; };
+		865A2326165187FF00527C44 /* jerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F8165187FF00527C44 /* jerror.c */; };
+		865A2327165187FF00527C44 /* jfdctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22F9165187FF00527C44 /* jfdctflt.c */; };
+		865A2328165187FF00527C44 /* jfdctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22FA165187FF00527C44 /* jfdctfst.c */; };
+		865A2329165187FF00527C44 /* jfdctint.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22FB165187FF00527C44 /* jfdctint.c */; };
+		865A232A165187FF00527C44 /* jidctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22FC165187FF00527C44 /* jidctflt.c */; };
+		865A232B165187FF00527C44 /* jidctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22FD165187FF00527C44 /* jidctfst.c */; };
+		865A232C165187FF00527C44 /* jidctint.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22FE165187FF00527C44 /* jidctint.c */; };
+		865A232D165187FF00527C44 /* jidctred.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A22FF165187FF00527C44 /* jidctred.c */; };
+		865A232E165187FF00527C44 /* jmemansi.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A2300165187FF00527C44 /* jmemansi.c */; };
+		865A232F165187FF00527C44 /* jmemmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A2301165187FF00527C44 /* jmemmgr.c */; };
+		865A2330165187FF00527C44 /* jquant1.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A2302165187FF00527C44 /* jquant1.c */; };
+		865A2331165187FF00527C44 /* jquant2.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A2303165187FF00527C44 /* jquant2.c */; };
+		865A2332165187FF00527C44 /* jutils.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A2304165187FF00527C44 /* jutils.c */; };
+		865A23421651881300527C44 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23331651881300527C44 /* png.c */; };
+		865A23431651881300527C44 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23341651881300527C44 /* pngerror.c */; };
+		865A23441651881300527C44 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23351651881300527C44 /* pngget.c */; };
+		865A23451651881300527C44 /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23361651881300527C44 /* pngmem.c */; };
+		865A23461651881300527C44 /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23371651881300527C44 /* pngpread.c */; };
+		865A23471651881300527C44 /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23381651881300527C44 /* pngread.c */; };
+		865A23481651881300527C44 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23391651881300527C44 /* pngrio.c */; };
+		865A23491651881300527C44 /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A233A1651881300527C44 /* pngrtran.c */; };
+		865A234A1651881300527C44 /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A233B1651881300527C44 /* pngrutil.c */; };
+		865A234B1651881300527C44 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A233C1651881300527C44 /* pngset.c */; };
+		865A234C1651881300527C44 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A233D1651881300527C44 /* pngtrans.c */; };
+		865A234D1651881300527C44 /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A233E1651881300527C44 /* pngwio.c */; };
+		865A234E1651881300527C44 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A233F1651881300527C44 /* pngwrite.c */; };
+		865A234F1651881300527C44 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23401651881300527C44 /* pngwtran.c */; };
+		865A23501651881300527C44 /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 865A23411651881300527C44 /* pngwutil.c */; };
+		865A235A16518AD300527C44 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 865A235816518AD300527C44 /* AppDelegate.mm */; };
+		865A235B16518AD300527C44 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 865A235916518AD300527C44 /* main.mm */; };
+		865BD2F9166FA7F80064F595 /* osxInputManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 865BD2F8166FA7F80064F595 /* osxInputManager.mm */; };
+		866381D31655484400C8C551 /* mRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80AF16518D4600D96ADF /* mRandom.cc */; };
+		866381D8165550FF00C8C551 /* osxFileIO.mm in Sources */ = {isa = PBXBuildFile; fileRef = 866381D7165550FF00C8C551 /* osxFileIO.mm */; };
+		866381DA1655562400C8C551 /* osxMemory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 866381D91655562400C8C551 /* osxMemory.mm */; };
+		866381DC165556AD00C8C551 /* osxMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 866381DB165556AD00C8C551 /* osxMath.mm */; };
+		866381E51655615200C8C551 /* osxInput.mm in Sources */ = {isa = PBXBuildFile; fileRef = 866381E41655615200C8C551 /* osxInput.mm */; };
+		866381E91655674B00C8C551 /* osxTime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 866381E81655674B00C8C551 /* osxTime.mm */; };
+		86854E341663AAE6009FAFB2 /* osxOpenGLDevice.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86854E331663AAE6009FAFB2 /* osxOpenGLDevice.mm */; };
+		8694ADC81656B06B0080ABAC /* osxEvents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8694ADC51656B06B0080ABAC /* osxEvents.mm */; };
+		8694ADC91656B06B0080ABAC /* osxWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8694ADC61656B06B0080ABAC /* osxWindow.mm */; };
+		8694ADD11656B7FC0080ABAC /* osxVideo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8694ADD01656B7FC0080ABAC /* osxVideo.mm */; };
+		8694ADD51656BDE60080ABAC /* osxGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8694ADD41656BDE60080ABAC /* osxGL.mm */; };
+		86C281CD16A4307E00F030F4 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 86C281CB16A4307E00F030F4 /* MainMenu.xib */; };
+		86D76F78165683240046D71F /* osxOutlineGL.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86D76F76165683240046D71F /* osxOutlineGL.cc */; };
+		86D76F791656868D0046D71F /* AnimationAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E7716518D4600D96ADF /* AnimationAsset.cc */; };
+		86D76F7A1656868D0046D71F /* AnimationController.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E7A16518D4600D96ADF /* AnimationController.cc */; };
+		86D76F7B1656868D0046D71F /* ImageAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E7C16518D4600D96ADF /* ImageAsset.cc */; };
+		86D76F7C1656868D0046D71F /* BatchRender.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8116518D4600D96ADF /* BatchRender.cc */; };
+		86D76F7D1656868D0046D71F /* CoreMath.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8316518D4600D96ADF /* CoreMath.cc */; };
+		86D76F7E1656868D0046D71F /* RenderProxy.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8516518D4600D96ADF /* RenderProxy.cc */; };
+		86D76F7F1656868D0046D71F /* SpriteBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8816518D4600D96ADF /* SpriteBase.cc */; };
+		86D76F801656868D0046D71F /* SpriteBatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8B16518D4600D96ADF /* SpriteBatch.cc */; };
+		86D76F811656868D0046D71F /* SpriteBatchItem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8D16518D4600D96ADF /* SpriteBatchItem.cc */; };
+		86D76F821656868D0046D71F /* SpriteProxyBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E8F16518D4600D96ADF /* SpriteProxyBase.cc */; };
+		86D76F831656868D0046D71F /* Utility.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E9116518D4600D96ADF /* Utility.cc */; };
+		86D76F841656868D0046D71F /* Vector2.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E9316518D4600D96ADF /* Vector2.cc */; };
+		86D76F851656868D0046D71F /* guiImageButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E9716518D4600D96ADF /* guiImageButtonCtrl.cc */; };
+		86D76F861656868D0046D71F /* guiSceneObjectCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E9A16518D4600D96ADF /* guiSceneObjectCtrl.cc */; };
+		86D76F871656868D0046D71F /* guiSpriteCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E9C16518D4600D96ADF /* guiSpriteCtrl.cc */; };
+		86D76F881656868D0046D71F /* SceneWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7E9F16518D4600D96ADF /* SceneWindow.cc */; };
+		86D76F891656868D0046D71F /* ContactFilter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EA316518D4600D96ADF /* ContactFilter.cc */; };
+		86D76F8A1656868D0046D71F /* DebugDraw.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EA516518D4600D96ADF /* DebugDraw.cc */; };
+		86D76F8B1656868D0046D71F /* Scene.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EA916518D4600D96ADF /* Scene.cc */; };
+		86D76F8C1656868D0046D71F /* WorldQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EB316518D4600D96ADF /* WorldQuery.cc */; };
+		86D76F8D165686B00046D71F /* SceneRenderFactories.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EAC16518D4600D96ADF /* SceneRenderFactories.cpp */; };
+		86D76F8E165686B00046D71F /* SceneRenderQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EAF16518D4600D96ADF /* SceneRenderQueue.cpp */; };
+		86D76F90165686B00046D71F /* CompositeSprite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EBB16518D4600D96ADF /* CompositeSprite.cc */; };
+		86D76F93165686B00046D71F /* SceneObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EC316518D4600D96ADF /* SceneObject.cc */; };
+		86D76F96165686B00046D71F /* Scroller.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7ECE16518D4600D96ADF /* Scroller.cc */; };
+		86D76F97165686B00046D71F /* ShapeVector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7ED116518D4600D96ADF /* ShapeVector.cc */; };
+		86D76F98165686B00046D71F /* Sprite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7ED416518D4600D96ADF /* Sprite.cc */; };
+		86D76F99165686B00046D71F /* Trigger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7ED716518D4600D96ADF /* Trigger.cc */; };
+		86D76F9B165686D80046D71F /* hashFunction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EE416518D4600D96ADF /* hashFunction.cc */; };
+		86D76F9C165686D80046D71F /* assetFieldTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EEC16518D4600D96ADF /* assetFieldTypes.cc */; };
+		86D76F9D165686D80046D71F /* assetManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EEE16518D4600D96ADF /* assetManager.cc */; };
+		86D76F9F165686D80046D71F /* assetQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EF416518D4600D96ADF /* assetQuery.cc */; };
+		86D76FA0165686D80046D71F /* assetSnapshot.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EF716518D4600D96ADF /* assetSnapshot.cc */; };
+		86D76FA1165686D80046D71F /* assetTagsManifest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EF916518D4600D96ADF /* assetTagsManifest.cc */; };
+		86D76FA2165686D80046D71F /* audio.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0116518D4600D96ADF /* audio.cc */; };
+		86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0316518D4600D96ADF /* AudioAsset.cc */; };
+		86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0516518D4600D96ADF /* audioBuffer.cc */; };
+		86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0716518D4600D96ADF /* audioDataBlock.cc */; };
+		86D76FA6165686D80046D71F /* audioFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0916518D4600D96ADF /* audioFunctions.cc */; };
+		86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */; };
+		86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F0D16518D4600D96ADF /* wavStreamSource.cc */; };
+		86D76FA9165686D80046D71F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1216518D4600D96ADF /* bitTables.cc */; };
+		86D76FAA165686D80046D71F /* hashTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1716518D4600D96ADF /* hashTable.cc */; };
+		86D76FAB165686D80046D71F /* nameTags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1A16518D4600D96ADF /* nameTags.cpp */; };
+		86D76FAC165686D80046D71F /* undo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F1F16518D4600D96ADF /* undo.cc */; };
+		86D76FAD165686D80046D71F /* vector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F2116518D4600D96ADF /* vector.cc */; };
+		86D76FAF165687060046D71F /* crc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EE116518D4600D96ADF /* crc.cc */; };
+		86D76FB0165687060046D71F /* assetBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7EE816518D4600D96ADF /* assetBase.cc */; };
+		86D76FB7165687060046D71F /* behaviorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F3616518D4600D96ADF /* behaviorComponent.cpp */; };
+		86D76FB8165687060046D71F /* behaviorInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F3A16518D4600D96ADF /* behaviorInstance.cpp */; };
+		86D76FB9165687060046D71F /* behaviorTemplate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F3D16518D4600D96ADF /* behaviorTemplate.cpp */; };
+		86D76FBA165687060046D71F /* dynamicConsoleMethodComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F4016518D4600D96ADF /* dynamicConsoleMethodComponent.cpp */; };
+		86D76FBC165687060046D71F /* simComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F4516518D4600D96ADF /* simComponent.cpp */; };
+		86D76FBD165687060046D71F /* consoleDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82B316518DF400D96ADF /* consoleDictionary.cc */; };
+		86D76FBE165687060046D71F /* consoleExprEvalState.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82B516518DF400D96ADF /* consoleExprEvalState.cc */; };
+		86D76FBF165687060046D71F /* consoleNamespace.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82B716518DF400D96ADF /* consoleNamespace.cc */; };
+		86D76FC0165687060046D71F /* consoleBaseType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82B916518DF400D96ADF /* consoleBaseType.cc */; };
+		86D76FC1165687060046D71F /* ConsoleTypeValidators.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82BB16518DF400D96ADF /* ConsoleTypeValidators.cc */; };
+		86D76FC2165687060046D71F /* Package.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82BE16518DF400D96ADF /* Package.cc */; };
+		86D76FC3165687060046D71F /* astAlloc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C016518DF400D96ADF /* astAlloc.cc */; };
+		86D76FC4165687060046D71F /* astNodes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C116518DF400D96ADF /* astNodes.cc */; };
+		86D76FC5165687060046D71F /* cmdgram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C216518DF400D96ADF /* cmdgram.cc */; };
+		86D76FC6165687060046D71F /* CMDscan.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C316518DF400D96ADF /* CMDscan.cc */; };
+		86D76FC7165687060046D71F /* codeBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C416518DF400D96ADF /* codeBlock.cc */; };
+		86D76FC8165687060046D71F /* compiledEval.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C516518DF400D96ADF /* compiledEval.cc */; };
+		86D76FC9165687060046D71F /* compiler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C616518DF400D96ADF /* compiler.cc */; };
+		86D76FCA165687060046D71F /* console.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C716518DF400D96ADF /* console.cc */; };
+		86D76FCB165687060046D71F /* consoleDoc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C816518DF400D96ADF /* consoleDoc.cc */; };
+		86D76FCC165687060046D71F /* consoleFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82C916518DF400D96ADF /* consoleFunctions.cc */; };
+		86D76FCD165687060046D71F /* consoleLogger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82CA16518DF400D96ADF /* consoleLogger.cc */; };
+		86D76FCE165687060046D71F /* consoleObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82CB16518DF400D96ADF /* consoleObject.cc */; };
+		86D76FCF165687060046D71F /* consoleParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82CC16518DF400D96ADF /* consoleParser.cc */; };
+		86D76FD0165687060046D71F /* consoleTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC82CD16518DF400D96ADF /* consoleTypes.cc */; };
+		86D76FD1165687060046D71F /* profiler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F7416518D4600D96ADF /* profiler.cc */; };
+		86D76FD2165687060046D71F /* RemoteDebugger1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F7716518D4600D96ADF /* RemoteDebugger1.cc */; };
+		86D76FD3165687060046D71F /* RemoteDebuggerBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F7A16518D4600D96ADF /* RemoteDebuggerBase.cc */; };
+		86D76FD4165687060046D71F /* RemoteDebuggerBridge.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F7D16518D4600D96ADF /* RemoteDebuggerBridge.cc */; };
+		86D76FD5165687060046D71F /* telnetDebugger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F8016518D4600D96ADF /* telnetDebugger.cc */; };
+		86D76FD6165687060046D71F /* delegateSignal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7F8416518D4600D96ADF /* delegateSignal.cpp */; };
+		86D76FE9165687060046D71F /* defaultGame.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FAF16518D4600D96ADF /* defaultGame.cc */; };
+		86D76FEA165687060046D71F /* gameConnection.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FB116518D4600D96ADF /* gameConnection.cc */; };
+		86D76FEB165687060046D71F /* gameInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FB316518D4600D96ADF /* gameInterface.cc */; };
+		86D76FED165687060046D71F /* version.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FB716518D4600D96ADF /* version.cc */; };
+		86D76FEE165687060046D71F /* bitmapBmp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FBA16518D4600D96ADF /* bitmapBmp.cc */; };
+		86D76FEF165687060046D71F /* bitmapJpeg.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FBB16518D4600D96ADF /* bitmapJpeg.cc */; };
+		86D76FF0165687060046D71F /* bitmapPng.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FBC16518D4600D96ADF /* bitmapPng.cc */; };
+		86D76FF3165687060046D71F /* dgl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FC116518D4600D96ADF /* dgl.cc */; };
+		86D76FF4165687060046D71F /* dglMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FC316518D4600D96ADF /* dglMatrix.cc */; };
+		86D76FF5165687060046D71F /* DynamicTexture.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FC416518D4600D96ADF /* DynamicTexture.cc */; };
+		86D76FF6165687060046D71F /* gBitmap.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FC616518D4600D96ADF /* gBitmap.cc */; };
+		86D76FF7165687060046D71F /* gFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FC816518D4600D96ADF /* gFont.cc */; };
+		86D76FF8165687060046D71F /* gPalette.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FCA16518D4600D96ADF /* gPalette.cc */; };
+		86D76FF9165687060046D71F /* PNGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FCC16518D4600D96ADF /* PNGImage.cpp */; };
+		86D76FFA165687060046D71F /* splineUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FCE16518D4600D96ADF /* splineUtil.cc */; };
+		86D76FFB165687060046D71F /* TextureDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FD016518D4600D96ADF /* TextureDictionary.cc */; };
+		86D76FFC165687060046D71F /* TextureHandle.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FD216518D4600D96ADF /* TextureHandle.cc */; };
+		86D76FFD165687060046D71F /* TextureManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FD416518D4600D96ADF /* TextureManager.cc */; };
+		86D76FFE165687060046D71F /* guiBitmapButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FD916518D4600D96ADF /* guiBitmapButtonCtrl.cc */; };
+		86D76FFF165687060046D71F /* guiBorderButton.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FDB16518D4600D96ADF /* guiBorderButton.cc */; };
+		86D77000165687060046D71F /* guiButtonBaseCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FDC16518D4600D96ADF /* guiButtonBaseCtrl.cc */; };
+		86D77001165687060046D71F /* guiButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FDE16518D4600D96ADF /* guiButtonCtrl.cc */; };
+		86D77002165687060046D71F /* guiCheckBoxCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FE016518D4600D96ADF /* guiCheckBoxCtrl.cc */; };
+		86D77003165687060046D71F /* guiIconButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FE216518D4600D96ADF /* guiIconButtonCtrl.cc */; };
+		86D77004165687060046D71F /* guiRadioCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FE416518D4600D96ADF /* guiRadioCtrl.cc */; };
+		86D77005165687060046D71F /* guiToolboxButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FE616518D4600D96ADF /* guiToolboxButtonCtrl.cc */; };
+		86D77006165687060046D71F /* guiAutoScrollCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FE916518D4600D96ADF /* guiAutoScrollCtrl.cc */; };
+		86D77007165687060046D71F /* guiCtrlArrayCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FEB16518D4600D96ADF /* guiCtrlArrayCtrl.cc */; };
+		86D77008165687060046D71F /* guiDragAndDropCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FED16518D4600D96ADF /* guiDragAndDropCtrl.cc */; };
+		86D77009165687060046D71F /* guiDynamicCtrlArrayCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FEF16518D4600D96ADF /* guiDynamicCtrlArrayCtrl.cc */; };
+		86D7700A165687060046D71F /* guiFormCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FF116518D4600D96ADF /* guiFormCtrl.cc */; };
+		86D7700B165687060046D71F /* guiFrameCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FF316518D4600D96ADF /* guiFrameCtrl.cc */; };
+		86D7700C165687060046D71F /* guiPaneCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FF516518D4600D96ADF /* guiPaneCtrl.cc */; };
+		86D7700D165687060046D71F /* guiRolloutCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FF716518D4600D96ADF /* guiRolloutCtrl.cc */; };
+		86D7700E165687060046D71F /* guiScrollCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FF916518D4600D96ADF /* guiScrollCtrl.cc */; };
+		86D7700F165687060046D71F /* guiStackCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FFB16518D4600D96ADF /* guiStackCtrl.cc */; };
+		86D77010165687060046D71F /* guiTabBookCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FFD16518D4600D96ADF /* guiTabBookCtrl.cc */; };
+		86D77011165687060046D71F /* guiWindowCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC7FFF16518D4600D96ADF /* guiWindowCtrl.cc */; };
+		86D77012165687060046D71F /* guiControlListPopup.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800216518D4600D96ADF /* guiControlListPopup.cc */; };
+		86D77013165687060046D71F /* guiDebugger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800316518D4600D96ADF /* guiDebugger.cc */; };
+		86D77014165687060046D71F /* guiEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800516518D4600D96ADF /* guiEditCtrl.cc */; };
+		86D77015165687060046D71F /* guiFilterCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800716518D4600D96ADF /* guiFilterCtrl.cc */; };
+		86D77016165687060046D71F /* guiGraphCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800916518D4600D96ADF /* guiGraphCtrl.cc */; };
+		86D77017165687060046D71F /* guiImageList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800B16518D4600D96ADF /* guiImageList.cc */; };
+		86D77018165687060046D71F /* guiInspector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800D16518D4600D96ADF /* guiInspector.cc */; };
+		86D77019165687060046D71F /* guiInspectorTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC800F16518D4600D96ADF /* guiInspectorTypes.cc */; };
+		86D7701A165687060046D71F /* guiMenuBar.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801116518D4600D96ADF /* guiMenuBar.cc */; };
+		86D7701B165687060046D71F /* guiSeparatorCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801316518D4600D96ADF /* guiSeparatorCtrl.cc */; };
+		86D7701C165687060046D71F /* guiArrayCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801516518D4600D96ADF /* guiArrayCtrl.cc */; };
+		86D7701D165687060046D71F /* guiBackgroundCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801716518D4600D96ADF /* guiBackgroundCtrl.cc */; };
+		86D7701E165687060046D71F /* guiBitmapBorderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801916518D4600D96ADF /* guiBitmapBorderCtrl.cc */; };
+		86D7701F165687060046D71F /* guiBitmapCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801A16518D4600D96ADF /* guiBitmapCtrl.cc */; };
+		86D77020165687060046D71F /* guiBubbleTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801C16518D4600D96ADF /* guiBubbleTextCtrl.cc */; };
+		86D77021165687060046D71F /* guiCanvas.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC801E16518D4600D96ADF /* guiCanvas.cc */; };
+		86D77022165687060046D71F /* guiColorPicker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802016518D4600D96ADF /* guiColorPicker.cc */; };
+		86D77023165687060046D71F /* guiConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802216518D4600D96ADF /* guiConsole.cc */; };
+		86D77024165687060046D71F /* guiConsoleEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802416518D4600D96ADF /* guiConsoleEditCtrl.cc */; };
+		86D77025165687060046D71F /* guiConsoleTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802616518D4600D96ADF /* guiConsoleTextCtrl.cc */; };
+		86D77026165687060046D71F /* guiControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802816518D4600D96ADF /* guiControl.cc */; };
+		86D77027165687060046D71F /* guiDefaultControlRender.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802A16518D4600D96ADF /* guiDefaultControlRender.cc */; };
+		86D77028165687060046D71F /* guiFadeinBitmapCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802C16518D4600D96ADF /* guiFadeinBitmapCtrl.cc */; };
+		86D77029165687060046D71F /* guiInputCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802D16518D4600D96ADF /* guiInputCtrl.cc */; };
+		86D7702A165687060046D71F /* guiListBoxCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC802F16518D4600D96ADF /* guiListBoxCtrl.cc */; };
+		86D7702B165687060046D71F /* guiMessageVectorCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803116518D4600D96ADF /* guiMessageVectorCtrl.cc */; };
+		86D7702C165687060046D71F /* guiMLTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803316518D4600D96ADF /* guiMLTextCtrl.cc */; };
+		86D7702D165687060046D71F /* guiMLTextEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803516518D4600D96ADF /* guiMLTextEditCtrl.cc */; };
+		86D7702E165687060046D71F /* guiMouseEventCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803716518D4600D96ADF /* guiMouseEventCtrl.cc */; };
+		86D7702F165687060046D71F /* guiPopUpCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803916518D4600D96ADF /* guiPopUpCtrl.cc */; };
+		86D77030165687060046D71F /* guiPopUpCtrlEx.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803B16518D4600D96ADF /* guiPopUpCtrlEx.cc */; };
+		86D77031165687060046D71F /* guiProgressCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803D16518D4600D96ADF /* guiProgressCtrl.cc */; };
+		86D77032165687060046D71F /* guiScriptNotifyControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC803F16518D4600D96ADF /* guiScriptNotifyControl.cc */; };
+		86D77033165687060046D71F /* guiSliderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804116518D4600D96ADF /* guiSliderCtrl.cc */; };
+		86D77034165687060046D71F /* guiTabPageCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804316518D4600D96ADF /* guiTabPageCtrl.cc */; };
+		86D77035165687060046D71F /* guiTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804516518D4600D96ADF /* guiTextCtrl.cc */; };
+		86D77036165687060046D71F /* guiTextEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804716518D4600D96ADF /* guiTextEditCtrl.cc */; };
+		86D77037165687060046D71F /* guiTextEditSliderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804916518D4600D96ADF /* guiTextEditSliderCtrl.cc */; };
+		86D77038165687060046D71F /* guiTextListCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804B16518D4600D96ADF /* guiTextListCtrl.cc */; };
+		86D77039165687060046D71F /* guiTickCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804D16518D4600D96ADF /* guiTickCtrl.cc */; };
+		86D7703A165687060046D71F /* guiTreeViewCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC804F16518D4600D96ADF /* guiTreeViewCtrl.cc */; };
+		86D7703B165687060046D71F /* guiTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC805116518D4600D96ADF /* guiTypes.cc */; };
+		86D7703C165687060046D71F /* lang.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC805416518D4600D96ADF /* lang.cc */; };
+		86D7703D165687060046D71F /* messageVector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC805616518D4600D96ADF /* messageVector.cc */; };
+		86D7703E165687220046D71F /* actionMap.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC805916518D4600D96ADF /* actionMap.cc */; };
+		86D7703F165687220046D71F /* bitStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC805C16518D4600D96ADF /* bitStream.cc */; };
+		86D77040165687220046D71F /* bufferStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC805E16518D4600D96ADF /* bufferStream.cc */; };
+		86D77041165687220046D71F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806116518D4600D96ADF /* fileObject.cc */; };
+		86D77042165687220046D71F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806316518D4600D96ADF /* fileStream.cc */; };
+		86D77043165687220046D71F /* fileStreamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806516518D4600D96ADF /* fileStreamObject.cc */; };
+		86D77044165687220046D71F /* fileSystemFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */; };
+		86D77045165687220046D71F /* filterStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806816518D4600D96ADF /* filterStream.cc */; };
+		86D77046165687220046D71F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806A16518D4600D96ADF /* memStream.cc */; };
+		86D77047165687220046D71F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806C16518D4600D96ADF /* nStream.cc */; };
+		86D77048165687220046D71F /* resizeStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC806D16518D4600D96ADF /* resizeStream.cc */; };
+		86D77049165687220046D71F /* resourceDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807016518D4600D96ADF /* resourceDictionary.cc */; };
+		86D7704A165687220046D71F /* resourceManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807116518D4600D96ADF /* resourceManager.cc */; };
+		86D7704B165687220046D71F /* streamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807416518D4600D96ADF /* streamObject.cc */; };
+		86D7704C165687220046D71F /* centralDir.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807716518D4600D96ADF /* centralDir.cc */; };
+		86D7704D165687220046D71F /* compressor.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807916518D4600D96ADF /* compressor.cc */; };
+		86D7704E165687220046D71F /* deflate.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807B16518D4600D96ADF /* deflate.cc */; };
+		86D7704F165687220046D71F /* extraField.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807C16518D4600D96ADF /* extraField.cc */; };
+		86D77050165687220046D71F /* fileHeader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC807E16518D4600D96ADF /* fileHeader.cc */; };
+		86D77051165687220046D71F /* stored.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC808016518D4600D96ADF /* stored.cc */; };
+		86D77052165687220046D71F /* zipArchive.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC808616518D4600D96ADF /* zipArchive.cc */; };
+		86D77053165687220046D71F /* zipCryptStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC808816518D4600D96ADF /* zipCryptStream.cc */; };
+		86D77054165687220046D71F /* zipObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC808A16518D4600D96ADF /* zipObject.cc */; };
+		86D77055165687220046D71F /* zipSubStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC808D16518D4600D96ADF /* zipSubStream.cc */; };
+		86D77056165687220046D71F /* zipTempStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC808F16518D4600D96ADF /* zipTempStream.cc */; };
+		86D770571656873C0046D71F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809316518D4600D96ADF /* mathTypes.cc */; };
+		86D770581656873C0046D71F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809516518D4600D96ADF /* mathUtils.cc */; };
+		86D770591656873C0046D71F /* mBox.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809716518D4600D96ADF /* mBox.cc */; };
+		86D7705A1656873C0046D71F /* mConsoleFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809916518D4600D96ADF /* mConsoleFunctions.cc */; };
+		86D7705B1656873C0046D71F /* mMath_C.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809D16518D4600D96ADF /* mMath_C.cc */; };
+		86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC809E16518D4600D96ADF /* mMathAltivec.cc */; };
+		86D7705D1656873C0046D71F /* mMathFn.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80A116518D4600D96ADF /* mMathFn.cc */; };
+		86D7705E1656873C0046D71F /* mMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80A516518D4600D96ADF /* mMatrix.cc */; };
+		86D7705F1656873C0046D71F /* mPlaneTransformer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80A816518D4600D96ADF /* mPlaneTransformer.cc */; };
+		86D770601656873C0046D71F /* mQuadPatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80AB16518D4600D96ADF /* mQuadPatch.cc */; };
+		86D770611656873C0046D71F /* mQuat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80AD16518D4600D96ADF /* mQuat.cc */; };
+		86D770621656873C0046D71F /* mSolver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B216518D4600D96ADF /* mSolver.cc */; };
+		86D770631656873C0046D71F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B416518D4600D96ADF /* mSplinePatch.cc */; };
+		86D770641656873C0046D71F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B616518D4600D96ADF /* rectClipper.cpp */; };
+		86D770651656873C0046D71F /* dataChunker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80B916518D4600D96ADF /* dataChunker.cc */; };
+		86D770661656873C0046D71F /* frameAllocator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80BC16518D4600D96ADF /* frameAllocator.cc */; };
+		86D770671656873C0046D71F /* dispatcher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C016518D4600D96ADF /* dispatcher.cc */; };
+		86D770681656873C0046D71F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C216518D4600D96ADF /* eventManager.cc */; };
+		86D770691656873C0046D71F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C416518D4600D96ADF /* message.cc */; };
+		86D7706A1656873C0046D71F /* messageForwarder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C616518D4600D96ADF /* messageForwarder.cc */; };
+		86D7706B1656873C0046D71F /* scriptMsgListener.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80C816518D4600D96ADF /* scriptMsgListener.cc */; };
+		86D7706C1656873C0046D71F /* moduleDefinition.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80CC16518D4600D96ADF /* moduleDefinition.cc */; };
+		86D7706D1656873C0046D71F /* moduleManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80CF16518D4600D96ADF /* moduleManager.cc */; };
+		86D7706E1656873C0046D71F /* moduleMergeDefinition.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80D216518D4600D96ADF /* moduleMergeDefinition.cc */; };
+		86D7706F1656873C0046D71F /* networkProcessList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 864ECFED165279E100012416 /* networkProcessList.cc */; };
+		86D770701656873C0046D71F /* connectionProtocol.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80D616518D4600D96ADF /* connectionProtocol.cc */; };
+		86D770711656873C0046D71F /* connectionStringTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80D816518D4600D96ADF /* connectionStringTable.cc */; };
+		86D770721656873C0046D71F /* httpObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80DA16518D4600D96ADF /* httpObject.cc */; };
+		86D770731656873C0046D71F /* netConnection.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80DC16518D4600D96ADF /* netConnection.cc */; };
+		86D770741656873C0046D71F /* netDownload.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80DE16518D4600D96ADF /* netDownload.cc */; };
+		86D770751656873C0046D71F /* netEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80DF16518D4600D96ADF /* netEvent.cc */; };
+		86D770761656873C0046D71F /* netGhost.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E016518D4600D96ADF /* netGhost.cc */; };
+		86D770771656873C0046D71F /* netInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E116518D4600D96ADF /* netInterface.cc */; };
+		86D770781656873C0046D71F /* netObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E316518D4600D96ADF /* netObject.cc */; };
+		86D770791656873C0046D71F /* netStringTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E516518D4600D96ADF /* netStringTable.cc */; };
+		86D7707A1656873C0046D71F /* netTest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E716518D4600D96ADF /* netTest.cc */; };
+		86D7707B1656873C0046D71F /* RemoteCommandEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E816518D4600D96ADF /* RemoteCommandEvent.cc */; };
+		86D7707C1656873C0046D71F /* serverQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80E916518D4600D96ADF /* serverQuery.cc */; };
+		86D7707D1656873C0046D71F /* tcpObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80EB16518D4600D96ADF /* tcpObject.cc */; };
+		86D7707E1656873C0046D71F /* telnetConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80ED16518D4600D96ADF /* telnetConsole.cc */; };
+		86D7707F1656873C0046D71F /* SimXMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */; };
+		86D770801656873C0046D71F /* taml.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F316518D4600D96ADF /* taml.cc */; };
+		86D770811656873C0046D71F /* tamlBinaryReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F616518D4600D96ADF /* tamlBinaryReader.cc */; };
+		86D770821656873C0046D71F /* tamlBinaryWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80F816518D4600D96ADF /* tamlBinaryWriter.cc */; };
+		86D770841656873C0046D71F /* tamlWriteNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */; };
+		86D770851656873C0046D71F /* tamlXmlParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC80FF16518D4600D96ADF /* tamlXmlParser.cc */; };
+		86D770861656873C0046D71F /* tamlXmlReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810116518D4600D96ADF /* tamlXmlReader.cc */; };
+		86D770871656873C0046D71F /* tamlXmlWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810416518D4600D96ADF /* tamlXmlWriter.cc */; };
+		86D770881656873C0046D71F /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810716518D4600D96ADF /* tinystr.cpp */; };
+		86D770891656873C0046D71F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810916518D4600D96ADF /* tinyxml.cpp */; };
+		86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810B16518D4600D96ADF /* tinyxmlerror.cpp */; };
+		86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC810C16518D4600D96ADF /* tinyxmlparser.cpp */; };
+		86D7708C1656873C0046D71F /* platformNetwork.cc in Sources */ = {isa = PBXBuildFile; fileRef = 864ECFEB1652795700012416 /* platformNetwork.cc */; };
+		86D7708D1656873C0046D71F /* CursorManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834C16518FE800D96ADF /* CursorManager.cc */; };
+		86D7708E1656873C0046D71F /* platform.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834D16518FE800D96ADF /* platform.cc */; };
+		86D7708F1656873C0046D71F /* platformAssert.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834E16518FE800D96ADF /* platformAssert.cc */; };
+		86D770901656873C0046D71F /* platformCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834F16518FE800D96ADF /* platformCPU.cc */; };
+		86D770911656873C0046D71F /* platformFileIO.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC835016518FE800D96ADF /* platformFileIO.cc */; };
+		86D770921656873C0046D71F /* platformFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834416518FE800D96ADF /* platformFont.cc */; };
+		86D770931656873C0046D71F /* platformMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC835116518FE800D96ADF /* platformMemory.cc */; };
+		86D770941656873C0046D71F /* platformNetAsync.unix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC835216518FE800D96ADF /* platformNetAsync.unix.cc */; };
+		86D770951656873C0046D71F /* platformString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC835316518FE800D96ADF /* platformString.cc */; };
+		86D770961656873C0046D71F /* platformVideo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC835416518FE800D96ADF /* platformVideo.cc */; };
+		86D770971656873C0046D71F /* Tickable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC834A16518FE800D96ADF /* Tickable.cc */; };
+		86D770981656873C0046D71F /* popupMenu.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC833816518FB100D96ADF /* popupMenu.cc */; };
+		86D770991656873C0046D71F /* msgBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC833B16518FBC00D96ADF /* msgBox.cpp */; };
+		86D770AA1656873C0046D71F /* scriptGroup.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC812D16518D4600D96ADF /* scriptGroup.cc */; };
+		86D770AB1656873C0046D71F /* scriptObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC812F16518D4600D96ADF /* scriptObject.cc */; };
+		86D770AC1656873C0046D71F /* simBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813116518D4600D96ADF /* simBase.cc */; };
+		86D770AD1656873C0046D71F /* simConsoleEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813316518D4600D96ADF /* simConsoleEvent.cc */; };
+		86D770AE1656873C0046D71F /* simConsoleThreadExecEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813516518D4600D96ADF /* simConsoleThreadExecEvent.cc */; };
+		86D770AF1656873C0046D71F /* simDatablock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813716518D4600D96ADF /* simDatablock.cc */; };
+		86D770B01656873C0046D71F /* simDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813A16518D4600D96ADF /* simDictionary.cc */; };
+		86D770B11656873C0046D71F /* simFieldDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813D16518D4600D96ADF /* simFieldDictionary.cc */; };
+		86D770B21656873C0046D71F /* simManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC813F16518D4600D96ADF /* simManager.cc */; };
+		86D770B31656873C0046D71F /* simObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814016518D4600D96ADF /* simObject.cc */; };
+		86D770B41656873C0046D71F /* SimObjectList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814216518D4600D96ADF /* SimObjectList.cc */; };
+		86D770B51656873C0046D71F /* simSerialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814516518D4600D96ADF /* simSerialize.cpp */; };
+		86D770B61656873C0046D71F /* simSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814616518D4600D96ADF /* simSet.cc */; };
+		86D770B71656873C0046D71F /* findMatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814916518D4600D96ADF /* findMatch.cc */; };
+		86D770B81656873C0046D71F /* stringBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814B16518D4600D96ADF /* stringBuffer.cc */; };
+		86D770B91656873C0046D71F /* stringStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814D16518D4600D96ADF /* stringStack.cc */; };
+		86D770BA1656873C0046D71F /* stringTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC814F16518D4600D96ADF /* stringTable.cc */; };
+		86D770BB1656873C0046D71F /* stringUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BC815116518D4600D96ADF /* stringUnit.cpp */; };
+		86D770BC1656873C0046D71F /* unicode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 86BC815316518D4600D96ADF /* unicode.cc */; };
+		86D770C3165687450046D71F /* osxFileDialogs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8609FE3216556F22004662ED /* osxFileDialogs.mm */; };
+		86EA5B401678C7C700598E68 /* osxCocoaUtilities.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */; };
+		86EC5AC7165C1E0100757872 /* osxTorqueView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86EC5AC6165C1E0100757872 /* osxTorqueView.mm */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		2A03300B165D1D2100E9CD70 /* unitTesting.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = unitTesting.cc; path = ../../../source/testing/unitTesting.cc; sourceTree = "<group>"; };
+		2A03300C165D1D2100E9CD70 /* unitTesting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = unitTesting.h; path = ../../../source/testing/unitTesting.h; sourceTree = "<group>"; };
+		2A033010165D1D4100E9CD70 /* platformFileIoTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformFileIoTests.cc; path = ../../../source/testing/tests/platformFileIoTests.cc; sourceTree = "<group>"; };
+		2A0A68DF166E268E0093AD41 /* osxFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxFont.h; sourceTree = "<group>"; };
+		2A25738D16A48DAC00363C6F /* ParticlePlayer_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticlePlayer_ScriptBinding.h; sourceTree = "<group>"; };
+		2A25738E16A48DAC00363C6F /* ParticlePlayer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticlePlayer.cc; sourceTree = "<group>"; };
+		2A25738F16A48DAC00363C6F /* ParticlePlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticlePlayer.h; sourceTree = "<group>"; };
+		2A6F78CC16A4528C005C76D9 /* ParticleAssetEmitter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAssetEmitter.cc; sourceTree = "<group>"; };
+		2A6F78CD16A4528C005C76D9 /* ParticleAssetEmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetEmitter.h; sourceTree = "<group>"; };
+		2AB97A1B16B66BC70080F940 /* tamlCustom.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlCustom.cc; sourceTree = "<group>"; };
+		2AB97A1C16B66BC70080F940 /* tamlCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCustom.h; sourceTree = "<group>"; };
+		2ABF5C8E16569A0C00BBBF1D /* osxMutex.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxMutex.mm; sourceTree = "<group>"; };
+		2AC4404216B0142B00FC4091 /* ImageFont_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont_ScriptBinding.h; sourceTree = "<group>"; };
+		2AC4404316B0142B00FC4091 /* ImageFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageFont.cc; sourceTree = "<group>"; };
+		2AC4404416B0142B00FC4091 /* ImageFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont.h; sourceTree = "<group>"; };
+		2AC5C7E71667C85700A0D046 /* platformStringTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformStringTests.cc; path = ../../../source/testing/tests/platformStringTests.cc; sourceTree = "<group>"; };
+		2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = platformMemoryTests.cc; path = ../../../source/testing/tests/platformMemoryTests.cc; sourceTree = "<group>"; };
+		2AD35A541663608E00C75F30 /* platformFileIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFileIO.h; sourceTree = "<group>"; };
+		2ADCAC0E16A41E4400E07619 /* tamlChildren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlChildren.h; sourceTree = "<group>"; };
+		2ADCAC1016A41E5500E07619 /* ParticleAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAsset_ScriptBinding.h; sourceTree = "<group>"; };
+		2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAsset.cc; sourceTree = "<group>"; };
+		2ADCAC1216A41E5500E07619 /* ParticleAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAsset.h; sourceTree = "<group>"; };
+		2ADCAC1316A41E5500E07619 /* ParticleAssetField.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAssetField.cc; sourceTree = "<group>"; };
+		2ADCAC1416A41E5500E07619 /* ParticleAssetField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetField.h; sourceTree = "<group>"; };
+		2AE5B54016A6D860006908D5 /* ParticleAssetFieldCollection.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAssetFieldCollection.cc; sourceTree = "<group>"; };
+		2AE5B54116A6D860006908D5 /* ParticleAssetFieldCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetFieldCollection.h; sourceTree = "<group>"; };
+		2AE851D11681E56E00193F17 /* color.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = color.cc; sourceTree = "<group>"; };
+		2AF1C53C16B439BB00C1CF3A /* declaredAssets.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = declaredAssets.cc; sourceTree = "<group>"; };
+		2AF1C53D16B439BB00C1CF3A /* declaredAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = declaredAssets.h; sourceTree = "<group>"; };
+		2AF1C53E16B439BB00C1CF3A /* referencedAssets.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = referencedAssets.cc; sourceTree = "<group>"; };
+		2AF1C53F16B439BB00C1CF3A /* referencedAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = referencedAssets.h; sourceTree = "<group>"; };
+		2AF3633716A9BBE0004ED7AA /* ParticleSystem.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleSystem.cc; sourceTree = "<group>"; };
+		2AF3633816A9BBE0004ED7AA /* ParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleSystem.h; sourceTree = "<group>"; };
+		2AF80CFF16A80CB400CE13F1 /* ParticleAssetEmitter_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetEmitter_ScriptBinding.h; sourceTree = "<group>"; };
+		86063A231654180000362D83 /* platformOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformOSX.h; sourceTree = "<group>"; };
+		86063A241654180000362D83 /* platformOSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = platformOSX.mm; sourceTree = "<group>"; };
+		8609FE2E16556DD2004662ED /* osxSemaphore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxSemaphore.mm; sourceTree = "<group>"; };
+		8609FE3016556E5A004662ED /* osxThread.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxThread.mm; sourceTree = "<group>"; };
+		8609FE3216556F22004662ED /* osxFileDialogs.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxFileDialogs.mm; sourceTree = "<group>"; };
+		8609FE351655716E004662ED /* osxPopupMenu.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxPopupMenu.mm; sourceTree = "<group>"; };
+		8609FE37165572EC004662ED /* osxFont.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxFont.mm; sourceTree = "<group>"; };
+		861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileDialog_ScriptBinding.h; sourceTree = "<group>"; };
+		861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileDialog.cc; sourceTree = "<group>"; };
+		864ECFEA1652795700012416 /* platform_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_ScriptBinding.h; sourceTree = "<group>"; };
+		864ECFEB1652795700012416 /* platformNetwork.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetwork.cc; sourceTree = "<group>"; };
+		864ECFED165279E100012416 /* networkProcessList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = networkProcessList.cc; sourceTree = "<group>"; };
+		864ECFEE165279E100012416 /* networkProcessList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = networkProcessList.h; sourceTree = "<group>"; };
+		864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameInterface_ScriptBinding.h; sourceTree = "<group>"; };
+		8652C278165586520052D0CB /* osxAudio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxAudio.mm; sourceTree = "<group>"; };
+		8658B171165A7BFB0087ABC1 /* osxCPU.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxCPU.mm; sourceTree = "<group>"; };
+		8658B172165A7BFB0087ABC1 /* osxNetwork.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxNetwork.mm; sourceTree = "<group>"; };
+		8658B173165A7BFB0087ABC1 /* osxString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxString.mm; sourceTree = "<group>"; };
+		865A20B01651530B00527C44 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Config.xcconfig; path = Torque2D/Config.xcconfig; sourceTree = "<group>"; };
+		865A20BE165158CA00527C44 /* torque2d.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = torque2d.icns; path = Torque2D/torque2d.icns; sourceTree = "<group>"; };
+		865A20C116515ACE00527C44 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		865A20C216515ACE00527C44 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		865A20C316515ACE00527C44 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+		865A20C416515ACE00527C44 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
+		865A21E9165187B600527C44 /* Box2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Box2D.h; sourceTree = "<group>"; };
+		865A21EB165187B600527C44 /* b2BroadPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BroadPhase.cpp; sourceTree = "<group>"; };
+		865A21EC165187B600527C44 /* b2BroadPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BroadPhase.h; sourceTree = "<group>"; };
+		865A21ED165187B600527C44 /* b2CollideCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideCircle.cpp; sourceTree = "<group>"; };
+		865A21EE165187B600527C44 /* b2CollideEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideEdge.cpp; sourceTree = "<group>"; };
+		865A21EF165187B600527C44 /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollidePolygon.cpp; sourceTree = "<group>"; };
+		865A21F0165187B600527C44 /* b2Collision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Collision.cpp; sourceTree = "<group>"; };
+		865A21F1165187B600527C44 /* b2Collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
+		865A21F2165187B600527C44 /* b2Distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Distance.cpp; sourceTree = "<group>"; };
+		865A21F3165187B600527C44 /* b2Distance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Distance.h; sourceTree = "<group>"; };
+		865A21F4165187B600527C44 /* b2DynamicTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DynamicTree.cpp; sourceTree = "<group>"; };
+		865A21F5165187B600527C44 /* b2DynamicTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DynamicTree.h; sourceTree = "<group>"; };
+		865A21F6165187B600527C44 /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TimeOfImpact.cpp; sourceTree = "<group>"; };
+		865A21F7165187B600527C44 /* b2TimeOfImpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeOfImpact.h; sourceTree = "<group>"; };
+		865A21F9165187B600527C44 /* b2ChainShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainShape.cpp; sourceTree = "<group>"; };
+		865A21FA165187B600527C44 /* b2ChainShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainShape.h; sourceTree = "<group>"; };
+		865A21FB165187B600527C44 /* b2CircleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleShape.cpp; sourceTree = "<group>"; };
+		865A21FC165187B600527C44 /* b2CircleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleShape.h; sourceTree = "<group>"; };
+		865A21FD165187B600527C44 /* b2EdgeShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeShape.cpp; sourceTree = "<group>"; };
+		865A21FE165187B600527C44 /* b2EdgeShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeShape.h; sourceTree = "<group>"; };
+		865A21FF165187B600527C44 /* b2PolygonShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonShape.cpp; sourceTree = "<group>"; };
+		865A2200165187B600527C44 /* b2PolygonShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonShape.h; sourceTree = "<group>"; };
+		865A2201165187B600527C44 /* b2Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Shape.h; sourceTree = "<group>"; };
+		865A2203165187B600527C44 /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BlockAllocator.cpp; sourceTree = "<group>"; };
+		865A2204165187B600527C44 /* b2BlockAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BlockAllocator.h; sourceTree = "<group>"; };
+		865A2205165187B600527C44 /* b2Draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Draw.cpp; sourceTree = "<group>"; };
+		865A2206165187B600527C44 /* b2Draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Draw.h; sourceTree = "<group>"; };
+		865A2207165187B600527C44 /* b2GrowableStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GrowableStack.h; sourceTree = "<group>"; };
+		865A2208165187B600527C44 /* b2Math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Math.cpp; sourceTree = "<group>"; };
+		865A2209165187B600527C44 /* b2Math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Math.h; sourceTree = "<group>"; };
+		865A220A165187B600527C44 /* b2Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Settings.cpp; sourceTree = "<group>"; };
+		865A220B165187B600527C44 /* b2Settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Settings.h; sourceTree = "<group>"; };
+		865A220C165187B600527C44 /* b2StackAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2StackAllocator.cpp; sourceTree = "<group>"; };
+		865A220D165187B600527C44 /* b2StackAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2StackAllocator.h; sourceTree = "<group>"; };
+		865A220E165187B600527C44 /* b2Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Timer.cpp; sourceTree = "<group>"; };
+		865A220F165187B600527C44 /* b2Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Timer.h; sourceTree = "<group>"; };
+		865A2211165187B600527C44 /* b2Body.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Body.cpp; sourceTree = "<group>"; };
+		865A2212165187B600527C44 /* b2Body.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Body.h; sourceTree = "<group>"; };
+		865A2213165187B600527C44 /* b2ContactManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactManager.cpp; sourceTree = "<group>"; };
+		865A2214165187B600527C44 /* b2ContactManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactManager.h; sourceTree = "<group>"; };
+		865A2215165187B600527C44 /* b2Fixture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Fixture.cpp; sourceTree = "<group>"; };
+		865A2216165187B600527C44 /* b2Fixture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Fixture.h; sourceTree = "<group>"; };
+		865A2217165187B600527C44 /* b2Island.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
+		865A2218165187B600527C44 /* b2Island.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Island.h; sourceTree = "<group>"; };
+		865A2219165187B600527C44 /* b2TimeStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeStep.h; sourceTree = "<group>"; };
+		865A221A165187B600527C44 /* b2World.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2World.cpp; sourceTree = "<group>"; };
+		865A221B165187B600527C44 /* b2World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2World.h; sourceTree = "<group>"; };
+		865A221C165187B600527C44 /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WorldCallbacks.cpp; sourceTree = "<group>"; };
+		865A221D165187B600527C44 /* b2WorldCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WorldCallbacks.h; sourceTree = "<group>"; };
+		865A221F165187B600527C44 /* b2ChainAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndCircleContact.cpp; sourceTree = "<group>"; };
+		865A2220165187B600527C44 /* b2ChainAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainAndCircleContact.h; sourceTree = "<group>"; };
+		865A2221165187B600527C44 /* b2ChainAndPolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndPolygonContact.cpp; sourceTree = "<group>"; };
+		865A2222165187B600527C44 /* b2ChainAndPolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainAndPolygonContact.h; sourceTree = "<group>"; };
+		865A2223165187B600527C44 /* b2CircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
+		865A2224165187B600527C44 /* b2CircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleContact.h; sourceTree = "<group>"; };
+		865A2225165187B600527C44 /* b2Contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Contact.cpp; sourceTree = "<group>"; };
+		865A2226165187B600527C44 /* b2Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Contact.h; sourceTree = "<group>"; };
+		865A2227165187B600527C44 /* b2ContactSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactSolver.cpp; sourceTree = "<group>"; };
+		865A2228165187B600527C44 /* b2ContactSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactSolver.h; sourceTree = "<group>"; };
+		865A2229165187B600527C44 /* b2EdgeAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndCircleContact.cpp; sourceTree = "<group>"; };
+		865A222A165187B600527C44 /* b2EdgeAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndCircleContact.h; sourceTree = "<group>"; };
+		865A222B165187B600527C44 /* b2EdgeAndPolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndPolygonContact.cpp; sourceTree = "<group>"; };
+		865A222C165187B600527C44 /* b2EdgeAndPolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndPolygonContact.h; sourceTree = "<group>"; };
+		865A222D165187B600527C44 /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonAndCircleContact.cpp; sourceTree = "<group>"; };
+		865A222E165187B600527C44 /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonAndCircleContact.h; sourceTree = "<group>"; };
+		865A222F165187B600527C44 /* b2PolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonContact.cpp; sourceTree = "<group>"; };
+		865A2230165187B600527C44 /* b2PolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonContact.h; sourceTree = "<group>"; };
+		865A2232165187B600527C44 /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DistanceJoint.cpp; sourceTree = "<group>"; };
+		865A2233165187B600527C44 /* b2DistanceJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DistanceJoint.h; sourceTree = "<group>"; };
+		865A2234165187B600527C44 /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2FrictionJoint.cpp; sourceTree = "<group>"; };
+		865A2235165187B600527C44 /* b2FrictionJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2FrictionJoint.h; sourceTree = "<group>"; };
+		865A2236165187B600527C44 /* b2GearJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2GearJoint.cpp; sourceTree = "<group>"; };
+		865A2237165187B600527C44 /* b2GearJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GearJoint.h; sourceTree = "<group>"; };
+		865A2238165187B600527C44 /* b2Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Joint.cpp; sourceTree = "<group>"; };
+		865A2239165187B600527C44 /* b2Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Joint.h; sourceTree = "<group>"; };
+		865A223A165187B600527C44 /* b2MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MotorJoint.cpp; sourceTree = "<group>"; };
+		865A223B165187B600527C44 /* b2MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MotorJoint.h; sourceTree = "<group>"; };
+		865A223C165187B600527C44 /* b2MouseJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MouseJoint.cpp; sourceTree = "<group>"; };
+		865A223D165187B600527C44 /* b2MouseJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MouseJoint.h; sourceTree = "<group>"; };
+		865A223E165187B600527C44 /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
+		865A223F165187B600527C44 /* b2PrismaticJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PrismaticJoint.h; sourceTree = "<group>"; };
+		865A2240165187B600527C44 /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PulleyJoint.cpp; sourceTree = "<group>"; };
+		865A2241165187B600527C44 /* b2PulleyJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PulleyJoint.h; sourceTree = "<group>"; };
+		865A2242165187B600527C44 /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RevoluteJoint.cpp; sourceTree = "<group>"; };
+		865A2243165187B600527C44 /* b2RevoluteJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RevoluteJoint.h; sourceTree = "<group>"; };
+		865A2244165187B600527C44 /* b2RopeJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RopeJoint.cpp; sourceTree = "<group>"; };
+		865A2245165187B600527C44 /* b2RopeJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RopeJoint.h; sourceTree = "<group>"; };
+		865A2246165187B600527C44 /* b2WeldJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WeldJoint.cpp; sourceTree = "<group>"; };
+		865A2247165187B600527C44 /* b2WeldJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WeldJoint.h; sourceTree = "<group>"; };
+		865A2248165187B600527C44 /* b2WheelJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WheelJoint.cpp; sourceTree = "<group>"; };
+		865A2249165187B600527C44 /* b2WheelJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WheelJoint.h; sourceTree = "<group>"; };
+		865A2279165187B600527C44 /* b2Rope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Rope.cpp; sourceTree = "<group>"; };
+		865A227A165187B600527C44 /* b2Rope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Rope.h; sourceTree = "<group>"; };
+		865A22D7165187FF00527C44 /* jcapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = ../../lib/ljpeg/jcapimin.c; sourceTree = "<group>"; };
+		865A22D8165187FF00527C44 /* jcapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = ../../lib/ljpeg/jcapistd.c; sourceTree = "<group>"; };
+		865A22D9165187FF00527C44 /* jccoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jccoefct.c; path = ../../lib/ljpeg/jccoefct.c; sourceTree = "<group>"; };
+		865A22DA165187FF00527C44 /* jccolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = ../../lib/ljpeg/jccolor.c; sourceTree = "<group>"; };
+		865A22DB165187FF00527C44 /* jcdctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcdctmgr.c; path = ../../lib/ljpeg/jcdctmgr.c; sourceTree = "<group>"; };
+		865A22DC165187FF00527C44 /* jchuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = ../../lib/ljpeg/jchuff.c; sourceTree = "<group>"; };
+		865A22DD165187FF00527C44 /* jcinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcinit.c; path = ../../lib/ljpeg/jcinit.c; sourceTree = "<group>"; };
+		865A22DE165187FF00527C44 /* jcmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmainct.c; path = ../../lib/ljpeg/jcmainct.c; sourceTree = "<group>"; };
+		865A22DF165187FF00527C44 /* jcmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmarker.c; path = ../../lib/ljpeg/jcmarker.c; sourceTree = "<group>"; };
+		865A22E0165187FF00527C44 /* jcmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmaster.c; path = ../../lib/ljpeg/jcmaster.c; sourceTree = "<group>"; };
+		865A22E1165187FF00527C44 /* jcomapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = ../../lib/ljpeg/jcomapi.c; sourceTree = "<group>"; };
+		865A22E2165187FF00527C44 /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = ../../lib/ljpeg/jcparam.c; sourceTree = "<group>"; };
+		865A22E3165187FF00527C44 /* jcphuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = ../../lib/ljpeg/jcphuff.c; sourceTree = "<group>"; };
+		865A22E4165187FF00527C44 /* jcprepct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = ../../lib/ljpeg/jcprepct.c; sourceTree = "<group>"; };
+		865A22E5165187FF00527C44 /* jcsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = ../../lib/ljpeg/jcsample.c; sourceTree = "<group>"; };
+		865A22E6165187FF00527C44 /* jctrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = ../../lib/ljpeg/jctrans.c; sourceTree = "<group>"; };
+		865A22E7165187FF00527C44 /* jdapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = ../../lib/ljpeg/jdapimin.c; sourceTree = "<group>"; };
+		865A22E8165187FF00527C44 /* jdapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdapistd.c; path = ../../lib/ljpeg/jdapistd.c; sourceTree = "<group>"; };
+		865A22E9165187FF00527C44 /* jdatadst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdatadst.c; path = ../../lib/ljpeg/jdatadst.c; sourceTree = "<group>"; };
+		865A22EA165187FF00527C44 /* jdatasrc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = ../../lib/ljpeg/jdatasrc.c; sourceTree = "<group>"; };
+		865A22EB165187FF00527C44 /* jdcoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = ../../lib/ljpeg/jdcoefct.c; sourceTree = "<group>"; };
+		865A22EC165187FF00527C44 /* jdcolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdcolor.c; path = ../../lib/ljpeg/jdcolor.c; sourceTree = "<group>"; };
+		865A22ED165187FF00527C44 /* jddctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = ../../lib/ljpeg/jddctmgr.c; sourceTree = "<group>"; };
+		865A22EE165187FF00527C44 /* jdhuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = ../../lib/ljpeg/jdhuff.c; sourceTree = "<group>"; };
+		865A22EF165187FF00527C44 /* jdinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdinput.c; path = ../../lib/ljpeg/jdinput.c; sourceTree = "<group>"; };
+		865A22F0165187FF00527C44 /* jdmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmainct.c; path = ../../lib/ljpeg/jdmainct.c; sourceTree = "<group>"; };
+		865A22F1165187FF00527C44 /* jdmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmarker.c; path = ../../lib/ljpeg/jdmarker.c; sourceTree = "<group>"; };
+		865A22F2165187FF00527C44 /* jdmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmaster.c; path = ../../lib/ljpeg/jdmaster.c; sourceTree = "<group>"; };
+		865A22F3165187FF00527C44 /* jdmerge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmerge.c; path = ../../lib/ljpeg/jdmerge.c; sourceTree = "<group>"; };
+		865A22F4165187FF00527C44 /* jdphuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdphuff.c; path = ../../lib/ljpeg/jdphuff.c; sourceTree = "<group>"; };
+		865A22F5165187FF00527C44 /* jdpostct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = ../../lib/ljpeg/jdpostct.c; sourceTree = "<group>"; };
+		865A22F6165187FF00527C44 /* jdsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdsample.c; path = ../../lib/ljpeg/jdsample.c; sourceTree = "<group>"; };
+		865A22F7165187FF00527C44 /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdtrans.c; path = ../../lib/ljpeg/jdtrans.c; sourceTree = "<group>"; };
+		865A22F8165187FF00527C44 /* jerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jerror.c; path = ../../lib/ljpeg/jerror.c; sourceTree = "<group>"; };
+		865A22F9165187FF00527C44 /* jfdctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctflt.c; path = ../../lib/ljpeg/jfdctflt.c; sourceTree = "<group>"; };
+		865A22FA165187FF00527C44 /* jfdctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctfst.c; path = ../../lib/ljpeg/jfdctfst.c; sourceTree = "<group>"; };
+		865A22FB165187FF00527C44 /* jfdctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctint.c; path = ../../lib/ljpeg/jfdctint.c; sourceTree = "<group>"; };
+		865A22FC165187FF00527C44 /* jidctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = ../../lib/ljpeg/jidctflt.c; sourceTree = "<group>"; };
+		865A22FD165187FF00527C44 /* jidctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = ../../lib/ljpeg/jidctfst.c; sourceTree = "<group>"; };
+		865A22FE165187FF00527C44 /* jidctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctint.c; path = ../../lib/ljpeg/jidctint.c; sourceTree = "<group>"; };
+		865A22FF165187FF00527C44 /* jidctred.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctred.c; path = ../../lib/ljpeg/jidctred.c; sourceTree = "<group>"; };
+		865A2300165187FF00527C44 /* jmemansi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jmemansi.c; path = ../../lib/ljpeg/jmemansi.c; sourceTree = "<group>"; };
+		865A2301165187FF00527C44 /* jmemmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jmemmgr.c; path = ../../lib/ljpeg/jmemmgr.c; sourceTree = "<group>"; };
+		865A2302165187FF00527C44 /* jquant1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jquant1.c; path = ../../lib/ljpeg/jquant1.c; sourceTree = "<group>"; };
+		865A2303165187FF00527C44 /* jquant2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = ../../lib/ljpeg/jquant2.c; sourceTree = "<group>"; };
+		865A2304165187FF00527C44 /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = ../../lib/ljpeg/jutils.c; sourceTree = "<group>"; };
+		865A23331651881300527C44 /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../../lib/lpng/png.c; sourceTree = "<group>"; };
+		865A23341651881300527C44 /* pngerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngerror.c; path = ../../lib/lpng/pngerror.c; sourceTree = "<group>"; };
+		865A23351651881300527C44 /* pngget.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = ../../lib/lpng/pngget.c; sourceTree = "<group>"; };
+		865A23361651881300527C44 /* pngmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngmem.c; path = ../../lib/lpng/pngmem.c; sourceTree = "<group>"; };
+		865A23371651881300527C44 /* pngpread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = ../../lib/lpng/pngpread.c; sourceTree = "<group>"; };
+		865A23381651881300527C44 /* pngread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngread.c; path = ../../lib/lpng/pngread.c; sourceTree = "<group>"; };
+		865A23391651881300527C44 /* pngrio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = ../../lib/lpng/pngrio.c; sourceTree = "<group>"; };
+		865A233A1651881300527C44 /* pngrtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrtran.c; path = ../../lib/lpng/pngrtran.c; sourceTree = "<group>"; };
+		865A233B1651881300527C44 /* pngrutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = ../../lib/lpng/pngrutil.c; sourceTree = "<group>"; };
+		865A233C1651881300527C44 /* pngset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngset.c; path = ../../lib/lpng/pngset.c; sourceTree = "<group>"; };
+		865A233D1651881300527C44 /* pngtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = ../../lib/lpng/pngtrans.c; sourceTree = "<group>"; };
+		865A233E1651881300527C44 /* pngwio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = ../../lib/lpng/pngwio.c; sourceTree = "<group>"; };
+		865A233F1651881300527C44 /* pngwrite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwrite.c; path = ../../lib/lpng/pngwrite.c; sourceTree = "<group>"; };
+		865A23401651881300527C44 /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../lib/lpng/pngwtran.c; sourceTree = "<group>"; };
+		865A23411651881300527C44 /* pngwutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwutil.c; path = ../../lib/lpng/pngwutil.c; sourceTree = "<group>"; };
+		865A235716518AD300527C44 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		865A235816518AD300527C44 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = "<group>"; };
+		865A235916518AD300527C44 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
+		865BD2F6166FA6460064F595 /* osxInputManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxInputManager.h; sourceTree = "<group>"; };
+		865BD2F8166FA7F80064F595 /* osxInputManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxInputManager.mm; sourceTree = "<group>"; };
+		8660471D16557B3000A67DE6 /* osxMath_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxMath_ScriptBinding.h; sourceTree = "<group>"; };
+		866381D7165550FF00C8C551 /* osxFileIO.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxFileIO.mm; sourceTree = "<group>"; };
+		866381D91655562400C8C551 /* osxMemory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxMemory.mm; sourceTree = "<group>"; };
+		866381DB165556AD00C8C551 /* osxMath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxMath.mm; sourceTree = "<group>"; };
+		866381E41655615200C8C551 /* osxInput.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxInput.mm; sourceTree = "<group>"; };
+		866381E81655674B00C8C551 /* osxTime.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxTime.mm; sourceTree = "<group>"; };
+		86854E321663AAE6009FAFB2 /* osxOpenGLDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxOpenGLDevice.h; sourceTree = "<group>"; };
+		86854E331663AAE6009FAFB2 /* osxOpenGLDevice.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxOpenGLDevice.mm; sourceTree = "<group>"; };
+		8694ADC41656B06B0080ABAC /* osxEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxEvents.h; sourceTree = "<group>"; };
+		8694ADC51656B06B0080ABAC /* osxEvents.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxEvents.mm; sourceTree = "<group>"; };
+		8694ADC61656B06B0080ABAC /* osxWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxWindow.mm; sourceTree = "<group>"; };
+		8694ADD01656B7FC0080ABAC /* osxVideo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxVideo.mm; sourceTree = "<group>"; };
+		8694ADD41656BDE60080ABAC /* osxGL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxGL.mm; sourceTree = "<group>"; };
+		869FF8B81651518C002FE082 /* Torque2D_DEBUG.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Torque2D_DEBUG.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		869FF8BC1651518C002FE082 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+		869FF8BF1651518C002FE082 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
+		869FF8C01651518C002FE082 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
+		869FF8C11651518C002FE082 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		86BC7E7716518D4600D96ADF /* AnimationAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationAsset.cc; sourceTree = "<group>"; };
+		86BC7E7816518D4600D96ADF /* AnimationAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationAsset.h; sourceTree = "<group>"; };
+		86BC7E7916518D4600D96ADF /* AnimationAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationAsset_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7E7A16518D4600D96ADF /* AnimationController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationController.cc; sourceTree = "<group>"; };
+		86BC7E7B16518D4600D96ADF /* AnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationController.h; sourceTree = "<group>"; };
+		86BC7E7C16518D4600D96ADF /* ImageAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageAsset.cc; sourceTree = "<group>"; };
+		86BC7E7D16518D4600D96ADF /* ImageAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageAsset.h; sourceTree = "<group>"; };
+		86BC7E7E16518D4600D96ADF /* ImageAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageAsset_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7E8116518D4600D96ADF /* BatchRender.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BatchRender.cc; sourceTree = "<group>"; };
+		86BC7E8216518D4600D96ADF /* BatchRender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchRender.h; sourceTree = "<group>"; };
+		86BC7E8316518D4600D96ADF /* CoreMath.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CoreMath.cc; sourceTree = "<group>"; };
+		86BC7E8416518D4600D96ADF /* CoreMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreMath.h; sourceTree = "<group>"; };
+		86BC7E8516518D4600D96ADF /* RenderProxy.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderProxy.cc; sourceTree = "<group>"; };
+		86BC7E8616518D4600D96ADF /* RenderProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderProxy.h; sourceTree = "<group>"; };
+		86BC7E8716518D4600D96ADF /* RenderProxy_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderProxy_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7E8816518D4600D96ADF /* SpriteBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBase.cc; sourceTree = "<group>"; };
+		86BC7E8916518D4600D96ADF /* SpriteBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBase.h; sourceTree = "<group>"; };
+		86BC7E8A16518D4600D96ADF /* SpriteBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBase_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7E8B16518D4600D96ADF /* SpriteBatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatch.cc; sourceTree = "<group>"; };
+		86BC7E8C16518D4600D96ADF /* SpriteBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatch.h; sourceTree = "<group>"; };
+		86BC7E8D16518D4600D96ADF /* SpriteBatchItem.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatchItem.cc; sourceTree = "<group>"; };
+		86BC7E8E16518D4600D96ADF /* SpriteBatchItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchItem.h; sourceTree = "<group>"; };
+		86BC7E8F16518D4600D96ADF /* SpriteProxyBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteProxyBase.cc; sourceTree = "<group>"; };
+		86BC7E9016518D4600D96ADF /* SpriteProxyBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteProxyBase.h; sourceTree = "<group>"; };
+		86BC7E9116518D4600D96ADF /* Utility.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Utility.cc; sourceTree = "<group>"; };
+		86BC7E9216518D4600D96ADF /* Utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utility.h; sourceTree = "<group>"; };
+		86BC7E9316518D4600D96ADF /* Vector2.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Vector2.cc; sourceTree = "<group>"; };
+		86BC7E9416518D4600D96ADF /* Vector2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector2.h; sourceTree = "<group>"; };
+		86BC7E9516518D4600D96ADF /* Vector2_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector2_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7E9716518D4600D96ADF /* guiImageButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiImageButtonCtrl.cc; sourceTree = "<group>"; };
+		86BC7E9816518D4600D96ADF /* guiImageButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiImageButtonCtrl.h; sourceTree = "<group>"; };
+		86BC7E9916518D4600D96ADF /* guiImageButtonCtrl_ScriptBindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiImageButtonCtrl_ScriptBindings.h; sourceTree = "<group>"; };
+		86BC7E9A16518D4600D96ADF /* guiSceneObjectCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSceneObjectCtrl.cc; sourceTree = "<group>"; };
+		86BC7E9B16518D4600D96ADF /* guiSceneObjectCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSceneObjectCtrl.h; sourceTree = "<group>"; };
+		86BC7E9C16518D4600D96ADF /* guiSpriteCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSpriteCtrl.cc; sourceTree = "<group>"; };
+		86BC7E9D16518D4600D96ADF /* guiSpriteCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSpriteCtrl.h; sourceTree = "<group>"; };
+		86BC7E9E16518D4600D96ADF /* guiSpriteCtrl_ScriptBindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSpriteCtrl_ScriptBindings.h; sourceTree = "<group>"; };
+		86BC7E9F16518D4600D96ADF /* SceneWindow.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneWindow.cc; sourceTree = "<group>"; };
+		86BC7EA016518D4600D96ADF /* SceneWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneWindow.h; sourceTree = "<group>"; };
+		86BC7EA116518D4600D96ADF /* SceneWindow_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneWindow_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EA316518D4600D96ADF /* ContactFilter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContactFilter.cc; sourceTree = "<group>"; };
+		86BC7EA416518D4600D96ADF /* ContactFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactFilter.h; sourceTree = "<group>"; };
+		86BC7EA516518D4600D96ADF /* DebugDraw.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebugDraw.cc; sourceTree = "<group>"; };
+		86BC7EA616518D4600D96ADF /* DebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugDraw.h; sourceTree = "<group>"; };
+		86BC7EA716518D4600D96ADF /* DebugStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugStats.h; sourceTree = "<group>"; };
+		86BC7EA816518D4600D96ADF /* PhysicsProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhysicsProxy.h; sourceTree = "<group>"; };
+		86BC7EA916518D4600D96ADF /* Scene.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scene.cc; sourceTree = "<group>"; };
+		86BC7EAA16518D4600D96ADF /* Scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scene.h; sourceTree = "<group>"; };
+		86BC7EAB16518D4600D96ADF /* Scene_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scene_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EAC16518D4600D96ADF /* SceneRenderFactories.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneRenderFactories.cpp; sourceTree = "<group>"; };
+		86BC7EAD16518D4600D96ADF /* SceneRenderFactories.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderFactories.h; sourceTree = "<group>"; };
+		86BC7EAE16518D4600D96ADF /* SceneRenderObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderObject.h; sourceTree = "<group>"; };
+		86BC7EAF16518D4600D96ADF /* SceneRenderQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneRenderQueue.cpp; sourceTree = "<group>"; };
+		86BC7EB016518D4600D96ADF /* SceneRenderQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderQueue.h; sourceTree = "<group>"; };
+		86BC7EB116518D4600D96ADF /* SceneRenderRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderRequest.h; sourceTree = "<group>"; };
+		86BC7EB216518D4600D96ADF /* SceneRenderState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderState.h; sourceTree = "<group>"; };
+		86BC7EB316518D4600D96ADF /* WorldQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorldQuery.cc; sourceTree = "<group>"; };
+		86BC7EB416518D4600D96ADF /* WorldQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldQuery.h; sourceTree = "<group>"; };
+		86BC7EB516518D4600D96ADF /* WorldQueryFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldQueryFilter.h; sourceTree = "<group>"; };
+		86BC7EB616518D4600D96ADF /* WorldQueryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldQueryResult.h; sourceTree = "<group>"; };
+		86BC7EBB16518D4600D96ADF /* CompositeSprite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeSprite.cc; sourceTree = "<group>"; };
+		86BC7EBC16518D4600D96ADF /* CompositeSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositeSprite.h; sourceTree = "<group>"; };
+		86BC7EBD16518D4600D96ADF /* CompositeSprite_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositeSprite_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EC316518D4600D96ADF /* SceneObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneObject.cc; sourceTree = "<group>"; };
+		86BC7EC416518D4600D96ADF /* SceneObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObject.h; sourceTree = "<group>"; };
+		86BC7EC516518D4600D96ADF /* SceneObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObject_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EC816518D4600D96ADF /* SceneObjectMoveToEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObjectMoveToEvent.h; sourceTree = "<group>"; };
+		86BC7EC916518D4600D96ADF /* SceneObjectRotateToEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObjectRotateToEvent.h; sourceTree = "<group>"; };
+		86BC7ECD16518D4600D96ADF /* SceneObjectTimerEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObjectTimerEvent.h; sourceTree = "<group>"; };
+		86BC7ECE16518D4600D96ADF /* Scroller.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scroller.cc; sourceTree = "<group>"; };
+		86BC7ECF16518D4600D96ADF /* Scroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scroller.h; sourceTree = "<group>"; };
+		86BC7ED016518D4600D96ADF /* Scroller_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scroller_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7ED116518D4600D96ADF /* ShapeVector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeVector.cc; sourceTree = "<group>"; };
+		86BC7ED216518D4600D96ADF /* ShapeVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeVector.h; sourceTree = "<group>"; };
+		86BC7ED316518D4600D96ADF /* ShapeVector_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeVector_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7ED416518D4600D96ADF /* Sprite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sprite.cc; sourceTree = "<group>"; };
+		86BC7ED516518D4600D96ADF /* Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sprite.h; sourceTree = "<group>"; };
+		86BC7ED616518D4600D96ADF /* Sprite_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sprite_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7ED716518D4600D96ADF /* Trigger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Trigger.cc; sourceTree = "<group>"; };
+		86BC7ED816518D4600D96ADF /* Trigger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Trigger.h; sourceTree = "<group>"; };
+		86BC7ED916518D4600D96ADF /* Trigger_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Trigger_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EE116518D4600D96ADF /* crc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = crc.cc; sourceTree = "<group>"; };
+		86BC7EE216518D4600D96ADF /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = "<group>"; };
+		86BC7EE316518D4600D96ADF /* crctab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crctab.h; sourceTree = "<group>"; };
+		86BC7EE416518D4600D96ADF /* hashFunction.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashFunction.cc; sourceTree = "<group>"; };
+		86BC7EE516518D4600D96ADF /* hashFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashFunction.h; sourceTree = "<group>"; };
+		86BC7EE616518D4600D96ADF /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
+		86BC7EE816518D4600D96ADF /* assetBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetBase.cc; sourceTree = "<group>"; };
+		86BC7EE916518D4600D96ADF /* assetBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetBase.h; sourceTree = "<group>"; };
+		86BC7EEA16518D4600D96ADF /* assetBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetBase_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EEB16518D4600D96ADF /* assetDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetDefinition.h; sourceTree = "<group>"; };
+		86BC7EEC16518D4600D96ADF /* assetFieldTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetFieldTypes.cc; sourceTree = "<group>"; };
+		86BC7EED16518D4600D96ADF /* assetFieldTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetFieldTypes.h; sourceTree = "<group>"; };
+		86BC7EEE16518D4600D96ADF /* assetManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetManager.cc; sourceTree = "<group>"; };
+		86BC7EEF16518D4600D96ADF /* assetManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetManager.h; sourceTree = "<group>"; };
+		86BC7EF016518D4600D96ADF /* assetManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetManager_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EF316518D4600D96ADF /* assetPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetPtr.h; sourceTree = "<group>"; };
+		86BC7EF416518D4600D96ADF /* assetQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetQuery.cc; sourceTree = "<group>"; };
+		86BC7EF516518D4600D96ADF /* assetQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetQuery.h; sourceTree = "<group>"; };
+		86BC7EF616518D4600D96ADF /* assetQuery_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetQuery_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EF716518D4600D96ADF /* assetSnapshot.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetSnapshot.cc; sourceTree = "<group>"; };
+		86BC7EF816518D4600D96ADF /* assetSnapshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetSnapshot.h; sourceTree = "<group>"; };
+		86BC7EF916518D4600D96ADF /* assetTagsManifest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetTagsManifest.cc; sourceTree = "<group>"; };
+		86BC7EFA16518D4600D96ADF /* assetTagsManifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetTagsManifest.h; sourceTree = "<group>"; };
+		86BC7EFB16518D4600D96ADF /* assetTagsManifest_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetTagsManifest_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7EFC16518D4600D96ADF /* tamlAssetDeclaredUpdateVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetDeclaredUpdateVisitor.h; sourceTree = "<group>"; };
+		86BC7EFD16518D4600D96ADF /* tamlAssetDeclaredVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetDeclaredVisitor.h; sourceTree = "<group>"; };
+		86BC7EFE16518D4600D96ADF /* tamlAssetReferencedUpdateVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetReferencedUpdateVisitor.h; sourceTree = "<group>"; };
+		86BC7EFF16518D4600D96ADF /* tamlAssetReferencedVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetReferencedVisitor.h; sourceTree = "<group>"; };
+		86BC7F0116518D4600D96ADF /* audio.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio.cc; sourceTree = "<group>"; };
+		86BC7F0216518D4600D96ADF /* audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = "<group>"; };
+		86BC7F0316518D4600D96ADF /* AudioAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioAsset.cc; sourceTree = "<group>"; };
+		86BC7F0416518D4600D96ADF /* AudioAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioAsset.h; sourceTree = "<group>"; };
+		86BC7F0516518D4600D96ADF /* audioBuffer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioBuffer.cc; sourceTree = "<group>"; };
+		86BC7F0616518D4600D96ADF /* audioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioBuffer.h; sourceTree = "<group>"; };
+		86BC7F0716518D4600D96ADF /* audioDataBlock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioDataBlock.cc; sourceTree = "<group>"; };
+		86BC7F0816518D4600D96ADF /* audioDataBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioDataBlock.h; sourceTree = "<group>"; };
+		86BC7F0916518D4600D96ADF /* audioFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioFunctions.cc; sourceTree = "<group>"; };
+		86BC7F0A16518D4600D96ADF /* audioStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSource.h; sourceTree = "<group>"; };
+		86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioStreamSourceFactory.cc; sourceTree = "<group>"; };
+		86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSourceFactory.h; sourceTree = "<group>"; };
+		86BC7F0D16518D4600D96ADF /* wavStreamSource.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavStreamSource.cc; sourceTree = "<group>"; };
+		86BC7F0E16518D4600D96ADF /* wavStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavStreamSource.h; sourceTree = "<group>"; };
+		86BC7F1016518D4600D96ADF /* bitMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitMatrix.h; sourceTree = "<group>"; };
+		86BC7F1116518D4600D96ADF /* bitSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitSet.h; sourceTree = "<group>"; };
+		86BC7F1216518D4600D96ADF /* bitTables.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitTables.cc; sourceTree = "<group>"; };
+		86BC7F1316518D4600D96ADF /* bitTables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitTables.h; sourceTree = "<group>"; };
+		86BC7F1416518D4600D96ADF /* bitVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitVector.h; sourceTree = "<group>"; };
+		86BC7F1516518D4600D96ADF /* bitVectorW.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitVectorW.h; sourceTree = "<group>"; };
+		86BC7F1616518D4600D96ADF /* findIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = findIterator.h; sourceTree = "<group>"; };
+		86BC7F1716518D4600D96ADF /* hashTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashTable.cc; sourceTree = "<group>"; };
+		86BC7F1816518D4600D96ADF /* hashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashTable.h; sourceTree = "<group>"; };
+		86BC7F1916518D4600D96ADF /* linkedList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linkedList.h; sourceTree = "<group>"; };
+		86BC7F1A16518D4600D96ADF /* nameTags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nameTags.cpp; sourceTree = "<group>"; };
+		86BC7F1B16518D4600D96ADF /* nameTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nameTags.h; sourceTree = "<group>"; };
+		86BC7F1C16518D4600D96ADF /* nameTags_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nameTags_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F1D16518D4600D96ADF /* simpleHashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simpleHashTable.h; sourceTree = "<group>"; };
+		86BC7F1E16518D4600D96ADF /* sparseArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sparseArray.h; sourceTree = "<group>"; };
+		86BC7F1F16518D4600D96ADF /* undo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = undo.cc; sourceTree = "<group>"; };
+		86BC7F2016518D4600D96ADF /* undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = undo.h; sourceTree = "<group>"; };
+		86BC7F2116518D4600D96ADF /* vector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector.cc; sourceTree = "<group>"; };
+		86BC7F2216518D4600D96ADF /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = "<group>"; };
+		86BC7F2316518D4600D96ADF /* vector2d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector2d.h; sourceTree = "<group>"; };
+		86BC7F2416518D4600D96ADF /* vectorHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vectorHeap.h; sourceTree = "<group>"; };
+		86BC7F2516518D4600D96ADF /* vectorQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vectorQueue.h; sourceTree = "<group>"; };
+		86BC7F3616518D4600D96ADF /* behaviorComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = behaviorComponent.cpp; sourceTree = "<group>"; };
+		86BC7F3716518D4600D96ADF /* behaviorComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorComponent.h; sourceTree = "<group>"; };
+		86BC7F3816518D4600D96ADF /* behaviorComponent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorComponent_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F3916518D4600D96ADF /* behaviorComponentRaiseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorComponentRaiseEvent.h; sourceTree = "<group>"; };
+		86BC7F3A16518D4600D96ADF /* behaviorInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = behaviorInstance.cpp; sourceTree = "<group>"; };
+		86BC7F3B16518D4600D96ADF /* behaviorInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorInstance.h; sourceTree = "<group>"; };
+		86BC7F3C16518D4600D96ADF /* behaviorInstance_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorInstance_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F3D16518D4600D96ADF /* behaviorTemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = behaviorTemplate.cpp; sourceTree = "<group>"; };
+		86BC7F3E16518D4600D96ADF /* behaviorTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorTemplate.h; sourceTree = "<group>"; };
+		86BC7F3F16518D4600D96ADF /* behaviorTemplate_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorTemplate_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F4016518D4600D96ADF /* dynamicConsoleMethodComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dynamicConsoleMethodComponent.cpp; sourceTree = "<group>"; };
+		86BC7F4116518D4600D96ADF /* dynamicConsoleMethodComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamicConsoleMethodComponent.h; sourceTree = "<group>"; };
+		86BC7F4516518D4600D96ADF /* simComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simComponent.cpp; sourceTree = "<group>"; };
+		86BC7F4616518D4600D96ADF /* simComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simComponent.h; sourceTree = "<group>"; };
+		86BC7F7416518D4600D96ADF /* profiler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cc; sourceTree = "<group>"; };
+		86BC7F7516518D4600D96ADF /* profiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = "<group>"; };
+		86BC7F7716518D4600D96ADF /* RemoteDebugger1.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteDebugger1.cc; sourceTree = "<group>"; };
+		86BC7F7816518D4600D96ADF /* RemoteDebugger1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebugger1.h; sourceTree = "<group>"; };
+		86BC7F7916518D4600D96ADF /* RemoteDebugger1_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebugger1_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F7A16518D4600D96ADF /* RemoteDebuggerBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteDebuggerBase.cc; sourceTree = "<group>"; };
+		86BC7F7B16518D4600D96ADF /* RemoteDebuggerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBase.h; sourceTree = "<group>"; };
+		86BC7F7C16518D4600D96ADF /* RemoteDebuggerBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBase_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F7D16518D4600D96ADF /* RemoteDebuggerBridge.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteDebuggerBridge.cc; sourceTree = "<group>"; };
+		86BC7F7E16518D4600D96ADF /* RemoteDebuggerBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBridge.h; sourceTree = "<group>"; };
+		86BC7F7F16518D4600D96ADF /* RemoteDebuggerBridge_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBridge_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC7F8016518D4600D96ADF /* telnetDebugger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telnetDebugger.cc; sourceTree = "<group>"; };
+		86BC7F8116518D4600D96ADF /* telnetDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetDebugger.h; sourceTree = "<group>"; };
+		86BC7F8316518D4600D96ADF /* delegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delegate.h; sourceTree = "<group>"; };
+		86BC7F8416518D4600D96ADF /* delegateSignal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = delegateSignal.cpp; sourceTree = "<group>"; };
+		86BC7F8516518D4600D96ADF /* delegateSignal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delegateSignal.h; sourceTree = "<group>"; };
+		86BC7F8616518D4600D96ADF /* FastDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastDelegate.h; sourceTree = "<group>"; };
+		86BC7FAF16518D4600D96ADF /* defaultGame.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = defaultGame.cc; sourceTree = "<group>"; };
+		86BC7FB016518D4600D96ADF /* defaultGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defaultGame.h; sourceTree = "<group>"; };
+		86BC7FB116518D4600D96ADF /* gameConnection.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gameConnection.cc; sourceTree = "<group>"; };
+		86BC7FB216518D4600D96ADF /* gameConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameConnection.h; sourceTree = "<group>"; };
+		86BC7FB316518D4600D96ADF /* gameInterface.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gameInterface.cc; sourceTree = "<group>"; };
+		86BC7FB416518D4600D96ADF /* gameInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameInterface.h; sourceTree = "<group>"; };
+		86BC7FB616518D4600D96ADF /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
+		86BC7FB716518D4600D96ADF /* version.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = version.cc; sourceTree = "<group>"; };
+		86BC7FB816518D4600D96ADF /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+		86BC7FBA16518D4600D96ADF /* bitmapBmp.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapBmp.cc; sourceTree = "<group>"; };
+		86BC7FBB16518D4600D96ADF /* bitmapJpeg.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapJpeg.cc; sourceTree = "<group>"; };
+		86BC7FBC16518D4600D96ADF /* bitmapPng.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapPng.cc; sourceTree = "<group>"; };
+		86BC7FBD16518D4600D96ADF /* bitmapPvr.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapPvr.cc; sourceTree = "<group>"; };
+		86BC7FC016518D4600D96ADF /* color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = "<group>"; };
+		86BC7FC116518D4600D96ADF /* dgl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dgl.cc; sourceTree = "<group>"; };
+		86BC7FC216518D4600D96ADF /* dgl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dgl.h; sourceTree = "<group>"; };
+		86BC7FC316518D4600D96ADF /* dglMatrix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dglMatrix.cc; sourceTree = "<group>"; };
+		86BC7FC416518D4600D96ADF /* DynamicTexture.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicTexture.cc; sourceTree = "<group>"; };
+		86BC7FC516518D4600D96ADF /* DynamicTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicTexture.h; sourceTree = "<group>"; };
+		86BC7FC616518D4600D96ADF /* gBitmap.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gBitmap.cc; sourceTree = "<group>"; };
+		86BC7FC716518D4600D96ADF /* gBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gBitmap.h; sourceTree = "<group>"; };
+		86BC7FC816518D4600D96ADF /* gFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gFont.cc; sourceTree = "<group>"; };
+		86BC7FC916518D4600D96ADF /* gFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gFont.h; sourceTree = "<group>"; };
+		86BC7FCA16518D4600D96ADF /* gPalette.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gPalette.cc; sourceTree = "<group>"; };
+		86BC7FCB16518D4600D96ADF /* gPalette.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gPalette.h; sourceTree = "<group>"; };
+		86BC7FCC16518D4600D96ADF /* PNGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PNGImage.cpp; sourceTree = "<group>"; };
+		86BC7FCD16518D4600D96ADF /* PNGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PNGImage.h; sourceTree = "<group>"; };
+		86BC7FCE16518D4600D96ADF /* splineUtil.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = splineUtil.cc; sourceTree = "<group>"; };
+		86BC7FCF16518D4600D96ADF /* splineUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = splineUtil.h; sourceTree = "<group>"; };
+		86BC7FD016518D4600D96ADF /* TextureDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureDictionary.cc; sourceTree = "<group>"; };
+		86BC7FD116518D4600D96ADF /* TextureDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureDictionary.h; sourceTree = "<group>"; };
+		86BC7FD216518D4600D96ADF /* TextureHandle.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureHandle.cc; sourceTree = "<group>"; };
+		86BC7FD316518D4600D96ADF /* TextureHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureHandle.h; sourceTree = "<group>"; };
+		86BC7FD416518D4600D96ADF /* TextureManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureManager.cc; sourceTree = "<group>"; };
+		86BC7FD516518D4600D96ADF /* TextureManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureManager.h; sourceTree = "<group>"; };
+		86BC7FD616518D4600D96ADF /* TextureObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureObject.h; sourceTree = "<group>"; };
+		86BC7FD916518D4600D96ADF /* guiBitmapButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBitmapButtonCtrl.cc; sourceTree = "<group>"; };
+		86BC7FDA16518D4600D96ADF /* guiBitmapButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBitmapButtonCtrl.h; sourceTree = "<group>"; };
+		86BC7FDB16518D4600D96ADF /* guiBorderButton.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBorderButton.cc; sourceTree = "<group>"; };
+		86BC7FDC16518D4600D96ADF /* guiButtonBaseCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiButtonBaseCtrl.cc; sourceTree = "<group>"; };
+		86BC7FDD16518D4600D96ADF /* guiButtonBaseCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiButtonBaseCtrl.h; sourceTree = "<group>"; };
+		86BC7FDE16518D4600D96ADF /* guiButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiButtonCtrl.cc; sourceTree = "<group>"; };
+		86BC7FDF16518D4600D96ADF /* guiButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiButtonCtrl.h; sourceTree = "<group>"; };
+		86BC7FE016518D4600D96ADF /* guiCheckBoxCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiCheckBoxCtrl.cc; sourceTree = "<group>"; };
+		86BC7FE116518D4600D96ADF /* guiCheckBoxCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCheckBoxCtrl.h; sourceTree = "<group>"; };
+		86BC7FE216518D4600D96ADF /* guiIconButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiIconButtonCtrl.cc; sourceTree = "<group>"; };
+		86BC7FE316518D4600D96ADF /* guiIconButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiIconButtonCtrl.h; sourceTree = "<group>"; };
+		86BC7FE416518D4600D96ADF /* guiRadioCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiRadioCtrl.cc; sourceTree = "<group>"; };
+		86BC7FE516518D4600D96ADF /* guiRadioCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiRadioCtrl.h; sourceTree = "<group>"; };
+		86BC7FE616518D4600D96ADF /* guiToolboxButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiToolboxButtonCtrl.cc; sourceTree = "<group>"; };
+		86BC7FE716518D4600D96ADF /* guiToolboxButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiToolboxButtonCtrl.h; sourceTree = "<group>"; };
+		86BC7FE916518D4600D96ADF /* guiAutoScrollCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiAutoScrollCtrl.cc; sourceTree = "<group>"; };
+		86BC7FEA16518D4600D96ADF /* guiAutoScrollCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiAutoScrollCtrl.h; sourceTree = "<group>"; };
+		86BC7FEB16518D4600D96ADF /* guiCtrlArrayCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiCtrlArrayCtrl.cc; sourceTree = "<group>"; };
+		86BC7FEC16518D4600D96ADF /* guiCtrlArrayCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCtrlArrayCtrl.h; sourceTree = "<group>"; };
+		86BC7FED16518D4600D96ADF /* guiDragAndDropCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDragAndDropCtrl.cc; sourceTree = "<group>"; };
+		86BC7FEE16518D4600D96ADF /* guiDragAndDropCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDragAndDropCtrl.h; sourceTree = "<group>"; };
+		86BC7FEF16518D4600D96ADF /* guiDynamicCtrlArrayCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDynamicCtrlArrayCtrl.cc; sourceTree = "<group>"; };
+		86BC7FF016518D4600D96ADF /* guiDynamicCtrlArrayCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDynamicCtrlArrayCtrl.h; sourceTree = "<group>"; };
+		86BC7FF116518D4600D96ADF /* guiFormCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFormCtrl.cc; sourceTree = "<group>"; };
+		86BC7FF216518D4600D96ADF /* guiFormCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiFormCtrl.h; sourceTree = "<group>"; };
+		86BC7FF316518D4600D96ADF /* guiFrameCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFrameCtrl.cc; sourceTree = "<group>"; };
+		86BC7FF416518D4600D96ADF /* guiFrameCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiFrameCtrl.h; sourceTree = "<group>"; };
+		86BC7FF516518D4600D96ADF /* guiPaneCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiPaneCtrl.cc; sourceTree = "<group>"; };
+		86BC7FF616518D4600D96ADF /* guiPaneCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiPaneCtrl.h; sourceTree = "<group>"; };
+		86BC7FF716518D4600D96ADF /* guiRolloutCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiRolloutCtrl.cc; sourceTree = "<group>"; };
+		86BC7FF816518D4600D96ADF /* guiRolloutCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiRolloutCtrl.h; sourceTree = "<group>"; };
+		86BC7FF916518D4600D96ADF /* guiScrollCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiScrollCtrl.cc; sourceTree = "<group>"; };
+		86BC7FFA16518D4600D96ADF /* guiScrollCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiScrollCtrl.h; sourceTree = "<group>"; };
+		86BC7FFB16518D4600D96ADF /* guiStackCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiStackCtrl.cc; sourceTree = "<group>"; };
+		86BC7FFC16518D4600D96ADF /* guiStackCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiStackCtrl.h; sourceTree = "<group>"; };
+		86BC7FFD16518D4600D96ADF /* guiTabBookCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTabBookCtrl.cc; sourceTree = "<group>"; };
+		86BC7FFE16518D4600D96ADF /* guiTabBookCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTabBookCtrl.h; sourceTree = "<group>"; };
+		86BC7FFF16518D4600D96ADF /* guiWindowCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiWindowCtrl.cc; sourceTree = "<group>"; };
+		86BC800016518D4600D96ADF /* guiWindowCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiWindowCtrl.h; sourceTree = "<group>"; };
+		86BC800216518D4600D96ADF /* guiControlListPopup.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiControlListPopup.cc; sourceTree = "<group>"; };
+		86BC800316518D4600D96ADF /* guiDebugger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDebugger.cc; sourceTree = "<group>"; };
+		86BC800416518D4600D96ADF /* guiDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDebugger.h; sourceTree = "<group>"; };
+		86BC800516518D4600D96ADF /* guiEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiEditCtrl.cc; sourceTree = "<group>"; };
+		86BC800616518D4600D96ADF /* guiEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiEditCtrl.h; sourceTree = "<group>"; };
+		86BC800716518D4600D96ADF /* guiFilterCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFilterCtrl.cc; sourceTree = "<group>"; };
+		86BC800816518D4600D96ADF /* guiFilterCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiFilterCtrl.h; sourceTree = "<group>"; };
+		86BC800916518D4600D96ADF /* guiGraphCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiGraphCtrl.cc; sourceTree = "<group>"; };
+		86BC800A16518D4600D96ADF /* guiGraphCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiGraphCtrl.h; sourceTree = "<group>"; };
+		86BC800B16518D4600D96ADF /* guiImageList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiImageList.cc; sourceTree = "<group>"; };
+		86BC800C16518D4600D96ADF /* guiImageList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiImageList.h; sourceTree = "<group>"; };
+		86BC800D16518D4600D96ADF /* guiInspector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiInspector.cc; sourceTree = "<group>"; };
+		86BC800E16518D4600D96ADF /* guiInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiInspector.h; sourceTree = "<group>"; };
+		86BC800F16518D4600D96ADF /* guiInspectorTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiInspectorTypes.cc; sourceTree = "<group>"; };
+		86BC801016518D4600D96ADF /* guiInspectorTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiInspectorTypes.h; sourceTree = "<group>"; };
+		86BC801116518D4600D96ADF /* guiMenuBar.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMenuBar.cc; sourceTree = "<group>"; };
+		86BC801216518D4600D96ADF /* guiMenuBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMenuBar.h; sourceTree = "<group>"; };
+		86BC801316518D4600D96ADF /* guiSeparatorCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSeparatorCtrl.cc; sourceTree = "<group>"; };
+		86BC801416518D4600D96ADF /* guiSeparatorCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSeparatorCtrl.h; sourceTree = "<group>"; };
+		86BC801516518D4600D96ADF /* guiArrayCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiArrayCtrl.cc; sourceTree = "<group>"; };
+		86BC801616518D4600D96ADF /* guiArrayCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiArrayCtrl.h; sourceTree = "<group>"; };
+		86BC801716518D4600D96ADF /* guiBackgroundCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBackgroundCtrl.cc; sourceTree = "<group>"; };
+		86BC801816518D4600D96ADF /* guiBackgroundCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBackgroundCtrl.h; sourceTree = "<group>"; };
+		86BC801916518D4600D96ADF /* guiBitmapBorderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBitmapBorderCtrl.cc; sourceTree = "<group>"; };
+		86BC801A16518D4600D96ADF /* guiBitmapCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBitmapCtrl.cc; sourceTree = "<group>"; };
+		86BC801B16518D4600D96ADF /* guiBitmapCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBitmapCtrl.h; sourceTree = "<group>"; };
+		86BC801C16518D4600D96ADF /* guiBubbleTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBubbleTextCtrl.cc; sourceTree = "<group>"; };
+		86BC801D16518D4600D96ADF /* guiBubbleTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBubbleTextCtrl.h; sourceTree = "<group>"; };
+		86BC801E16518D4600D96ADF /* guiCanvas.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiCanvas.cc; sourceTree = "<group>"; };
+		86BC801F16518D4600D96ADF /* guiCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCanvas.h; sourceTree = "<group>"; };
+		86BC802016518D4600D96ADF /* guiColorPicker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiColorPicker.cc; sourceTree = "<group>"; };
+		86BC802116518D4600D96ADF /* guiColorPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiColorPicker.h; sourceTree = "<group>"; };
+		86BC802216518D4600D96ADF /* guiConsole.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiConsole.cc; sourceTree = "<group>"; };
+		86BC802316518D4600D96ADF /* guiConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiConsole.h; sourceTree = "<group>"; };
+		86BC802416518D4600D96ADF /* guiConsoleEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiConsoleEditCtrl.cc; sourceTree = "<group>"; };
+		86BC802516518D4600D96ADF /* guiConsoleEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiConsoleEditCtrl.h; sourceTree = "<group>"; };
+		86BC802616518D4600D96ADF /* guiConsoleTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiConsoleTextCtrl.cc; sourceTree = "<group>"; };
+		86BC802716518D4600D96ADF /* guiConsoleTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiConsoleTextCtrl.h; sourceTree = "<group>"; };
+		86BC802816518D4600D96ADF /* guiControl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiControl.cc; sourceTree = "<group>"; };
+		86BC802916518D4600D96ADF /* guiControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiControl.h; sourceTree = "<group>"; };
+		86BC802A16518D4600D96ADF /* guiDefaultControlRender.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDefaultControlRender.cc; sourceTree = "<group>"; };
+		86BC802B16518D4600D96ADF /* guiDefaultControlRender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDefaultControlRender.h; sourceTree = "<group>"; };
+		86BC802C16518D4600D96ADF /* guiFadeinBitmapCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFadeinBitmapCtrl.cc; sourceTree = "<group>"; };
+		86BC802D16518D4600D96ADF /* guiInputCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiInputCtrl.cc; sourceTree = "<group>"; };
+		86BC802E16518D4600D96ADF /* guiInputCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiInputCtrl.h; sourceTree = "<group>"; };
+		86BC802F16518D4600D96ADF /* guiListBoxCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiListBoxCtrl.cc; sourceTree = "<group>"; };
+		86BC803016518D4600D96ADF /* guiListBoxCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiListBoxCtrl.h; sourceTree = "<group>"; };
+		86BC803116518D4600D96ADF /* guiMessageVectorCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMessageVectorCtrl.cc; sourceTree = "<group>"; };
+		86BC803216518D4600D96ADF /* guiMessageVectorCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMessageVectorCtrl.h; sourceTree = "<group>"; };
+		86BC803316518D4600D96ADF /* guiMLTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMLTextCtrl.cc; sourceTree = "<group>"; };
+		86BC803416518D4600D96ADF /* guiMLTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMLTextCtrl.h; sourceTree = "<group>"; };
+		86BC803516518D4600D96ADF /* guiMLTextEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMLTextEditCtrl.cc; sourceTree = "<group>"; };
+		86BC803616518D4600D96ADF /* guiMLTextEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMLTextEditCtrl.h; sourceTree = "<group>"; };
+		86BC803716518D4600D96ADF /* guiMouseEventCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMouseEventCtrl.cc; sourceTree = "<group>"; };
+		86BC803816518D4600D96ADF /* guiMouseEventCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMouseEventCtrl.h; sourceTree = "<group>"; };
+		86BC803916518D4600D96ADF /* guiPopUpCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiPopUpCtrl.cc; sourceTree = "<group>"; };
+		86BC803A16518D4600D96ADF /* guiPopUpCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiPopUpCtrl.h; sourceTree = "<group>"; };
+		86BC803B16518D4600D96ADF /* guiPopUpCtrlEx.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiPopUpCtrlEx.cc; sourceTree = "<group>"; };
+		86BC803C16518D4600D96ADF /* guiPopUpCtrlEx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiPopUpCtrlEx.h; sourceTree = "<group>"; };
+		86BC803D16518D4600D96ADF /* guiProgressCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiProgressCtrl.cc; sourceTree = "<group>"; };
+		86BC803E16518D4600D96ADF /* guiProgressCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiProgressCtrl.h; sourceTree = "<group>"; };
+		86BC803F16518D4600D96ADF /* guiScriptNotifyControl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiScriptNotifyControl.cc; sourceTree = "<group>"; };
+		86BC804016518D4600D96ADF /* guiScriptNotifyControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiScriptNotifyControl.h; sourceTree = "<group>"; };
+		86BC804116518D4600D96ADF /* guiSliderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSliderCtrl.cc; sourceTree = "<group>"; };
+		86BC804216518D4600D96ADF /* guiSliderCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSliderCtrl.h; sourceTree = "<group>"; };
+		86BC804316518D4600D96ADF /* guiTabPageCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTabPageCtrl.cc; sourceTree = "<group>"; };
+		86BC804416518D4600D96ADF /* guiTabPageCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTabPageCtrl.h; sourceTree = "<group>"; };
+		86BC804516518D4600D96ADF /* guiTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextCtrl.cc; sourceTree = "<group>"; };
+		86BC804616518D4600D96ADF /* guiTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextCtrl.h; sourceTree = "<group>"; };
+		86BC804716518D4600D96ADF /* guiTextEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextEditCtrl.cc; sourceTree = "<group>"; };
+		86BC804816518D4600D96ADF /* guiTextEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextEditCtrl.h; sourceTree = "<group>"; };
+		86BC804916518D4600D96ADF /* guiTextEditSliderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextEditSliderCtrl.cc; sourceTree = "<group>"; };
+		86BC804A16518D4600D96ADF /* guiTextEditSliderCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextEditSliderCtrl.h; sourceTree = "<group>"; };
+		86BC804B16518D4600D96ADF /* guiTextListCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextListCtrl.cc; sourceTree = "<group>"; };
+		86BC804C16518D4600D96ADF /* guiTextListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextListCtrl.h; sourceTree = "<group>"; };
+		86BC804D16518D4600D96ADF /* guiTickCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTickCtrl.cc; sourceTree = "<group>"; };
+		86BC804E16518D4600D96ADF /* guiTickCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTickCtrl.h; sourceTree = "<group>"; };
+		86BC804F16518D4600D96ADF /* guiTreeViewCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTreeViewCtrl.cc; sourceTree = "<group>"; };
+		86BC805016518D4600D96ADF /* guiTreeViewCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTreeViewCtrl.h; sourceTree = "<group>"; };
+		86BC805116518D4600D96ADF /* guiTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTypes.cc; sourceTree = "<group>"; };
+		86BC805216518D4600D96ADF /* guiTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTypes.h; sourceTree = "<group>"; };
+		86BC805416518D4600D96ADF /* lang.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lang.cc; sourceTree = "<group>"; };
+		86BC805516518D4600D96ADF /* lang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lang.h; sourceTree = "<group>"; };
+		86BC805616518D4600D96ADF /* messageVector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messageVector.cc; sourceTree = "<group>"; };
+		86BC805716518D4600D96ADF /* messageVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messageVector.h; sourceTree = "<group>"; };
+		86BC805916518D4600D96ADF /* actionMap.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actionMap.cc; sourceTree = "<group>"; };
+		86BC805A16518D4600D96ADF /* actionMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionMap.h; sourceTree = "<group>"; };
+		86BC805C16518D4600D96ADF /* bitStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitStream.cc; sourceTree = "<group>"; };
+		86BC805D16518D4600D96ADF /* bitStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitStream.h; sourceTree = "<group>"; };
+		86BC805E16518D4600D96ADF /* bufferStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bufferStream.cc; sourceTree = "<group>"; };
+		86BC805F16518D4600D96ADF /* bufferStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bufferStream.h; sourceTree = "<group>"; };
+		86BC806116518D4600D96ADF /* fileObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileObject.cc; sourceTree = "<group>"; };
+		86BC806216518D4600D96ADF /* fileObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileObject.h; sourceTree = "<group>"; };
+		86BC806316518D4600D96ADF /* fileStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileStream.cc; sourceTree = "<group>"; };
+		86BC806416518D4600D96ADF /* fileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStream.h; sourceTree = "<group>"; };
+		86BC806516518D4600D96ADF /* fileStreamObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileStreamObject.cc; sourceTree = "<group>"; };
+		86BC806616518D4600D96ADF /* fileStreamObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStreamObject.h; sourceTree = "<group>"; };
+		86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileSystemFunctions.cpp; sourceTree = "<group>"; };
+		86BC806816518D4600D96ADF /* filterStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filterStream.cc; sourceTree = "<group>"; };
+		86BC806916518D4600D96ADF /* filterStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filterStream.h; sourceTree = "<group>"; };
+		86BC806A16518D4600D96ADF /* memStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memStream.cc; sourceTree = "<group>"; };
+		86BC806B16518D4600D96ADF /* memstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memstream.h; sourceTree = "<group>"; };
+		86BC806C16518D4600D96ADF /* nStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nStream.cc; sourceTree = "<group>"; };
+		86BC806D16518D4600D96ADF /* resizeStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resizeStream.cc; sourceTree = "<group>"; };
+		86BC806E16518D4600D96ADF /* resizeStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resizeStream.h; sourceTree = "<group>"; };
+		86BC807016518D4600D96ADF /* resourceDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resourceDictionary.cc; sourceTree = "<group>"; };
+		86BC807116518D4600D96ADF /* resourceManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resourceManager.cc; sourceTree = "<group>"; };
+		86BC807216518D4600D96ADF /* resourceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resourceManager.h; sourceTree = "<group>"; };
+		86BC807316518D4600D96ADF /* stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = "<group>"; };
+		86BC807416518D4600D96ADF /* streamObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = streamObject.cc; sourceTree = "<group>"; };
+		86BC807516518D4600D96ADF /* streamObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = streamObject.h; sourceTree = "<group>"; };
+		86BC807716518D4600D96ADF /* centralDir.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = centralDir.cc; sourceTree = "<group>"; };
+		86BC807816518D4600D96ADF /* centralDir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = centralDir.h; sourceTree = "<group>"; };
+		86BC807916518D4600D96ADF /* compressor.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compressor.cc; sourceTree = "<group>"; };
+		86BC807A16518D4600D96ADF /* compressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compressor.h; sourceTree = "<group>"; };
+		86BC807B16518D4600D96ADF /* deflate.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deflate.cc; sourceTree = "<group>"; };
+		86BC807C16518D4600D96ADF /* extraField.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extraField.cc; sourceTree = "<group>"; };
+		86BC807D16518D4600D96ADF /* extraField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extraField.h; sourceTree = "<group>"; };
+		86BC807E16518D4600D96ADF /* fileHeader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileHeader.cc; sourceTree = "<group>"; };
+		86BC807F16518D4600D96ADF /* fileHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileHeader.h; sourceTree = "<group>"; };
+		86BC808016518D4600D96ADF /* stored.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stored.cc; sourceTree = "<group>"; };
+		86BC808616518D4600D96ADF /* zipArchive.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipArchive.cc; sourceTree = "<group>"; };
+		86BC808716518D4600D96ADF /* zipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipArchive.h; sourceTree = "<group>"; };
+		86BC808816518D4600D96ADF /* zipCryptStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipCryptStream.cc; sourceTree = "<group>"; };
+		86BC808916518D4600D96ADF /* zipCryptStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipCryptStream.h; sourceTree = "<group>"; };
+		86BC808A16518D4600D96ADF /* zipObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipObject.cc; sourceTree = "<group>"; };
+		86BC808B16518D4600D96ADF /* zipObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipObject.h; sourceTree = "<group>"; };
+		86BC808C16518D4600D96ADF /* zipStatFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipStatFilter.h; sourceTree = "<group>"; };
+		86BC808D16518D4600D96ADF /* zipSubStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipSubStream.cc; sourceTree = "<group>"; };
+		86BC808E16518D4600D96ADF /* zipSubStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipSubStream.h; sourceTree = "<group>"; };
+		86BC808F16518D4600D96ADF /* zipTempStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipTempStream.cc; sourceTree = "<group>"; };
+		86BC809016518D4600D96ADF /* zipTempStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipTempStream.h; sourceTree = "<group>"; };
+		86BC809216518D4600D96ADF /* mathIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathIO.h; sourceTree = "<group>"; };
+		86BC809316518D4600D96ADF /* mathTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mathTypes.cc; sourceTree = "<group>"; };
+		86BC809416518D4600D96ADF /* mathTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathTypes.h; sourceTree = "<group>"; };
+		86BC809516518D4600D96ADF /* mathUtils.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mathUtils.cc; sourceTree = "<group>"; };
+		86BC809616518D4600D96ADF /* mathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathUtils.h; sourceTree = "<group>"; };
+		86BC809716518D4600D96ADF /* mBox.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mBox.cc; sourceTree = "<group>"; };
+		86BC809816518D4600D96ADF /* mBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mBox.h; sourceTree = "<group>"; };
+		86BC809916518D4600D96ADF /* mConsoleFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mConsoleFunctions.cc; sourceTree = "<group>"; };
+		86BC809A16518D4600D96ADF /* mConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mConstants.h; sourceTree = "<group>"; };
+		86BC809B16518D4600D96ADF /* mMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMath.h; sourceTree = "<group>"; };
+		86BC809D16518D4600D96ADF /* mMath_C.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMath_C.cc; sourceTree = "<group>"; };
+		86BC809E16518D4600D96ADF /* mMathAltivec.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMathAltivec.cc; sourceTree = "<group>"; };
+		86BC80A116518D4600D96ADF /* mMathFn.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMathFn.cc; sourceTree = "<group>"; };
+		86BC80A216518D4600D96ADF /* mMathFn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMathFn.h; sourceTree = "<group>"; };
+		86BC80A516518D4600D96ADF /* mMatrix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMatrix.cc; sourceTree = "<group>"; };
+		86BC80A616518D4600D96ADF /* mMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMatrix.h; sourceTree = "<group>"; };
+		86BC80A716518D4600D96ADF /* mPlane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mPlane.h; sourceTree = "<group>"; };
+		86BC80A816518D4600D96ADF /* mPlaneTransformer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mPlaneTransformer.cc; sourceTree = "<group>"; };
+		86BC80A916518D4600D96ADF /* mPlaneTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mPlaneTransformer.h; sourceTree = "<group>"; };
+		86BC80AA16518D4600D96ADF /* mPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mPoint.h; sourceTree = "<group>"; };
+		86BC80AB16518D4600D96ADF /* mQuadPatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mQuadPatch.cc; sourceTree = "<group>"; };
+		86BC80AC16518D4600D96ADF /* mQuadPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mQuadPatch.h; sourceTree = "<group>"; };
+		86BC80AD16518D4600D96ADF /* mQuat.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mQuat.cc; sourceTree = "<group>"; };
+		86BC80AE16518D4600D96ADF /* mQuat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mQuat.h; sourceTree = "<group>"; };
+		86BC80AF16518D4600D96ADF /* mRandom.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mRandom.cc; sourceTree = "<group>"; };
+		86BC80B016518D4600D96ADF /* mRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mRandom.h; sourceTree = "<group>"; };
+		86BC80B116518D4600D96ADF /* mRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mRect.h; sourceTree = "<group>"; };
+		86BC80B216518D4600D96ADF /* mSolver.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mSolver.cc; sourceTree = "<group>"; };
+		86BC80B316518D4600D96ADF /* mSphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mSphere.h; sourceTree = "<group>"; };
+		86BC80B416518D4600D96ADF /* mSplinePatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mSplinePatch.cc; sourceTree = "<group>"; };
+		86BC80B516518D4600D96ADF /* mSplinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mSplinePatch.h; sourceTree = "<group>"; };
+		86BC80B616518D4600D96ADF /* rectClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rectClipper.cpp; sourceTree = "<group>"; };
+		86BC80B716518D4600D96ADF /* rectClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rectClipper.h; sourceTree = "<group>"; };
+		86BC80B916518D4600D96ADF /* dataChunker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataChunker.cc; sourceTree = "<group>"; };
+		86BC80BA16518D4600D96ADF /* dataChunker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dataChunker.h; sourceTree = "<group>"; };
+		86BC80BB16518D4600D96ADF /* factoryCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = factoryCache.h; sourceTree = "<group>"; };
+		86BC80BC16518D4600D96ADF /* frameAllocator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = frameAllocator.cc; sourceTree = "<group>"; };
+		86BC80BD16518D4600D96ADF /* frameAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frameAllocator.h; sourceTree = "<group>"; };
+		86BC80BE16518D4600D96ADF /* safeDelete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safeDelete.h; sourceTree = "<group>"; };
+		86BC80C016518D4600D96ADF /* dispatcher.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dispatcher.cc; sourceTree = "<group>"; };
+		86BC80C116518D4600D96ADF /* dispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dispatcher.h; sourceTree = "<group>"; };
+		86BC80C216518D4600D96ADF /* eventManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eventManager.cc; sourceTree = "<group>"; };
+		86BC80C316518D4600D96ADF /* eventManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventManager.h; sourceTree = "<group>"; };
+		86BC80C416518D4600D96ADF /* message.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = message.cc; sourceTree = "<group>"; };
+		86BC80C516518D4600D96ADF /* message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = message.h; sourceTree = "<group>"; };
+		86BC80C616518D4600D96ADF /* messageForwarder.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messageForwarder.cc; sourceTree = "<group>"; };
+		86BC80C716518D4600D96ADF /* messageForwarder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messageForwarder.h; sourceTree = "<group>"; };
+		86BC80C816518D4600D96ADF /* scriptMsgListener.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scriptMsgListener.cc; sourceTree = "<group>"; };
+		86BC80C916518D4600D96ADF /* scriptMsgListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scriptMsgListener.h; sourceTree = "<group>"; };
+		86BC80CB16518D4600D96ADF /* moduleCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleCallbacks.h; sourceTree = "<group>"; };
+		86BC80CC16518D4600D96ADF /* moduleDefinition.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moduleDefinition.cc; sourceTree = "<group>"; };
+		86BC80CD16518D4600D96ADF /* moduleDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleDefinition.h; sourceTree = "<group>"; };
+		86BC80CE16518D4600D96ADF /* moduleDefinition_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleDefinition_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC80CF16518D4600D96ADF /* moduleManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moduleManager.cc; sourceTree = "<group>"; };
+		86BC80D016518D4600D96ADF /* moduleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleManager.h; sourceTree = "<group>"; };
+		86BC80D116518D4600D96ADF /* moduleManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleManager_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC80D216518D4600D96ADF /* moduleMergeDefinition.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moduleMergeDefinition.cc; sourceTree = "<group>"; };
+		86BC80D316518D4600D96ADF /* moduleMergeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleMergeDefinition.h; sourceTree = "<group>"; };
+		86BC80D416518D4600D96ADF /* tamlModuleIdUpdateVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlModuleIdUpdateVisitor.h; sourceTree = "<group>"; };
+		86BC80D616518D4600D96ADF /* connectionProtocol.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = connectionProtocol.cc; sourceTree = "<group>"; };
+		86BC80D716518D4600D96ADF /* connectionProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionProtocol.h; sourceTree = "<group>"; };
+		86BC80D816518D4600D96ADF /* connectionStringTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = connectionStringTable.cc; sourceTree = "<group>"; };
+		86BC80D916518D4600D96ADF /* connectionStringTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionStringTable.h; sourceTree = "<group>"; };
+		86BC80DA16518D4600D96ADF /* httpObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = httpObject.cc; sourceTree = "<group>"; };
+		86BC80DB16518D4600D96ADF /* httpObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = httpObject.h; sourceTree = "<group>"; };
+		86BC80DC16518D4600D96ADF /* netConnection.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netConnection.cc; sourceTree = "<group>"; };
+		86BC80DD16518D4600D96ADF /* netConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netConnection.h; sourceTree = "<group>"; };
+		86BC80DE16518D4600D96ADF /* netDownload.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netDownload.cc; sourceTree = "<group>"; };
+		86BC80DF16518D4600D96ADF /* netEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netEvent.cc; sourceTree = "<group>"; };
+		86BC80E016518D4600D96ADF /* netGhost.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netGhost.cc; sourceTree = "<group>"; };
+		86BC80E116518D4600D96ADF /* netInterface.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netInterface.cc; sourceTree = "<group>"; };
+		86BC80E216518D4600D96ADF /* netInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netInterface.h; sourceTree = "<group>"; };
+		86BC80E316518D4600D96ADF /* netObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netObject.cc; sourceTree = "<group>"; };
+		86BC80E416518D4600D96ADF /* netObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netObject.h; sourceTree = "<group>"; };
+		86BC80E516518D4600D96ADF /* netStringTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netStringTable.cc; sourceTree = "<group>"; };
+		86BC80E616518D4600D96ADF /* netStringTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netStringTable.h; sourceTree = "<group>"; };
+		86BC80E716518D4600D96ADF /* netTest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netTest.cc; sourceTree = "<group>"; };
+		86BC80E816518D4600D96ADF /* RemoteCommandEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteCommandEvent.cc; sourceTree = "<group>"; };
+		86BC80E916518D4600D96ADF /* serverQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = serverQuery.cc; sourceTree = "<group>"; };
+		86BC80EA16518D4600D96ADF /* serverQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serverQuery.h; sourceTree = "<group>"; };
+		86BC80EB16518D4600D96ADF /* tcpObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tcpObject.cc; sourceTree = "<group>"; };
+		86BC80EC16518D4600D96ADF /* tcpObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tcpObject.h; sourceTree = "<group>"; };
+		86BC80ED16518D4600D96ADF /* telnetConsole.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telnetConsole.cc; sourceTree = "<group>"; };
+		86BC80EE16518D4600D96ADF /* telnetConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetConsole.h; sourceTree = "<group>"; };
+		86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimXMLDocument.cpp; sourceTree = "<group>"; };
+		86BC80F116518D4600D96ADF /* SimXMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimXMLDocument.h; sourceTree = "<group>"; };
+		86BC80F316518D4600D96ADF /* taml.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taml.cc; sourceTree = "<group>"; };
+		86BC80F416518D4600D96ADF /* taml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml.h; sourceTree = "<group>"; };
+		86BC80F516518D4600D96ADF /* taml_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml_ScriptBinding.h; sourceTree = "<group>"; };
+		86BC80F616518D4600D96ADF /* tamlBinaryReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryReader.cc; sourceTree = "<group>"; };
+		86BC80F716518D4600D96ADF /* tamlBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryReader.h; sourceTree = "<group>"; };
+		86BC80F816518D4600D96ADF /* tamlBinaryWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryWriter.cc; sourceTree = "<group>"; };
+		86BC80F916518D4600D96ADF /* tamlBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryWriter.h; sourceTree = "<group>"; };
+		86BC80FA16518D4600D96ADF /* tamlCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCallbacks.h; sourceTree = "<group>"; };
+		86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlWriteNode.cc; sourceTree = "<group>"; };
+		86BC80FE16518D4600D96ADF /* tamlWriteNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlWriteNode.h; sourceTree = "<group>"; };
+		86BC80FF16518D4600D96ADF /* tamlXmlParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlParser.cc; sourceTree = "<group>"; };
+		86BC810016518D4600D96ADF /* tamlXmlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlParser.h; sourceTree = "<group>"; };
+		86BC810116518D4600D96ADF /* tamlXmlReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlReader.cc; sourceTree = "<group>"; };
+		86BC810216518D4600D96ADF /* tamlXmlReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlReader.h; sourceTree = "<group>"; };
+		86BC810316518D4600D96ADF /* tamlXmlVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlVisitor.h; sourceTree = "<group>"; };
+		86BC810416518D4600D96ADF /* tamlXmlWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlWriter.cc; sourceTree = "<group>"; };
+		86BC810516518D4600D96ADF /* tamlXmlWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlWriter.h; sourceTree = "<group>"; };
+		86BC810716518D4600D96ADF /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; };
+		86BC810816518D4600D96ADF /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; };
+		86BC810916518D4600D96ADF /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; };
+		86BC810A16518D4600D96ADF /* tinyxml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinyxml.h; sourceTree = "<group>"; };
+		86BC810B16518D4600D96ADF /* tinyxmlerror.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlerror.cpp; sourceTree = "<group>"; };
+		86BC810C16518D4600D96ADF /* tinyxmlparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = "<group>"; };
+		86BC812D16518D4600D96ADF /* scriptGroup.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scriptGroup.cc; sourceTree = "<group>"; };
+		86BC812E16518D4600D96ADF /* scriptGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scriptGroup.h; sourceTree = "<group>"; };
+		86BC812F16518D4600D96ADF /* scriptObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scriptObject.cc; sourceTree = "<group>"; };
+		86BC813016518D4600D96ADF /* scriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scriptObject.h; sourceTree = "<group>"; };
+		86BC813116518D4600D96ADF /* simBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simBase.cc; sourceTree = "<group>"; };
+		86BC813216518D4600D96ADF /* simBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simBase.h; sourceTree = "<group>"; };
+		86BC813316518D4600D96ADF /* simConsoleEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simConsoleEvent.cc; sourceTree = "<group>"; };
+		86BC813416518D4600D96ADF /* simConsoleEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simConsoleEvent.h; sourceTree = "<group>"; };
+		86BC813516518D4600D96ADF /* simConsoleThreadExecEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simConsoleThreadExecEvent.cc; sourceTree = "<group>"; };
+		86BC813616518D4600D96ADF /* simConsoleThreadExecEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simConsoleThreadExecEvent.h; sourceTree = "<group>"; };
+		86BC813716518D4600D96ADF /* simDatablock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simDatablock.cc; sourceTree = "<group>"; };
+		86BC813816518D4600D96ADF /* simDatablock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDatablock.h; sourceTree = "<group>"; };
+		86BC813916518D4600D96ADF /* simDatablockGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDatablockGroup.h; sourceTree = "<group>"; };
+		86BC813A16518D4600D96ADF /* simDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simDictionary.cc; sourceTree = "<group>"; };
+		86BC813B16518D4600D96ADF /* simDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDictionary.h; sourceTree = "<group>"; };
+		86BC813C16518D4600D96ADF /* simEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simEvent.h; sourceTree = "<group>"; };
+		86BC813D16518D4600D96ADF /* simFieldDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simFieldDictionary.cc; sourceTree = "<group>"; };
+		86BC813E16518D4600D96ADF /* simFieldDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simFieldDictionary.h; sourceTree = "<group>"; };
+		86BC813F16518D4600D96ADF /* simManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simManager.cc; sourceTree = "<group>"; };
+		86BC814016518D4600D96ADF /* simObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simObject.cc; sourceTree = "<group>"; };
+		86BC814116518D4600D96ADF /* simObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObject.h; sourceTree = "<group>"; };
+		86BC814216518D4600D96ADF /* SimObjectList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimObjectList.cc; sourceTree = "<group>"; };
+		86BC814316518D4600D96ADF /* SimObjectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimObjectList.h; sourceTree = "<group>"; };
+		86BC814416518D4600D96ADF /* simObjectPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObjectPtr.h; sourceTree = "<group>"; };
+		86BC814516518D4600D96ADF /* simSerialize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simSerialize.cpp; sourceTree = "<group>"; };
+		86BC814616518D4600D96ADF /* simSet.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simSet.cc; sourceTree = "<group>"; };
+		86BC814716518D4600D96ADF /* simSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simSet.h; sourceTree = "<group>"; };
+		86BC814916518D4600D96ADF /* findMatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = findMatch.cc; sourceTree = "<group>"; };
+		86BC814A16518D4600D96ADF /* findMatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = findMatch.h; sourceTree = "<group>"; };
+		86BC814B16518D4600D96ADF /* stringBuffer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringBuffer.cc; sourceTree = "<group>"; };
+		86BC814C16518D4600D96ADF /* stringBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringBuffer.h; sourceTree = "<group>"; };
+		86BC814D16518D4600D96ADF /* stringStack.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringStack.cc; sourceTree = "<group>"; };
+		86BC814E16518D4600D96ADF /* stringStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringStack.h; sourceTree = "<group>"; };
+		86BC814F16518D4600D96ADF /* stringTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringTable.cc; sourceTree = "<group>"; };
+		86BC815016518D4600D96ADF /* stringTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringTable.h; sourceTree = "<group>"; };
+		86BC815116518D4600D96ADF /* stringUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringUnit.cpp; sourceTree = "<group>"; };
+		86BC815216518D4600D96ADF /* stringUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringUnit.h; sourceTree = "<group>"; };
+		86BC815316518D4600D96ADF /* unicode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unicode.cc; sourceTree = "<group>"; };
+		86BC815416518D4600D96ADF /* unicode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unicode.h; sourceTree = "<group>"; };
+		86BC815516518D4600D96ADF /* torqueConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = torqueConfig.h; path = ../../../source/torqueConfig.h; sourceTree = "<group>"; };
+		86BC82B316518DF400D96ADF /* consoleDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleDictionary.cc; sourceTree = "<group>"; };
+		86BC82B416518DF400D96ADF /* consoleDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleDictionary.h; sourceTree = "<group>"; };
+		86BC82B516518DF400D96ADF /* consoleExprEvalState.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleExprEvalState.cc; sourceTree = "<group>"; };
+		86BC82B616518DF400D96ADF /* consoleExprEvalState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleExprEvalState.h; sourceTree = "<group>"; };
+		86BC82B716518DF400D96ADF /* consoleNamespace.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleNamespace.cc; sourceTree = "<group>"; };
+		86BC82B816518DF400D96ADF /* consoleNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleNamespace.h; sourceTree = "<group>"; };
+		86BC82B916518DF400D96ADF /* consoleBaseType.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleBaseType.cc; sourceTree = "<group>"; };
+		86BC82BA16518DF400D96ADF /* consoleBaseType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleBaseType.h; sourceTree = "<group>"; };
+		86BC82BB16518DF400D96ADF /* ConsoleTypeValidators.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleTypeValidators.cc; sourceTree = "<group>"; };
+		86BC82BC16518DF400D96ADF /* ConsoleTypeValidators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleTypeValidators.h; sourceTree = "<group>"; };
+		86BC82BD16518DF400D96ADF /* astNodeSizes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = astNodeSizes.h; sourceTree = "<group>"; };
+		86BC82BE16518DF400D96ADF /* Package.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Package.cc; sourceTree = "<group>"; };
+		86BC82BF16518DF400D96ADF /* Package.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Package.h; sourceTree = "<group>"; };
+		86BC82C016518DF400D96ADF /* astAlloc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = astAlloc.cc; sourceTree = "<group>"; };
+		86BC82C116518DF400D96ADF /* astNodes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = astNodes.cc; sourceTree = "<group>"; };
+		86BC82C216518DF400D96ADF /* cmdgram.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cmdgram.cc; sourceTree = "<group>"; };
+		86BC82C316518DF400D96ADF /* CMDscan.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CMDscan.cc; sourceTree = "<group>"; };
+		86BC82C416518DF400D96ADF /* codeBlock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = codeBlock.cc; sourceTree = "<group>"; };
+		86BC82C516518DF400D96ADF /* compiledEval.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compiledEval.cc; sourceTree = "<group>"; };
+		86BC82C616518DF400D96ADF /* compiler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compiler.cc; sourceTree = "<group>"; };
+		86BC82C716518DF400D96ADF /* console.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = console.cc; sourceTree = "<group>"; };
+		86BC82C816518DF400D96ADF /* consoleDoc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleDoc.cc; sourceTree = "<group>"; };
+		86BC82C916518DF400D96ADF /* consoleFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleFunctions.cc; sourceTree = "<group>"; };
+		86BC82CA16518DF400D96ADF /* consoleLogger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleLogger.cc; sourceTree = "<group>"; };
+		86BC82CB16518DF400D96ADF /* consoleObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleObject.cc; sourceTree = "<group>"; };
+		86BC82CC16518DF400D96ADF /* consoleParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleParser.cc; sourceTree = "<group>"; };
+		86BC82CD16518DF400D96ADF /* consoleTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleTypes.cc; sourceTree = "<group>"; };
+		86BC82CE16518DF400D96ADF /* ast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ast.h; sourceTree = "<group>"; };
+		86BC82CF16518DF400D96ADF /* cmdgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmdgram.h; sourceTree = "<group>"; };
+		86BC82D016518DF400D96ADF /* codeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codeBlock.h; sourceTree = "<group>"; };
+		86BC82D116518DF400D96ADF /* compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = "<group>"; };
+		86BC82D216518DF400D96ADF /* console.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = "<group>"; };
+		86BC82D316518DF400D96ADF /* consoleDoc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleDoc.h; sourceTree = "<group>"; };
+		86BC82D416518DF400D96ADF /* consoleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleInternal.h; sourceTree = "<group>"; };
+		86BC82D516518DF400D96ADF /* consoleLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleLogger.h; sourceTree = "<group>"; };
+		86BC82D616518DF400D96ADF /* consoleObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleObject.h; sourceTree = "<group>"; };
+		86BC82D716518DF400D96ADF /* consoleParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleParser.h; sourceTree = "<group>"; };
+		86BC82D816518DF400D96ADF /* consoleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleTypes.h; sourceTree = "<group>"; };
+		86BC833816518FB100D96ADF /* popupMenu.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = popupMenu.cc; sourceTree = "<group>"; };
+		86BC833916518FB100D96ADF /* popupMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popupMenu.h; sourceTree = "<group>"; };
+		86BC833B16518FBC00D96ADF /* msgBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = msgBox.cpp; sourceTree = "<group>"; };
+		86BC833C16518FBC00D96ADF /* fileDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileDialog.h; sourceTree = "<group>"; };
+		86BC833D16518FBC00D96ADF /* msgBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msgBox.h; sourceTree = "<group>"; };
+		86BC833F16518FC900D96ADF /* mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mutex.h; sourceTree = "<group>"; };
+		86BC834016518FC900D96ADF /* semaphore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = semaphore.h; sourceTree = "<group>"; };
+		86BC834116518FC900D96ADF /* thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = "<group>"; };
+		86BC834216518FE800D96ADF /* platformTimeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformTimeManager.h; sourceTree = "<group>"; };
+		86BC834316518FE800D96ADF /* platformMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformMath.h; sourceTree = "<group>"; };
+		86BC834416518FE800D96ADF /* platformFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformFont.cc; sourceTree = "<group>"; };
+		86BC834516518FE800D96ADF /* platformMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformMemory.h; sourceTree = "<group>"; };
+		86BC834616518FE800D96ADF /* platformNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformNetwork.h; sourceTree = "<group>"; };
+		86BC834716518FE800D96ADF /* platformString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformString.h; sourceTree = "<group>"; };
+		86BC834816518FE800D96ADF /* platformCPU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformCPU.h; sourceTree = "<group>"; };
+		86BC834916518FE800D96ADF /* platformEndian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformEndian.h; sourceTree = "<group>"; };
+		86BC834A16518FE800D96ADF /* Tickable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Tickable.cc; sourceTree = "<group>"; };
+		86BC834B16518FE800D96ADF /* Tickable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tickable.h; sourceTree = "<group>"; };
+		86BC834C16518FE800D96ADF /* CursorManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CursorManager.cc; sourceTree = "<group>"; };
+		86BC834D16518FE800D96ADF /* platform.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platform.cc; sourceTree = "<group>"; };
+		86BC834E16518FE800D96ADF /* platformAssert.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformAssert.cc; sourceTree = "<group>"; };
+		86BC834F16518FE800D96ADF /* platformCPU.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformCPU.cc; sourceTree = "<group>"; };
+		86BC835016518FE800D96ADF /* platformFileIO.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformFileIO.cc; sourceTree = "<group>"; };
+		86BC835116518FE800D96ADF /* platformMemory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformMemory.cc; sourceTree = "<group>"; };
+		86BC835216518FE800D96ADF /* platformNetAsync.unix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetAsync.unix.cc; sourceTree = "<group>"; };
+		86BC835316518FE800D96ADF /* platformString.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformString.cc; sourceTree = "<group>"; };
+		86BC835416518FE800D96ADF /* platformVideo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformVideo.cc; sourceTree = "<group>"; };
+		86BC835516518FE800D96ADF /* event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = "<group>"; };
+		86BC835616518FE800D96ADF /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
+		86BC835716518FE800D96ADF /* platformAL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAL.h; sourceTree = "<group>"; };
+		86BC835816518FE800D96ADF /* platformAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAssert.h; sourceTree = "<group>"; };
+		86BC835916518FE800D96ADF /* platformAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAudio.h; sourceTree = "<group>"; };
+		86BC835A16518FE800D96ADF /* platformFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFont.h; sourceTree = "<group>"; };
+		86BC835B16518FE800D96ADF /* platformGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformGL.h; sourceTree = "<group>"; };
+		86BC835C16518FE800D96ADF /* platformInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformInput.h; sourceTree = "<group>"; };
+		86BC835D16518FE800D96ADF /* platformNetAsync.unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformNetAsync.unix.h; sourceTree = "<group>"; };
+		86BC835E16518FE800D96ADF /* platformSemaphore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformSemaphore.h; sourceTree = "<group>"; };
+		86BC835F16518FE800D96ADF /* platformTLS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformTLS.h; sourceTree = "<group>"; };
+		86BC836016518FE800D96ADF /* platformVFS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformVFS.h; sourceTree = "<group>"; };
+		86BC836116518FE800D96ADF /* platformVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformVideo.h; sourceTree = "<group>"; };
+		86BC836216518FE800D96ADF /* types.gcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.gcc.h; sourceTree = "<group>"; };
+		86BC836316518FE800D96ADF /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
+		86BC836416518FE800D96ADF /* types.ppc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.ppc.h; sourceTree = "<group>"; };
+		86C281C716A4306900F030F4 /* Torque2D-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Torque2D-Info.plist"; path = "Torque2D/Torque2D-Info.plist"; sourceTree = SOURCE_ROOT; };
+		86C281C916A4307300F030F4 /* Torque2DGame-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Torque2DGame-Info.plist"; path = "Torque2D/Torque2DGame-Info.plist"; sourceTree = SOURCE_ROOT; };
+		86C281CC16A4307E00F030F4 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Torque2D/en.lproj/MainMenu.xib; sourceTree = SOURCE_ROOT; };
+		86C281CF16A4309800F030F4 /* Torque2D-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Torque2D-Prefix.pch"; path = "Torque2D/Torque2D-Prefix.pch"; sourceTree = SOURCE_ROOT; };
+		86CEFC76166FE17500DAF75D /* platformInput_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformInput_ScriptBinding.h; sourceTree = "<group>"; };
+		86D76F74165682BF0046D71F /* platformGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformGL.h; sourceTree = "<group>"; };
+		86D76F76165683240046D71F /* osxOutlineGL.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = osxOutlineGL.cc; sourceTree = "<group>"; };
+		86D76F77165683240046D71F /* osxOutlineGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxOutlineGL.h; sourceTree = "<group>"; };
+		86EA5B3E1678C7C700598E68 /* osxCocoaUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxCocoaUtilities.h; sourceTree = "<group>"; };
+		86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxCocoaUtilities.mm; sourceTree = "<group>"; };
+		86EC5AC5165C1E0100757872 /* osxTorqueView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = osxTorqueView.h; sourceTree = "<group>"; };
+		86EC5AC6165C1E0100757872 /* osxTorqueView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = osxTorqueView.mm; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		869FF8B51651518C002FE082 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				865A20CA16515B1E00527C44 /* AppKit.framework in Frameworks */,
+				865A20CB16515B1E00527C44 /* AVFoundation.framework in Frameworks */,
+				865A20CC16515B1E00527C44 /* Cocoa.framework in Frameworks */,
+				865A20CD16515B1E00527C44 /* CoreData.framework in Frameworks */,
+				865A20CE16515B1E00527C44 /* CoreFoundation.framework in Frameworks */,
+				865A20CF16515B1E00527C44 /* Foundation.framework in Frameworks */,
+				865A20D016515B1E00527C44 /* OpenAL.framework in Frameworks */,
+				865A20D116515B1E00527C44 /* OpenGL.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		2A033005165D1CB100E9CD70 /* testing */ = {
+			isa = PBXGroup;
+			children = (
+				2A03300F165D1D2500E9CD70 /* tests */,
+				2A03300B165D1D2100E9CD70 /* unitTesting.cc */,
+				2A03300C165D1D2100E9CD70 /* unitTesting.h */,
+			);
+			name = testing;
+			sourceTree = "<group>";
+		};
+		2A03300F165D1D2500E9CD70 /* tests */ = {
+			isa = PBXGroup;
+			children = (
+				2ACFC0A7166CE1AB00FE7370 /* platformMemoryTests.cc */,
+				2AC5C7E71667C85700A0D046 /* platformStringTests.cc */,
+				2A033010165D1D4100E9CD70 /* platformFileIoTests.cc */,
+			);
+			name = tests;
+			sourceTree = "<group>";
+		};
+		865A20BD1651589F00527C44 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				865A20BE165158CA00527C44 /* torque2d.icns */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		865A20C916515AEF00527C44 /* System */ = {
+			isa = PBXGroup;
+			children = (
+				869FF8BF1651518C002FE082 /* AppKit.framework */,
+				865A20C116515ACE00527C44 /* AVFoundation.framework */,
+				869FF8BC1651518C002FE082 /* Cocoa.framework */,
+				869FF8C01651518C002FE082 /* CoreData.framework */,
+				865A20C216515ACE00527C44 /* CoreFoundation.framework */,
+				869FF8C11651518C002FE082 /* Foundation.framework */,
+				865A20C316515ACE00527C44 /* OpenAL.framework */,
+				865A20C416515ACE00527C44 /* OpenGL.framework */,
+			);
+			name = System;
+			sourceTree = "<group>";
+		};
+		865A21E71651875E00527C44 /* Support_Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				865A22D6165187D700527C44 /* lpng */,
+				865A22D5165187D100527C44 /* ljpeg */,
+				865A21E8165187B600527C44 /* box2d */,
+			);
+			name = Support_Libraries;
+			sourceTree = "<group>";
+		};
+		865A21E8165187B600527C44 /* box2d */ = {
+			isa = PBXGroup;
+			children = (
+				865A21E9165187B600527C44 /* Box2D.h */,
+				865A21EA165187B600527C44 /* Collision */,
+				865A2202165187B600527C44 /* Common */,
+				865A2210165187B600527C44 /* Dynamics */,
+				865A2278165187B600527C44 /* Rope */,
+			);
+			name = box2d;
+			path = ../../source/box2d;
+			sourceTree = "<group>";
+		};
+		865A21EA165187B600527C44 /* Collision */ = {
+			isa = PBXGroup;
+			children = (
+				865A21EB165187B600527C44 /* b2BroadPhase.cpp */,
+				865A21EC165187B600527C44 /* b2BroadPhase.h */,
+				865A21ED165187B600527C44 /* b2CollideCircle.cpp */,
+				865A21EE165187B600527C44 /* b2CollideEdge.cpp */,
+				865A21EF165187B600527C44 /* b2CollidePolygon.cpp */,
+				865A21F0165187B600527C44 /* b2Collision.cpp */,
+				865A21F1165187B600527C44 /* b2Collision.h */,
+				865A21F2165187B600527C44 /* b2Distance.cpp */,
+				865A21F3165187B600527C44 /* b2Distance.h */,
+				865A21F4165187B600527C44 /* b2DynamicTree.cpp */,
+				865A21F5165187B600527C44 /* b2DynamicTree.h */,
+				865A21F6165187B600527C44 /* b2TimeOfImpact.cpp */,
+				865A21F7165187B600527C44 /* b2TimeOfImpact.h */,
+				865A21F8165187B600527C44 /* Shapes */,
+			);
+			path = Collision;
+			sourceTree = "<group>";
+		};
+		865A21F8165187B600527C44 /* Shapes */ = {
+			isa = PBXGroup;
+			children = (
+				865A21F9165187B600527C44 /* b2ChainShape.cpp */,
+				865A21FA165187B600527C44 /* b2ChainShape.h */,
+				865A21FB165187B600527C44 /* b2CircleShape.cpp */,
+				865A21FC165187B600527C44 /* b2CircleShape.h */,
+				865A21FD165187B600527C44 /* b2EdgeShape.cpp */,
+				865A21FE165187B600527C44 /* b2EdgeShape.h */,
+				865A21FF165187B600527C44 /* b2PolygonShape.cpp */,
+				865A2200165187B600527C44 /* b2PolygonShape.h */,
+				865A2201165187B600527C44 /* b2Shape.h */,
+			);
+			path = Shapes;
+			sourceTree = "<group>";
+		};
+		865A2202165187B600527C44 /* Common */ = {
+			isa = PBXGroup;
+			children = (
+				865A2203165187B600527C44 /* b2BlockAllocator.cpp */,
+				865A2204165187B600527C44 /* b2BlockAllocator.h */,
+				865A2205165187B600527C44 /* b2Draw.cpp */,
+				865A2206165187B600527C44 /* b2Draw.h */,
+				865A2207165187B600527C44 /* b2GrowableStack.h */,
+				865A2208165187B600527C44 /* b2Math.cpp */,
+				865A2209165187B600527C44 /* b2Math.h */,
+				865A220A165187B600527C44 /* b2Settings.cpp */,
+				865A220B165187B600527C44 /* b2Settings.h */,
+				865A220C165187B600527C44 /* b2StackAllocator.cpp */,
+				865A220D165187B600527C44 /* b2StackAllocator.h */,
+				865A220E165187B600527C44 /* b2Timer.cpp */,
+				865A220F165187B600527C44 /* b2Timer.h */,
+			);
+			path = Common;
+			sourceTree = "<group>";
+		};
+		865A2210165187B600527C44 /* Dynamics */ = {
+			isa = PBXGroup;
+			children = (
+				865A2211165187B600527C44 /* b2Body.cpp */,
+				865A2212165187B600527C44 /* b2Body.h */,
+				865A2213165187B600527C44 /* b2ContactManager.cpp */,
+				865A2214165187B600527C44 /* b2ContactManager.h */,
+				865A2215165187B600527C44 /* b2Fixture.cpp */,
+				865A2216165187B600527C44 /* b2Fixture.h */,
+				865A2217165187B600527C44 /* b2Island.cpp */,
+				865A2218165187B600527C44 /* b2Island.h */,
+				865A2219165187B600527C44 /* b2TimeStep.h */,
+				865A221A165187B600527C44 /* b2World.cpp */,
+				865A221B165187B600527C44 /* b2World.h */,
+				865A221C165187B600527C44 /* b2WorldCallbacks.cpp */,
+				865A221D165187B600527C44 /* b2WorldCallbacks.h */,
+				865A221E165187B600527C44 /* Contacts */,
+				865A2231165187B600527C44 /* Joints */,
+			);
+			path = Dynamics;
+			sourceTree = "<group>";
+		};
+		865A221E165187B600527C44 /* Contacts */ = {
+			isa = PBXGroup;
+			children = (
+				865A221F165187B600527C44 /* b2ChainAndCircleContact.cpp */,
+				865A2220165187B600527C44 /* b2ChainAndCircleContact.h */,
+				865A2221165187B600527C44 /* b2ChainAndPolygonContact.cpp */,
+				865A2222165187B600527C44 /* b2ChainAndPolygonContact.h */,
+				865A2223165187B600527C44 /* b2CircleContact.cpp */,
+				865A2224165187B600527C44 /* b2CircleContact.h */,
+				865A2225165187B600527C44 /* b2Contact.cpp */,
+				865A2226165187B600527C44 /* b2Contact.h */,
+				865A2227165187B600527C44 /* b2ContactSolver.cpp */,
+				865A2228165187B600527C44 /* b2ContactSolver.h */,
+				865A2229165187B600527C44 /* b2EdgeAndCircleContact.cpp */,
+				865A222A165187B600527C44 /* b2EdgeAndCircleContact.h */,
+				865A222B165187B600527C44 /* b2EdgeAndPolygonContact.cpp */,
+				865A222C165187B600527C44 /* b2EdgeAndPolygonContact.h */,
+				865A222D165187B600527C44 /* b2PolygonAndCircleContact.cpp */,
+				865A222E165187B600527C44 /* b2PolygonAndCircleContact.h */,
+				865A222F165187B600527C44 /* b2PolygonContact.cpp */,
+				865A2230165187B600527C44 /* b2PolygonContact.h */,
+			);
+			path = Contacts;
+			sourceTree = "<group>";
+		};
+		865A2231165187B600527C44 /* Joints */ = {
+			isa = PBXGroup;
+			children = (
+				865A2232165187B600527C44 /* b2DistanceJoint.cpp */,
+				865A2233165187B600527C44 /* b2DistanceJoint.h */,
+				865A2234165187B600527C44 /* b2FrictionJoint.cpp */,
+				865A2235165187B600527C44 /* b2FrictionJoint.h */,
+				865A2236165187B600527C44 /* b2GearJoint.cpp */,
+				865A2237165187B600527C44 /* b2GearJoint.h */,
+				865A2238165187B600527C44 /* b2Joint.cpp */,
+				865A2239165187B600527C44 /* b2Joint.h */,
+				865A223A165187B600527C44 /* b2MotorJoint.cpp */,
+				865A223B165187B600527C44 /* b2MotorJoint.h */,
+				865A223C165187B600527C44 /* b2MouseJoint.cpp */,
+				865A223D165187B600527C44 /* b2MouseJoint.h */,
+				865A223E165187B600527C44 /* b2PrismaticJoint.cpp */,
+				865A223F165187B600527C44 /* b2PrismaticJoint.h */,
+				865A2240165187B600527C44 /* b2PulleyJoint.cpp */,
+				865A2241165187B600527C44 /* b2PulleyJoint.h */,
+				865A2242165187B600527C44 /* b2RevoluteJoint.cpp */,
+				865A2243165187B600527C44 /* b2RevoluteJoint.h */,
+				865A2244165187B600527C44 /* b2RopeJoint.cpp */,
+				865A2245165187B600527C44 /* b2RopeJoint.h */,
+				865A2246165187B600527C44 /* b2WeldJoint.cpp */,
+				865A2247165187B600527C44 /* b2WeldJoint.h */,
+				865A2248165187B600527C44 /* b2WheelJoint.cpp */,
+				865A2249165187B600527C44 /* b2WheelJoint.h */,
+			);
+			path = Joints;
+			sourceTree = "<group>";
+		};
+		865A2278165187B600527C44 /* Rope */ = {
+			isa = PBXGroup;
+			children = (
+				865A2279165187B600527C44 /* b2Rope.cpp */,
+				865A227A165187B600527C44 /* b2Rope.h */,
+			);
+			path = Rope;
+			sourceTree = "<group>";
+		};
+		865A22D5165187D100527C44 /* ljpeg */ = {
+			isa = PBXGroup;
+			children = (
+				865A22D7165187FF00527C44 /* jcapimin.c */,
+				865A22D8165187FF00527C44 /* jcapistd.c */,
+				865A22D9165187FF00527C44 /* jccoefct.c */,
+				865A22DA165187FF00527C44 /* jccolor.c */,
+				865A22DB165187FF00527C44 /* jcdctmgr.c */,
+				865A22DC165187FF00527C44 /* jchuff.c */,
+				865A22DD165187FF00527C44 /* jcinit.c */,
+				865A22DE165187FF00527C44 /* jcmainct.c */,
+				865A22DF165187FF00527C44 /* jcmarker.c */,
+				865A22E0165187FF00527C44 /* jcmaster.c */,
+				865A22E1165187FF00527C44 /* jcomapi.c */,
+				865A22E2165187FF00527C44 /* jcparam.c */,
+				865A22E3165187FF00527C44 /* jcphuff.c */,
+				865A22E4165187FF00527C44 /* jcprepct.c */,
+				865A22E5165187FF00527C44 /* jcsample.c */,
+				865A22E6165187FF00527C44 /* jctrans.c */,
+				865A22E7165187FF00527C44 /* jdapimin.c */,
+				865A22E8165187FF00527C44 /* jdapistd.c */,
+				865A22E9165187FF00527C44 /* jdatadst.c */,
+				865A22EA165187FF00527C44 /* jdatasrc.c */,
+				865A22EB165187FF00527C44 /* jdcoefct.c */,
+				865A22EC165187FF00527C44 /* jdcolor.c */,
+				865A22ED165187FF00527C44 /* jddctmgr.c */,
+				865A22EE165187FF00527C44 /* jdhuff.c */,
+				865A22EF165187FF00527C44 /* jdinput.c */,
+				865A22F0165187FF00527C44 /* jdmainct.c */,
+				865A22F1165187FF00527C44 /* jdmarker.c */,
+				865A22F2165187FF00527C44 /* jdmaster.c */,
+				865A22F3165187FF00527C44 /* jdmerge.c */,
+				865A22F4165187FF00527C44 /* jdphuff.c */,
+				865A22F5165187FF00527C44 /* jdpostct.c */,
+				865A22F6165187FF00527C44 /* jdsample.c */,
+				865A22F7165187FF00527C44 /* jdtrans.c */,
+				865A22F8165187FF00527C44 /* jerror.c */,
+				865A22F9165187FF00527C44 /* jfdctflt.c */,
+				865A22FA165187FF00527C44 /* jfdctfst.c */,
+				865A22FB165187FF00527C44 /* jfdctint.c */,
+				865A22FC165187FF00527C44 /* jidctflt.c */,
+				865A22FD165187FF00527C44 /* jidctfst.c */,
+				865A22FE165187FF00527C44 /* jidctint.c */,
+				865A22FF165187FF00527C44 /* jidctred.c */,
+				865A2300165187FF00527C44 /* jmemansi.c */,
+				865A2301165187FF00527C44 /* jmemmgr.c */,
+				865A2302165187FF00527C44 /* jquant1.c */,
+				865A2303165187FF00527C44 /* jquant2.c */,
+				865A2304165187FF00527C44 /* jutils.c */,
+			);
+			name = ljpeg;
+			sourceTree = "<group>";
+		};
+		865A22D6165187D700527C44 /* lpng */ = {
+			isa = PBXGroup;
+			children = (
+				865A23331651881300527C44 /* png.c */,
+				865A23341651881300527C44 /* pngerror.c */,
+				865A23351651881300527C44 /* pngget.c */,
+				865A23361651881300527C44 /* pngmem.c */,
+				865A23371651881300527C44 /* pngpread.c */,
+				865A23381651881300527C44 /* pngread.c */,
+				865A23391651881300527C44 /* pngrio.c */,
+				865A233A1651881300527C44 /* pngrtran.c */,
+				865A233B1651881300527C44 /* pngrutil.c */,
+				865A233C1651881300527C44 /* pngset.c */,
+				865A233D1651881300527C44 /* pngtrans.c */,
+				865A233E1651881300527C44 /* pngwio.c */,
+				865A233F1651881300527C44 /* pngwrite.c */,
+				865A23401651881300527C44 /* pngwtran.c */,
+				865A23411651881300527C44 /* pngwutil.c */,
+			);
+			name = lpng;
+			sourceTree = "<group>";
+		};
+		865A2351165188AF00527C44 /* platformOSX */ = {
+			isa = PBXGroup;
+			children = (
+				86EA5B3E1678C7C700598E68 /* osxCocoaUtilities.h */,
+				86EA5B3F1678C7C700598E68 /* osxCocoaUtilities.mm */,
+				865A235716518AD300527C44 /* AppDelegate.h */,
+				865A235816518AD300527C44 /* AppDelegate.mm */,
+				865A235916518AD300527C44 /* main.mm */,
+				8652C278165586520052D0CB /* osxAudio.mm */,
+				8658B171165A7BFB0087ABC1 /* osxCPU.mm */,
+				8694ADC41656B06B0080ABAC /* osxEvents.h */,
+				8694ADC51656B06B0080ABAC /* osxEvents.mm */,
+				8609FE3216556F22004662ED /* osxFileDialogs.mm */,
+				866381D7165550FF00C8C551 /* osxFileIO.mm */,
+				8609FE37165572EC004662ED /* osxFont.mm */,
+				2A0A68DF166E268E0093AD41 /* osxFont.h */,
+				8694ADD41656BDE60080ABAC /* osxGL.mm */,
+				865BD2F6166FA6460064F595 /* osxInputManager.h */,
+				865BD2F8166FA7F80064F595 /* osxInputManager.mm */,
+				866381E41655615200C8C551 /* osxInput.mm */,
+				866381DB165556AD00C8C551 /* osxMath.mm */,
+				8660471D16557B3000A67DE6 /* osxMath_ScriptBinding.h */,
+				866381D91655562400C8C551 /* osxMemory.mm */,
+				2ABF5C8E16569A0C00BBBF1D /* osxMutex.mm */,
+				8658B172165A7BFB0087ABC1 /* osxNetwork.mm */,
+				86854E321663AAE6009FAFB2 /* osxOpenGLDevice.h */,
+				86854E331663AAE6009FAFB2 /* osxOpenGLDevice.mm */,
+				86D76F76165683240046D71F /* osxOutlineGL.cc */,
+				86D76F77165683240046D71F /* osxOutlineGL.h */,
+				8609FE351655716E004662ED /* osxPopupMenu.mm */,
+				8609FE2E16556DD2004662ED /* osxSemaphore.mm */,
+				8658B173165A7BFB0087ABC1 /* osxString.mm */,
+				8609FE3016556E5A004662ED /* osxThread.mm */,
+				866381E81655674B00C8C551 /* osxTime.mm */,
+				86EC5AC5165C1E0100757872 /* osxTorqueView.h */,
+				86EC5AC6165C1E0100757872 /* osxTorqueView.mm */,
+				8694ADD01656B7FC0080ABAC /* osxVideo.mm */,
+				8694ADC61656B06B0080ABAC /* osxWindow.mm */,
+				86D76F74165682BF0046D71F /* platformGL.h */,
+				86063A231654180000362D83 /* platformOSX.h */,
+				86063A241654180000362D83 /* platformOSX.mm */,
+				869FF8C31651518C002FE082 /* Supporting Files */,
+			);
+			name = platformOSX;
+			path = ../../source/platformOSX;
+			sourceTree = "<group>";
+		};
+		869FF8AD1651518C002FE082 = {
+			isa = PBXGroup;
+			children = (
+				869FF8C21651518C002FE082 /* Torque2D */,
+				865A2351165188AF00527C44 /* platformOSX */,
+				865A21E71651875E00527C44 /* Support_Libraries */,
+				865A20BD1651589F00527C44 /* Resources */,
+				869FF8BB1651518C002FE082 /* Frameworks */,
+				869FF8B91651518C002FE082 /* Products */,
+				865A20B01651530B00527C44 /* Config.xcconfig */,
+			);
+			sourceTree = "<group>";
+		};
+		869FF8B91651518C002FE082 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				869FF8B81651518C002FE082 /* Torque2D_DEBUG.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		869FF8BB1651518C002FE082 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				865A20C916515AEF00527C44 /* System */,
+				869FF8BE1651518C002FE082 /* Other Frameworks */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		869FF8BE1651518C002FE082 /* Other Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = "Other Frameworks";
+			sourceTree = "<group>";
+		};
+		869FF8C21651518C002FE082 /* Torque2D */ = {
+			isa = PBXGroup;
+			children = (
+				86BC815516518D4600D96ADF /* torqueConfig.h */,
+				86BC7E7516518D4600D96ADF /* 2d */,
+				86BC7EE016518D4600D96ADF /* algorithm */,
+				86BC7EE716518D4600D96ADF /* assets */,
+				86BC7F0016518D4600D96ADF /* audio */,
+				86BC7F0F16518D4600D96ADF /* collection */,
+				86BC7F2616518D4600D96ADF /* component */,
+				86BC7F4716518D4600D96ADF /* console */,
+				86BC7F7316518D4600D96ADF /* debug */,
+				86BC7F8216518D4600D96ADF /* delegates */,
+				86BC7FAE16518D4600D96ADF /* game */,
+				86BC7FB916518D4600D96ADF /* graphics */,
+				86BC7FD716518D4600D96ADF /* gui */,
+				86BC805816518D4600D96ADF /* input */,
+				86BC805B16518D4600D96ADF /* io */,
+				86BC809116518D4600D96ADF /* math */,
+				86BC80B816518D4600D96ADF /* memory */,
+				86BC80BF16518D4600D96ADF /* messaging */,
+				86BC80CA16518D4600D96ADF /* module */,
+				86BC80D516518D4600D96ADF /* network */,
+				86BC80EF16518D4600D96ADF /* persistence */,
+				86BC82ED16518F6800D96ADF /* platform */,
+				86BC812C16518D4600D96ADF /* sim */,
+				86BC814816518D4600D96ADF /* string */,
+				2A033005165D1CB100E9CD70 /* testing */,
+			);
+			path = Torque2D;
+			sourceTree = "<group>";
+		};
+		869FF8C31651518C002FE082 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				86C281CF16A4309800F030F4 /* Torque2D-Prefix.pch */,
+				86C281CB16A4307E00F030F4 /* MainMenu.xib */,
+				86C281C716A4306900F030F4 /* Torque2D-Info.plist */,
+				86C281C916A4307300F030F4 /* Torque2DGame-Info.plist */,
+			);
+			name = "Supporting Files";
+			path = ../../compilers/New_Xcode/Torque2D;
+			sourceTree = "<group>";
+		};
+		86BC7E7516518D4600D96ADF /* 2d */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7E7616518D4600D96ADF /* assets */,
+				86BC7E8016518D4600D96ADF /* core */,
+				86BC7E9616518D4600D96ADF /* gui */,
+				86BC7EA216518D4600D96ADF /* scene */,
+				86BC7EB716518D4600D96ADF /* sceneobject */,
+			);
+			name = 2d;
+			path = ../../../source/2d;
+			sourceTree = "<group>";
+		};
+		86BC7E7616518D4600D96ADF /* assets */ = {
+			isa = PBXGroup;
+			children = (
+				2AF80CFF16A80CB400CE13F1 /* ParticleAssetEmitter_ScriptBinding.h */,
+				2AE5B54016A6D860006908D5 /* ParticleAssetFieldCollection.cc */,
+				2AE5B54116A6D860006908D5 /* ParticleAssetFieldCollection.h */,
+				2A6F78CC16A4528C005C76D9 /* ParticleAssetEmitter.cc */,
+				2A6F78CD16A4528C005C76D9 /* ParticleAssetEmitter.h */,
+				2ADCAC1016A41E5500E07619 /* ParticleAsset_ScriptBinding.h */,
+				2ADCAC1116A41E5500E07619 /* ParticleAsset.cc */,
+				2ADCAC1216A41E5500E07619 /* ParticleAsset.h */,
+				2ADCAC1316A41E5500E07619 /* ParticleAssetField.cc */,
+				2ADCAC1416A41E5500E07619 /* ParticleAssetField.h */,
+				86BC7E7716518D4600D96ADF /* AnimationAsset.cc */,
+				86BC7E7816518D4600D96ADF /* AnimationAsset.h */,
+				86BC7E7916518D4600D96ADF /* AnimationAsset_ScriptBinding.h */,
+				86BC7E7A16518D4600D96ADF /* AnimationController.cc */,
+				86BC7E7B16518D4600D96ADF /* AnimationController.h */,
+				86BC7E7C16518D4600D96ADF /* ImageAsset.cc */,
+				86BC7E7D16518D4600D96ADF /* ImageAsset.h */,
+				86BC7E7E16518D4600D96ADF /* ImageAsset_ScriptBinding.h */,
+			);
+			path = assets;
+			sourceTree = "<group>";
+		};
+		86BC7E8016518D4600D96ADF /* core */ = {
+			isa = PBXGroup;
+			children = (
+				2AF3633716A9BBE0004ED7AA /* ParticleSystem.cc */,
+				2AF3633816A9BBE0004ED7AA /* ParticleSystem.h */,
+				86BC7E8116518D4600D96ADF /* BatchRender.cc */,
+				86BC7E8216518D4600D96ADF /* BatchRender.h */,
+				86BC7E8316518D4600D96ADF /* CoreMath.cc */,
+				86BC7E8416518D4600D96ADF /* CoreMath.h */,
+				86BC7E8516518D4600D96ADF /* RenderProxy.cc */,
+				86BC7E8616518D4600D96ADF /* RenderProxy.h */,
+				86BC7E8716518D4600D96ADF /* RenderProxy_ScriptBinding.h */,
+				86BC7E8816518D4600D96ADF /* SpriteBase.cc */,
+				86BC7E8916518D4600D96ADF /* SpriteBase.h */,
+				86BC7E8A16518D4600D96ADF /* SpriteBase_ScriptBinding.h */,
+				86BC7E8B16518D4600D96ADF /* SpriteBatch.cc */,
+				86BC7E8C16518D4600D96ADF /* SpriteBatch.h */,
+				86BC7E8D16518D4600D96ADF /* SpriteBatchItem.cc */,
+				86BC7E8E16518D4600D96ADF /* SpriteBatchItem.h */,
+				86BC7E8F16518D4600D96ADF /* SpriteProxyBase.cc */,
+				86BC7E9016518D4600D96ADF /* SpriteProxyBase.h */,
+				86BC7E9116518D4600D96ADF /* Utility.cc */,
+				86BC7E9216518D4600D96ADF /* Utility.h */,
+				86BC7E9316518D4600D96ADF /* Vector2.cc */,
+				86BC7E9416518D4600D96ADF /* Vector2.h */,
+				86BC7E9516518D4600D96ADF /* Vector2_ScriptBinding.h */,
+			);
+			path = core;
+			sourceTree = "<group>";
+		};
+		86BC7E9616518D4600D96ADF /* gui */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7E9716518D4600D96ADF /* guiImageButtonCtrl.cc */,
+				86BC7E9816518D4600D96ADF /* guiImageButtonCtrl.h */,
+				86BC7E9916518D4600D96ADF /* guiImageButtonCtrl_ScriptBindings.h */,
+				86BC7E9A16518D4600D96ADF /* guiSceneObjectCtrl.cc */,
+				86BC7E9B16518D4600D96ADF /* guiSceneObjectCtrl.h */,
+				86BC7E9C16518D4600D96ADF /* guiSpriteCtrl.cc */,
+				86BC7E9D16518D4600D96ADF /* guiSpriteCtrl.h */,
+				86BC7E9E16518D4600D96ADF /* guiSpriteCtrl_ScriptBindings.h */,
+				86BC7E9F16518D4600D96ADF /* SceneWindow.cc */,
+				86BC7EA016518D4600D96ADF /* SceneWindow.h */,
+				86BC7EA116518D4600D96ADF /* SceneWindow_ScriptBinding.h */,
+			);
+			path = gui;
+			sourceTree = "<group>";
+		};
+		86BC7EA216518D4600D96ADF /* scene */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7EA316518D4600D96ADF /* ContactFilter.cc */,
+				86BC7EA416518D4600D96ADF /* ContactFilter.h */,
+				86BC7EA516518D4600D96ADF /* DebugDraw.cc */,
+				86BC7EA616518D4600D96ADF /* DebugDraw.h */,
+				86BC7EA716518D4600D96ADF /* DebugStats.h */,
+				86BC7EA816518D4600D96ADF /* PhysicsProxy.h */,
+				86BC7EA916518D4600D96ADF /* Scene.cc */,
+				86BC7EAA16518D4600D96ADF /* Scene.h */,
+				86BC7EAB16518D4600D96ADF /* Scene_ScriptBinding.h */,
+				86BC7EAC16518D4600D96ADF /* SceneRenderFactories.cpp */,
+				86BC7EAD16518D4600D96ADF /* SceneRenderFactories.h */,
+				86BC7EAE16518D4600D96ADF /* SceneRenderObject.h */,
+				86BC7EAF16518D4600D96ADF /* SceneRenderQueue.cpp */,
+				86BC7EB016518D4600D96ADF /* SceneRenderQueue.h */,
+				86BC7EB116518D4600D96ADF /* SceneRenderRequest.h */,
+				86BC7EB216518D4600D96ADF /* SceneRenderState.h */,
+				86BC7EB316518D4600D96ADF /* WorldQuery.cc */,
+				86BC7EB416518D4600D96ADF /* WorldQuery.h */,
+				86BC7EB516518D4600D96ADF /* WorldQueryFilter.h */,
+				86BC7EB616518D4600D96ADF /* WorldQueryResult.h */,
+			);
+			path = scene;
+			sourceTree = "<group>";
+		};
+		86BC7EB716518D4600D96ADF /* sceneobject */ = {
+			isa = PBXGroup;
+			children = (
+				2AC4404216B0142B00FC4091 /* ImageFont_ScriptBinding.h */,
+				2AC4404316B0142B00FC4091 /* ImageFont.cc */,
+				2AC4404416B0142B00FC4091 /* ImageFont.h */,
+				2A25738D16A48DAC00363C6F /* ParticlePlayer_ScriptBinding.h */,
+				2A25738E16A48DAC00363C6F /* ParticlePlayer.cc */,
+				2A25738F16A48DAC00363C6F /* ParticlePlayer.h */,
+				86BC7EBB16518D4600D96ADF /* CompositeSprite.cc */,
+				86BC7EBC16518D4600D96ADF /* CompositeSprite.h */,
+				86BC7EBD16518D4600D96ADF /* CompositeSprite_ScriptBinding.h */,
+				86BC7EC316518D4600D96ADF /* SceneObject.cc */,
+				86BC7EC416518D4600D96ADF /* SceneObject.h */,
+				86BC7EC516518D4600D96ADF /* SceneObject_ScriptBinding.h */,
+				86BC7EC816518D4600D96ADF /* SceneObjectMoveToEvent.h */,
+				86BC7EC916518D4600D96ADF /* SceneObjectRotateToEvent.h */,
+				86BC7ECD16518D4600D96ADF /* SceneObjectTimerEvent.h */,
+				86BC7ECE16518D4600D96ADF /* Scroller.cc */,
+				86BC7ECF16518D4600D96ADF /* Scroller.h */,
+				86BC7ED016518D4600D96ADF /* Scroller_ScriptBinding.h */,
+				86BC7ED116518D4600D96ADF /* ShapeVector.cc */,
+				86BC7ED216518D4600D96ADF /* ShapeVector.h */,
+				86BC7ED316518D4600D96ADF /* ShapeVector_ScriptBinding.h */,
+				86BC7ED416518D4600D96ADF /* Sprite.cc */,
+				86BC7ED516518D4600D96ADF /* Sprite.h */,
+				86BC7ED616518D4600D96ADF /* Sprite_ScriptBinding.h */,
+				86BC7ED716518D4600D96ADF /* Trigger.cc */,
+				86BC7ED816518D4600D96ADF /* Trigger.h */,
+				86BC7ED916518D4600D96ADF /* Trigger_ScriptBinding.h */,
+			);
+			path = sceneobject;
+			sourceTree = "<group>";
+		};
+		86BC7EE016518D4600D96ADF /* algorithm */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7EE116518D4600D96ADF /* crc.cc */,
+				86BC7EE216518D4600D96ADF /* crc.h */,
+				86BC7EE316518D4600D96ADF /* crctab.h */,
+				86BC7EE416518D4600D96ADF /* hashFunction.cc */,
+				86BC7EE516518D4600D96ADF /* hashFunction.h */,
+				86BC7EE616518D4600D96ADF /* md5.h */,
+			);
+			name = algorithm;
+			path = ../../../source/algorithm;
+			sourceTree = "<group>";
+		};
+		86BC7EE716518D4600D96ADF /* assets */ = {
+			isa = PBXGroup;
+			children = (
+				2AF1C53C16B439BB00C1CF3A /* declaredAssets.cc */,
+				2AF1C53D16B439BB00C1CF3A /* declaredAssets.h */,
+				2AF1C53E16B439BB00C1CF3A /* referencedAssets.cc */,
+				2AF1C53F16B439BB00C1CF3A /* referencedAssets.h */,
+				86BC7EE816518D4600D96ADF /* assetBase.cc */,
+				86BC7EE916518D4600D96ADF /* assetBase.h */,
+				86BC7EEA16518D4600D96ADF /* assetBase_ScriptBinding.h */,
+				86BC7EEB16518D4600D96ADF /* assetDefinition.h */,
+				86BC7EEC16518D4600D96ADF /* assetFieldTypes.cc */,
+				86BC7EED16518D4600D96ADF /* assetFieldTypes.h */,
+				86BC7EEE16518D4600D96ADF /* assetManager.cc */,
+				86BC7EEF16518D4600D96ADF /* assetManager.h */,
+				86BC7EF016518D4600D96ADF /* assetManager_ScriptBinding.h */,
+				86BC7EF316518D4600D96ADF /* assetPtr.h */,
+				86BC7EF416518D4600D96ADF /* assetQuery.cc */,
+				86BC7EF516518D4600D96ADF /* assetQuery.h */,
+				86BC7EF616518D4600D96ADF /* assetQuery_ScriptBinding.h */,
+				86BC7EF716518D4600D96ADF /* assetSnapshot.cc */,
+				86BC7EF816518D4600D96ADF /* assetSnapshot.h */,
+				86BC7EF916518D4600D96ADF /* assetTagsManifest.cc */,
+				86BC7EFA16518D4600D96ADF /* assetTagsManifest.h */,
+				86BC7EFB16518D4600D96ADF /* assetTagsManifest_ScriptBinding.h */,
+				86BC7EFC16518D4600D96ADF /* tamlAssetDeclaredUpdateVisitor.h */,
+				86BC7EFD16518D4600D96ADF /* tamlAssetDeclaredVisitor.h */,
+				86BC7EFE16518D4600D96ADF /* tamlAssetReferencedUpdateVisitor.h */,
+				86BC7EFF16518D4600D96ADF /* tamlAssetReferencedVisitor.h */,
+			);
+			name = assets;
+			path = ../../../source/assets;
+			sourceTree = "<group>";
+		};
+		86BC7F0016518D4600D96ADF /* audio */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F0116518D4600D96ADF /* audio.cc */,
+				86BC7F0216518D4600D96ADF /* audio.h */,
+				86BC7F0316518D4600D96ADF /* AudioAsset.cc */,
+				86BC7F0416518D4600D96ADF /* AudioAsset.h */,
+				86BC7F0516518D4600D96ADF /* audioBuffer.cc */,
+				86BC7F0616518D4600D96ADF /* audioBuffer.h */,
+				86BC7F0716518D4600D96ADF /* audioDataBlock.cc */,
+				86BC7F0816518D4600D96ADF /* audioDataBlock.h */,
+				86BC7F0916518D4600D96ADF /* audioFunctions.cc */,
+				86BC7F0A16518D4600D96ADF /* audioStreamSource.h */,
+				86BC7F0B16518D4600D96ADF /* audioStreamSourceFactory.cc */,
+				86BC7F0C16518D4600D96ADF /* audioStreamSourceFactory.h */,
+				86BC7F0D16518D4600D96ADF /* wavStreamSource.cc */,
+				86BC7F0E16518D4600D96ADF /* wavStreamSource.h */,
+			);
+			name = audio;
+			path = ../../../source/audio;
+			sourceTree = "<group>";
+		};
+		86BC7F0F16518D4600D96ADF /* collection */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F1016518D4600D96ADF /* bitMatrix.h */,
+				86BC7F1116518D4600D96ADF /* bitSet.h */,
+				86BC7F1216518D4600D96ADF /* bitTables.cc */,
+				86BC7F1316518D4600D96ADF /* bitTables.h */,
+				86BC7F1416518D4600D96ADF /* bitVector.h */,
+				86BC7F1516518D4600D96ADF /* bitVectorW.h */,
+				86BC7F1616518D4600D96ADF /* findIterator.h */,
+				86BC7F1716518D4600D96ADF /* hashTable.cc */,
+				86BC7F1816518D4600D96ADF /* hashTable.h */,
+				86BC7F1916518D4600D96ADF /* linkedList.h */,
+				86BC7F1A16518D4600D96ADF /* nameTags.cpp */,
+				86BC7F1B16518D4600D96ADF /* nameTags.h */,
+				86BC7F1C16518D4600D96ADF /* nameTags_ScriptBinding.h */,
+				86BC7F1D16518D4600D96ADF /* simpleHashTable.h */,
+				86BC7F1E16518D4600D96ADF /* sparseArray.h */,
+				86BC7F1F16518D4600D96ADF /* undo.cc */,
+				86BC7F2016518D4600D96ADF /* undo.h */,
+				86BC7F2116518D4600D96ADF /* vector.cc */,
+				86BC7F2216518D4600D96ADF /* vector.h */,
+				86BC7F2316518D4600D96ADF /* vector2d.h */,
+				86BC7F2416518D4600D96ADF /* vectorHeap.h */,
+				86BC7F2516518D4600D96ADF /* vectorQueue.h */,
+			);
+			name = collection;
+			path = ../../../source/collection;
+			sourceTree = "<group>";
+		};
+		86BC7F2616518D4600D96ADF /* component */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F3516518D4600D96ADF /* behaviors */,
+				86BC7F4016518D4600D96ADF /* dynamicConsoleMethodComponent.cpp */,
+				86BC7F4116518D4600D96ADF /* dynamicConsoleMethodComponent.h */,
+				86BC7F4516518D4600D96ADF /* simComponent.cpp */,
+				86BC7F4616518D4600D96ADF /* simComponent.h */,
+			);
+			name = component;
+			path = ../../../source/component;
+			sourceTree = "<group>";
+		};
+		86BC7F3516518D4600D96ADF /* behaviors */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F3616518D4600D96ADF /* behaviorComponent.cpp */,
+				86BC7F3716518D4600D96ADF /* behaviorComponent.h */,
+				86BC7F3816518D4600D96ADF /* behaviorComponent_ScriptBinding.h */,
+				86BC7F3916518D4600D96ADF /* behaviorComponentRaiseEvent.h */,
+				86BC7F3A16518D4600D96ADF /* behaviorInstance.cpp */,
+				86BC7F3B16518D4600D96ADF /* behaviorInstance.h */,
+				86BC7F3C16518D4600D96ADF /* behaviorInstance_ScriptBinding.h */,
+				86BC7F3D16518D4600D96ADF /* behaviorTemplate.cpp */,
+				86BC7F3E16518D4600D96ADF /* behaviorTemplate.h */,
+				86BC7F3F16518D4600D96ADF /* behaviorTemplate_ScriptBinding.h */,
+			);
+			path = behaviors;
+			sourceTree = "<group>";
+		};
+		86BC7F4716518D4600D96ADF /* console */ = {
+			isa = PBXGroup;
+			children = (
+				86BC82B316518DF400D96ADF /* consoleDictionary.cc */,
+				86BC82B416518DF400D96ADF /* consoleDictionary.h */,
+				86BC82B516518DF400D96ADF /* consoleExprEvalState.cc */,
+				86BC82B616518DF400D96ADF /* consoleExprEvalState.h */,
+				86BC82B716518DF400D96ADF /* consoleNamespace.cc */,
+				86BC82B816518DF400D96ADF /* consoleNamespace.h */,
+				86BC82B916518DF400D96ADF /* consoleBaseType.cc */,
+				86BC82BA16518DF400D96ADF /* consoleBaseType.h */,
+				86BC82BB16518DF400D96ADF /* ConsoleTypeValidators.cc */,
+				86BC82BC16518DF400D96ADF /* ConsoleTypeValidators.h */,
+				86BC82BD16518DF400D96ADF /* astNodeSizes.h */,
+				86BC82BE16518DF400D96ADF /* Package.cc */,
+				86BC82BF16518DF400D96ADF /* Package.h */,
+				86BC82C016518DF400D96ADF /* astAlloc.cc */,
+				86BC82C116518DF400D96ADF /* astNodes.cc */,
+				86BC82C216518DF400D96ADF /* cmdgram.cc */,
+				86BC82C316518DF400D96ADF /* CMDscan.cc */,
+				86BC82C416518DF400D96ADF /* codeBlock.cc */,
+				86BC82C516518DF400D96ADF /* compiledEval.cc */,
+				86BC82C616518DF400D96ADF /* compiler.cc */,
+				86BC82C716518DF400D96ADF /* console.cc */,
+				86BC82C816518DF400D96ADF /* consoleDoc.cc */,
+				86BC82C916518DF400D96ADF /* consoleFunctions.cc */,
+				86BC82CA16518DF400D96ADF /* consoleLogger.cc */,
+				86BC82CB16518DF400D96ADF /* consoleObject.cc */,
+				86BC82CC16518DF400D96ADF /* consoleParser.cc */,
+				86BC82CD16518DF400D96ADF /* consoleTypes.cc */,
+				86BC82CE16518DF400D96ADF /* ast.h */,
+				86BC82CF16518DF400D96ADF /* cmdgram.h */,
+				86BC82D016518DF400D96ADF /* codeBlock.h */,
+				86BC82D116518DF400D96ADF /* compiler.h */,
+				86BC82D216518DF400D96ADF /* console.h */,
+				86BC82D316518DF400D96ADF /* consoleDoc.h */,
+				86BC82D416518DF400D96ADF /* consoleInternal.h */,
+				86BC82D516518DF400D96ADF /* consoleLogger.h */,
+				86BC82D616518DF400D96ADF /* consoleObject.h */,
+				86BC82D716518DF400D96ADF /* consoleParser.h */,
+				86BC82D816518DF400D96ADF /* consoleTypes.h */,
+			);
+			name = console;
+			path = ../../../source/console;
+			sourceTree = "<group>";
+		};
+		86BC7F7316518D4600D96ADF /* debug */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F7416518D4600D96ADF /* profiler.cc */,
+				86BC7F7516518D4600D96ADF /* profiler.h */,
+				86BC7F7616518D4600D96ADF /* remote */,
+				86BC7F8016518D4600D96ADF /* telnetDebugger.cc */,
+				86BC7F8116518D4600D96ADF /* telnetDebugger.h */,
+			);
+			name = debug;
+			path = ../../../source/debug;
+			sourceTree = "<group>";
+		};
+		86BC7F7616518D4600D96ADF /* remote */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F7716518D4600D96ADF /* RemoteDebugger1.cc */,
+				86BC7F7816518D4600D96ADF /* RemoteDebugger1.h */,
+				86BC7F7916518D4600D96ADF /* RemoteDebugger1_ScriptBinding.h */,
+				86BC7F7A16518D4600D96ADF /* RemoteDebuggerBase.cc */,
+				86BC7F7B16518D4600D96ADF /* RemoteDebuggerBase.h */,
+				86BC7F7C16518D4600D96ADF /* RemoteDebuggerBase_ScriptBinding.h */,
+				86BC7F7D16518D4600D96ADF /* RemoteDebuggerBridge.cc */,
+				86BC7F7E16518D4600D96ADF /* RemoteDebuggerBridge.h */,
+				86BC7F7F16518D4600D96ADF /* RemoteDebuggerBridge_ScriptBinding.h */,
+			);
+			path = remote;
+			sourceTree = "<group>";
+		};
+		86BC7F8216518D4600D96ADF /* delegates */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7F8316518D4600D96ADF /* delegate.h */,
+				86BC7F8416518D4600D96ADF /* delegateSignal.cpp */,
+				86BC7F8516518D4600D96ADF /* delegateSignal.h */,
+				86BC7F8616518D4600D96ADF /* FastDelegate.h */,
+			);
+			name = delegates;
+			path = ../../../source/delegates;
+			sourceTree = "<group>";
+		};
+		86BC7FAE16518D4600D96ADF /* game */ = {
+			isa = PBXGroup;
+			children = (
+				864ECFF016527A8500012416 /* gameInterface_ScriptBinding.h */,
+				86BC7FAF16518D4600D96ADF /* defaultGame.cc */,
+				86BC7FB016518D4600D96ADF /* defaultGame.h */,
+				86BC7FB116518D4600D96ADF /* gameConnection.cc */,
+				86BC7FB216518D4600D96ADF /* gameConnection.h */,
+				86BC7FB316518D4600D96ADF /* gameInterface.cc */,
+				86BC7FB416518D4600D96ADF /* gameInterface.h */,
+				86BC7FB616518D4600D96ADF /* resource.h */,
+				86BC7FB716518D4600D96ADF /* version.cc */,
+				86BC7FB816518D4600D96ADF /* version.h */,
+			);
+			name = game;
+			path = ../../../source/game;
+			sourceTree = "<group>";
+		};
+		86BC7FB916518D4600D96ADF /* graphics */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7FBA16518D4600D96ADF /* bitmapBmp.cc */,
+				86BC7FBB16518D4600D96ADF /* bitmapJpeg.cc */,
+				86BC7FBC16518D4600D96ADF /* bitmapPng.cc */,
+				86BC7FBD16518D4600D96ADF /* bitmapPvr.cc */,
+				2AE851D11681E56E00193F17 /* color.cc */,
+				86BC7FC016518D4600D96ADF /* color.h */,
+				86BC7FC116518D4600D96ADF /* dgl.cc */,
+				86BC7FC216518D4600D96ADF /* dgl.h */,
+				86BC7FC316518D4600D96ADF /* dglMatrix.cc */,
+				86BC7FC416518D4600D96ADF /* DynamicTexture.cc */,
+				86BC7FC516518D4600D96ADF /* DynamicTexture.h */,
+				86BC7FC616518D4600D96ADF /* gBitmap.cc */,
+				86BC7FC716518D4600D96ADF /* gBitmap.h */,
+				86BC7FC816518D4600D96ADF /* gFont.cc */,
+				86BC7FC916518D4600D96ADF /* gFont.h */,
+				86BC7FCA16518D4600D96ADF /* gPalette.cc */,
+				86BC7FCB16518D4600D96ADF /* gPalette.h */,
+				86BC7FCC16518D4600D96ADF /* PNGImage.cpp */,
+				86BC7FCD16518D4600D96ADF /* PNGImage.h */,
+				86BC7FCE16518D4600D96ADF /* splineUtil.cc */,
+				86BC7FCF16518D4600D96ADF /* splineUtil.h */,
+				86BC7FD016518D4600D96ADF /* TextureDictionary.cc */,
+				86BC7FD116518D4600D96ADF /* TextureDictionary.h */,
+				86BC7FD216518D4600D96ADF /* TextureHandle.cc */,
+				86BC7FD316518D4600D96ADF /* TextureHandle.h */,
+				86BC7FD416518D4600D96ADF /* TextureManager.cc */,
+				86BC7FD516518D4600D96ADF /* TextureManager.h */,
+				86BC7FD616518D4600D96ADF /* TextureObject.h */,
+			);
+			name = graphics;
+			path = ../../../source/graphics;
+			sourceTree = "<group>";
+		};
+		86BC7FD716518D4600D96ADF /* gui */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7FD816518D4600D96ADF /* buttons */,
+				86BC7FE816518D4600D96ADF /* containers */,
+				86BC800116518D4600D96ADF /* editor */,
+				86BC801516518D4600D96ADF /* guiArrayCtrl.cc */,
+				86BC801616518D4600D96ADF /* guiArrayCtrl.h */,
+				86BC801716518D4600D96ADF /* guiBackgroundCtrl.cc */,
+				86BC801816518D4600D96ADF /* guiBackgroundCtrl.h */,
+				86BC801916518D4600D96ADF /* guiBitmapBorderCtrl.cc */,
+				86BC801A16518D4600D96ADF /* guiBitmapCtrl.cc */,
+				86BC801B16518D4600D96ADF /* guiBitmapCtrl.h */,
+				86BC801C16518D4600D96ADF /* guiBubbleTextCtrl.cc */,
+				86BC801D16518D4600D96ADF /* guiBubbleTextCtrl.h */,
+				86BC801E16518D4600D96ADF /* guiCanvas.cc */,
+				86BC801F16518D4600D96ADF /* guiCanvas.h */,
+				86BC802016518D4600D96ADF /* guiColorPicker.cc */,
+				86BC802116518D4600D96ADF /* guiColorPicker.h */,
+				86BC802216518D4600D96ADF /* guiConsole.cc */,
+				86BC802316518D4600D96ADF /* guiConsole.h */,
+				86BC802416518D4600D96ADF /* guiConsoleEditCtrl.cc */,
+				86BC802516518D4600D96ADF /* guiConsoleEditCtrl.h */,
+				86BC802616518D4600D96ADF /* guiConsoleTextCtrl.cc */,
+				86BC802716518D4600D96ADF /* guiConsoleTextCtrl.h */,
+				86BC802816518D4600D96ADF /* guiControl.cc */,
+				86BC802916518D4600D96ADF /* guiControl.h */,
+				86BC802A16518D4600D96ADF /* guiDefaultControlRender.cc */,
+				86BC802B16518D4600D96ADF /* guiDefaultControlRender.h */,
+				86BC802C16518D4600D96ADF /* guiFadeinBitmapCtrl.cc */,
+				86BC802D16518D4600D96ADF /* guiInputCtrl.cc */,
+				86BC802E16518D4600D96ADF /* guiInputCtrl.h */,
+				86BC802F16518D4600D96ADF /* guiListBoxCtrl.cc */,
+				86BC803016518D4600D96ADF /* guiListBoxCtrl.h */,
+				86BC803116518D4600D96ADF /* guiMessageVectorCtrl.cc */,
+				86BC803216518D4600D96ADF /* guiMessageVectorCtrl.h */,
+				86BC803316518D4600D96ADF /* guiMLTextCtrl.cc */,
+				86BC803416518D4600D96ADF /* guiMLTextCtrl.h */,
+				86BC803516518D4600D96ADF /* guiMLTextEditCtrl.cc */,
+				86BC803616518D4600D96ADF /* guiMLTextEditCtrl.h */,
+				86BC803716518D4600D96ADF /* guiMouseEventCtrl.cc */,
+				86BC803816518D4600D96ADF /* guiMouseEventCtrl.h */,
+				86BC803916518D4600D96ADF /* guiPopUpCtrl.cc */,
+				86BC803A16518D4600D96ADF /* guiPopUpCtrl.h */,
+				86BC803B16518D4600D96ADF /* guiPopUpCtrlEx.cc */,
+				86BC803C16518D4600D96ADF /* guiPopUpCtrlEx.h */,
+				86BC803D16518D4600D96ADF /* guiProgressCtrl.cc */,
+				86BC803E16518D4600D96ADF /* guiProgressCtrl.h */,
+				86BC803F16518D4600D96ADF /* guiScriptNotifyControl.cc */,
+				86BC804016518D4600D96ADF /* guiScriptNotifyControl.h */,
+				86BC804116518D4600D96ADF /* guiSliderCtrl.cc */,
+				86BC804216518D4600D96ADF /* guiSliderCtrl.h */,
+				86BC804316518D4600D96ADF /* guiTabPageCtrl.cc */,
+				86BC804416518D4600D96ADF /* guiTabPageCtrl.h */,
+				86BC804516518D4600D96ADF /* guiTextCtrl.cc */,
+				86BC804616518D4600D96ADF /* guiTextCtrl.h */,
+				86BC804716518D4600D96ADF /* guiTextEditCtrl.cc */,
+				86BC804816518D4600D96ADF /* guiTextEditCtrl.h */,
+				86BC804916518D4600D96ADF /* guiTextEditSliderCtrl.cc */,
+				86BC804A16518D4600D96ADF /* guiTextEditSliderCtrl.h */,
+				86BC804B16518D4600D96ADF /* guiTextListCtrl.cc */,
+				86BC804C16518D4600D96ADF /* guiTextListCtrl.h */,
+				86BC804D16518D4600D96ADF /* guiTickCtrl.cc */,
+				86BC804E16518D4600D96ADF /* guiTickCtrl.h */,
+				86BC804F16518D4600D96ADF /* guiTreeViewCtrl.cc */,
+				86BC805016518D4600D96ADF /* guiTreeViewCtrl.h */,
+				86BC805116518D4600D96ADF /* guiTypes.cc */,
+				86BC805216518D4600D96ADF /* guiTypes.h */,
+				86BC805316518D4600D96ADF /* language */,
+				86BC805616518D4600D96ADF /* messageVector.cc */,
+				86BC805716518D4600D96ADF /* messageVector.h */,
+			);
+			name = gui;
+			path = ../../../source/gui;
+			sourceTree = "<group>";
+		};
+		86BC7FD816518D4600D96ADF /* buttons */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7FD916518D4600D96ADF /* guiBitmapButtonCtrl.cc */,
+				86BC7FDA16518D4600D96ADF /* guiBitmapButtonCtrl.h */,
+				86BC7FDB16518D4600D96ADF /* guiBorderButton.cc */,
+				86BC7FDC16518D4600D96ADF /* guiButtonBaseCtrl.cc */,
+				86BC7FDD16518D4600D96ADF /* guiButtonBaseCtrl.h */,
+				86BC7FDE16518D4600D96ADF /* guiButtonCtrl.cc */,
+				86BC7FDF16518D4600D96ADF /* guiButtonCtrl.h */,
+				86BC7FE016518D4600D96ADF /* guiCheckBoxCtrl.cc */,
+				86BC7FE116518D4600D96ADF /* guiCheckBoxCtrl.h */,
+				86BC7FE216518D4600D96ADF /* guiIconButtonCtrl.cc */,
+				86BC7FE316518D4600D96ADF /* guiIconButtonCtrl.h */,
+				86BC7FE416518D4600D96ADF /* guiRadioCtrl.cc */,
+				86BC7FE516518D4600D96ADF /* guiRadioCtrl.h */,
+				86BC7FE616518D4600D96ADF /* guiToolboxButtonCtrl.cc */,
+				86BC7FE716518D4600D96ADF /* guiToolboxButtonCtrl.h */,
+			);
+			path = buttons;
+			sourceTree = "<group>";
+		};
+		86BC7FE816518D4600D96ADF /* containers */ = {
+			isa = PBXGroup;
+			children = (
+				86BC7FE916518D4600D96ADF /* guiAutoScrollCtrl.cc */,
+				86BC7FEA16518D4600D96ADF /* guiAutoScrollCtrl.h */,
+				86BC7FEB16518D4600D96ADF /* guiCtrlArrayCtrl.cc */,
+				86BC7FEC16518D4600D96ADF /* guiCtrlArrayCtrl.h */,
+				86BC7FED16518D4600D96ADF /* guiDragAndDropCtrl.cc */,
+				86BC7FEE16518D4600D96ADF /* guiDragAndDropCtrl.h */,
+				86BC7FEF16518D4600D96ADF /* guiDynamicCtrlArrayCtrl.cc */,
+				86BC7FF016518D4600D96ADF /* guiDynamicCtrlArrayCtrl.h */,
+				86BC7FF116518D4600D96ADF /* guiFormCtrl.cc */,
+				86BC7FF216518D4600D96ADF /* guiFormCtrl.h */,
+				86BC7FF316518D4600D96ADF /* guiFrameCtrl.cc */,
+				86BC7FF416518D4600D96ADF /* guiFrameCtrl.h */,
+				86BC7FF516518D4600D96ADF /* guiPaneCtrl.cc */,
+				86BC7FF616518D4600D96ADF /* guiPaneCtrl.h */,
+				86BC7FF716518D4600D96ADF /* guiRolloutCtrl.cc */,
+				86BC7FF816518D4600D96ADF /* guiRolloutCtrl.h */,
+				86BC7FF916518D4600D96ADF /* guiScrollCtrl.cc */,
+				86BC7FFA16518D4600D96ADF /* guiScrollCtrl.h */,
+				86BC7FFB16518D4600D96ADF /* guiStackCtrl.cc */,
+				86BC7FFC16518D4600D96ADF /* guiStackCtrl.h */,
+				86BC7FFD16518D4600D96ADF /* guiTabBookCtrl.cc */,
+				86BC7FFE16518D4600D96ADF /* guiTabBookCtrl.h */,
+				86BC7FFF16518D4600D96ADF /* guiWindowCtrl.cc */,
+				86BC800016518D4600D96ADF /* guiWindowCtrl.h */,
+			);
+			path = containers;
+			sourceTree = "<group>";
+		};
+		86BC800116518D4600D96ADF /* editor */ = {
+			isa = PBXGroup;
+			children = (
+				86BC800216518D4600D96ADF /* guiControlListPopup.cc */,
+				86BC800316518D4600D96ADF /* guiDebugger.cc */,
+				86BC800416518D4600D96ADF /* guiDebugger.h */,
+				86BC800516518D4600D96ADF /* guiEditCtrl.cc */,
+				86BC800616518D4600D96ADF /* guiEditCtrl.h */,
+				86BC800716518D4600D96ADF /* guiFilterCtrl.cc */,
+				86BC800816518D4600D96ADF /* guiFilterCtrl.h */,
+				86BC800916518D4600D96ADF /* guiGraphCtrl.cc */,
+				86BC800A16518D4600D96ADF /* guiGraphCtrl.h */,
+				86BC800B16518D4600D96ADF /* guiImageList.cc */,
+				86BC800C16518D4600D96ADF /* guiImageList.h */,
+				86BC800D16518D4600D96ADF /* guiInspector.cc */,
+				86BC800E16518D4600D96ADF /* guiInspector.h */,
+				86BC800F16518D4600D96ADF /* guiInspectorTypes.cc */,
+				86BC801016518D4600D96ADF /* guiInspectorTypes.h */,
+				86BC801116518D4600D96ADF /* guiMenuBar.cc */,
+				86BC801216518D4600D96ADF /* guiMenuBar.h */,
+				86BC801316518D4600D96ADF /* guiSeparatorCtrl.cc */,
+				86BC801416518D4600D96ADF /* guiSeparatorCtrl.h */,
+			);
+			path = editor;
+			sourceTree = "<group>";
+		};
+		86BC805316518D4600D96ADF /* language */ = {
+			isa = PBXGroup;
+			children = (
+				86BC805416518D4600D96ADF /* lang.cc */,
+				86BC805516518D4600D96ADF /* lang.h */,
+			);
+			path = language;
+			sourceTree = "<group>";
+		};
+		86BC805816518D4600D96ADF /* input */ = {
+			isa = PBXGroup;
+			children = (
+				86BC805916518D4600D96ADF /* actionMap.cc */,
+				86BC805A16518D4600D96ADF /* actionMap.h */,
+			);
+			name = input;
+			path = ../../../source/input;
+			sourceTree = "<group>";
+		};
+		86BC805B16518D4600D96ADF /* io */ = {
+			isa = PBXGroup;
+			children = (
+				86BC805C16518D4600D96ADF /* bitStream.cc */,
+				86BC805D16518D4600D96ADF /* bitStream.h */,
+				86BC805E16518D4600D96ADF /* bufferStream.cc */,
+				86BC805F16518D4600D96ADF /* bufferStream.h */,
+				86BC806116518D4600D96ADF /* fileObject.cc */,
+				86BC806216518D4600D96ADF /* fileObject.h */,
+				86BC806316518D4600D96ADF /* fileStream.cc */,
+				86BC806416518D4600D96ADF /* fileStream.h */,
+				86BC806516518D4600D96ADF /* fileStreamObject.cc */,
+				86BC806616518D4600D96ADF /* fileStreamObject.h */,
+				86BC806716518D4600D96ADF /* fileSystemFunctions.cpp */,
+				86BC806816518D4600D96ADF /* filterStream.cc */,
+				86BC806916518D4600D96ADF /* filterStream.h */,
+				86BC806A16518D4600D96ADF /* memStream.cc */,
+				86BC806B16518D4600D96ADF /* memstream.h */,
+				86BC806C16518D4600D96ADF /* nStream.cc */,
+				86BC806D16518D4600D96ADF /* resizeStream.cc */,
+				86BC806E16518D4600D96ADF /* resizeStream.h */,
+				86BC806F16518D4600D96ADF /* resource */,
+				86BC807316518D4600D96ADF /* stream.h */,
+				86BC807416518D4600D96ADF /* streamObject.cc */,
+				86BC807516518D4600D96ADF /* streamObject.h */,
+				86BC807616518D4600D96ADF /* zip */,
+			);
+			name = io;
+			path = ../../../source/io;
+			sourceTree = "<group>";
+		};
+		86BC806F16518D4600D96ADF /* resource */ = {
+			isa = PBXGroup;
+			children = (
+				86BC807016518D4600D96ADF /* resourceDictionary.cc */,
+				86BC807116518D4600D96ADF /* resourceManager.cc */,
+				86BC807216518D4600D96ADF /* resourceManager.h */,
+			);
+			path = resource;
+			sourceTree = "<group>";
+		};
+		86BC807616518D4600D96ADF /* zip */ = {
+			isa = PBXGroup;
+			children = (
+				86BC807716518D4600D96ADF /* centralDir.cc */,
+				86BC807816518D4600D96ADF /* centralDir.h */,
+				86BC807916518D4600D96ADF /* compressor.cc */,
+				86BC807A16518D4600D96ADF /* compressor.h */,
+				86BC807B16518D4600D96ADF /* deflate.cc */,
+				86BC807C16518D4600D96ADF /* extraField.cc */,
+				86BC807D16518D4600D96ADF /* extraField.h */,
+				86BC807E16518D4600D96ADF /* fileHeader.cc */,
+				86BC807F16518D4600D96ADF /* fileHeader.h */,
+				86BC808016518D4600D96ADF /* stored.cc */,
+				86BC808616518D4600D96ADF /* zipArchive.cc */,
+				86BC808716518D4600D96ADF /* zipArchive.h */,
+				86BC808816518D4600D96ADF /* zipCryptStream.cc */,
+				86BC808916518D4600D96ADF /* zipCryptStream.h */,
+				86BC808A16518D4600D96ADF /* zipObject.cc */,
+				86BC808B16518D4600D96ADF /* zipObject.h */,
+				86BC808C16518D4600D96ADF /* zipStatFilter.h */,
+				86BC808D16518D4600D96ADF /* zipSubStream.cc */,
+				86BC808E16518D4600D96ADF /* zipSubStream.h */,
+				86BC808F16518D4600D96ADF /* zipTempStream.cc */,
+				86BC809016518D4600D96ADF /* zipTempStream.h */,
+			);
+			path = zip;
+			sourceTree = "<group>";
+		};
+		86BC809116518D4600D96ADF /* math */ = {
+			isa = PBXGroup;
+			children = (
+				86BC809216518D4600D96ADF /* mathIO.h */,
+				86BC809316518D4600D96ADF /* mathTypes.cc */,
+				86BC809416518D4600D96ADF /* mathTypes.h */,
+				86BC809516518D4600D96ADF /* mathUtils.cc */,
+				86BC809616518D4600D96ADF /* mathUtils.h */,
+				86BC809716518D4600D96ADF /* mBox.cc */,
+				86BC809816518D4600D96ADF /* mBox.h */,
+				86BC809916518D4600D96ADF /* mConsoleFunctions.cc */,
+				86BC809A16518D4600D96ADF /* mConstants.h */,
+				86BC809B16518D4600D96ADF /* mMath.h */,
+				86BC809D16518D4600D96ADF /* mMath_C.cc */,
+				86BC809E16518D4600D96ADF /* mMathAltivec.cc */,
+				86BC80A116518D4600D96ADF /* mMathFn.cc */,
+				86BC80A216518D4600D96ADF /* mMathFn.h */,
+				86BC80A516518D4600D96ADF /* mMatrix.cc */,
+				86BC80A616518D4600D96ADF /* mMatrix.h */,
+				86BC80A716518D4600D96ADF /* mPlane.h */,
+				86BC80A816518D4600D96ADF /* mPlaneTransformer.cc */,
+				86BC80A916518D4600D96ADF /* mPlaneTransformer.h */,
+				86BC80AA16518D4600D96ADF /* mPoint.h */,
+				86BC80AB16518D4600D96ADF /* mQuadPatch.cc */,
+				86BC80AC16518D4600D96ADF /* mQuadPatch.h */,
+				86BC80AD16518D4600D96ADF /* mQuat.cc */,
+				86BC80AE16518D4600D96ADF /* mQuat.h */,
+				86BC80AF16518D4600D96ADF /* mRandom.cc */,
+				86BC80B016518D4600D96ADF /* mRandom.h */,
+				86BC80B116518D4600D96ADF /* mRect.h */,
+				86BC80B216518D4600D96ADF /* mSolver.cc */,
+				86BC80B316518D4600D96ADF /* mSphere.h */,
+				86BC80B416518D4600D96ADF /* mSplinePatch.cc */,
+				86BC80B516518D4600D96ADF /* mSplinePatch.h */,
+				86BC80B616518D4600D96ADF /* rectClipper.cpp */,
+				86BC80B716518D4600D96ADF /* rectClipper.h */,
+			);
+			name = math;
+			path = ../../../source/math;
+			sourceTree = "<group>";
+		};
+		86BC80B816518D4600D96ADF /* memory */ = {
+			isa = PBXGroup;
+			children = (
+				86BC80B916518D4600D96ADF /* dataChunker.cc */,
+				86BC80BA16518D4600D96ADF /* dataChunker.h */,
+				86BC80BB16518D4600D96ADF /* factoryCache.h */,
+				86BC80BC16518D4600D96ADF /* frameAllocator.cc */,
+				86BC80BD16518D4600D96ADF /* frameAllocator.h */,
+				86BC80BE16518D4600D96ADF /* safeDelete.h */,
+			);
+			name = memory;
+			path = ../../../source/memory;
+			sourceTree = "<group>";
+		};
+		86BC80BF16518D4600D96ADF /* messaging */ = {
+			isa = PBXGroup;
+			children = (
+				86BC80C016518D4600D96ADF /* dispatcher.cc */,
+				86BC80C116518D4600D96ADF /* dispatcher.h */,
+				86BC80C216518D4600D96ADF /* eventManager.cc */,
+				86BC80C316518D4600D96ADF /* eventManager.h */,
+				86BC80C416518D4600D96ADF /* message.cc */,
+				86BC80C516518D4600D96ADF /* message.h */,
+				86BC80C616518D4600D96ADF /* messageForwarder.cc */,
+				86BC80C716518D4600D96ADF /* messageForwarder.h */,
+				86BC80C816518D4600D96ADF /* scriptMsgListener.cc */,
+				86BC80C916518D4600D96ADF /* scriptMsgListener.h */,
+			);
+			name = messaging;
+			path = ../../../source/messaging;
+			sourceTree = "<group>";
+		};
+		86BC80CA16518D4600D96ADF /* module */ = {
+			isa = PBXGroup;
+			children = (
+				86BC80CB16518D4600D96ADF /* moduleCallbacks.h */,
+				86BC80CC16518D4600D96ADF /* moduleDefinition.cc */,
+				86BC80CD16518D4600D96ADF /* moduleDefinition.h */,
+				86BC80CE16518D4600D96ADF /* moduleDefinition_ScriptBinding.h */,
+				86BC80CF16518D4600D96ADF /* moduleManager.cc */,
+				86BC80D016518D4600D96ADF /* moduleManager.h */,
+				86BC80D116518D4600D96ADF /* moduleManager_ScriptBinding.h */,
+				86BC80D216518D4600D96ADF /* moduleMergeDefinition.cc */,
+				86BC80D316518D4600D96ADF /* moduleMergeDefinition.h */,
+				86BC80D416518D4600D96ADF /* tamlModuleIdUpdateVisitor.h */,
+			);
+			name = module;
+			path = ../../../source/module;
+			sourceTree = "<group>";
+		};
+		86BC80D516518D4600D96ADF /* network */ = {
+			isa = PBXGroup;
+			children = (
+				864ECFED165279E100012416 /* networkProcessList.cc */,
+				864ECFEE165279E100012416 /* networkProcessList.h */,
+				86BC80D616518D4600D96ADF /* connectionProtocol.cc */,
+				86BC80D716518D4600D96ADF /* connectionProtocol.h */,
+				86BC80D816518D4600D96ADF /* connectionStringTable.cc */,
+				86BC80D916518D4600D96ADF /* connectionStringTable.h */,
+				86BC80DA16518D4600D96ADF /* httpObject.cc */,
+				86BC80DB16518D4600D96ADF /* httpObject.h */,
+				86BC80DC16518D4600D96ADF /* netConnection.cc */,
+				86BC80DD16518D4600D96ADF /* netConnection.h */,
+				86BC80DE16518D4600D96ADF /* netDownload.cc */,
+				86BC80DF16518D4600D96ADF /* netEvent.cc */,
+				86BC80E016518D4600D96ADF /* netGhost.cc */,
+				86BC80E116518D4600D96ADF /* netInterface.cc */,
+				86BC80E216518D4600D96ADF /* netInterface.h */,
+				86BC80E316518D4600D96ADF /* netObject.cc */,
+				86BC80E416518D4600D96ADF /* netObject.h */,
+				86BC80E516518D4600D96ADF /* netStringTable.cc */,
+				86BC80E616518D4600D96ADF /* netStringTable.h */,
+				86BC80E716518D4600D96ADF /* netTest.cc */,
+				86BC80E816518D4600D96ADF /* RemoteCommandEvent.cc */,
+				86BC80E916518D4600D96ADF /* serverQuery.cc */,
+				86BC80EA16518D4600D96ADF /* serverQuery.h */,
+				86BC80EB16518D4600D96ADF /* tcpObject.cc */,
+				86BC80EC16518D4600D96ADF /* tcpObject.h */,
+				86BC80ED16518D4600D96ADF /* telnetConsole.cc */,
+				86BC80EE16518D4600D96ADF /* telnetConsole.h */,
+			);
+			name = network;
+			path = ../../../source/network;
+			sourceTree = "<group>";
+		};
+		86BC80EF16518D4600D96ADF /* persistence */ = {
+			isa = PBXGroup;
+			children = (
+				86BC80F016518D4600D96ADF /* SimXMLDocument.cpp */,
+				86BC80F116518D4600D96ADF /* SimXMLDocument.h */,
+				86BC80F216518D4600D96ADF /* taml */,
+				86BC810616518D4600D96ADF /* tinyXML */,
+			);
+			name = persistence;
+			path = ../../../source/persistence;
+			sourceTree = "<group>";
+		};
+		86BC80F216518D4600D96ADF /* taml */ = {
+			isa = PBXGroup;
+			children = (
+				2AB97A1B16B66BC70080F940 /* tamlCustom.cc */,
+				2AB97A1C16B66BC70080F940 /* tamlCustom.h */,
+				2ADCAC0E16A41E4400E07619 /* tamlChildren.h */,
+				86BC80F316518D4600D96ADF /* taml.cc */,
+				86BC80F416518D4600D96ADF /* taml.h */,
+				86BC80F516518D4600D96ADF /* taml_ScriptBinding.h */,
+				86BC80F616518D4600D96ADF /* tamlBinaryReader.cc */,
+				86BC80F716518D4600D96ADF /* tamlBinaryReader.h */,
+				86BC80F816518D4600D96ADF /* tamlBinaryWriter.cc */,
+				86BC80F916518D4600D96ADF /* tamlBinaryWriter.h */,
+				86BC80FA16518D4600D96ADF /* tamlCallbacks.h */,
+				86BC80FD16518D4600D96ADF /* tamlWriteNode.cc */,
+				86BC80FE16518D4600D96ADF /* tamlWriteNode.h */,
+				86BC80FF16518D4600D96ADF /* tamlXmlParser.cc */,
+				86BC810016518D4600D96ADF /* tamlXmlParser.h */,
+				86BC810116518D4600D96ADF /* tamlXmlReader.cc */,
+				86BC810216518D4600D96ADF /* tamlXmlReader.h */,
+				86BC810316518D4600D96ADF /* tamlXmlVisitor.h */,
+				86BC810416518D4600D96ADF /* tamlXmlWriter.cc */,
+				86BC810516518D4600D96ADF /* tamlXmlWriter.h */,
+			);
+			path = taml;
+			sourceTree = "<group>";
+		};
+		86BC810616518D4600D96ADF /* tinyXML */ = {
+			isa = PBXGroup;
+			children = (
+				86BC810716518D4600D96ADF /* tinystr.cpp */,
+				86BC810816518D4600D96ADF /* tinystr.h */,
+				86BC810916518D4600D96ADF /* tinyxml.cpp */,
+				86BC810A16518D4600D96ADF /* tinyxml.h */,
+				86BC810B16518D4600D96ADF /* tinyxmlerror.cpp */,
+				86BC810C16518D4600D96ADF /* tinyxmlparser.cpp */,
+			);
+			path = tinyXML;
+			sourceTree = "<group>";
+		};
+		86BC812C16518D4600D96ADF /* sim */ = {
+			isa = PBXGroup;
+			children = (
+				86BC812D16518D4600D96ADF /* scriptGroup.cc */,
+				86BC812E16518D4600D96ADF /* scriptGroup.h */,
+				86BC812F16518D4600D96ADF /* scriptObject.cc */,
+				86BC813016518D4600D96ADF /* scriptObject.h */,
+				86BC813116518D4600D96ADF /* simBase.cc */,
+				86BC813216518D4600D96ADF /* simBase.h */,
+				86BC813316518D4600D96ADF /* simConsoleEvent.cc */,
+				86BC813416518D4600D96ADF /* simConsoleEvent.h */,
+				86BC813516518D4600D96ADF /* simConsoleThreadExecEvent.cc */,
+				86BC813616518D4600D96ADF /* simConsoleThreadExecEvent.h */,
+				86BC813716518D4600D96ADF /* simDatablock.cc */,
+				86BC813816518D4600D96ADF /* simDatablock.h */,
+				86BC813916518D4600D96ADF /* simDatablockGroup.h */,
+				86BC813A16518D4600D96ADF /* simDictionary.cc */,
+				86BC813B16518D4600D96ADF /* simDictionary.h */,
+				86BC813C16518D4600D96ADF /* simEvent.h */,
+				86BC813D16518D4600D96ADF /* simFieldDictionary.cc */,
+				86BC813E16518D4600D96ADF /* simFieldDictionary.h */,
+				86BC813F16518D4600D96ADF /* simManager.cc */,
+				86BC814016518D4600D96ADF /* simObject.cc */,
+				86BC814116518D4600D96ADF /* simObject.h */,
+				86BC814216518D4600D96ADF /* SimObjectList.cc */,
+				86BC814316518D4600D96ADF /* SimObjectList.h */,
+				86BC814416518D4600D96ADF /* simObjectPtr.h */,
+				86BC814516518D4600D96ADF /* simSerialize.cpp */,
+				86BC814616518D4600D96ADF /* simSet.cc */,
+				86BC814716518D4600D96ADF /* simSet.h */,
+			);
+			name = sim;
+			path = ../../../source/sim;
+			sourceTree = "<group>";
+		};
+		86BC814816518D4600D96ADF /* string */ = {
+			isa = PBXGroup;
+			children = (
+				86BC814916518D4600D96ADF /* findMatch.cc */,
+				86BC814A16518D4600D96ADF /* findMatch.h */,
+				86BC814B16518D4600D96ADF /* stringBuffer.cc */,
+				86BC814C16518D4600D96ADF /* stringBuffer.h */,
+				86BC814D16518D4600D96ADF /* stringStack.cc */,
+				86BC814E16518D4600D96ADF /* stringStack.h */,
+				86BC814F16518D4600D96ADF /* stringTable.cc */,
+				86BC815016518D4600D96ADF /* stringTable.h */,
+				86BC815116518D4600D96ADF /* stringUnit.cpp */,
+				86BC815216518D4600D96ADF /* stringUnit.h */,
+				86BC815316518D4600D96ADF /* unicode.cc */,
+				86BC815416518D4600D96ADF /* unicode.h */,
+			);
+			name = string;
+			path = ../../../source/string;
+			sourceTree = "<group>";
+		};
+		86BC82ED16518F6800D96ADF /* platform */ = {
+			isa = PBXGroup;
+			children = (
+				86BC834C16518FE800D96ADF /* CursorManager.cc */,
+				86BC835516518FE800D96ADF /* event.h */,
+				86CEFC76166FE17500DAF75D /* platformInput_ScriptBinding.h */,
+				86BC82F416518F6800D96ADF /* menus */,
+				86BC82F716518F6800D96ADF /* nativeDialogs */,
+				86BC834D16518FE800D96ADF /* platform.cc */,
+				86BC835616518FE800D96ADF /* platform.h */,
+				864ECFEA1652795700012416 /* platform_ScriptBinding.h */,
+				86BC835716518FE800D96ADF /* platformAL.h */,
+				86BC834E16518FE800D96ADF /* platformAssert.cc */,
+				86BC835816518FE800D96ADF /* platformAssert.h */,
+				86BC835916518FE800D96ADF /* platformAudio.h */,
+				86BC834F16518FE800D96ADF /* platformCPU.cc */,
+				86BC834816518FE800D96ADF /* platformCPU.h */,
+				86BC834916518FE800D96ADF /* platformEndian.h */,
+				86BC835016518FE800D96ADF /* platformFileIO.cc */,
+				2AD35A541663608E00C75F30 /* platformFileIO.h */,
+				86BC834416518FE800D96ADF /* platformFont.cc */,
+				86BC835A16518FE800D96ADF /* platformFont.h */,
+				86BC835B16518FE800D96ADF /* platformGL.h */,
+				86BC835C16518FE800D96ADF /* platformInput.h */,
+				86BC834316518FE800D96ADF /* platformMath.h */,
+				86BC835116518FE800D96ADF /* platformMemory.cc */,
+				86BC834516518FE800D96ADF /* platformMemory.h */,
+				86BC835216518FE800D96ADF /* platformNetAsync.unix.cc */,
+				86BC835D16518FE800D96ADF /* platformNetAsync.unix.h */,
+				864ECFEB1652795700012416 /* platformNetwork.cc */,
+				86BC834616518FE800D96ADF /* platformNetwork.h */,
+				86BC835E16518FE800D96ADF /* platformSemaphore.h */,
+				86BC835316518FE800D96ADF /* platformString.cc */,
+				86BC834716518FE800D96ADF /* platformString.h */,
+				86BC834216518FE800D96ADF /* platformTimeManager.h */,
+				86BC835F16518FE800D96ADF /* platformTLS.h */,
+				86BC836016518FE800D96ADF /* platformVFS.h */,
+				86BC835416518FE800D96ADF /* platformVideo.cc */,
+				86BC836116518FE800D96ADF /* platformVideo.h */,
+				86BC831816518F6800D96ADF /* threads */,
+				86BC834A16518FE800D96ADF /* Tickable.cc */,
+				86BC834B16518FE800D96ADF /* Tickable.h */,
+				86BC836216518FE800D96ADF /* types.gcc.h */,
+				86BC836316518FE800D96ADF /* types.h */,
+				86BC836416518FE800D96ADF /* types.ppc.h */,
+			);
+			name = platform;
+			path = ../../../source/platform;
+			sourceTree = "<group>";
+		};
+		86BC82F416518F6800D96ADF /* menus */ = {
+			isa = PBXGroup;
+			children = (
+				86BC833816518FB100D96ADF /* popupMenu.cc */,
+				86BC833916518FB100D96ADF /* popupMenu.h */,
+			);
+			path = menus;
+			sourceTree = "<group>";
+		};
+		86BC82F716518F6800D96ADF /* nativeDialogs */ = {
+			isa = PBXGroup;
+			children = (
+				86BC833B16518FBC00D96ADF /* msgBox.cpp */,
+				861CD8CE1678F6C200DAE1A0 /* fileDialog_ScriptBinding.h */,
+				861CD8CF1678F6C200DAE1A0 /* fileDialog.cc */,
+				86BC833C16518FBC00D96ADF /* fileDialog.h */,
+				86BC833D16518FBC00D96ADF /* msgBox.h */,
+			);
+			path = nativeDialogs;
+			sourceTree = "<group>";
+		};
+		86BC831816518F6800D96ADF /* threads */ = {
+			isa = PBXGroup;
+			children = (
+				86BC833F16518FC900D96ADF /* mutex.h */,
+				86BC834016518FC900D96ADF /* semaphore.h */,
+				86BC834116518FC900D96ADF /* thread.h */,
+			);
+			path = threads;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		869FF8B71651518C002FE082 /* Torque2D */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 869FF8D61651518C002FE082 /* Build configuration list for PBXNativeTarget "Torque2D" */;
+			buildPhases = (
+				869FF8B61651518C002FE082 /* Resources */,
+				869FF8B41651518C002FE082 /* Sources */,
+				869FF8B51651518C002FE082 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Torque2D;
+			productName = Torque2D;
+			productReference = 869FF8B81651518C002FE082 /* Torque2D_DEBUG.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		869FF8AF1651518C002FE082 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0450;
+				ORGANIZATIONNAME = "Michael Perry";
+			};
+			buildConfigurationList = 869FF8B21651518C002FE082 /* Build configuration list for PBXProject "Torque2D" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 869FF8AD1651518C002FE082;
+			productRefGroup = 869FF8B91651518C002FE082 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				869FF8B71651518C002FE082 /* Torque2D */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		869FF8B61651518C002FE082 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				865A20B11651530B00527C44 /* Config.xcconfig in Resources */,
+				865A20BF165158CA00527C44 /* torque2d.icns in Resources */,
+				86C281CD16A4307E00F030F4 /* MainMenu.xib in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		869FF8B41651518C002FE082 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				86D770C3165687450046D71F /* osxFileDialogs.mm in Sources */,
+				86D770571656873C0046D71F /* mathTypes.cc in Sources */,
+				86D770581656873C0046D71F /* mathUtils.cc in Sources */,
+				86D770591656873C0046D71F /* mBox.cc in Sources */,
+				86D7705A1656873C0046D71F /* mConsoleFunctions.cc in Sources */,
+				86D7705B1656873C0046D71F /* mMath_C.cc in Sources */,
+				86D7705C1656873C0046D71F /* mMathAltivec.cc in Sources */,
+				86D7705D1656873C0046D71F /* mMathFn.cc in Sources */,
+				86D7705E1656873C0046D71F /* mMatrix.cc in Sources */,
+				86D7705F1656873C0046D71F /* mPlaneTransformer.cc in Sources */,
+				86D770601656873C0046D71F /* mQuadPatch.cc in Sources */,
+				86D770611656873C0046D71F /* mQuat.cc in Sources */,
+				86D770621656873C0046D71F /* mSolver.cc in Sources */,
+				86D770631656873C0046D71F /* mSplinePatch.cc in Sources */,
+				86D770641656873C0046D71F /* rectClipper.cpp in Sources */,
+				86D770651656873C0046D71F /* dataChunker.cc in Sources */,
+				86D770661656873C0046D71F /* frameAllocator.cc in Sources */,
+				86D770671656873C0046D71F /* dispatcher.cc in Sources */,
+				86D770681656873C0046D71F /* eventManager.cc in Sources */,
+				86D770691656873C0046D71F /* message.cc in Sources */,
+				86D7706A1656873C0046D71F /* messageForwarder.cc in Sources */,
+				86D7706B1656873C0046D71F /* scriptMsgListener.cc in Sources */,
+				86D7706C1656873C0046D71F /* moduleDefinition.cc in Sources */,
+				86D7706D1656873C0046D71F /* moduleManager.cc in Sources */,
+				86D7706E1656873C0046D71F /* moduleMergeDefinition.cc in Sources */,
+				86D7706F1656873C0046D71F /* networkProcessList.cc in Sources */,
+				86D770701656873C0046D71F /* connectionProtocol.cc in Sources */,
+				86D770711656873C0046D71F /* connectionStringTable.cc in Sources */,
+				86D770721656873C0046D71F /* httpObject.cc in Sources */,
+				86D770731656873C0046D71F /* netConnection.cc in Sources */,
+				86D770741656873C0046D71F /* netDownload.cc in Sources */,
+				86D770751656873C0046D71F /* netEvent.cc in Sources */,
+				86D770761656873C0046D71F /* netGhost.cc in Sources */,
+				86D770771656873C0046D71F /* netInterface.cc in Sources */,
+				86D770781656873C0046D71F /* netObject.cc in Sources */,
+				86D770791656873C0046D71F /* netStringTable.cc in Sources */,
+				86D7707A1656873C0046D71F /* netTest.cc in Sources */,
+				86D7707B1656873C0046D71F /* RemoteCommandEvent.cc in Sources */,
+				86D7707C1656873C0046D71F /* serverQuery.cc in Sources */,
+				86D7707D1656873C0046D71F /* tcpObject.cc in Sources */,
+				86D7707E1656873C0046D71F /* telnetConsole.cc in Sources */,
+				86D7707F1656873C0046D71F /* SimXMLDocument.cpp in Sources */,
+				86D770801656873C0046D71F /* taml.cc in Sources */,
+				86D770811656873C0046D71F /* tamlBinaryReader.cc in Sources */,
+				86D770821656873C0046D71F /* tamlBinaryWriter.cc in Sources */,
+				86D770841656873C0046D71F /* tamlWriteNode.cc in Sources */,
+				86D770851656873C0046D71F /* tamlXmlParser.cc in Sources */,
+				86D770861656873C0046D71F /* tamlXmlReader.cc in Sources */,
+				86D770871656873C0046D71F /* tamlXmlWriter.cc in Sources */,
+				86D770881656873C0046D71F /* tinystr.cpp in Sources */,
+				86D770891656873C0046D71F /* tinyxml.cpp in Sources */,
+				86D7708A1656873C0046D71F /* tinyxmlerror.cpp in Sources */,
+				86D7708B1656873C0046D71F /* tinyxmlparser.cpp in Sources */,
+				86D7708C1656873C0046D71F /* platformNetwork.cc in Sources */,
+				86D7708D1656873C0046D71F /* CursorManager.cc in Sources */,
+				86D7708E1656873C0046D71F /* platform.cc in Sources */,
+				86D7708F1656873C0046D71F /* platformAssert.cc in Sources */,
+				86D770901656873C0046D71F /* platformCPU.cc in Sources */,
+				86D770911656873C0046D71F /* platformFileIO.cc in Sources */,
+				86D770921656873C0046D71F /* platformFont.cc in Sources */,
+				86D770931656873C0046D71F /* platformMemory.cc in Sources */,
+				86D770941656873C0046D71F /* platformNetAsync.unix.cc in Sources */,
+				86D770951656873C0046D71F /* platformString.cc in Sources */,
+				86D770961656873C0046D71F /* platformVideo.cc in Sources */,
+				86D770971656873C0046D71F /* Tickable.cc in Sources */,
+				86D770981656873C0046D71F /* popupMenu.cc in Sources */,
+				86D770991656873C0046D71F /* msgBox.cpp in Sources */,
+				86D770AA1656873C0046D71F /* scriptGroup.cc in Sources */,
+				86D770AB1656873C0046D71F /* scriptObject.cc in Sources */,
+				86D770AC1656873C0046D71F /* simBase.cc in Sources */,
+				86D770AD1656873C0046D71F /* simConsoleEvent.cc in Sources */,
+				86D770AE1656873C0046D71F /* simConsoleThreadExecEvent.cc in Sources */,
+				86D770AF1656873C0046D71F /* simDatablock.cc in Sources */,
+				86D770B01656873C0046D71F /* simDictionary.cc in Sources */,
+				86D770B11656873C0046D71F /* simFieldDictionary.cc in Sources */,
+				86D770B21656873C0046D71F /* simManager.cc in Sources */,
+				86D770B31656873C0046D71F /* simObject.cc in Sources */,
+				86D770B41656873C0046D71F /* SimObjectList.cc in Sources */,
+				86D770B51656873C0046D71F /* simSerialize.cpp in Sources */,
+				86D770B61656873C0046D71F /* simSet.cc in Sources */,
+				86D770B71656873C0046D71F /* findMatch.cc in Sources */,
+				86D770B81656873C0046D71F /* stringBuffer.cc in Sources */,
+				86D770B91656873C0046D71F /* stringStack.cc in Sources */,
+				86D770BA1656873C0046D71F /* stringTable.cc in Sources */,
+				86D770BB1656873C0046D71F /* stringUnit.cpp in Sources */,
+				86D770BC1656873C0046D71F /* unicode.cc in Sources */,
+				86D7703E165687220046D71F /* actionMap.cc in Sources */,
+				86D7703F165687220046D71F /* bitStream.cc in Sources */,
+				86D77040165687220046D71F /* bufferStream.cc in Sources */,
+				86D77041165687220046D71F /* fileObject.cc in Sources */,
+				86D77042165687220046D71F /* fileStream.cc in Sources */,
+				86D77043165687220046D71F /* fileStreamObject.cc in Sources */,
+				86D77044165687220046D71F /* fileSystemFunctions.cpp in Sources */,
+				86D77045165687220046D71F /* filterStream.cc in Sources */,
+				86D77046165687220046D71F /* memStream.cc in Sources */,
+				86D77047165687220046D71F /* nStream.cc in Sources */,
+				86D77048165687220046D71F /* resizeStream.cc in Sources */,
+				86D77049165687220046D71F /* resourceDictionary.cc in Sources */,
+				86D7704A165687220046D71F /* resourceManager.cc in Sources */,
+				86D7704B165687220046D71F /* streamObject.cc in Sources */,
+				86D7704C165687220046D71F /* centralDir.cc in Sources */,
+				86D7704D165687220046D71F /* compressor.cc in Sources */,
+				86D7704E165687220046D71F /* deflate.cc in Sources */,
+				86D7704F165687220046D71F /* extraField.cc in Sources */,
+				86D77050165687220046D71F /* fileHeader.cc in Sources */,
+				86D77051165687220046D71F /* stored.cc in Sources */,
+				86D77052165687220046D71F /* zipArchive.cc in Sources */,
+				86D77053165687220046D71F /* zipCryptStream.cc in Sources */,
+				86D77054165687220046D71F /* zipObject.cc in Sources */,
+				86D77055165687220046D71F /* zipSubStream.cc in Sources */,
+				86D77056165687220046D71F /* zipTempStream.cc in Sources */,
+				86D76FAF165687060046D71F /* crc.cc in Sources */,
+				86D76FB0165687060046D71F /* assetBase.cc in Sources */,
+				86D76FB7165687060046D71F /* behaviorComponent.cpp in Sources */,
+				86D76FB8165687060046D71F /* behaviorInstance.cpp in Sources */,
+				86D76FB9165687060046D71F /* behaviorTemplate.cpp in Sources */,
+				86D76FBA165687060046D71F /* dynamicConsoleMethodComponent.cpp in Sources */,
+				86D76FBC165687060046D71F /* simComponent.cpp in Sources */,
+				86D76FBD165687060046D71F /* consoleDictionary.cc in Sources */,
+				86D76FBE165687060046D71F /* consoleExprEvalState.cc in Sources */,
+				86D76FBF165687060046D71F /* consoleNamespace.cc in Sources */,
+				86D76FC0165687060046D71F /* consoleBaseType.cc in Sources */,
+				86D76FC1165687060046D71F /* ConsoleTypeValidators.cc in Sources */,
+				86D76FC2165687060046D71F /* Package.cc in Sources */,
+				86D76FC3165687060046D71F /* astAlloc.cc in Sources */,
+				86D76FC4165687060046D71F /* astNodes.cc in Sources */,
+				86D76FC5165687060046D71F /* cmdgram.cc in Sources */,
+				86D76FC6165687060046D71F /* CMDscan.cc in Sources */,
+				86D76FC7165687060046D71F /* codeBlock.cc in Sources */,
+				86D76FC8165687060046D71F /* compiledEval.cc in Sources */,
+				86D76FC9165687060046D71F /* compiler.cc in Sources */,
+				86D76FCA165687060046D71F /* console.cc in Sources */,
+				86D76FCB165687060046D71F /* consoleDoc.cc in Sources */,
+				86D76FCC165687060046D71F /* consoleFunctions.cc in Sources */,
+				86D76FCD165687060046D71F /* consoleLogger.cc in Sources */,
+				86D76FCE165687060046D71F /* consoleObject.cc in Sources */,
+				86D76FCF165687060046D71F /* consoleParser.cc in Sources */,
+				86D76FD0165687060046D71F /* consoleTypes.cc in Sources */,
+				86D76FD1165687060046D71F /* profiler.cc in Sources */,
+				86D76FD2165687060046D71F /* RemoteDebugger1.cc in Sources */,
+				86D76FD3165687060046D71F /* RemoteDebuggerBase.cc in Sources */,
+				86D76FD4165687060046D71F /* RemoteDebuggerBridge.cc in Sources */,
+				86D76FD5165687060046D71F /* telnetDebugger.cc in Sources */,
+				86D76FD6165687060046D71F /* delegateSignal.cpp in Sources */,
+				86D76FE9165687060046D71F /* defaultGame.cc in Sources */,
+				86D76FEA165687060046D71F /* gameConnection.cc in Sources */,
+				86D76FEB165687060046D71F /* gameInterface.cc in Sources */,
+				86D76FED165687060046D71F /* version.cc in Sources */,
+				86D76FEE165687060046D71F /* bitmapBmp.cc in Sources */,
+				86D76FEF165687060046D71F /* bitmapJpeg.cc in Sources */,
+				86D76FF0165687060046D71F /* bitmapPng.cc in Sources */,
+				86D76FF3165687060046D71F /* dgl.cc in Sources */,
+				86D76FF4165687060046D71F /* dglMatrix.cc in Sources */,
+				86D76FF5165687060046D71F /* DynamicTexture.cc in Sources */,
+				86D76FF6165687060046D71F /* gBitmap.cc in Sources */,
+				86D76FF7165687060046D71F /* gFont.cc in Sources */,
+				86D76FF8165687060046D71F /* gPalette.cc in Sources */,
+				86D76FF9165687060046D71F /* PNGImage.cpp in Sources */,
+				86D76FFA165687060046D71F /* splineUtil.cc in Sources */,
+				86D76FFB165687060046D71F /* TextureDictionary.cc in Sources */,
+				86D76FFC165687060046D71F /* TextureHandle.cc in Sources */,
+				86D76FFD165687060046D71F /* TextureManager.cc in Sources */,
+				86D76FFE165687060046D71F /* guiBitmapButtonCtrl.cc in Sources */,
+				86D76FFF165687060046D71F /* guiBorderButton.cc in Sources */,
+				86D77000165687060046D71F /* guiButtonBaseCtrl.cc in Sources */,
+				86D77001165687060046D71F /* guiButtonCtrl.cc in Sources */,
+				86D77002165687060046D71F /* guiCheckBoxCtrl.cc in Sources */,
+				86D77003165687060046D71F /* guiIconButtonCtrl.cc in Sources */,
+				86D77004165687060046D71F /* guiRadioCtrl.cc in Sources */,
+				86D77005165687060046D71F /* guiToolboxButtonCtrl.cc in Sources */,
+				86D77006165687060046D71F /* guiAutoScrollCtrl.cc in Sources */,
+				86D77007165687060046D71F /* guiCtrlArrayCtrl.cc in Sources */,
+				86D77008165687060046D71F /* guiDragAndDropCtrl.cc in Sources */,
+				86D77009165687060046D71F /* guiDynamicCtrlArrayCtrl.cc in Sources */,
+				86D7700A165687060046D71F /* guiFormCtrl.cc in Sources */,
+				86D7700B165687060046D71F /* guiFrameCtrl.cc in Sources */,
+				86D7700C165687060046D71F /* guiPaneCtrl.cc in Sources */,
+				86D7700D165687060046D71F /* guiRolloutCtrl.cc in Sources */,
+				86D7700E165687060046D71F /* guiScrollCtrl.cc in Sources */,
+				86D7700F165687060046D71F /* guiStackCtrl.cc in Sources */,
+				86D77010165687060046D71F /* guiTabBookCtrl.cc in Sources */,
+				86D77011165687060046D71F /* guiWindowCtrl.cc in Sources */,
+				86D77012165687060046D71F /* guiControlListPopup.cc in Sources */,
+				86D77013165687060046D71F /* guiDebugger.cc in Sources */,
+				86D77014165687060046D71F /* guiEditCtrl.cc in Sources */,
+				86D77015165687060046D71F /* guiFilterCtrl.cc in Sources */,
+				86D77016165687060046D71F /* guiGraphCtrl.cc in Sources */,
+				86D77017165687060046D71F /* guiImageList.cc in Sources */,
+				86D77018165687060046D71F /* guiInspector.cc in Sources */,
+				86D77019165687060046D71F /* guiInspectorTypes.cc in Sources */,
+				86D7701A165687060046D71F /* guiMenuBar.cc in Sources */,
+				86D7701B165687060046D71F /* guiSeparatorCtrl.cc in Sources */,
+				86D7701C165687060046D71F /* guiArrayCtrl.cc in Sources */,
+				86D7701D165687060046D71F /* guiBackgroundCtrl.cc in Sources */,
+				86D7701E165687060046D71F /* guiBitmapBorderCtrl.cc in Sources */,
+				86D7701F165687060046D71F /* guiBitmapCtrl.cc in Sources */,
+				86D77020165687060046D71F /* guiBubbleTextCtrl.cc in Sources */,
+				86D77021165687060046D71F /* guiCanvas.cc in Sources */,
+				86D77022165687060046D71F /* guiColorPicker.cc in Sources */,
+				86D77023165687060046D71F /* guiConsole.cc in Sources */,
+				86D77024165687060046D71F /* guiConsoleEditCtrl.cc in Sources */,
+				86D77025165687060046D71F /* guiConsoleTextCtrl.cc in Sources */,
+				86D77026165687060046D71F /* guiControl.cc in Sources */,
+				86D77027165687060046D71F /* guiDefaultControlRender.cc in Sources */,
+				86D77028165687060046D71F /* guiFadeinBitmapCtrl.cc in Sources */,
+				86D77029165687060046D71F /* guiInputCtrl.cc in Sources */,
+				86D7702A165687060046D71F /* guiListBoxCtrl.cc in Sources */,
+				86D7702B165687060046D71F /* guiMessageVectorCtrl.cc in Sources */,
+				86D7702C165687060046D71F /* guiMLTextCtrl.cc in Sources */,
+				86D7702D165687060046D71F /* guiMLTextEditCtrl.cc in Sources */,
+				86D7702E165687060046D71F /* guiMouseEventCtrl.cc in Sources */,
+				86D7702F165687060046D71F /* guiPopUpCtrl.cc in Sources */,
+				86D77030165687060046D71F /* guiPopUpCtrlEx.cc in Sources */,
+				86D77031165687060046D71F /* guiProgressCtrl.cc in Sources */,
+				86D77032165687060046D71F /* guiScriptNotifyControl.cc in Sources */,
+				86D77033165687060046D71F /* guiSliderCtrl.cc in Sources */,
+				86D77034165687060046D71F /* guiTabPageCtrl.cc in Sources */,
+				86D77035165687060046D71F /* guiTextCtrl.cc in Sources */,
+				86D77036165687060046D71F /* guiTextEditCtrl.cc in Sources */,
+				86D77037165687060046D71F /* guiTextEditSliderCtrl.cc in Sources */,
+				86D77038165687060046D71F /* guiTextListCtrl.cc in Sources */,
+				86D77039165687060046D71F /* guiTickCtrl.cc in Sources */,
+				86D7703A165687060046D71F /* guiTreeViewCtrl.cc in Sources */,
+				86D7703B165687060046D71F /* guiTypes.cc in Sources */,
+				86D7703C165687060046D71F /* lang.cc in Sources */,
+				86D7703D165687060046D71F /* messageVector.cc in Sources */,
+				86D76F9B165686D80046D71F /* hashFunction.cc in Sources */,
+				86D76F9C165686D80046D71F /* assetFieldTypes.cc in Sources */,
+				86D76F9D165686D80046D71F /* assetManager.cc in Sources */,
+				86D76F9F165686D80046D71F /* assetQuery.cc in Sources */,
+				86D76FA0165686D80046D71F /* assetSnapshot.cc in Sources */,
+				86D76FA1165686D80046D71F /* assetTagsManifest.cc in Sources */,
+				86D76FA2165686D80046D71F /* audio.cc in Sources */,
+				86D76FA3165686D80046D71F /* AudioAsset.cc in Sources */,
+				86D76FA4165686D80046D71F /* audioBuffer.cc in Sources */,
+				86D76FA5165686D80046D71F /* audioDataBlock.cc in Sources */,
+				86D76FA6165686D80046D71F /* audioFunctions.cc in Sources */,
+				86D76FA7165686D80046D71F /* audioStreamSourceFactory.cc in Sources */,
+				86D76FA8165686D80046D71F /* wavStreamSource.cc in Sources */,
+				86D76FA9165686D80046D71F /* bitTables.cc in Sources */,
+				86D76FAA165686D80046D71F /* hashTable.cc in Sources */,
+				86D76FAB165686D80046D71F /* nameTags.cpp in Sources */,
+				86D76FAC165686D80046D71F /* undo.cc in Sources */,
+				86D76FAD165686D80046D71F /* vector.cc in Sources */,
+				86D76F8D165686B00046D71F /* SceneRenderFactories.cpp in Sources */,
+				86D76F8E165686B00046D71F /* SceneRenderQueue.cpp in Sources */,
+				86D76F90165686B00046D71F /* CompositeSprite.cc in Sources */,
+				86D76F93165686B00046D71F /* SceneObject.cc in Sources */,
+				86D76F96165686B00046D71F /* Scroller.cc in Sources */,
+				86D76F97165686B00046D71F /* ShapeVector.cc in Sources */,
+				86D76F98165686B00046D71F /* Sprite.cc in Sources */,
+				86D76F99165686B00046D71F /* Trigger.cc in Sources */,
+				86D76F791656868D0046D71F /* AnimationAsset.cc in Sources */,
+				86D76F7A1656868D0046D71F /* AnimationController.cc in Sources */,
+				86D76F7B1656868D0046D71F /* ImageAsset.cc in Sources */,
+				86D76F7C1656868D0046D71F /* BatchRender.cc in Sources */,
+				86D76F7D1656868D0046D71F /* CoreMath.cc in Sources */,
+				86D76F7E1656868D0046D71F /* RenderProxy.cc in Sources */,
+				86D76F7F1656868D0046D71F /* SpriteBase.cc in Sources */,
+				86D76F801656868D0046D71F /* SpriteBatch.cc in Sources */,
+				86D76F811656868D0046D71F /* SpriteBatchItem.cc in Sources */,
+				86D76F821656868D0046D71F /* SpriteProxyBase.cc in Sources */,
+				86D76F831656868D0046D71F /* Utility.cc in Sources */,
+				86D76F841656868D0046D71F /* Vector2.cc in Sources */,
+				86D76F851656868D0046D71F /* guiImageButtonCtrl.cc in Sources */,
+				86D76F861656868D0046D71F /* guiSceneObjectCtrl.cc in Sources */,
+				86D76F871656868D0046D71F /* guiSpriteCtrl.cc in Sources */,
+				86D76F881656868D0046D71F /* SceneWindow.cc in Sources */,
+				86D76F891656868D0046D71F /* ContactFilter.cc in Sources */,
+				86D76F8A1656868D0046D71F /* DebugDraw.cc in Sources */,
+				86D76F8B1656868D0046D71F /* Scene.cc in Sources */,
+				86D76F8C1656868D0046D71F /* WorldQuery.cc in Sources */,
+				866381D31655484400C8C551 /* mRandom.cc in Sources */,
+				865A227B165187B600527C44 /* b2BroadPhase.cpp in Sources */,
+				865A227C165187B600527C44 /* b2CollideCircle.cpp in Sources */,
+				865A227D165187B600527C44 /* b2CollideEdge.cpp in Sources */,
+				865A227E165187B600527C44 /* b2CollidePolygon.cpp in Sources */,
+				865A227F165187B600527C44 /* b2Collision.cpp in Sources */,
+				865A2280165187B600527C44 /* b2Distance.cpp in Sources */,
+				865A2281165187B600527C44 /* b2DynamicTree.cpp in Sources */,
+				865A2282165187B600527C44 /* b2TimeOfImpact.cpp in Sources */,
+				865A2283165187B600527C44 /* b2ChainShape.cpp in Sources */,
+				865A2284165187B600527C44 /* b2CircleShape.cpp in Sources */,
+				865A2285165187B600527C44 /* b2EdgeShape.cpp in Sources */,
+				865A2286165187B600527C44 /* b2PolygonShape.cpp in Sources */,
+				865A2287165187B600527C44 /* b2BlockAllocator.cpp in Sources */,
+				865A2288165187B600527C44 /* b2Draw.cpp in Sources */,
+				865A2289165187B600527C44 /* b2Math.cpp in Sources */,
+				865A228A165187B600527C44 /* b2Settings.cpp in Sources */,
+				865A228B165187B600527C44 /* b2StackAllocator.cpp in Sources */,
+				865A228C165187B600527C44 /* b2Timer.cpp in Sources */,
+				865A228D165187B600527C44 /* b2Body.cpp in Sources */,
+				865A228E165187B600527C44 /* b2ContactManager.cpp in Sources */,
+				865A228F165187B600527C44 /* b2Fixture.cpp in Sources */,
+				865A2290165187B600527C44 /* b2Island.cpp in Sources */,
+				865A2291165187B600527C44 /* b2World.cpp in Sources */,
+				865A2292165187B600527C44 /* b2WorldCallbacks.cpp in Sources */,
+				865A2293165187B600527C44 /* b2ChainAndCircleContact.cpp in Sources */,
+				865A2294165187B600527C44 /* b2ChainAndPolygonContact.cpp in Sources */,
+				865A2295165187B600527C44 /* b2CircleContact.cpp in Sources */,
+				865A2296165187B600527C44 /* b2Contact.cpp in Sources */,
+				865A2297165187B600527C44 /* b2ContactSolver.cpp in Sources */,
+				865A2298165187B600527C44 /* b2EdgeAndCircleContact.cpp in Sources */,
+				865A2299165187B600527C44 /* b2EdgeAndPolygonContact.cpp in Sources */,
+				865A229A165187B600527C44 /* b2PolygonAndCircleContact.cpp in Sources */,
+				865A229B165187B600527C44 /* b2PolygonContact.cpp in Sources */,
+				865A229C165187B600527C44 /* b2DistanceJoint.cpp in Sources */,
+				865A229D165187B600527C44 /* b2FrictionJoint.cpp in Sources */,
+				865A229E165187B600527C44 /* b2GearJoint.cpp in Sources */,
+				865A229F165187B600527C44 /* b2Joint.cpp in Sources */,
+				865A22A0165187B600527C44 /* b2MotorJoint.cpp in Sources */,
+				865A22A1165187B600527C44 /* b2MouseJoint.cpp in Sources */,
+				865A22A2165187B600527C44 /* b2PrismaticJoint.cpp in Sources */,
+				865A22A3165187B600527C44 /* b2PulleyJoint.cpp in Sources */,
+				865A22A4165187B600527C44 /* b2RevoluteJoint.cpp in Sources */,
+				865A22A5165187B600527C44 /* b2RopeJoint.cpp in Sources */,
+				865A22A6165187B600527C44 /* b2WeldJoint.cpp in Sources */,
+				865A22A7165187B600527C44 /* b2WheelJoint.cpp in Sources */,
+				865A22D4165187B600527C44 /* b2Rope.cpp in Sources */,
+				865A2305165187FF00527C44 /* jcapimin.c in Sources */,
+				865A2306165187FF00527C44 /* jcapistd.c in Sources */,
+				865A2307165187FF00527C44 /* jccoefct.c in Sources */,
+				865A2308165187FF00527C44 /* jccolor.c in Sources */,
+				865A2309165187FF00527C44 /* jcdctmgr.c in Sources */,
+				865A230A165187FF00527C44 /* jchuff.c in Sources */,
+				865A230B165187FF00527C44 /* jcinit.c in Sources */,
+				865A230C165187FF00527C44 /* jcmainct.c in Sources */,
+				865A230D165187FF00527C44 /* jcmarker.c in Sources */,
+				865A230E165187FF00527C44 /* jcmaster.c in Sources */,
+				865A230F165187FF00527C44 /* jcomapi.c in Sources */,
+				865A2310165187FF00527C44 /* jcparam.c in Sources */,
+				865A2311165187FF00527C44 /* jcphuff.c in Sources */,
+				865A2312165187FF00527C44 /* jcprepct.c in Sources */,
+				865A2313165187FF00527C44 /* jcsample.c in Sources */,
+				865A2314165187FF00527C44 /* jctrans.c in Sources */,
+				865A2315165187FF00527C44 /* jdapimin.c in Sources */,
+				865A2316165187FF00527C44 /* jdapistd.c in Sources */,
+				865A2317165187FF00527C44 /* jdatadst.c in Sources */,
+				865A2318165187FF00527C44 /* jdatasrc.c in Sources */,
+				865A2319165187FF00527C44 /* jdcoefct.c in Sources */,
+				865A231A165187FF00527C44 /* jdcolor.c in Sources */,
+				865A231B165187FF00527C44 /* jddctmgr.c in Sources */,
+				865A231C165187FF00527C44 /* jdhuff.c in Sources */,
+				865A231D165187FF00527C44 /* jdinput.c in Sources */,
+				865A231E165187FF00527C44 /* jdmainct.c in Sources */,
+				865A231F165187FF00527C44 /* jdmarker.c in Sources */,
+				865A2320165187FF00527C44 /* jdmaster.c in Sources */,
+				865A2321165187FF00527C44 /* jdmerge.c in Sources */,
+				865A2322165187FF00527C44 /* jdphuff.c in Sources */,
+				865A2323165187FF00527C44 /* jdpostct.c in Sources */,
+				865A2324165187FF00527C44 /* jdsample.c in Sources */,
+				865A2325165187FF00527C44 /* jdtrans.c in Sources */,
+				865A2326165187FF00527C44 /* jerror.c in Sources */,
+				865A2327165187FF00527C44 /* jfdctflt.c in Sources */,
+				865A2328165187FF00527C44 /* jfdctfst.c in Sources */,
+				865A2329165187FF00527C44 /* jfdctint.c in Sources */,
+				865A232A165187FF00527C44 /* jidctflt.c in Sources */,
+				865A232B165187FF00527C44 /* jidctfst.c in Sources */,
+				865A232C165187FF00527C44 /* jidctint.c in Sources */,
+				865A232D165187FF00527C44 /* jidctred.c in Sources */,
+				865A232E165187FF00527C44 /* jmemansi.c in Sources */,
+				865A232F165187FF00527C44 /* jmemmgr.c in Sources */,
+				865A2330165187FF00527C44 /* jquant1.c in Sources */,
+				865A2331165187FF00527C44 /* jquant2.c in Sources */,
+				865A2332165187FF00527C44 /* jutils.c in Sources */,
+				865A23421651881300527C44 /* png.c in Sources */,
+				865A23431651881300527C44 /* pngerror.c in Sources */,
+				865A23441651881300527C44 /* pngget.c in Sources */,
+				865A23451651881300527C44 /* pngmem.c in Sources */,
+				865A23461651881300527C44 /* pngpread.c in Sources */,
+				865A23471651881300527C44 /* pngread.c in Sources */,
+				865A23481651881300527C44 /* pngrio.c in Sources */,
+				865A23491651881300527C44 /* pngrtran.c in Sources */,
+				865A234A1651881300527C44 /* pngrutil.c in Sources */,
+				865A234B1651881300527C44 /* pngset.c in Sources */,
+				865A234C1651881300527C44 /* pngtrans.c in Sources */,
+				865A234D1651881300527C44 /* pngwio.c in Sources */,
+				865A234E1651881300527C44 /* pngwrite.c in Sources */,
+				865A234F1651881300527C44 /* pngwtran.c in Sources */,
+				865A23501651881300527C44 /* pngwutil.c in Sources */,
+				865A235A16518AD300527C44 /* AppDelegate.mm in Sources */,
+				865A235B16518AD300527C44 /* main.mm in Sources */,
+				86063A251654180000362D83 /* platformOSX.mm in Sources */,
+				866381D8165550FF00C8C551 /* osxFileIO.mm in Sources */,
+				866381DA1655562400C8C551 /* osxMemory.mm in Sources */,
+				866381DC165556AD00C8C551 /* osxMath.mm in Sources */,
+				866381E51655615200C8C551 /* osxInput.mm in Sources */,
+				866381E91655674B00C8C551 /* osxTime.mm in Sources */,
+				8609FE2F16556DD2004662ED /* osxSemaphore.mm in Sources */,
+				8609FE3116556E5A004662ED /* osxThread.mm in Sources */,
+				8609FE361655716E004662ED /* osxPopupMenu.mm in Sources */,
+				8609FE38165572EC004662ED /* osxFont.mm in Sources */,
+				8652C279165586520052D0CB /* osxAudio.mm in Sources */,
+				86D76F78165683240046D71F /* osxOutlineGL.cc in Sources */,
+				2ABF5C8F16569A0C00BBBF1D /* osxMutex.mm in Sources */,
+				8694ADC81656B06B0080ABAC /* osxEvents.mm in Sources */,
+				8694ADC91656B06B0080ABAC /* osxWindow.mm in Sources */,
+				8694ADD11656B7FC0080ABAC /* osxVideo.mm in Sources */,
+				8694ADD51656BDE60080ABAC /* osxGL.mm in Sources */,
+				8658B174165A7BFB0087ABC1 /* osxCPU.mm in Sources */,
+				8658B175165A7BFB0087ABC1 /* osxNetwork.mm in Sources */,
+				8658B176165A7BFB0087ABC1 /* osxString.mm in Sources */,
+				86EC5AC7165C1E0100757872 /* osxTorqueView.mm in Sources */,
+				2A03300D165D1D2100E9CD70 /* unitTesting.cc in Sources */,
+				2A033011165D1D4100E9CD70 /* platformFileIoTests.cc in Sources */,
+				86854E341663AAE6009FAFB2 /* osxOpenGLDevice.mm in Sources */,
+				2AC5C7E81667C85700A0D046 /* platformStringTests.cc in Sources */,
+				2ACFC0A8166CE1AB00FE7370 /* platformMemoryTests.cc in Sources */,
+				865BD2F9166FA7F80064F595 /* osxInputManager.mm in Sources */,
+				86EA5B401678C7C700598E68 /* osxCocoaUtilities.mm in Sources */,
+				861CD8D01678F6C200DAE1A0 /* fileDialog.cc in Sources */,
+				2AE851D21681E56E00193F17 /* color.cc in Sources */,
+				2ADCAC1516A41E5500E07619 /* ParticleAsset.cc in Sources */,
+				2ADCAC1716A41E5500E07619 /* ParticleAssetField.cc in Sources */,
+				2A6F78CE16A4528C005C76D9 /* ParticleAssetEmitter.cc in Sources */,
+				2A25739016A48DAC00363C6F /* ParticlePlayer.cc in Sources */,
+				2AE5B54216A6D860006908D5 /* ParticleAssetFieldCollection.cc in Sources */,
+				2AF3633916A9BBE0004ED7AA /* ParticleSystem.cc in Sources */,
+				2AC4404516B0142B00FC4091 /* ImageFont.cc in Sources */,
+				2AF1C54016B439BB00C1CF3A /* declaredAssets.cc in Sources */,
+				2AF1C54116B439BB00C1CF3A /* referencedAssets.cc in Sources */,
+				2AB97A1D16B66BC70080F940 /* tamlCustom.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		86C281CB16A4307E00F030F4 /* MainMenu.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				86C281CC16A4307E00F030F4 /* en */,
+			);
+			name = MainMenu.xib;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		865A20AE165152EA00527C44 /* Shipping */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = YES;
+				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_PREPROCESSOR_DEFINITIONS = TORQUE_SHIPPING;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = "";
+				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				SDKROOT = macosx10.7;
+			};
+			name = Shipping;
+		};
+		865A20AF165152EA00527C44 /* Shipping */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
+				COMBINE_HIDPI_IMAGES = YES;
+				CONFIGURATION_BUILD_DIR = ../../..;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Torque2D/Torque2D-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_OS_OSX,
+					"$(inherited)",
+				);
+				HEADER_SEARCH_PATHS = (
+					../../source,
+					../../lib,
+					../../lib/vorbis/include,
+					../../lib/lpng,
+					../../lib/ljpeg,
+					../../lib/lungif,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+					../../source/testing/googleTest,
+					../../source/testing/googleTest/include,
+				);
+				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
+				LIBRARY_SEARCH_PATHS = "$(inherited)";
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				OTHER_LDFLAGS = /usr/lib/libz.dylib;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Shipping;
+		};
+		869FF8D41651518C002FE082 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = YES;
+				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_DEBUG,
+					GTEST_OS_MAC,
+					"GTEST_USE_OWN_TR1_TUPLE=1",
+				);
+				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;
+				HEADER_SEARCH_PATHS = "";
+				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				ONLY_ACTIVE_ARCH = NO;
+				SDKROOT = macosx10.7;
+			};
+			name = Debug;
+		};
+		869FF8D51651518C002FE082 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = YES;
+				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_RELEASE,
+					GTEST_OS_MAC,
+					"GTEST_USE_OWN_TR1_TUPLE=1",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = "";
+				LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				SDKROOT = macosx10.7;
+			};
+			name = Release;
+		};
+		869FF8D71651518C002FE082 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
+				COMBINE_HIDPI_IMAGES = YES;
+				CONFIGURATION_BUILD_DIR = ../../..;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Torque2D/Torque2D-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_OS_OSX,
+					"$(inherited)",
+				);
+				HEADER_SEARCH_PATHS = (
+					../../source,
+					../../lib,
+					../../lib/vorbis/include,
+					../../lib/lpng,
+					../../lib/ljpeg,
+					../../lib/lungif,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+					../../source/testing/googleTest,
+					../../source/testing/googleTest/include,
+				);
+				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
+				LIBRARY_SEARCH_PATHS = "$(inherited)";
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				OTHER_LDFLAGS = /usr/lib/libz.dylib;
+				PRODUCT_NAME = "$(TARGET_NAME)_DEBUG";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		869FF8D81651518C002FE082 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
+				COMBINE_HIDPI_IMAGES = YES;
+				CONFIGURATION_BUILD_DIR = ../../..;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Torque2D/Torque2D-Prefix.pch";
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_OS_OSX,
+					"$(inherited)",
+				);
+				HEADER_SEARCH_PATHS = (
+					../../source,
+					../../lib,
+					../../lib/vorbis/include,
+					../../lib/lpng,
+					../../lib/ljpeg,
+					../../lib/lungif,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks/QD.framework/Headers",
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+					../../source/testing/googleTest,
+					../../source/testing/googleTest/include,
+				);
+				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
+				LIBRARY_SEARCH_PATHS = "$(inherited)";
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				OTHER_LDFLAGS = /usr/lib/libz.dylib;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		869FF8B21651518C002FE082 /* Build configuration list for PBXProject "Torque2D" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				869FF8D41651518C002FE082 /* Debug */,
+				869FF8D51651518C002FE082 /* Release */,
+				865A20AE165152EA00527C44 /* Shipping */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		869FF8D61651518C002FE082 /* Build configuration list for PBXNativeTarget "Torque2D" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				869FF8D71651518C002FE082 /* Debug */,
+				869FF8D81651518C002FE082 /* Release */,
+				865A20AF165152EA00527C44 /* Shipping */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 869FF8AF1651518C002FE082 /* Project object */;
+}

+ 4 - 0
engine/compilers/Xcode/Torque2D/Config.xcconfig

@@ -0,0 +1,4 @@
+//
+//  Config.xcconfig
+//  Torque2D
+//

+ 49 - 0
engine/compilers/Xcode/Torque2D/Torque2D-Info.plist

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>t2dproj</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>torque2d.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>Torque 2D Project</string>
+			<key>CFBundleTypeRole</key>
+			<string>Editor</string>
+		</dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.garagegames.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>${MACOSX_DEPLOYMENT_TARGET}</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>Copyright © 2012 GarageGames, LLC. All rights reserved.</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

+ 7 - 0
engine/compilers/Xcode/Torque2D/Torque2D-Prefix.pch

@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'Torque2D' target in the 'Torque2D' project
+//
+
+#ifdef __OBJC__
+    #import <Cocoa/Cocoa.h>
+#endif

+ 49 - 0
engine/compilers/Xcode/Torque2D/Torque2DGame-Info.plist

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>t2dproj</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>torque2d.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>Torque 2D Project</string>
+			<key>CFBundleTypeRole</key>
+			<string>Editor</string>
+		</dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.garagegames.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>${MACOSX_DEPLOYMENT_TARGET}</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>Copyright © 2012 GarageGames, LLC. All rights reserved.</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>

+ 2 - 0
engine/compilers/Xcode/Torque2D/en.lproj/InfoPlist.strings

@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+

+ 355 - 0
engine/compilers/Xcode/Torque2D/en.lproj/MainMenu.xib

@@ -0,0 +1,355 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+	<data>
+		<int key="IBDocument.SystemTarget">1070</int>
+		<string key="IBDocument.SystemVersion">12C3012</string>
+		<string key="IBDocument.InterfaceBuilderVersion">2844</string>
+		<string key="IBDocument.AppKitVersion">1187.34</string>
+		<string key="IBDocument.HIToolboxVersion">625.00</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+			<string key="NS.object.0">2844</string>
+		</object>
+		<array key="IBDocument.IntegratedClassDependencies">
+			<string>NSCustomObject</string>
+			<string>NSMenu</string>
+			<string>NSMenuItem</string>
+		</array>
+		<array key="IBDocument.PluginDependencies">
+			<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+		</array>
+		<object class="NSMutableDictionary" key="IBDocument.Metadata">
+			<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+			<integer value="1" key="NS.object.0"/>
+		</object>
+		<array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+			<object class="NSCustomObject" id="1021">
+				<string key="NSClassName">NSApplication</string>
+			</object>
+			<object class="NSCustomObject" id="1014">
+				<string key="NSClassName">FirstResponder</string>
+			</object>
+			<object class="NSCustomObject" id="1050">
+				<string key="NSClassName">NSApplication</string>
+			</object>
+			<object class="NSMenu" id="649796088">
+				<string key="NSTitle">AMainMenu</string>
+				<array class="NSMutableArray" key="NSMenuItems">
+					<object class="NSMenuItem" id="694149608">
+						<reference key="NSMenu" ref="649796088"/>
+						<string key="NSTitle">Torque 2D</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSKeyEquivModMask">1048576</int>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<object class="NSCustomResource" key="NSOnImage" id="35465992">
+							<string key="NSClassName">NSImage</string>
+							<string key="NSResourceName">NSMenuCheckmark</string>
+						</object>
+						<object class="NSCustomResource" key="NSMixedImage" id="502551668">
+							<string key="NSClassName">NSImage</string>
+							<string key="NSResourceName">NSMenuMixedState</string>
+						</object>
+						<string key="NSAction">submenuAction:</string>
+						<object class="NSMenu" key="NSSubmenu" id="110575045">
+							<string key="NSTitle">Torque 2D</string>
+							<array class="NSMutableArray" key="NSMenuItems">
+								<object class="NSMenuItem" id="238522557">
+									<reference key="NSMenu" ref="110575045"/>
+									<string key="NSTitle">About Torque 2D</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="304266470">
+									<reference key="NSMenu" ref="110575045"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="755159360">
+									<reference key="NSMenu" ref="110575045"/>
+									<string key="NSTitle">Hide Torque 2D</string>
+									<string key="NSKeyEquiv">h</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="342932134">
+									<reference key="NSMenu" ref="110575045"/>
+									<string key="NSTitle">Hide Others</string>
+									<string key="NSKeyEquiv">h</string>
+									<int key="NSKeyEquivModMask">1572864</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="908899353">
+									<reference key="NSMenu" ref="110575045"/>
+									<string key="NSTitle">Show All</string>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="1056857174">
+									<reference key="NSMenu" ref="110575045"/>
+									<bool key="NSIsDisabled">YES</bool>
+									<bool key="NSIsSeparator">YES</bool>
+									<string key="NSTitle"/>
+									<string key="NSKeyEquiv"/>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+								<object class="NSMenuItem" id="632727374">
+									<reference key="NSMenu" ref="110575045"/>
+									<string key="NSTitle">Quit Torque 2D</string>
+									<string key="NSKeyEquiv">q</string>
+									<int key="NSKeyEquivModMask">1048576</int>
+									<int key="NSMnemonicLoc">2147483647</int>
+									<reference key="NSOnImage" ref="35465992"/>
+									<reference key="NSMixedImage" ref="502551668"/>
+								</object>
+							</array>
+							<string key="NSName">_NSAppleMenu</string>
+						</object>
+					</object>
+					<object class="NSMenuItem" id="448692316">
+						<reference key="NSMenu" ref="649796088"/>
+						<string key="NSTitle">Help</string>
+						<string key="NSKeyEquiv"/>
+						<int key="NSMnemonicLoc">2147483647</int>
+						<reference key="NSOnImage" ref="35465992"/>
+						<reference key="NSMixedImage" ref="502551668"/>
+					</object>
+				</array>
+				<string key="NSName">_NSMainMenu</string>
+			</object>
+			<object class="NSCustomObject" id="976324537">
+				<string key="NSClassName">AppDelegate</string>
+			</object>
+			<object class="NSCustomObject" id="755631768">
+				<string key="NSClassName">NSFontManager</string>
+			</object>
+		</array>
+		<object class="IBObjectContainer" key="IBDocument.Objects">
+			<array class="NSMutableArray" key="connectionRecords">
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">terminate:</string>
+						<reference key="source" ref="1050"/>
+						<reference key="destination" ref="632727374"/>
+					</object>
+					<int key="connectionID">449</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">orderFrontStandardAboutPanel:</string>
+						<reference key="source" ref="1021"/>
+						<reference key="destination" ref="238522557"/>
+					</object>
+					<int key="connectionID">142</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBOutletConnection" key="connection">
+						<string key="label">delegate</string>
+						<reference key="source" ref="1021"/>
+						<reference key="destination" ref="976324537"/>
+					</object>
+					<int key="connectionID">495</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">hide:</string>
+						<reference key="source" ref="1014"/>
+						<reference key="destination" ref="755159360"/>
+					</object>
+					<int key="connectionID">367</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">hideOtherApplications:</string>
+						<reference key="source" ref="1014"/>
+						<reference key="destination" ref="342932134"/>
+					</object>
+					<int key="connectionID">368</int>
+				</object>
+				<object class="IBConnectionRecord">
+					<object class="IBActionConnection" key="connection">
+						<string key="label">unhideAllApplications:</string>
+						<reference key="source" ref="1014"/>
+						<reference key="destination" ref="908899353"/>
+					</object>
+					<int key="connectionID">370</int>
+				</object>
+			</array>
+			<object class="IBMutableOrderedSet" key="objectRecords">
+				<array key="orderedObjects">
+					<object class="IBObjectRecord">
+						<int key="objectID">0</int>
+						<array key="object" id="0"/>
+						<reference key="children" ref="1048"/>
+						<nil key="parent"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-2</int>
+						<reference key="object" ref="1021"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">File's Owner</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-1</int>
+						<reference key="object" ref="1014"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">First Responder</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">-3</int>
+						<reference key="object" ref="1050"/>
+						<reference key="parent" ref="0"/>
+						<string key="objectName">Application</string>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">29</int>
+						<reference key="object" ref="649796088"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="694149608"/>
+							<reference ref="448692316"/>
+						</array>
+						<reference key="parent" ref="0"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">56</int>
+						<reference key="object" ref="694149608"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="110575045"/>
+						</array>
+						<reference key="parent" ref="649796088"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">57</int>
+						<reference key="object" ref="110575045"/>
+						<array class="NSMutableArray" key="children">
+							<reference ref="238522557"/>
+							<reference ref="755159360"/>
+							<reference ref="908899353"/>
+							<reference ref="632727374"/>
+							<reference ref="304266470"/>
+							<reference ref="1056857174"/>
+							<reference ref="342932134"/>
+						</array>
+						<reference key="parent" ref="694149608"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">58</int>
+						<reference key="object" ref="238522557"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">134</int>
+						<reference key="object" ref="755159360"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">150</int>
+						<reference key="object" ref="908899353"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">136</int>
+						<reference key="object" ref="632727374"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">236</int>
+						<reference key="object" ref="304266470"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">149</int>
+						<reference key="object" ref="1056857174"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">145</int>
+						<reference key="object" ref="342932134"/>
+						<reference key="parent" ref="110575045"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">420</int>
+						<reference key="object" ref="755631768"/>
+						<reference key="parent" ref="0"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">490</int>
+						<reference key="object" ref="448692316"/>
+						<array class="NSMutableArray" key="children"/>
+						<reference key="parent" ref="649796088"/>
+					</object>
+					<object class="IBObjectRecord">
+						<int key="objectID">494</int>
+						<reference key="object" ref="976324537"/>
+						<reference key="parent" ref="0"/>
+					</object>
+				</array>
+			</object>
+			<dictionary class="NSMutableDictionary" key="flattenedProperties">
+				<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="490.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+				<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+			</dictionary>
+			<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+			<nil key="activeLocalization"/>
+			<dictionary class="NSMutableDictionary" key="localizations"/>
+			<nil key="sourceID"/>
+			<int key="maxID">539</int>
+		</object>
+		<object class="IBClassDescriber" key="IBDocument.Classes">
+			<array class="NSMutableArray" key="referencedPartialClassDescriptions">
+				<object class="IBPartialClassDescription">
+					<string key="className">AppDelegate</string>
+					<string key="superclassName">NSObject</string>
+					<object class="IBClassDescriptionSource" key="sourceIdentifier">
+						<string key="majorKey">IBProjectSource</string>
+						<string key="minorKey">./Classes/AppDelegate.h</string>
+					</object>
+				</object>
+			</array>
+		</object>
+		<int key="IBDocument.localizationMode">0</int>
+		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+			<real value="1070" key="NS.object.0"/>
+		</object>
+		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+		<int key="IBDocument.defaultPropertyAccessControl">3</int>
+		<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+			<string key="NSMenuCheckmark">{11, 11}</string>
+			<string key="NSMenuMixedState">{10, 3}</string>
+		</dictionary>
+		<bool key="IBDocument.UseAutolayout">YES</bool>
+	</data>
+</archive>

BIN
engine/compilers/Xcode/Torque2D/t2dproj.icns


BIN
engine/compilers/Xcode/Torque2D/torque2d.icns


+ 3464 - 0
engine/compilers/Xcode_iOS/Torque2D.xcodeproj/project.pbxproj

@@ -0,0 +1,3464 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		2AB97A2116B66BE50080F940 /* tamlCustom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AB97A1F16B66BE50080F940 /* tamlCustom.cc */; };
+		2AC4404E16B0144500FC4091 /* ImageFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AC4404C16B0144500FC4091 /* ImageFont.cc */; };
+		2AED7D9316B70102003482CF /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AED7D9216B70102003482CF /* CoreText.framework */; };
+		2AF1C54B16B439D900C1CF3A /* declaredAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C54716B439D900C1CF3A /* declaredAssets.cc */; };
+		2AF1C54C16B439D900C1CF3A /* referencedAssets.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1C54916B439D900C1CF3A /* referencedAssets.cc */; };
+		33230F1656FA2C7C493DA2D2 /* guiSliderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */; };
+		8610F32F16AEEC670015BCEB /* main.cs in Resources */ = {isa = PBXBuildFile; fileRef = 8610F32D16AEEC670015BCEB /* main.cs */; };
+		8610F33016AEEC670015BCEB /* modules in Resources */ = {isa = PBXBuildFile; fileRef = 8610F32E16AEEC670015BCEB /* modules */; };
+		86555D2F16B2C29200881446 /* iPadStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 86555D2B16B2C29200881446 /* iPadStoryboard.storyboard */; };
+		86555D3016B2C29200881446 /* iPhoneStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 86555D2D16B2C29200881446 /* iPhoneStoryboard.storyboard */; };
+		86555D3716B2C2B400881446 /* T2DAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86555D3216B2C2B400881446 /* T2DAppDelegate.mm */; };
+		86555D3816B2C2B400881446 /* T2DView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86555D3416B2C2B400881446 /* T2DView.mm */; };
+		86555D3916B2C2B400881446 /* T2DViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 86555D3616B2C2B400881446 /* T2DViewController.mm */; };
+		86555D3F16B2C75900881446 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86555D3E16B2C75900881446 /* GLKit.framework */; };
+		867BACD216AEC8BB0033868F /* GameCenter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9516AEC8BB0033868F /* GameCenter.mm */; };
+		867BACD316AEC8BB0033868F /* iOSAlerts.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9816AEC8BB0033868F /* iOSAlerts.mm */; };
+		867BACD416AEC8BB0033868F /* iOSAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9916AEC8BB0033868F /* iOSAudio.mm */; };
+		867BACD516AEC8BB0033868F /* iOSConsole.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9B16AEC8BB0033868F /* iOSConsole.mm */; };
+		867BACD616AEC8BB0033868F /* iOSCPUInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9C16AEC8BB0033868F /* iOSCPUInfo.mm */; };
+		867BACD716AEC8BB0033868F /* iOSDialogs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9D16AEC8BB0033868F /* iOSDialogs.mm */; };
+		867BACD816AEC8BB0033868F /* iOSEvents.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BAC9F16AEC8BB0033868F /* iOSEvents.mm */; };
+		867BACD916AEC8BB0033868F /* iOSFileio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACA016AEC8BB0033868F /* iOSFileio.mm */; };
+		867BACDA16AEC8BB0033868F /* iOSFont.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACA216AEC8BB0033868F /* iOSFont.mm */; };
+		867BACDB16AEC8BB0033868F /* iOSGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACA316AEC8BB0033868F /* iOSGL.mm */; };
+		867BACDD16AEC8BB0033868F /* iOSInput.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACA616AEC8BB0033868F /* iOSInput.mm */; };
+		867BACDF16AEC8BB0033868F /* iOSMath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACA916AEC8BB0033868F /* iOSMath.mm */; };
+		867BACE016AEC8BB0033868F /* iOSMemory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACAA16AEC8BB0033868F /* iOSMemory.mm */; };
+		867BACE116AEC8BB0033868F /* iOSMotionManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACAC16AEC8BB0033868F /* iOSMotionManager.mm */; };
+		867BACE216AEC8BB0033868F /* iOSMoviePlayback.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACAE16AEC8BB0033868F /* iOSMoviePlayback.mm */; };
+		867BACE316AEC8BB0033868F /* iOSMutex.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACAF16AEC8BB0033868F /* iOSMutex.mm */; };
+		867BACE416AEC8BB0033868F /* iOSNet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACB016AEC8BB0033868F /* iOSNet.mm */; };
+		867BACE516AEC8BB0033868F /* iOSOGLVideo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACB316AEC8BB0033868F /* iOSOGLVideo.mm */; };
+		867BACE616AEC8BB0033868F /* iOSOutlineGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACB516AEC8BB0033868F /* iOSOutlineGL.mm */; };
+		867BACE716AEC8BB0033868F /* iOSPlatform.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACB616AEC8BB0033868F /* iOSPlatform.mm */; };
+		867BACE816AEC8BB0033868F /* iOSProcessControl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACB716AEC8BB0033868F /* iOSProcessControl.mm */; };
+		867BACE916AEC8BB0033868F /* iOSProfiler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACB916AEC8BB0033868F /* iOSProfiler.mm */; };
+		867BACEA16AEC8BB0033868F /* iOSSemaphore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACBA16AEC8BB0033868F /* iOSSemaphore.mm */; };
+		867BACEB16AEC8BB0033868F /* iOSStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BACBB16AEC8BB0033868F /* iOSStreamSource.cc */; };
+		867BACEC16AEC8BB0033868F /* iOSStrings.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACBD16AEC8BB0033868F /* iOSStrings.mm */; };
+		867BACEF16AEC8BB0033868F /* iOSThread.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACC216AEC8BB0033868F /* iOSThread.mm */; };
+		867BACF016AEC8BB0033868F /* iOSTime.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACC316AEC8BB0033868F /* iOSTime.mm */; };
+		867BACF116AEC8BB0033868F /* iOSUserMusicLibrary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACC516AEC8BB0033868F /* iOSUserMusicLibrary.mm */; };
+		867BACF216AEC8BB0033868F /* iOSUtil.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACC716AEC8BB0033868F /* iOSUtil.mm */; };
+		867BACF316AEC8BB0033868F /* iOSWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACC916AEC8BB0033868F /* iOSWindow.mm */; };
+		867BACF416AEC8BB0033868F /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACCA16AEC8BB0033868F /* main.mm */; };
+		867BACF516AEC8BB0033868F /* popupMenu.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACCC16AEC8BB0033868F /* popupMenu.mm */; };
+		867BACF616AEC8BB0033868F /* SoundEngine.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BACD016AEC8BB0033868F /* SoundEngine.mm */; };
+		867BAFDF16AEC9050033868F /* AnimationAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BACFA16AEC9050033868F /* AnimationAsset.cc */; };
+		867BAFE016AEC9050033868F /* AnimationController.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BACFD16AEC9050033868F /* AnimationController.cc */; };
+		867BAFE116AEC9050033868F /* ImageAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BACFF16AEC9050033868F /* ImageAsset.cc */; };
+		867BAFE216AEC9050033868F /* ParticleAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD0216AEC9050033868F /* ParticleAsset.cc */; };
+		867BAFE316AEC9050033868F /* ParticleAssetEmitter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD0516AEC9050033868F /* ParticleAssetEmitter.cc */; };
+		867BAFE416AEC9050033868F /* ParticleAssetField.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD0816AEC9050033868F /* ParticleAssetField.cc */; };
+		867BAFE516AEC9050033868F /* ParticleAssetFieldCollection.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD0A16AEC9050033868F /* ParticleAssetFieldCollection.cc */; };
+		867BAFE616AEC9050033868F /* BatchRender.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD0D16AEC9050033868F /* BatchRender.cc */; };
+		867BAFE716AEC9050033868F /* CoreMath.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD0F16AEC9050033868F /* CoreMath.cc */; };
+		867BAFE816AEC9050033868F /* ParticleSystem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1116AEC9050033868F /* ParticleSystem.cc */; };
+		867BAFE916AEC9050033868F /* RenderProxy.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1316AEC9050033868F /* RenderProxy.cc */; };
+		867BAFEA16AEC9050033868F /* SpriteBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1616AEC9050033868F /* SpriteBase.cc */; };
+		867BAFEB16AEC9050033868F /* SpriteBatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1916AEC9050033868F /* SpriteBatch.cc */; };
+		867BAFEC16AEC9050033868F /* SpriteBatchItem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1B16AEC9050033868F /* SpriteBatchItem.cc */; };
+		867BAFED16AEC9050033868F /* SpriteProxyBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1D16AEC9050033868F /* SpriteProxyBase.cc */; };
+		867BAFEE16AEC9050033868F /* Utility.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD1F16AEC9050033868F /* Utility.cc */; };
+		867BAFEF16AEC9050033868F /* Vector2.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD2116AEC9050033868F /* Vector2.cc */; };
+		867BAFF016AEC9050033868F /* guiImageButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD2516AEC9050033868F /* guiImageButtonCtrl.cc */; };
+		867BAFF116AEC9050033868F /* guiSceneObjectCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD2816AEC9050033868F /* guiSceneObjectCtrl.cc */; };
+		867BAFF216AEC9050033868F /* guiSpriteCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD2A16AEC9050033868F /* guiSpriteCtrl.cc */; };
+		867BAFF316AEC9050033868F /* SceneWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD2D16AEC9050033868F /* SceneWindow.cc */; };
+		867BAFF416AEC9050033868F /* ContactFilter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD3116AEC9050033868F /* ContactFilter.cc */; };
+		867BAFF516AEC9050033868F /* DebugDraw.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD3316AEC9050033868F /* DebugDraw.cc */; };
+		867BAFF616AEC9050033868F /* Scene.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD3716AEC9050033868F /* Scene.cc */; };
+		867BAFF716AEC9050033868F /* SceneRenderFactories.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD3A16AEC9050033868F /* SceneRenderFactories.cpp */; };
+		867BAFF816AEC9050033868F /* SceneRenderQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD3D16AEC9050033868F /* SceneRenderQueue.cpp */; };
+		867BAFF916AEC9050033868F /* WorldQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD4116AEC9050033868F /* WorldQuery.cc */; };
+		867BAFFB16AEC9050033868F /* CompositeSprite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD4916AEC9050033868F /* CompositeSprite.cc */; };
+		867BAFFC16AEC9050033868F /* ParticlePlayer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD4C16AEC9050033868F /* ParticlePlayer.cc */; };
+		867BAFFE16AEC9050033868F /* SceneObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD5216AEC9050033868F /* SceneObject.cc */; };
+		867BB00116AEC9050033868F /* Scroller.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD5D16AEC9050033868F /* Scroller.cc */; };
+		867BB00216AEC9050033868F /* ShapeVector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD6016AEC9050033868F /* ShapeVector.cc */; };
+		867BB00316AEC9050033868F /* Sprite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD6316AEC9050033868F /* Sprite.cc */; };
+		867BB00416AEC9050033868F /* Trigger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD6616AEC9050033868F /* Trigger.cc */; };
+		867BB00516AEC9050033868F /* crc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD6A16AEC9050033868F /* crc.cc */; };
+		867BB00616AEC9050033868F /* hashFunction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD6D16AEC9050033868F /* hashFunction.cc */; };
+		867BB00716AEC9050033868F /* assetBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD7116AEC9050033868F /* assetBase.cc */; };
+		867BB00816AEC9050033868F /* assetFieldTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD7516AEC9050033868F /* assetFieldTypes.cc */; };
+		867BB00916AEC9050033868F /* assetManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD7716AEC9050033868F /* assetManager.cc */; };
+		867BB00B16AEC9050033868F /* assetQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD7D16AEC9050033868F /* assetQuery.cc */; };
+		867BB00C16AEC9050033868F /* assetSnapshot.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8016AEC9050033868F /* assetSnapshot.cc */; };
+		867BB00D16AEC9050033868F /* assetTagsManifest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8216AEC9050033868F /* assetTagsManifest.cc */; };
+		867BB00E16AEC9050033868F /* audio.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8A16AEC9050033868F /* audio.cc */; };
+		867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8C16AEC9050033868F /* AudioAsset.cc */; };
+		867BB01016AEC9050033868F /* audioBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD8E16AEC9050033868F /* audioBuffer.cc */; };
+		867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9016AEC9050033868F /* audioDataBlock.cc */; };
+		867BB01216AEC9050033868F /* audioFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9216AEC9050033868F /* audioFunctions.cc */; };
+		867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */; };
+		867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9616AEC9050033868F /* wavStreamSource.cc */; };
+		867BB01516AEC9050033868F /* bitTables.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAD9B16AEC9050033868F /* bitTables.cc */; };
+		867BB01616AEC9050033868F /* hashTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADA016AEC9050033868F /* hashTable.cc */; };
+		867BB01716AEC9050033868F /* nameTags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BADA316AEC9050033868F /* nameTags.cpp */; };
+		867BB01816AEC9050033868F /* undo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADA816AEC9050033868F /* undo.cc */; };
+		867BB01916AEC9050033868F /* vector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADAA16AEC9050033868F /* vector.cc */; };
+		867BB02016AEC9050033868F /* behaviorComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BADBF16AEC9050033868F /* behaviorComponent.cpp */; };
+		867BB02116AEC9050033868F /* behaviorInstance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BADC316AEC9050033868F /* behaviorInstance.cpp */; };
+		867BB02216AEC9050033868F /* behaviorTemplate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BADC616AEC9050033868F /* behaviorTemplate.cpp */; };
+		867BB02316AEC9050033868F /* dynamicConsoleMethodComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BADC916AEC9050033868F /* dynamicConsoleMethodComponent.cpp */; };
+		867BB02516AEC9050033868F /* simComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BADCE16AEC9050033868F /* simComponent.cpp */; };
+		867BB02616AEC9050033868F /* astAlloc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADD216AEC9050033868F /* astAlloc.cc */; };
+		867BB02716AEC9050033868F /* astNodes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADD316AEC9050033868F /* astNodes.cc */; };
+		867BB02916AEC9050033868F /* bison.simple in Resources */ = {isa = PBXBuildFile; fileRef = 867BADD616AEC9050033868F /* bison.simple */; };
+		867BB02A16AEC9050033868F /* cmdgram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADD716AEC9050033868F /* cmdgram.cc */; };
+		867BB02C16AEC9050033868F /* CMDscan.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADDA16AEC9050033868F /* CMDscan.cc */; };
+		867BB02E16AEC9050033868F /* codeBlock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADDC16AEC9050033868F /* codeBlock.cc */; };
+		867BB02F16AEC9050033868F /* compiledEval.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADDE16AEC9050033868F /* compiledEval.cc */; };
+		867BB03016AEC9050033868F /* compiler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADDF16AEC9050033868F /* compiler.cc */; };
+		867BB03116AEC9050033868F /* console.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADE116AEC9050033868F /* console.cc */; };
+		867BB03216AEC9050033868F /* consoleBaseType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADE316AEC9050033868F /* consoleBaseType.cc */; };
+		867BB03316AEC9050033868F /* consoleDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADE516AEC9050033868F /* consoleDictionary.cc */; };
+		867BB03416AEC9050033868F /* consoleDoc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADE716AEC9050033868F /* consoleDoc.cc */; };
+		867BB03516AEC9050033868F /* consoleExprEvalState.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADE916AEC9050033868F /* consoleExprEvalState.cc */; };
+		867BB03616AEC9050033868F /* consoleFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADEB16AEC9050033868F /* consoleFunctions.cc */; };
+		867BB03716AEC9050033868F /* consoleLogger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADED16AEC9050033868F /* consoleLogger.cc */; };
+		867BB03816AEC9050033868F /* consoleNamespace.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADEF16AEC9050033868F /* consoleNamespace.cc */; };
+		867BB03916AEC9050033868F /* consoleObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADF116AEC9050033868F /* consoleObject.cc */; };
+		867BB03A16AEC9050033868F /* consoleParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADF316AEC9050033868F /* consoleParser.cc */; };
+		867BB03B16AEC9050033868F /* consoleTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADF516AEC9050033868F /* consoleTypes.cc */; };
+		867BB03C16AEC9050033868F /* ConsoleTypeValidators.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADF716AEC9050033868F /* ConsoleTypeValidators.cc */; };
+		867BB03E16AEC9050033868F /* Package.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADFA16AEC9050033868F /* Package.cc */; };
+		867BB03F16AEC9050033868F /* profiler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BADFD16AEC9050033868F /* profiler.cc */; };
+		867BB04016AEC9050033868F /* RemoteDebugger1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE0016AEC9050033868F /* RemoteDebugger1.cc */; };
+		867BB04116AEC9050033868F /* RemoteDebuggerBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE0316AEC9050033868F /* RemoteDebuggerBase.cc */; };
+		867BB04216AEC9050033868F /* RemoteDebuggerBridge.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE0616AEC9050033868F /* RemoteDebuggerBridge.cc */; };
+		867BB04316AEC9050033868F /* telnetDebugger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE0916AEC9050033868F /* telnetDebugger.cc */; };
+		867BB04416AEC9050033868F /* delegateSignal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE0D16AEC9050033868F /* delegateSignal.cpp */; };
+		867BB04516AEC9050033868F /* defaultGame.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1116AEC9050033868F /* defaultGame.cc */; };
+		867BB04616AEC9050033868F /* gameConnection.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1316AEC9050033868F /* gameConnection.cc */; };
+		867BB04716AEC9050033868F /* gameInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1516AEC9050033868F /* gameInterface.cc */; };
+		867BB04816AEC9050033868F /* version.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1916AEC9050033868F /* version.cc */; };
+		867BB04916AEC9050033868F /* bitmapBmp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1C16AEC9050033868F /* bitmapBmp.cc */; };
+		867BB04A16AEC9050033868F /* bitmapJpeg.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1D16AEC9050033868F /* bitmapJpeg.cc */; };
+		867BB04B16AEC9050033868F /* bitmapPng.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1E16AEC9050033868F /* bitmapPng.cc */; };
+		867BB04C16AEC9050033868F /* bitmapPvr.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE1F16AEC9050033868F /* bitmapPvr.cc */; };
+		867BB04E16AEC9050033868F /* color.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2216AEC9050033868F /* color.cc */; };
+		867BB04F16AEC9050033868F /* dgl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2416AEC9050033868F /* dgl.cc */; };
+		867BB05016AEC9050033868F /* dglMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2616AEC9050033868F /* dglMatrix.cc */; };
+		867BB05116AEC9050033868F /* DynamicTexture.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2716AEC9050033868F /* DynamicTexture.cc */; };
+		867BB05216AEC9050033868F /* gBitmap.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2916AEC9050033868F /* gBitmap.cc */; };
+		867BB05316AEC9050033868F /* gFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2B16AEC9050033868F /* gFont.cc */; };
+		867BB05416AEC9050033868F /* gPalette.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2D16AEC9050033868F /* gPalette.cc */; };
+		867BB05516AEC9050033868F /* PNGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE2F16AEC9050033868F /* PNGImage.cpp */; };
+		867BB05616AEC9050033868F /* splineUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3116AEC9050033868F /* splineUtil.cc */; };
+		867BB05716AEC9050033868F /* TextureDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3316AEC9050033868F /* TextureDictionary.cc */; };
+		867BB05816AEC9050033868F /* TextureHandle.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3516AEC9050033868F /* TextureHandle.cc */; };
+		867BB05916AEC9050033868F /* TextureManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3716AEC9050033868F /* TextureManager.cc */; };
+		867BB05A16AEC9050033868F /* guiBitmapButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3C16AEC9050033868F /* guiBitmapButtonCtrl.cc */; };
+		867BB05B16AEC9050033868F /* guiBorderButton.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3E16AEC9050033868F /* guiBorderButton.cc */; };
+		867BB05C16AEC9050033868F /* guiButtonBaseCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE3F16AEC9050033868F /* guiButtonBaseCtrl.cc */; };
+		867BB05D16AEC9050033868F /* guiButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4116AEC9050033868F /* guiButtonCtrl.cc */; };
+		867BB05E16AEC9050033868F /* guiCheckBoxCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4316AEC9050033868F /* guiCheckBoxCtrl.cc */; };
+		867BB05F16AEC9050033868F /* guiIconButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4516AEC9050033868F /* guiIconButtonCtrl.cc */; };
+		867BB06016AEC9050033868F /* guiRadioCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4716AEC9050033868F /* guiRadioCtrl.cc */; };
+		867BB06116AEC9050033868F /* guiToolboxButtonCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4916AEC9050033868F /* guiToolboxButtonCtrl.cc */; };
+		867BB06216AEC9050033868F /* guiAutoScrollCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4C16AEC9050033868F /* guiAutoScrollCtrl.cc */; };
+		867BB06316AEC9050033868F /* guiCtrlArrayCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE4E16AEC9050033868F /* guiCtrlArrayCtrl.cc */; };
+		867BB06416AEC9050033868F /* guiDragAndDropCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5016AEC9050033868F /* guiDragAndDropCtrl.cc */; };
+		867BB06516AEC9050033868F /* guiDynamicCtrlArrayCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5216AEC9050033868F /* guiDynamicCtrlArrayCtrl.cc */; };
+		867BB06616AEC9050033868F /* guiFormCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5416AEC9050033868F /* guiFormCtrl.cc */; };
+		867BB06716AEC9050033868F /* guiFrameCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5616AEC9050033868F /* guiFrameCtrl.cc */; };
+		867BB06816AEC9050033868F /* guiPaneCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5816AEC9050033868F /* guiPaneCtrl.cc */; };
+		867BB06916AEC9050033868F /* guiRolloutCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5A16AEC9050033868F /* guiRolloutCtrl.cc */; };
+		867BB06A16AEC9050033868F /* guiScrollCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5C16AEC9050033868F /* guiScrollCtrl.cc */; };
+		867BB06B16AEC9050033868F /* guiStackCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE5E16AEC9050033868F /* guiStackCtrl.cc */; };
+		867BB06C16AEC9050033868F /* guiTabBookCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6016AEC9050033868F /* guiTabBookCtrl.cc */; };
+		867BB06D16AEC9050033868F /* guiWindowCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6216AEC9050033868F /* guiWindowCtrl.cc */; };
+		867BB06E16AEC9050033868F /* guiControlListPopup.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6516AEC9050033868F /* guiControlListPopup.cc */; };
+		867BB06F16AEC9050033868F /* guiDebugger.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6616AEC9050033868F /* guiDebugger.cc */; };
+		867BB07016AEC9050033868F /* guiEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6816AEC9050033868F /* guiEditCtrl.cc */; };
+		867BB07116AEC9050033868F /* guiFilterCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6A16AEC9050033868F /* guiFilterCtrl.cc */; };
+		867BB07316AEC9050033868F /* guiImageList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE6E16AEC9050033868F /* guiImageList.cc */; };
+		867BB07416AEC9050033868F /* guiInspector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7016AEC9050033868F /* guiInspector.cc */; };
+		867BB07516AEC9050033868F /* guiInspectorTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7216AEC9050033868F /* guiInspectorTypes.cc */; };
+		867BB07616AEC9050033868F /* guiMenuBar.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7416AEC9050033868F /* guiMenuBar.cc */; };
+		867BB07716AEC9050033868F /* guiSeparatorCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7616AEC9050033868F /* guiSeparatorCtrl.cc */; };
+		867BB07816AEC9050033868F /* guiArrayCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7816AEC9050033868F /* guiArrayCtrl.cc */; };
+		867BB07916AEC9050033868F /* guiBackgroundCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7A16AEC9050033868F /* guiBackgroundCtrl.cc */; };
+		867BB07A16AEC9050033868F /* guiBitmapBorderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7C16AEC9050033868F /* guiBitmapBorderCtrl.cc */; };
+		867BB07B16AEC9050033868F /* guiBitmapCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7D16AEC9050033868F /* guiBitmapCtrl.cc */; };
+		867BB07C16AEC9050033868F /* guiBubbleTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE7F16AEC9050033868F /* guiBubbleTextCtrl.cc */; };
+		867BB07D16AEC9050033868F /* guiCanvas.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8116AEC9050033868F /* guiCanvas.cc */; };
+		867BB07F16AEC9050033868F /* guiConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8516AEC9050033868F /* guiConsole.cc */; };
+		867BB08016AEC9050033868F /* guiConsoleEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8716AEC9050033868F /* guiConsoleEditCtrl.cc */; };
+		867BB08116AEC9050033868F /* guiConsoleTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8916AEC9050033868F /* guiConsoleTextCtrl.cc */; };
+		867BB08216AEC9050033868F /* guiControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8B16AEC9050033868F /* guiControl.cc */; };
+		867BB08316AEC9050033868F /* guiDefaultControlRender.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8D16AEC9050033868F /* guiDefaultControlRender.cc */; };
+		867BB08416AEC9050033868F /* guiFadeinBitmapCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE8F16AEC9050033868F /* guiFadeinBitmapCtrl.cc */; };
+		867BB08516AEC9050033868F /* guiInputCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9016AEC9050033868F /* guiInputCtrl.cc */; };
+		867BB08616AEC9050033868F /* guiListBoxCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9216AEC9050033868F /* guiListBoxCtrl.cc */; };
+		867BB08716AEC9050033868F /* guiMessageVectorCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9416AEC9050033868F /* guiMessageVectorCtrl.cc */; };
+		867BB08816AEC9050033868F /* guiMLTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9616AEC9050033868F /* guiMLTextCtrl.cc */; };
+		867BB08916AEC9050033868F /* guiMLTextEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9816AEC9050033868F /* guiMLTextEditCtrl.cc */; };
+		867BB08A16AEC9050033868F /* guiMouseEventCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9A16AEC9050033868F /* guiMouseEventCtrl.cc */; };
+		867BB08B16AEC9050033868F /* guiPopUpCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9C16AEC9050033868F /* guiPopUpCtrl.cc */; };
+		867BB08C16AEC9050033868F /* guiPopUpCtrlEx.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAE9E16AEC9050033868F /* guiPopUpCtrlEx.cc */; };
+		867BB08D16AEC9050033868F /* guiProgressCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEA016AEC9050033868F /* guiProgressCtrl.cc */; };
+		867BB08E16AEC9050033868F /* guiScriptNotifyControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEA216AEC9050033868F /* guiScriptNotifyControl.cc */; };
+		867BB09016AEC9050033868F /* guiTabPageCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEA616AEC9050033868F /* guiTabPageCtrl.cc */; };
+		867BB09116AEC9050033868F /* guiTextCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEA816AEC9050033868F /* guiTextCtrl.cc */; };
+		867BB09216AEC9050033868F /* guiTextEditCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEAA16AEC9050033868F /* guiTextEditCtrl.cc */; };
+		867BB09316AEC9050033868F /* guiTextEditSliderCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEAC16AEC9050033868F /* guiTextEditSliderCtrl.cc */; };
+		867BB09416AEC9050033868F /* guiTextListCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEAE16AEC9050033868F /* guiTextListCtrl.cc */; };
+		867BB09516AEC9050033868F /* guiTickCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEB016AEC9050033868F /* guiTickCtrl.cc */; };
+		867BB09616AEC9050033868F /* guiTreeViewCtrl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEB216AEC9050033868F /* guiTreeViewCtrl.cc */; };
+		867BB09716AEC9050033868F /* guiTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEB416AEC9050033868F /* guiTypes.cc */; };
+		867BB09816AEC9050033868F /* lang.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEB716AEC9050033868F /* lang.cc */; };
+		867BB09916AEC9050033868F /* messageVector.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEB916AEC9050033868F /* messageVector.cc */; };
+		867BB09A16AEC9050033868F /* actionMap.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEBC16AEC9050033868F /* actionMap.cc */; };
+		867BB09B16AEC9050033868F /* bitStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEBF16AEC9050033868F /* bitStream.cc */; };
+		867BB09C16AEC9050033868F /* bufferStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC116AEC9050033868F /* bufferStream.cc */; };
+		867BB09D16AEC9050033868F /* fileObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC316AEC9050033868F /* fileObject.cc */; };
+		867BB09E16AEC9050033868F /* fileStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC516AEC9050033868F /* fileStream.cc */; };
+		867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC716AEC9050033868F /* fileStreamObject.cc */; };
+		867BB0A016AEC9050033868F /* fileSystemFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */; };
+		867BB0A116AEC9050033868F /* filterStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECA16AEC9050033868F /* filterStream.cc */; };
+		867BB0A216AEC9050033868F /* memStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECC16AEC9050033868F /* memStream.cc */; };
+		867BB0A316AEC9050033868F /* nStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECE16AEC9050033868F /* nStream.cc */; };
+		867BB0A416AEC9050033868F /* resizeStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAECF16AEC9050033868F /* resizeStream.cc */; };
+		867BB0A516AEC9050033868F /* resourceDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAED216AEC9050033868F /* resourceDictionary.cc */; };
+		867BB0A616AEC9050033868F /* resourceManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAED316AEC9050033868F /* resourceManager.cc */; };
+		867BB0A716AEC9050033868F /* streamObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAED616AEC9050033868F /* streamObject.cc */; };
+		867BB0A816AEC9050033868F /* centralDir.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAED916AEC9050033868F /* centralDir.cc */; };
+		867BB0A916AEC9050033868F /* compressor.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEDB16AEC9050033868F /* compressor.cc */; };
+		867BB0AA16AEC9050033868F /* deflate.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEDD16AEC9050033868F /* deflate.cc */; };
+		867BB0AB16AEC9050033868F /* extraField.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEDE16AEC9050033868F /* extraField.cc */; };
+		867BB0AC16AEC9050033868F /* fileHeader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEE016AEC9050033868F /* fileHeader.cc */; };
+		867BB0AD16AEC9050033868F /* stored.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEE216AEC9050033868F /* stored.cc */; };
+		867BB0B116AEC9050033868F /* zipArchive.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEE816AEC9050033868F /* zipArchive.cc */; };
+		867BB0B216AEC9050033868F /* zipCryptStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEEA16AEC9050033868F /* zipCryptStream.cc */; };
+		867BB0B316AEC9050033868F /* zipObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEEC16AEC9050033868F /* zipObject.cc */; };
+		867BB0B416AEC9050033868F /* zipSubStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEEF16AEC9050033868F /* zipSubStream.cc */; };
+		867BB0B516AEC9050033868F /* zipTempStream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF116AEC9050033868F /* zipTempStream.cc */; };
+		867BB0B616AEC9050033868F /* mathTypes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF516AEC9050033868F /* mathTypes.cc */; };
+		867BB0B716AEC9050033868F /* mathUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF716AEC9050033868F /* mathUtils.cc */; };
+		867BB0B816AEC9050033868F /* mBox.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEF916AEC9050033868F /* mBox.cc */; };
+		867BB0B916AEC9050033868F /* mConsoleFunctions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */; };
+		867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAEFF16AEC9050033868F /* mMath_C.cc */; };
+		867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0016AEC9050033868F /* mMathAltivec.cc */; };
+		867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0116AEC9050033868F /* mMathAMD.cc */; };
+		867BB0BF16AEC9050033868F /* mMathFn.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0316AEC9050033868F /* mMathFn.cc */; };
+		867BB0C016AEC9050033868F /* mMathSSE.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0516AEC9050033868F /* mMathSSE.cc */; };
+		867BB0C216AEC9050033868F /* mMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0716AEC9050033868F /* mMatrix.cc */; };
+		867BB0C316AEC9050033868F /* mPlaneTransformer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0A16AEC9050033868F /* mPlaneTransformer.cc */; };
+		867BB0C416AEC9050033868F /* mQuadPatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0D16AEC9050033868F /* mQuadPatch.cc */; };
+		867BB0C516AEC9050033868F /* mQuat.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF0F16AEC9050033868F /* mQuat.cc */; };
+		867BB0C616AEC9050033868F /* mRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1116AEC9050033868F /* mRandom.cc */; };
+		867BB0C716AEC9050033868F /* mSolver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1416AEC9050033868F /* mSolver.cc */; };
+		867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1616AEC9050033868F /* mSplinePatch.cc */; };
+		867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1816AEC9050033868F /* rectClipper.cpp */; };
+		867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1B16AEC9050033868F /* dataChunker.cc */; };
+		867BB0CB16AEC9050033868F /* frameAllocator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF1E16AEC9050033868F /* frameAllocator.cc */; };
+		867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2216AEC9050033868F /* dispatcher.cc */; };
+		867BB0CD16AEC9050033868F /* eventManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2416AEC9050033868F /* eventManager.cc */; };
+		867BB0CE16AEC9050033868F /* message.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2616AEC9050033868F /* message.cc */; };
+		867BB0CF16AEC9050033868F /* messageForwarder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2816AEC9050033868F /* messageForwarder.cc */; };
+		867BB0D016AEC9050033868F /* scriptMsgListener.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2A16AEC9050033868F /* scriptMsgListener.cc */; };
+		867BB0D116AEC9050033868F /* moduleDefinition.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF2E16AEC9050033868F /* moduleDefinition.cc */; };
+		867BB0D216AEC9050033868F /* moduleManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF3116AEC9050033868F /* moduleManager.cc */; };
+		867BB0D316AEC9050033868F /* moduleMergeDefinition.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF3416AEC9050033868F /* moduleMergeDefinition.cc */; };
+		867BB0D416AEC9050033868F /* connectionProtocol.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF3816AEC9050033868F /* connectionProtocol.cc */; };
+		867BB0D516AEC9050033868F /* connectionStringTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF3A16AEC9050033868F /* connectionStringTable.cc */; };
+		867BB0D616AEC9050033868F /* httpObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF3C16AEC9050033868F /* httpObject.cc */; };
+		867BB0D716AEC9050033868F /* netConnection.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF3E16AEC9050033868F /* netConnection.cc */; };
+		867BB0D816AEC9050033868F /* netDownload.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4016AEC9050033868F /* netDownload.cc */; };
+		867BB0D916AEC9050033868F /* netEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4116AEC9050033868F /* netEvent.cc */; };
+		867BB0DA16AEC9050033868F /* netGhost.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4216AEC9050033868F /* netGhost.cc */; };
+		867BB0DB16AEC9050033868F /* netInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4316AEC9050033868F /* netInterface.cc */; };
+		867BB0DC16AEC9050033868F /* netObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4516AEC9050033868F /* netObject.cc */; };
+		867BB0DD16AEC9050033868F /* netStringTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4716AEC9050033868F /* netStringTable.cc */; };
+		867BB0DE16AEC9050033868F /* netTest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4916AEC9050033868F /* netTest.cc */; };
+		867BB0DF16AEC9050033868F /* networkProcessList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4A16AEC9050033868F /* networkProcessList.cc */; };
+		867BB0E016AEC9050033868F /* RemoteCommandEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4C16AEC9050033868F /* RemoteCommandEvent.cc */; };
+		867BB0E116AEC9050033868F /* serverQuery.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4D16AEC9050033868F /* serverQuery.cc */; };
+		867BB0E216AEC9050033868F /* tcpObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF4F16AEC9050033868F /* tcpObject.cc */; };
+		867BB0E316AEC9050033868F /* telnetConsole.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5116AEC9050033868F /* telnetConsole.cc */; };
+		867BB0E416AEC9050033868F /* SimXMLDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5416AEC9050033868F /* SimXMLDocument.cpp */; };
+		867BB0E516AEC9050033868F /* taml.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5716AEC9050033868F /* taml.cc */; };
+		867BB0E616AEC9050033868F /* tamlBinaryReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5A16AEC9050033868F /* tamlBinaryReader.cc */; };
+		867BB0E716AEC9050033868F /* tamlBinaryWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF5C16AEC9050033868F /* tamlBinaryWriter.cc */; };
+		867BB0E916AEC9050033868F /* tamlWriteNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6216AEC9050033868F /* tamlWriteNode.cc */; };
+		867BB0EA16AEC9050033868F /* tamlXmlParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6416AEC9050033868F /* tamlXmlParser.cc */; };
+		867BB0EB16AEC9050033868F /* tamlXmlReader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6616AEC9050033868F /* tamlXmlReader.cc */; };
+		867BB0EC16AEC9050033868F /* tamlXmlWriter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6916AEC9050033868F /* tamlXmlWriter.cc */; };
+		867BB0ED16AEC9050033868F /* tinystr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6C16AEC9050033868F /* tinystr.cpp */; };
+		867BB0EE16AEC9050033868F /* tinyxml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF6E16AEC9050033868F /* tinyxml.cpp */; };
+		867BB0EF16AEC9050033868F /* tinyxmlerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7016AEC9050033868F /* tinyxmlerror.cpp */; };
+		867BB0F016AEC9050033868F /* tinyxmlparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7116AEC9050033868F /* tinyxmlparser.cpp */; };
+		867BB0F116AEC9050033868F /* CursorManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7316AEC9050033868F /* CursorManager.cc */; };
+		867BB0F216AEC9050033868F /* popupMenu.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7A16AEC9050033868F /* popupMenu.cc */; };
+		867BB0F316AEC9050033868F /* fileDialog.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF7D16AEC9050033868F /* fileDialog.cc */; };
+		867BB0F416AEC9050033868F /* msgBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8016AEC9050033868F /* msgBox.cpp */; };
+		867BB0F516AEC9050033868F /* platform.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8216AEC9050033868F /* platform.cc */; };
+		867BB0F616AEC9050033868F /* platformAssert.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8616AEC9050033868F /* platformAssert.cc */; };
+		867BB0F716AEC9050033868F /* platformCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8916AEC9050033868F /* platformCPU.cc */; };
+		867BB0F916AEC9050033868F /* platformFileIO.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8D16AEC9050033868F /* platformFileIO.cc */; };
+		867BB0FA16AEC9050033868F /* platformFont.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF8F16AEC9050033868F /* platformFont.cc */; };
+		867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9516AEC9050033868F /* platformMemory.cc */; };
+		867BB0FC16AEC9050033868F /* platformNetAsync.unix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */; };
+		867BB0FD16AEC9050033868F /* platformNetwork.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9916AEC9050033868F /* platformNetwork.cc */; };
+		867BB0FE16AEC9050033868F /* platformString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAF9C16AEC9050033868F /* platformString.cc */; };
+		867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA116AEC9050033868F /* platformVideo.cc */; };
+		867BB10016AEC9050033868F /* Tickable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFA716AEC9050033868F /* Tickable.cc */; };
+		867BB10116AEC9050033868F /* scriptGroup.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFB616AEC9050033868F /* scriptGroup.cc */; };
+		867BB10216AEC9050033868F /* scriptObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFB816AEC9050033868F /* scriptObject.cc */; };
+		867BB10316AEC9050033868F /* simBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFBA16AEC9050033868F /* simBase.cc */; };
+		867BB10416AEC9050033868F /* simConsoleEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFBC16AEC9050033868F /* simConsoleEvent.cc */; };
+		867BB10516AEC9050033868F /* simConsoleThreadExecEvent.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFBE16AEC9050033868F /* simConsoleThreadExecEvent.cc */; };
+		867BB10616AEC9050033868F /* simDatablock.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFC016AEC9050033868F /* simDatablock.cc */; };
+		867BB10716AEC9050033868F /* simDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFC316AEC9050033868F /* simDictionary.cc */; };
+		867BB10816AEC9050033868F /* simFieldDictionary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFC616AEC9050033868F /* simFieldDictionary.cc */; };
+		867BB10916AEC9050033868F /* simManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFC816AEC9050033868F /* simManager.cc */; };
+		867BB10A16AEC9050033868F /* simObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFC916AEC9050033868F /* simObject.cc */; };
+		867BB10B16AEC9050033868F /* SimObjectList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFCB16AEC9050033868F /* SimObjectList.cc */; };
+		867BB10C16AEC9050033868F /* simSerialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFCE16AEC9050033868F /* simSerialize.cpp */; };
+		867BB10D16AEC9050033868F /* simSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFCF16AEC9050033868F /* simSet.cc */; };
+		867BB10E16AEC9050033868F /* findMatch.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFD216AEC9050033868F /* findMatch.cc */; };
+		867BB10F16AEC9050033868F /* stringBuffer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFD416AEC9050033868F /* stringBuffer.cc */; };
+		867BB11016AEC9050033868F /* stringStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFD616AEC9050033868F /* stringStack.cc */; };
+		867BB11116AEC9050033868F /* stringTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFD816AEC9050033868F /* stringTable.cc */; };
+		867BB11216AEC9050033868F /* stringUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFDA16AEC9050033868F /* stringUnit.cpp */; };
+		867BB11316AEC9050033868F /* unicode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 867BAFDC16AEC9050033868F /* unicode.cc */; };
+		867BB1AF16AEC9FC0033868F /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB11F16AEC9FC0033868F /* b2BroadPhase.cpp */; };
+		867BB1B016AEC9FC0033868F /* b2CollideCircle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12116AEC9FC0033868F /* b2CollideCircle.cpp */; };
+		867BB1B116AEC9FC0033868F /* b2CollideEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12216AEC9FC0033868F /* b2CollideEdge.cpp */; };
+		867BB1B216AEC9FC0033868F /* b2CollidePolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12316AEC9FC0033868F /* b2CollidePolygon.cpp */; };
+		867BB1B316AEC9FC0033868F /* b2Collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12416AEC9FC0033868F /* b2Collision.cpp */; };
+		867BB1B416AEC9FC0033868F /* b2Distance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12616AEC9FC0033868F /* b2Distance.cpp */; };
+		867BB1B516AEC9FC0033868F /* b2DynamicTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12816AEC9FC0033868F /* b2DynamicTree.cpp */; };
+		867BB1B616AEC9FC0033868F /* b2TimeOfImpact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12A16AEC9FC0033868F /* b2TimeOfImpact.cpp */; };
+		867BB1B716AEC9FC0033868F /* b2ChainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12D16AEC9FC0033868F /* b2ChainShape.cpp */; };
+		867BB1B816AEC9FC0033868F /* b2CircleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB12F16AEC9FC0033868F /* b2CircleShape.cpp */; };
+		867BB1B916AEC9FC0033868F /* b2EdgeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB13116AEC9FC0033868F /* b2EdgeShape.cpp */; };
+		867BB1BA16AEC9FC0033868F /* b2PolygonShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB13316AEC9FC0033868F /* b2PolygonShape.cpp */; };
+		867BB1BB16AEC9FC0033868F /* b2BlockAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB13716AEC9FC0033868F /* b2BlockAllocator.cpp */; };
+		867BB1BC16AEC9FC0033868F /* b2Draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB13916AEC9FC0033868F /* b2Draw.cpp */; };
+		867BB1BD16AEC9FC0033868F /* b2Math.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB13C16AEC9FC0033868F /* b2Math.cpp */; };
+		867BB1BE16AEC9FC0033868F /* b2Settings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB13E16AEC9FC0033868F /* b2Settings.cpp */; };
+		867BB1BF16AEC9FC0033868F /* b2StackAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14016AEC9FC0033868F /* b2StackAllocator.cpp */; };
+		867BB1C016AEC9FC0033868F /* b2Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14216AEC9FC0033868F /* b2Timer.cpp */; };
+		867BB1C116AEC9FC0033868F /* b2Body.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14516AEC9FC0033868F /* b2Body.cpp */; };
+		867BB1C216AEC9FC0033868F /* b2ContactManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14716AEC9FC0033868F /* b2ContactManager.cpp */; };
+		867BB1C316AEC9FC0033868F /* b2Fixture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14916AEC9FC0033868F /* b2Fixture.cpp */; };
+		867BB1C416AEC9FC0033868F /* b2Island.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14B16AEC9FC0033868F /* b2Island.cpp */; };
+		867BB1C516AEC9FC0033868F /* b2World.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB14E16AEC9FC0033868F /* b2World.cpp */; };
+		867BB1C616AEC9FC0033868F /* b2WorldCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15016AEC9FC0033868F /* b2WorldCallbacks.cpp */; };
+		867BB1C716AEC9FC0033868F /* b2ChainAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15316AEC9FC0033868F /* b2ChainAndCircleContact.cpp */; };
+		867BB1C816AEC9FC0033868F /* b2ChainAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15516AEC9FC0033868F /* b2ChainAndPolygonContact.cpp */; };
+		867BB1C916AEC9FC0033868F /* b2CircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15716AEC9FC0033868F /* b2CircleContact.cpp */; };
+		867BB1CA16AEC9FC0033868F /* b2Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15916AEC9FC0033868F /* b2Contact.cpp */; };
+		867BB1CB16AEC9FC0033868F /* b2ContactSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15B16AEC9FC0033868F /* b2ContactSolver.cpp */; };
+		867BB1CC16AEC9FC0033868F /* b2EdgeAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15D16AEC9FC0033868F /* b2EdgeAndCircleContact.cpp */; };
+		867BB1CD16AEC9FC0033868F /* b2EdgeAndPolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB15F16AEC9FC0033868F /* b2EdgeAndPolygonContact.cpp */; };
+		867BB1CE16AEC9FC0033868F /* b2PolygonAndCircleContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16116AEC9FC0033868F /* b2PolygonAndCircleContact.cpp */; };
+		867BB1CF16AEC9FC0033868F /* b2PolygonContact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16316AEC9FC0033868F /* b2PolygonContact.cpp */; };
+		867BB1D016AEC9FC0033868F /* b2DistanceJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16616AEC9FC0033868F /* b2DistanceJoint.cpp */; };
+		867BB1D116AEC9FC0033868F /* b2FrictionJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16816AEC9FC0033868F /* b2FrictionJoint.cpp */; };
+		867BB1D216AEC9FC0033868F /* b2GearJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16A16AEC9FC0033868F /* b2GearJoint.cpp */; };
+		867BB1D316AEC9FC0033868F /* b2Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16C16AEC9FC0033868F /* b2Joint.cpp */; };
+		867BB1D416AEC9FC0033868F /* b2MotorJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB16E16AEC9FC0033868F /* b2MotorJoint.cpp */; };
+		867BB1D516AEC9FC0033868F /* b2MouseJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17016AEC9FC0033868F /* b2MouseJoint.cpp */; };
+		867BB1D616AEC9FC0033868F /* b2PrismaticJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17216AEC9FC0033868F /* b2PrismaticJoint.cpp */; };
+		867BB1D716AEC9FC0033868F /* b2PulleyJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17416AEC9FC0033868F /* b2PulleyJoint.cpp */; };
+		867BB1D816AEC9FC0033868F /* b2RevoluteJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17616AEC9FC0033868F /* b2RevoluteJoint.cpp */; };
+		867BB1D916AEC9FC0033868F /* b2RopeJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17816AEC9FC0033868F /* b2RopeJoint.cpp */; };
+		867BB1DA16AEC9FC0033868F /* b2WeldJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17A16AEC9FC0033868F /* b2WeldJoint.cpp */; };
+		867BB1DB16AEC9FC0033868F /* b2WheelJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB17C16AEC9FC0033868F /* b2WheelJoint.cpp */; };
+		867BB20816AEC9FC0033868F /* b2Rope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 867BB1AD16AEC9FC0033868F /* b2Rope.cpp */; };
+		867BB21816AECA070033868F /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20916AECA070033868F /* png.c */; };
+		867BB21916AECA070033868F /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20A16AECA070033868F /* pngerror.c */; };
+		867BB21A16AECA070033868F /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20B16AECA070033868F /* pngget.c */; };
+		867BB21B16AECA070033868F /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20C16AECA070033868F /* pngmem.c */; };
+		867BB21C16AECA070033868F /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20D16AECA070033868F /* pngpread.c */; };
+		867BB21D16AECA070033868F /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20E16AECA070033868F /* pngread.c */; };
+		867BB21E16AECA070033868F /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB20F16AECA070033868F /* pngrio.c */; };
+		867BB21F16AECA070033868F /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21016AECA070033868F /* pngrtran.c */; };
+		867BB22016AECA070033868F /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21116AECA070033868F /* pngrutil.c */; };
+		867BB22116AECA070033868F /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21216AECA070033868F /* pngset.c */; };
+		867BB22216AECA070033868F /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21316AECA070033868F /* pngtrans.c */; };
+		867BB22316AECA070033868F /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21416AECA070033868F /* pngwio.c */; };
+		867BB22416AECA070033868F /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21516AECA070033868F /* pngwrite.c */; };
+		867BB22516AECA070033868F /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21616AECA070033868F /* pngwtran.c */; };
+		867BB22616AECA070033868F /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB21716AECA070033868F /* pngwutil.c */; };
+		867BB25516AECA110033868F /* jcapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22716AECA110033868F /* jcapimin.c */; };
+		867BB25616AECA110033868F /* jcapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22816AECA110033868F /* jcapistd.c */; };
+		867BB25716AECA110033868F /* jccoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22916AECA110033868F /* jccoefct.c */; };
+		867BB25816AECA110033868F /* jccolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22A16AECA110033868F /* jccolor.c */; };
+		867BB25916AECA110033868F /* jcdctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22B16AECA110033868F /* jcdctmgr.c */; };
+		867BB25A16AECA110033868F /* jchuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22C16AECA110033868F /* jchuff.c */; };
+		867BB25B16AECA110033868F /* jcinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22D16AECA110033868F /* jcinit.c */; };
+		867BB25C16AECA110033868F /* jcmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22E16AECA110033868F /* jcmainct.c */; };
+		867BB25D16AECA110033868F /* jcmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB22F16AECA110033868F /* jcmarker.c */; };
+		867BB25E16AECA110033868F /* jcmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23016AECA110033868F /* jcmaster.c */; };
+		867BB25F16AECA110033868F /* jcomapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23116AECA110033868F /* jcomapi.c */; };
+		867BB26016AECA110033868F /* jcparam.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23216AECA110033868F /* jcparam.c */; };
+		867BB26116AECA110033868F /* jcphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23316AECA110033868F /* jcphuff.c */; };
+		867BB26216AECA110033868F /* jcprepct.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23416AECA110033868F /* jcprepct.c */; };
+		867BB26316AECA110033868F /* jcsample.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23516AECA110033868F /* jcsample.c */; };
+		867BB26416AECA110033868F /* jctrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23616AECA110033868F /* jctrans.c */; };
+		867BB26516AECA110033868F /* jdapimin.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23716AECA110033868F /* jdapimin.c */; };
+		867BB26616AECA110033868F /* jdapistd.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23816AECA110033868F /* jdapistd.c */; };
+		867BB26716AECA110033868F /* jdatadst.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23916AECA110033868F /* jdatadst.c */; };
+		867BB26816AECA110033868F /* jdatasrc.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23A16AECA110033868F /* jdatasrc.c */; };
+		867BB26916AECA110033868F /* jdcoefct.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23B16AECA110033868F /* jdcoefct.c */; };
+		867BB26A16AECA110033868F /* jdcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23C16AECA110033868F /* jdcolor.c */; };
+		867BB26B16AECA110033868F /* jddctmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23D16AECA110033868F /* jddctmgr.c */; };
+		867BB26C16AECA110033868F /* jdhuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23E16AECA110033868F /* jdhuff.c */; };
+		867BB26D16AECA110033868F /* jdinput.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB23F16AECA110033868F /* jdinput.c */; };
+		867BB26E16AECA110033868F /* jdmainct.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24016AECA110033868F /* jdmainct.c */; };
+		867BB26F16AECA110033868F /* jdmarker.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24116AECA110033868F /* jdmarker.c */; };
+		867BB27016AECA110033868F /* jdmaster.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24216AECA110033868F /* jdmaster.c */; };
+		867BB27116AECA110033868F /* jdmerge.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24316AECA110033868F /* jdmerge.c */; };
+		867BB27216AECA110033868F /* jdphuff.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24416AECA110033868F /* jdphuff.c */; };
+		867BB27316AECA110033868F /* jdpostct.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24516AECA110033868F /* jdpostct.c */; };
+		867BB27416AECA110033868F /* jdsample.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24616AECA110033868F /* jdsample.c */; };
+		867BB27516AECA110033868F /* jdtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24716AECA110033868F /* jdtrans.c */; };
+		867BB27616AECA110033868F /* jerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24816AECA110033868F /* jerror.c */; };
+		867BB27716AECA110033868F /* jfdctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24916AECA110033868F /* jfdctflt.c */; };
+		867BB27816AECA110033868F /* jfdctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24A16AECA110033868F /* jfdctfst.c */; };
+		867BB27916AECA110033868F /* jfdctint.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24B16AECA110033868F /* jfdctint.c */; };
+		867BB27A16AECA110033868F /* jidctflt.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24C16AECA110033868F /* jidctflt.c */; };
+		867BB27B16AECA110033868F /* jidctfst.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24D16AECA110033868F /* jidctfst.c */; };
+		867BB27C16AECA110033868F /* jidctint.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24E16AECA110033868F /* jidctint.c */; };
+		867BB27D16AECA110033868F /* jidctred.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB24F16AECA110033868F /* jidctred.c */; };
+		867BB27E16AECA110033868F /* jmemansi.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB25016AECA110033868F /* jmemansi.c */; };
+		867BB27F16AECA110033868F /* jmemmgr.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB25116AECA110033868F /* jmemmgr.c */; };
+		867BB28016AECA110033868F /* jquant1.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB25216AECA110033868F /* jquant1.c */; };
+		867BB28116AECA110033868F /* jquant2.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB25316AECA110033868F /* jquant2.c */; };
+		867BB28216AECA110033868F /* jutils.c in Sources */ = {isa = PBXBuildFile; fileRef = 867BB25416AECA110033868F /* jutils.c */; };
+		867BB44416AED2850033868F /* iOSGL2ES.mm in Sources */ = {isa = PBXBuildFile; fileRef = 867BB44316AED2840033868F /* iOSGL2ES.mm */; };
+		86A9A3B516AEC786003F01E6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3B416AEC786003F01E6 /* UIKit.framework */; };
+		86A9A3B716AEC786003F01E6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3B616AEC786003F01E6 /* Foundation.framework */; };
+		86A9A3B916AEC786003F01E6 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3B816AEC786003F01E6 /* CoreGraphics.framework */; };
+		86A9A3BF16AEC786003F01E6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 86A9A3BD16AEC786003F01E6 /* InfoPlist.strings */; };
+		86A9A3C716AEC786003F01E6 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 86A9A3C616AEC786003F01E6 /* Default.png */; };
+		86A9A3C916AEC786003F01E6 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 86A9A3C816AEC786003F01E6 /* [email protected] */; };
+		86A9A3CB16AEC786003F01E6 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 86A9A3CA16AEC786003F01E6 /* [email protected] */; };
+		86A9A3F416AEC836003F01E6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3DA16AEC817003F01E6 /* AudioToolbox.framework */; };
+		86A9A3F516AEC836003F01E6 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3DB16AEC817003F01E6 /* AVFoundation.framework */; };
+		86A9A3F616AEC836003F01E6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3DC16AEC817003F01E6 /* CoreAudio.framework */; };
+		86A9A3F716AEC836003F01E6 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3DD16AEC817003F01E6 /* CoreFoundation.framework */; };
+		86A9A3F816AEC836003F01E6 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3DE16AEC817003F01E6 /* CoreImage.framework */; };
+		86A9A3F916AEC836003F01E6 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3DF16AEC817003F01E6 /* CoreMedia.framework */; };
+		86A9A3FA16AEC836003F01E6 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E016AEC817003F01E6 /* CoreMotion.framework */; };
+		86A9A3FB16AEC836003F01E6 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E116AEC817003F01E6 /* CoreVideo.framework */; };
+		86A9A3FC16AEC836003F01E6 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E216AEC817003F01E6 /* libz.dylib */; };
+		86A9A3FD16AEC836003F01E6 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E316AEC817003F01E6 /* MediaPlayer.framework */; };
+		86A9A3FE16AEC836003F01E6 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E416AEC817003F01E6 /* OpenAL.framework */; };
+		86A9A3FF16AEC836003F01E6 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E516AEC817003F01E6 /* OpenGLES.framework */; };
+		86A9A40016AEC836003F01E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A9A3E616AEC817003F01E6 /* QuartzCore.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		2AB97A1F16B66BE50080F940 /* tamlCustom.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlCustom.cc; sourceTree = "<group>"; };
+		2AB97A2016B66BE50080F940 /* tamlCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCustom.h; sourceTree = "<group>"; };
+		2AC4404B16B0144500FC4091 /* ImageFont_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont_ScriptBinding.h; sourceTree = "<group>"; };
+		2AC4404C16B0144500FC4091 /* ImageFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageFont.cc; sourceTree = "<group>"; };
+		2AC4404D16B0144500FC4091 /* ImageFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageFont.h; sourceTree = "<group>"; };
+		2AED7D9216B70102003482CF /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+		2AF1C54716B439D900C1CF3A /* declaredAssets.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = declaredAssets.cc; sourceTree = "<group>"; };
+		2AF1C54816B439D900C1CF3A /* declaredAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = declaredAssets.h; sourceTree = "<group>"; };
+		2AF1C54916B439D900C1CF3A /* referencedAssets.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = referencedAssets.cc; sourceTree = "<group>"; };
+		2AF1C54A16B439D900C1CF3A /* referencedAssets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = referencedAssets.h; sourceTree = "<group>"; };
+		332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSliderCtrl.cc; sourceTree = "<group>"; };
+		33230911303CCA4C673E1A22 /* guiSliderCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSliderCtrl.h; sourceTree = "<group>"; };
+		8610F32D16AEEC670015BCEB /* main.cs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.cs; path = ../../../main.cs; sourceTree = "<group>"; };
+		8610F32E16AEEC670015BCEB /* modules */ = {isa = PBXFileReference; lastKnownFileType = folder; name = modules; path = ../../../modules; sourceTree = "<group>"; };
+		86555D2C16B2C29200881446 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/iPadStoryboard.storyboard; sourceTree = "<group>"; };
+		86555D2E16B2C29200881446 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/iPhoneStoryboard.storyboard; sourceTree = "<group>"; };
+		86555D3116B2C2B400881446 /* T2DAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = T2DAppDelegate.h; sourceTree = "<group>"; };
+		86555D3216B2C2B400881446 /* T2DAppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = T2DAppDelegate.mm; sourceTree = "<group>"; };
+		86555D3316B2C2B400881446 /* T2DView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = T2DView.h; sourceTree = "<group>"; };
+		86555D3416B2C2B400881446 /* T2DView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = T2DView.mm; sourceTree = "<group>"; };
+		86555D3516B2C2B400881446 /* T2DViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = T2DViewController.h; sourceTree = "<group>"; };
+		86555D3616B2C2B400881446 /* T2DViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = T2DViewController.mm; sourceTree = "<group>"; };
+		86555D3E16B2C75900881446 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
+		867BAC9416AEC8BB0033868F /* GameCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameCenter.h; sourceTree = "<group>"; };
+		867BAC9516AEC8BB0033868F /* GameCenter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GameCenter.mm; sourceTree = "<group>"; };
+		867BAC9616AEC8BB0033868F /* iOS_common_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOS_common_prefix.h; sourceTree = "<group>"; };
+		867BAC9716AEC8BB0033868F /* iOSAlerts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSAlerts.h; sourceTree = "<group>"; };
+		867BAC9816AEC8BB0033868F /* iOSAlerts.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSAlerts.mm; sourceTree = "<group>"; };
+		867BAC9916AEC8BB0033868F /* iOSAudio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSAudio.mm; sourceTree = "<group>"; };
+		867BAC9A16AEC8BB0033868F /* iOSConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSConsole.h; sourceTree = "<group>"; };
+		867BAC9B16AEC8BB0033868F /* iOSConsole.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSConsole.mm; sourceTree = "<group>"; };
+		867BAC9C16AEC8BB0033868F /* iOSCPUInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSCPUInfo.mm; sourceTree = "<group>"; };
+		867BAC9D16AEC8BB0033868F /* iOSDialogs.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSDialogs.mm; sourceTree = "<group>"; };
+		867BAC9E16AEC8BB0033868F /* iOSEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSEvents.h; sourceTree = "<group>"; };
+		867BAC9F16AEC8BB0033868F /* iOSEvents.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSEvents.mm; sourceTree = "<group>"; };
+		867BACA016AEC8BB0033868F /* iOSFileio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSFileio.mm; sourceTree = "<group>"; };
+		867BACA116AEC8BB0033868F /* iOSFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSFont.h; sourceTree = "<group>"; };
+		867BACA216AEC8BB0033868F /* iOSFont.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSFont.mm; sourceTree = "<group>"; };
+		867BACA316AEC8BB0033868F /* iOSGL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSGL.mm; sourceTree = "<group>"; };
+		867BACA616AEC8BB0033868F /* iOSInput.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSInput.mm; sourceTree = "<group>"; };
+		867BACA916AEC8BB0033868F /* iOSMath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSMath.mm; sourceTree = "<group>"; };
+		867BACAA16AEC8BB0033868F /* iOSMemory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSMemory.mm; sourceTree = "<group>"; };
+		867BACAB16AEC8BB0033868F /* iOSMotionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSMotionManager.h; sourceTree = "<group>"; };
+		867BACAC16AEC8BB0033868F /* iOSMotionManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSMotionManager.mm; sourceTree = "<group>"; };
+		867BACAD16AEC8BB0033868F /* iOSMoviePlayback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSMoviePlayback.h; sourceTree = "<group>"; };
+		867BACAE16AEC8BB0033868F /* iOSMoviePlayback.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSMoviePlayback.mm; sourceTree = "<group>"; };
+		867BACAF16AEC8BB0033868F /* iOSMutex.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSMutex.mm; sourceTree = "<group>"; };
+		867BACB016AEC8BB0033868F /* iOSNet.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSNet.mm; sourceTree = "<group>"; };
+		867BACB116AEC8BB0033868F /* iOSNPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSNPatch.h; sourceTree = "<group>"; };
+		867BACB216AEC8BB0033868F /* iOSOGLVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSOGLVideo.h; sourceTree = "<group>"; };
+		867BACB316AEC8BB0033868F /* iOSOGLVideo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSOGLVideo.mm; sourceTree = "<group>"; };
+		867BACB416AEC8BB0033868F /* iOSOutlineGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSOutlineGL.h; sourceTree = "<group>"; };
+		867BACB516AEC8BB0033868F /* iOSOutlineGL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSOutlineGL.mm; sourceTree = "<group>"; };
+		867BACB616AEC8BB0033868F /* iOSPlatform.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSPlatform.mm; sourceTree = "<group>"; };
+		867BACB716AEC8BB0033868F /* iOSProcessControl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSProcessControl.mm; sourceTree = "<group>"; };
+		867BACB816AEC8BB0033868F /* iOSProfiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSProfiler.h; sourceTree = "<group>"; };
+		867BACB916AEC8BB0033868F /* iOSProfiler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSProfiler.mm; sourceTree = "<group>"; };
+		867BACBA16AEC8BB0033868F /* iOSSemaphore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSSemaphore.mm; sourceTree = "<group>"; };
+		867BACBB16AEC8BB0033868F /* iOSStreamSource.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iOSStreamSource.cc; sourceTree = "<group>"; };
+		867BACBC16AEC8BB0033868F /* iOSStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSStreamSource.h; sourceTree = "<group>"; };
+		867BACBD16AEC8BB0033868F /* iOSStrings.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSStrings.mm; sourceTree = "<group>"; };
+		867BACC216AEC8BB0033868F /* iOSThread.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSThread.mm; sourceTree = "<group>"; };
+		867BACC316AEC8BB0033868F /* iOSTime.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSTime.mm; sourceTree = "<group>"; };
+		867BACC416AEC8BB0033868F /* iOSUserMusicLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSUserMusicLibrary.h; sourceTree = "<group>"; };
+		867BACC516AEC8BB0033868F /* iOSUserMusicLibrary.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSUserMusicLibrary.mm; sourceTree = "<group>"; };
+		867BACC616AEC8BB0033868F /* iOSUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSUtil.h; sourceTree = "<group>"; };
+		867BACC716AEC8BB0033868F /* iOSUtil.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSUtil.mm; sourceTree = "<group>"; };
+		867BACC816AEC8BB0033868F /* iOSWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSWindow.h; sourceTree = "<group>"; };
+		867BACC916AEC8BB0033868F /* iOSWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSWindow.mm; sourceTree = "<group>"; };
+		867BACCA16AEC8BB0033868F /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
+		867BACCC16AEC8BB0033868F /* popupMenu.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = popupMenu.mm; sourceTree = "<group>"; };
+		867BACCD16AEC8BB0033868F /* platformGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformGL.h; sourceTree = "<group>"; };
+		867BACCE16AEC8BB0033868F /* platformiOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformiOS.h; sourceTree = "<group>"; };
+		867BACCF16AEC8BB0033868F /* SoundEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundEngine.h; sourceTree = "<group>"; };
+		867BACD016AEC8BB0033868F /* SoundEngine.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SoundEngine.mm; sourceTree = "<group>"; };
+		867BACFA16AEC9050033868F /* AnimationAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationAsset.cc; sourceTree = "<group>"; };
+		867BACFB16AEC9050033868F /* AnimationAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationAsset.h; sourceTree = "<group>"; };
+		867BACFC16AEC9050033868F /* AnimationAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationAsset_ScriptBinding.h; sourceTree = "<group>"; };
+		867BACFD16AEC9050033868F /* AnimationController.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationController.cc; sourceTree = "<group>"; };
+		867BACFE16AEC9050033868F /* AnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationController.h; sourceTree = "<group>"; };
+		867BACFF16AEC9050033868F /* ImageAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageAsset.cc; sourceTree = "<group>"; };
+		867BAD0016AEC9050033868F /* ImageAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageAsset.h; sourceTree = "<group>"; };
+		867BAD0116AEC9050033868F /* ImageAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageAsset_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD0216AEC9050033868F /* ParticleAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAsset.cc; sourceTree = "<group>"; };
+		867BAD0316AEC9050033868F /* ParticleAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAsset.h; sourceTree = "<group>"; };
+		867BAD0416AEC9050033868F /* ParticleAsset_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAsset_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD0516AEC9050033868F /* ParticleAssetEmitter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAssetEmitter.cc; sourceTree = "<group>"; };
+		867BAD0616AEC9050033868F /* ParticleAssetEmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetEmitter.h; sourceTree = "<group>"; };
+		867BAD0716AEC9050033868F /* ParticleAssetEmitter_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetEmitter_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD0816AEC9050033868F /* ParticleAssetField.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAssetField.cc; sourceTree = "<group>"; };
+		867BAD0916AEC9050033868F /* ParticleAssetField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetField.h; sourceTree = "<group>"; };
+		867BAD0A16AEC9050033868F /* ParticleAssetFieldCollection.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleAssetFieldCollection.cc; sourceTree = "<group>"; };
+		867BAD0B16AEC9050033868F /* ParticleAssetFieldCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleAssetFieldCollection.h; sourceTree = "<group>"; };
+		867BAD0D16AEC9050033868F /* BatchRender.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BatchRender.cc; sourceTree = "<group>"; };
+		867BAD0E16AEC9050033868F /* BatchRender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchRender.h; sourceTree = "<group>"; };
+		867BAD0F16AEC9050033868F /* CoreMath.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CoreMath.cc; sourceTree = "<group>"; };
+		867BAD1016AEC9050033868F /* CoreMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreMath.h; sourceTree = "<group>"; };
+		867BAD1116AEC9050033868F /* ParticleSystem.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticleSystem.cc; sourceTree = "<group>"; };
+		867BAD1216AEC9050033868F /* ParticleSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticleSystem.h; sourceTree = "<group>"; };
+		867BAD1316AEC9050033868F /* RenderProxy.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderProxy.cc; sourceTree = "<group>"; };
+		867BAD1416AEC9050033868F /* RenderProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderProxy.h; sourceTree = "<group>"; };
+		867BAD1516AEC9050033868F /* RenderProxy_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderProxy_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD1616AEC9050033868F /* SpriteBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBase.cc; sourceTree = "<group>"; };
+		867BAD1716AEC9050033868F /* SpriteBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBase.h; sourceTree = "<group>"; };
+		867BAD1816AEC9050033868F /* SpriteBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBase_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD1916AEC9050033868F /* SpriteBatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatch.cc; sourceTree = "<group>"; };
+		867BAD1A16AEC9050033868F /* SpriteBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatch.h; sourceTree = "<group>"; };
+		867BAD1B16AEC9050033868F /* SpriteBatchItem.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteBatchItem.cc; sourceTree = "<group>"; };
+		867BAD1C16AEC9050033868F /* SpriteBatchItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteBatchItem.h; sourceTree = "<group>"; };
+		867BAD1D16AEC9050033868F /* SpriteProxyBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpriteProxyBase.cc; sourceTree = "<group>"; };
+		867BAD1E16AEC9050033868F /* SpriteProxyBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteProxyBase.h; sourceTree = "<group>"; };
+		867BAD1F16AEC9050033868F /* Utility.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Utility.cc; sourceTree = "<group>"; };
+		867BAD2016AEC9050033868F /* Utility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utility.h; sourceTree = "<group>"; };
+		867BAD2116AEC9050033868F /* Vector2.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Vector2.cc; sourceTree = "<group>"; };
+		867BAD2216AEC9050033868F /* Vector2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector2.h; sourceTree = "<group>"; };
+		867BAD2316AEC9050033868F /* Vector2_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vector2_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD2516AEC9050033868F /* guiImageButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiImageButtonCtrl.cc; sourceTree = "<group>"; };
+		867BAD2616AEC9050033868F /* guiImageButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiImageButtonCtrl.h; sourceTree = "<group>"; };
+		867BAD2716AEC9050033868F /* guiImageButtonCtrl_ScriptBindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiImageButtonCtrl_ScriptBindings.h; sourceTree = "<group>"; };
+		867BAD2816AEC9050033868F /* guiSceneObjectCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSceneObjectCtrl.cc; sourceTree = "<group>"; };
+		867BAD2916AEC9050033868F /* guiSceneObjectCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSceneObjectCtrl.h; sourceTree = "<group>"; };
+		867BAD2A16AEC9050033868F /* guiSpriteCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSpriteCtrl.cc; sourceTree = "<group>"; };
+		867BAD2B16AEC9050033868F /* guiSpriteCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSpriteCtrl.h; sourceTree = "<group>"; };
+		867BAD2C16AEC9050033868F /* guiSpriteCtrl_ScriptBindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSpriteCtrl_ScriptBindings.h; sourceTree = "<group>"; };
+		867BAD2D16AEC9050033868F /* SceneWindow.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneWindow.cc; sourceTree = "<group>"; };
+		867BAD2E16AEC9050033868F /* SceneWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneWindow.h; sourceTree = "<group>"; };
+		867BAD2F16AEC9050033868F /* SceneWindow_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneWindow_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD3116AEC9050033868F /* ContactFilter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContactFilter.cc; sourceTree = "<group>"; };
+		867BAD3216AEC9050033868F /* ContactFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactFilter.h; sourceTree = "<group>"; };
+		867BAD3316AEC9050033868F /* DebugDraw.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebugDraw.cc; sourceTree = "<group>"; };
+		867BAD3416AEC9050033868F /* DebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugDraw.h; sourceTree = "<group>"; };
+		867BAD3516AEC9050033868F /* DebugStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugStats.h; sourceTree = "<group>"; };
+		867BAD3616AEC9050033868F /* PhysicsProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhysicsProxy.h; sourceTree = "<group>"; };
+		867BAD3716AEC9050033868F /* Scene.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scene.cc; sourceTree = "<group>"; };
+		867BAD3816AEC9050033868F /* Scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scene.h; sourceTree = "<group>"; };
+		867BAD3916AEC9050033868F /* Scene_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scene_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD3A16AEC9050033868F /* SceneRenderFactories.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneRenderFactories.cpp; sourceTree = "<group>"; };
+		867BAD3B16AEC9050033868F /* SceneRenderFactories.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderFactories.h; sourceTree = "<group>"; };
+		867BAD3C16AEC9050033868F /* SceneRenderObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderObject.h; sourceTree = "<group>"; };
+		867BAD3D16AEC9050033868F /* SceneRenderQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneRenderQueue.cpp; sourceTree = "<group>"; };
+		867BAD3E16AEC9050033868F /* SceneRenderQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderQueue.h; sourceTree = "<group>"; };
+		867BAD3F16AEC9050033868F /* SceneRenderRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderRequest.h; sourceTree = "<group>"; };
+		867BAD4016AEC9050033868F /* SceneRenderState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneRenderState.h; sourceTree = "<group>"; };
+		867BAD4116AEC9050033868F /* WorldQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorldQuery.cc; sourceTree = "<group>"; };
+		867BAD4216AEC9050033868F /* WorldQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldQuery.h; sourceTree = "<group>"; };
+		867BAD4316AEC9050033868F /* WorldQueryFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldQueryFilter.h; sourceTree = "<group>"; };
+		867BAD4416AEC9050033868F /* WorldQueryResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldQueryResult.h; sourceTree = "<group>"; };
+		867BAD4916AEC9050033868F /* CompositeSprite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompositeSprite.cc; sourceTree = "<group>"; };
+		867BAD4A16AEC9050033868F /* CompositeSprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositeSprite.h; sourceTree = "<group>"; };
+		867BAD4B16AEC9050033868F /* CompositeSprite_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompositeSprite_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD4C16AEC9050033868F /* ParticlePlayer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParticlePlayer.cc; sourceTree = "<group>"; };
+		867BAD4D16AEC9050033868F /* ParticlePlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticlePlayer.h; sourceTree = "<group>"; };
+		867BAD4E16AEC9050033868F /* ParticlePlayer_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParticlePlayer_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD5216AEC9050033868F /* SceneObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneObject.cc; sourceTree = "<group>"; };
+		867BAD5316AEC9050033868F /* SceneObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObject.h; sourceTree = "<group>"; };
+		867BAD5416AEC9050033868F /* SceneObject_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObject_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD5716AEC9050033868F /* SceneObjectMoveToEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObjectMoveToEvent.h; sourceTree = "<group>"; };
+		867BAD5816AEC9050033868F /* SceneObjectRotateToEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObjectRotateToEvent.h; sourceTree = "<group>"; };
+		867BAD5C16AEC9050033868F /* SceneObjectTimerEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneObjectTimerEvent.h; sourceTree = "<group>"; };
+		867BAD5D16AEC9050033868F /* Scroller.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scroller.cc; sourceTree = "<group>"; };
+		867BAD5E16AEC9050033868F /* Scroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scroller.h; sourceTree = "<group>"; };
+		867BAD5F16AEC9050033868F /* Scroller_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scroller_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD6016AEC9050033868F /* ShapeVector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeVector.cc; sourceTree = "<group>"; };
+		867BAD6116AEC9050033868F /* ShapeVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeVector.h; sourceTree = "<group>"; };
+		867BAD6216AEC9050033868F /* ShapeVector_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShapeVector_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD6316AEC9050033868F /* Sprite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Sprite.cc; sourceTree = "<group>"; };
+		867BAD6416AEC9050033868F /* Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sprite.h; sourceTree = "<group>"; };
+		867BAD6516AEC9050033868F /* Sprite_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Sprite_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD6616AEC9050033868F /* Trigger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Trigger.cc; sourceTree = "<group>"; };
+		867BAD6716AEC9050033868F /* Trigger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Trigger.h; sourceTree = "<group>"; };
+		867BAD6816AEC9050033868F /* Trigger_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Trigger_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD6A16AEC9050033868F /* crc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = crc.cc; sourceTree = "<group>"; };
+		867BAD6B16AEC9050033868F /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = "<group>"; };
+		867BAD6C16AEC9050033868F /* crctab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crctab.h; sourceTree = "<group>"; };
+		867BAD6D16AEC9050033868F /* hashFunction.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashFunction.cc; sourceTree = "<group>"; };
+		867BAD6E16AEC9050033868F /* hashFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashFunction.h; sourceTree = "<group>"; };
+		867BAD6F16AEC9050033868F /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
+		867BAD7116AEC9050033868F /* assetBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetBase.cc; sourceTree = "<group>"; };
+		867BAD7216AEC9050033868F /* assetBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetBase.h; sourceTree = "<group>"; };
+		867BAD7316AEC9050033868F /* assetBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetBase_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD7416AEC9050033868F /* assetDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetDefinition.h; sourceTree = "<group>"; };
+		867BAD7516AEC9050033868F /* assetFieldTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetFieldTypes.cc; sourceTree = "<group>"; };
+		867BAD7616AEC9050033868F /* assetFieldTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetFieldTypes.h; sourceTree = "<group>"; };
+		867BAD7716AEC9050033868F /* assetManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetManager.cc; sourceTree = "<group>"; };
+		867BAD7816AEC9050033868F /* assetManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetManager.h; sourceTree = "<group>"; };
+		867BAD7916AEC9050033868F /* assetManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetManager_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD7C16AEC9050033868F /* assetPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetPtr.h; sourceTree = "<group>"; };
+		867BAD7D16AEC9050033868F /* assetQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetQuery.cc; sourceTree = "<group>"; };
+		867BAD7E16AEC9050033868F /* assetQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetQuery.h; sourceTree = "<group>"; };
+		867BAD7F16AEC9050033868F /* assetQuery_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetQuery_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD8016AEC9050033868F /* assetSnapshot.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetSnapshot.cc; sourceTree = "<group>"; };
+		867BAD8116AEC9050033868F /* assetSnapshot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetSnapshot.h; sourceTree = "<group>"; };
+		867BAD8216AEC9050033868F /* assetTagsManifest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assetTagsManifest.cc; sourceTree = "<group>"; };
+		867BAD8316AEC9050033868F /* assetTagsManifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetTagsManifest.h; sourceTree = "<group>"; };
+		867BAD8416AEC9050033868F /* assetTagsManifest_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assetTagsManifest_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAD8516AEC9050033868F /* tamlAssetDeclaredUpdateVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetDeclaredUpdateVisitor.h; sourceTree = "<group>"; };
+		867BAD8616AEC9050033868F /* tamlAssetDeclaredVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetDeclaredVisitor.h; sourceTree = "<group>"; };
+		867BAD8716AEC9050033868F /* tamlAssetReferencedUpdateVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetReferencedUpdateVisitor.h; sourceTree = "<group>"; };
+		867BAD8816AEC9050033868F /* tamlAssetReferencedVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlAssetReferencedVisitor.h; sourceTree = "<group>"; };
+		867BAD8A16AEC9050033868F /* audio.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio.cc; sourceTree = "<group>"; };
+		867BAD8B16AEC9050033868F /* audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = "<group>"; };
+		867BAD8C16AEC9050033868F /* AudioAsset.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioAsset.cc; sourceTree = "<group>"; };
+		867BAD8D16AEC9050033868F /* AudioAsset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioAsset.h; sourceTree = "<group>"; };
+		867BAD8E16AEC9050033868F /* audioBuffer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioBuffer.cc; sourceTree = "<group>"; };
+		867BAD8F16AEC9050033868F /* audioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioBuffer.h; sourceTree = "<group>"; };
+		867BAD9016AEC9050033868F /* audioDataBlock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioDataBlock.cc; sourceTree = "<group>"; };
+		867BAD9116AEC9050033868F /* audioDataBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioDataBlock.h; sourceTree = "<group>"; };
+		867BAD9216AEC9050033868F /* audioFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioFunctions.cc; sourceTree = "<group>"; };
+		867BAD9316AEC9050033868F /* audioStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSource.h; sourceTree = "<group>"; };
+		867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioStreamSourceFactory.cc; sourceTree = "<group>"; };
+		867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioStreamSourceFactory.h; sourceTree = "<group>"; };
+		867BAD9616AEC9050033868F /* wavStreamSource.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavStreamSource.cc; sourceTree = "<group>"; };
+		867BAD9716AEC9050033868F /* wavStreamSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavStreamSource.h; sourceTree = "<group>"; };
+		867BAD9916AEC9050033868F /* bitMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitMatrix.h; sourceTree = "<group>"; };
+		867BAD9A16AEC9050033868F /* bitSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitSet.h; sourceTree = "<group>"; };
+		867BAD9B16AEC9050033868F /* bitTables.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitTables.cc; sourceTree = "<group>"; };
+		867BAD9C16AEC9050033868F /* bitTables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitTables.h; sourceTree = "<group>"; };
+		867BAD9D16AEC9050033868F /* bitVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitVector.h; sourceTree = "<group>"; };
+		867BAD9E16AEC9050033868F /* bitVectorW.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitVectorW.h; sourceTree = "<group>"; };
+		867BAD9F16AEC9050033868F /* findIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = findIterator.h; sourceTree = "<group>"; };
+		867BADA016AEC9050033868F /* hashTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hashTable.cc; sourceTree = "<group>"; };
+		867BADA116AEC9050033868F /* hashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashTable.h; sourceTree = "<group>"; };
+		867BADA216AEC9050033868F /* linkedList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linkedList.h; sourceTree = "<group>"; };
+		867BADA316AEC9050033868F /* nameTags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nameTags.cpp; sourceTree = "<group>"; };
+		867BADA416AEC9050033868F /* nameTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nameTags.h; sourceTree = "<group>"; };
+		867BADA516AEC9050033868F /* nameTags_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nameTags_ScriptBinding.h; sourceTree = "<group>"; };
+		867BADA616AEC9050033868F /* simpleHashTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simpleHashTable.h; sourceTree = "<group>"; };
+		867BADA716AEC9050033868F /* sparseArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sparseArray.h; sourceTree = "<group>"; };
+		867BADA816AEC9050033868F /* undo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = undo.cc; sourceTree = "<group>"; };
+		867BADA916AEC9050033868F /* undo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = undo.h; sourceTree = "<group>"; };
+		867BADAA16AEC9050033868F /* vector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector.cc; sourceTree = "<group>"; };
+		867BADAB16AEC9050033868F /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = "<group>"; };
+		867BADAC16AEC9050033868F /* vector2d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector2d.h; sourceTree = "<group>"; };
+		867BADAD16AEC9050033868F /* vectorHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vectorHeap.h; sourceTree = "<group>"; };
+		867BADAE16AEC9050033868F /* vectorQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vectorQueue.h; sourceTree = "<group>"; };
+		867BADBF16AEC9050033868F /* behaviorComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = behaviorComponent.cpp; sourceTree = "<group>"; };
+		867BADC016AEC9050033868F /* behaviorComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorComponent.h; sourceTree = "<group>"; };
+		867BADC116AEC9050033868F /* behaviorComponent_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorComponent_ScriptBinding.h; sourceTree = "<group>"; };
+		867BADC216AEC9050033868F /* behaviorComponentRaiseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorComponentRaiseEvent.h; sourceTree = "<group>"; };
+		867BADC316AEC9050033868F /* behaviorInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = behaviorInstance.cpp; sourceTree = "<group>"; };
+		867BADC416AEC9050033868F /* behaviorInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorInstance.h; sourceTree = "<group>"; };
+		867BADC516AEC9050033868F /* behaviorInstance_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorInstance_ScriptBinding.h; sourceTree = "<group>"; };
+		867BADC616AEC9050033868F /* behaviorTemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = behaviorTemplate.cpp; sourceTree = "<group>"; };
+		867BADC716AEC9050033868F /* behaviorTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorTemplate.h; sourceTree = "<group>"; };
+		867BADC816AEC9050033868F /* behaviorTemplate_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = behaviorTemplate_ScriptBinding.h; sourceTree = "<group>"; };
+		867BADC916AEC9050033868F /* dynamicConsoleMethodComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dynamicConsoleMethodComponent.cpp; sourceTree = "<group>"; };
+		867BADCA16AEC9050033868F /* dynamicConsoleMethodComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dynamicConsoleMethodComponent.h; sourceTree = "<group>"; };
+		867BADCE16AEC9050033868F /* simComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simComponent.cpp; sourceTree = "<group>"; };
+		867BADCF16AEC9050033868F /* simComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simComponent.h; sourceTree = "<group>"; };
+		867BADD116AEC9050033868F /* ast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ast.h; sourceTree = "<group>"; };
+		867BADD216AEC9050033868F /* astAlloc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = astAlloc.cc; sourceTree = "<group>"; };
+		867BADD316AEC9050033868F /* astNodes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = astNodes.cc; sourceTree = "<group>"; };
+		867BADD416AEC9050033868F /* astNodeSizes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = astNodeSizes.h; sourceTree = "<group>"; };
+		867BADD616AEC9050033868F /* bison.simple */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bison.simple; sourceTree = "<group>"; };
+		867BADD716AEC9050033868F /* cmdgram.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cmdgram.cc; sourceTree = "<group>"; };
+		867BADD816AEC9050033868F /* cmdgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmdgram.h; sourceTree = "<group>"; };
+		867BADDA16AEC9050033868F /* CMDscan.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CMDscan.cc; sourceTree = "<group>"; };
+		867BADDC16AEC9050033868F /* codeBlock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = codeBlock.cc; sourceTree = "<group>"; };
+		867BADDD16AEC9050033868F /* codeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codeBlock.h; sourceTree = "<group>"; };
+		867BADDE16AEC9050033868F /* compiledEval.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compiledEval.cc; sourceTree = "<group>"; };
+		867BADDF16AEC9050033868F /* compiler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compiler.cc; sourceTree = "<group>"; };
+		867BADE016AEC9050033868F /* compiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = "<group>"; };
+		867BADE116AEC9050033868F /* console.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = console.cc; sourceTree = "<group>"; };
+		867BADE216AEC9050033868F /* console.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = console.h; sourceTree = "<group>"; };
+		867BADE316AEC9050033868F /* consoleBaseType.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleBaseType.cc; sourceTree = "<group>"; };
+		867BADE416AEC9050033868F /* consoleBaseType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleBaseType.h; sourceTree = "<group>"; };
+		867BADE516AEC9050033868F /* consoleDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleDictionary.cc; sourceTree = "<group>"; };
+		867BADE616AEC9050033868F /* consoleDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleDictionary.h; sourceTree = "<group>"; };
+		867BADE716AEC9050033868F /* consoleDoc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleDoc.cc; sourceTree = "<group>"; };
+		867BADE816AEC9050033868F /* consoleDoc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleDoc.h; sourceTree = "<group>"; };
+		867BADE916AEC9050033868F /* consoleExprEvalState.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleExprEvalState.cc; sourceTree = "<group>"; };
+		867BADEA16AEC9050033868F /* consoleExprEvalState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleExprEvalState.h; sourceTree = "<group>"; };
+		867BADEB16AEC9050033868F /* consoleFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleFunctions.cc; sourceTree = "<group>"; };
+		867BADEC16AEC9050033868F /* consoleInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleInternal.h; sourceTree = "<group>"; };
+		867BADED16AEC9050033868F /* consoleLogger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleLogger.cc; sourceTree = "<group>"; };
+		867BADEE16AEC9050033868F /* consoleLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleLogger.h; sourceTree = "<group>"; };
+		867BADEF16AEC9050033868F /* consoleNamespace.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleNamespace.cc; sourceTree = "<group>"; };
+		867BADF016AEC9050033868F /* consoleNamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleNamespace.h; sourceTree = "<group>"; };
+		867BADF116AEC9050033868F /* consoleObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleObject.cc; sourceTree = "<group>"; };
+		867BADF216AEC9050033868F /* consoleObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleObject.h; sourceTree = "<group>"; };
+		867BADF316AEC9050033868F /* consoleParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleParser.cc; sourceTree = "<group>"; };
+		867BADF416AEC9050033868F /* consoleParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleParser.h; sourceTree = "<group>"; };
+		867BADF516AEC9050033868F /* consoleTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleTypes.cc; sourceTree = "<group>"; };
+		867BADF616AEC9050033868F /* consoleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleTypes.h; sourceTree = "<group>"; };
+		867BADF716AEC9050033868F /* ConsoleTypeValidators.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleTypeValidators.cc; sourceTree = "<group>"; };
+		867BADF816AEC9050033868F /* ConsoleTypeValidators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleTypeValidators.h; sourceTree = "<group>"; };
+		867BADFA16AEC9050033868F /* Package.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Package.cc; sourceTree = "<group>"; };
+		867BADFB16AEC9050033868F /* Package.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Package.h; sourceTree = "<group>"; };
+		867BADFD16AEC9050033868F /* profiler.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = profiler.cc; sourceTree = "<group>"; };
+		867BADFE16AEC9050033868F /* profiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = profiler.h; sourceTree = "<group>"; };
+		867BAE0016AEC9050033868F /* RemoteDebugger1.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteDebugger1.cc; sourceTree = "<group>"; };
+		867BAE0116AEC9050033868F /* RemoteDebugger1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebugger1.h; sourceTree = "<group>"; };
+		867BAE0216AEC9050033868F /* RemoteDebugger1_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebugger1_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAE0316AEC9050033868F /* RemoteDebuggerBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteDebuggerBase.cc; sourceTree = "<group>"; };
+		867BAE0416AEC9050033868F /* RemoteDebuggerBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBase.h; sourceTree = "<group>"; };
+		867BAE0516AEC9050033868F /* RemoteDebuggerBase_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBase_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAE0616AEC9050033868F /* RemoteDebuggerBridge.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteDebuggerBridge.cc; sourceTree = "<group>"; };
+		867BAE0716AEC9050033868F /* RemoteDebuggerBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBridge.h; sourceTree = "<group>"; };
+		867BAE0816AEC9050033868F /* RemoteDebuggerBridge_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteDebuggerBridge_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAE0916AEC9050033868F /* telnetDebugger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telnetDebugger.cc; sourceTree = "<group>"; };
+		867BAE0A16AEC9050033868F /* telnetDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetDebugger.h; sourceTree = "<group>"; };
+		867BAE0C16AEC9050033868F /* delegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delegate.h; sourceTree = "<group>"; };
+		867BAE0D16AEC9050033868F /* delegateSignal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = delegateSignal.cpp; sourceTree = "<group>"; };
+		867BAE0E16AEC9050033868F /* delegateSignal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = delegateSignal.h; sourceTree = "<group>"; };
+		867BAE0F16AEC9050033868F /* FastDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastDelegate.h; sourceTree = "<group>"; };
+		867BAE1116AEC9050033868F /* defaultGame.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = defaultGame.cc; sourceTree = "<group>"; };
+		867BAE1216AEC9050033868F /* defaultGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defaultGame.h; sourceTree = "<group>"; };
+		867BAE1316AEC9050033868F /* gameConnection.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gameConnection.cc; sourceTree = "<group>"; };
+		867BAE1416AEC9050033868F /* gameConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameConnection.h; sourceTree = "<group>"; };
+		867BAE1516AEC9050033868F /* gameInterface.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gameInterface.cc; sourceTree = "<group>"; };
+		867BAE1616AEC9050033868F /* gameInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameInterface.h; sourceTree = "<group>"; };
+		867BAE1716AEC9050033868F /* gameInterface_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gameInterface_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAE1816AEC9050033868F /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
+		867BAE1916AEC9050033868F /* version.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = version.cc; sourceTree = "<group>"; };
+		867BAE1A16AEC9050033868F /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
+		867BAE1C16AEC9050033868F /* bitmapBmp.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapBmp.cc; sourceTree = "<group>"; };
+		867BAE1D16AEC9050033868F /* bitmapJpeg.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapJpeg.cc; sourceTree = "<group>"; };
+		867BAE1E16AEC9050033868F /* bitmapPng.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapPng.cc; sourceTree = "<group>"; };
+		867BAE1F16AEC9050033868F /* bitmapPvr.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitmapPvr.cc; sourceTree = "<group>"; };
+		867BAE2216AEC9050033868F /* color.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = color.cc; sourceTree = "<group>"; };
+		867BAE2316AEC9050033868F /* color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = "<group>"; };
+		867BAE2416AEC9050033868F /* dgl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dgl.cc; sourceTree = "<group>"; };
+		867BAE2516AEC9050033868F /* dgl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dgl.h; sourceTree = "<group>"; };
+		867BAE2616AEC9050033868F /* dglMatrix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dglMatrix.cc; sourceTree = "<group>"; };
+		867BAE2716AEC9050033868F /* DynamicTexture.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicTexture.cc; sourceTree = "<group>"; };
+		867BAE2816AEC9050033868F /* DynamicTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicTexture.h; sourceTree = "<group>"; };
+		867BAE2916AEC9050033868F /* gBitmap.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gBitmap.cc; sourceTree = "<group>"; };
+		867BAE2A16AEC9050033868F /* gBitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gBitmap.h; sourceTree = "<group>"; };
+		867BAE2B16AEC9050033868F /* gFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gFont.cc; sourceTree = "<group>"; };
+		867BAE2C16AEC9050033868F /* gFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gFont.h; sourceTree = "<group>"; };
+		867BAE2D16AEC9050033868F /* gPalette.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gPalette.cc; sourceTree = "<group>"; };
+		867BAE2E16AEC9050033868F /* gPalette.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gPalette.h; sourceTree = "<group>"; };
+		867BAE2F16AEC9050033868F /* PNGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PNGImage.cpp; sourceTree = "<group>"; };
+		867BAE3016AEC9050033868F /* PNGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PNGImage.h; sourceTree = "<group>"; };
+		867BAE3116AEC9050033868F /* splineUtil.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = splineUtil.cc; sourceTree = "<group>"; };
+		867BAE3216AEC9050033868F /* splineUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = splineUtil.h; sourceTree = "<group>"; };
+		867BAE3316AEC9050033868F /* TextureDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureDictionary.cc; sourceTree = "<group>"; };
+		867BAE3416AEC9050033868F /* TextureDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureDictionary.h; sourceTree = "<group>"; };
+		867BAE3516AEC9050033868F /* TextureHandle.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureHandle.cc; sourceTree = "<group>"; };
+		867BAE3616AEC9050033868F /* TextureHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureHandle.h; sourceTree = "<group>"; };
+		867BAE3716AEC9050033868F /* TextureManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextureManager.cc; sourceTree = "<group>"; };
+		867BAE3816AEC9050033868F /* TextureManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureManager.h; sourceTree = "<group>"; };
+		867BAE3916AEC9050033868F /* TextureObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureObject.h; sourceTree = "<group>"; };
+		867BAE3C16AEC9050033868F /* guiBitmapButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBitmapButtonCtrl.cc; sourceTree = "<group>"; };
+		867BAE3D16AEC9050033868F /* guiBitmapButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBitmapButtonCtrl.h; sourceTree = "<group>"; };
+		867BAE3E16AEC9050033868F /* guiBorderButton.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBorderButton.cc; sourceTree = "<group>"; };
+		867BAE3F16AEC9050033868F /* guiButtonBaseCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiButtonBaseCtrl.cc; sourceTree = "<group>"; };
+		867BAE4016AEC9050033868F /* guiButtonBaseCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiButtonBaseCtrl.h; sourceTree = "<group>"; };
+		867BAE4116AEC9050033868F /* guiButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiButtonCtrl.cc; sourceTree = "<group>"; };
+		867BAE4216AEC9050033868F /* guiButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiButtonCtrl.h; sourceTree = "<group>"; };
+		867BAE4316AEC9050033868F /* guiCheckBoxCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiCheckBoxCtrl.cc; sourceTree = "<group>"; };
+		867BAE4416AEC9050033868F /* guiCheckBoxCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCheckBoxCtrl.h; sourceTree = "<group>"; };
+		867BAE4516AEC9050033868F /* guiIconButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiIconButtonCtrl.cc; sourceTree = "<group>"; };
+		867BAE4616AEC9050033868F /* guiIconButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiIconButtonCtrl.h; sourceTree = "<group>"; };
+		867BAE4716AEC9050033868F /* guiRadioCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiRadioCtrl.cc; sourceTree = "<group>"; };
+		867BAE4816AEC9050033868F /* guiRadioCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiRadioCtrl.h; sourceTree = "<group>"; };
+		867BAE4916AEC9050033868F /* guiToolboxButtonCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiToolboxButtonCtrl.cc; sourceTree = "<group>"; };
+		867BAE4A16AEC9050033868F /* guiToolboxButtonCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiToolboxButtonCtrl.h; sourceTree = "<group>"; };
+		867BAE4C16AEC9050033868F /* guiAutoScrollCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiAutoScrollCtrl.cc; sourceTree = "<group>"; };
+		867BAE4D16AEC9050033868F /* guiAutoScrollCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiAutoScrollCtrl.h; sourceTree = "<group>"; };
+		867BAE4E16AEC9050033868F /* guiCtrlArrayCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiCtrlArrayCtrl.cc; sourceTree = "<group>"; };
+		867BAE4F16AEC9050033868F /* guiCtrlArrayCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCtrlArrayCtrl.h; sourceTree = "<group>"; };
+		867BAE5016AEC9050033868F /* guiDragAndDropCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDragAndDropCtrl.cc; sourceTree = "<group>"; };
+		867BAE5116AEC9050033868F /* guiDragAndDropCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDragAndDropCtrl.h; sourceTree = "<group>"; };
+		867BAE5216AEC9050033868F /* guiDynamicCtrlArrayCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDynamicCtrlArrayCtrl.cc; sourceTree = "<group>"; };
+		867BAE5316AEC9050033868F /* guiDynamicCtrlArrayCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDynamicCtrlArrayCtrl.h; sourceTree = "<group>"; };
+		867BAE5416AEC9050033868F /* guiFormCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFormCtrl.cc; sourceTree = "<group>"; };
+		867BAE5516AEC9050033868F /* guiFormCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiFormCtrl.h; sourceTree = "<group>"; };
+		867BAE5616AEC9050033868F /* guiFrameCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFrameCtrl.cc; sourceTree = "<group>"; };
+		867BAE5716AEC9050033868F /* guiFrameCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiFrameCtrl.h; sourceTree = "<group>"; };
+		867BAE5816AEC9050033868F /* guiPaneCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiPaneCtrl.cc; sourceTree = "<group>"; };
+		867BAE5916AEC9050033868F /* guiPaneCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiPaneCtrl.h; sourceTree = "<group>"; };
+		867BAE5A16AEC9050033868F /* guiRolloutCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiRolloutCtrl.cc; sourceTree = "<group>"; };
+		867BAE5B16AEC9050033868F /* guiRolloutCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiRolloutCtrl.h; sourceTree = "<group>"; };
+		867BAE5C16AEC9050033868F /* guiScrollCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiScrollCtrl.cc; sourceTree = "<group>"; };
+		867BAE5D16AEC9050033868F /* guiScrollCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiScrollCtrl.h; sourceTree = "<group>"; };
+		867BAE5E16AEC9050033868F /* guiStackCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiStackCtrl.cc; sourceTree = "<group>"; };
+		867BAE5F16AEC9050033868F /* guiStackCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiStackCtrl.h; sourceTree = "<group>"; };
+		867BAE6016AEC9050033868F /* guiTabBookCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTabBookCtrl.cc; sourceTree = "<group>"; };
+		867BAE6116AEC9050033868F /* guiTabBookCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTabBookCtrl.h; sourceTree = "<group>"; };
+		867BAE6216AEC9050033868F /* guiWindowCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiWindowCtrl.cc; sourceTree = "<group>"; };
+		867BAE6316AEC9050033868F /* guiWindowCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiWindowCtrl.h; sourceTree = "<group>"; };
+		867BAE6516AEC9050033868F /* guiControlListPopup.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiControlListPopup.cc; sourceTree = "<group>"; };
+		867BAE6616AEC9050033868F /* guiDebugger.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDebugger.cc; sourceTree = "<group>"; };
+		867BAE6716AEC9050033868F /* guiDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDebugger.h; sourceTree = "<group>"; };
+		867BAE6816AEC9050033868F /* guiEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiEditCtrl.cc; sourceTree = "<group>"; };
+		867BAE6916AEC9050033868F /* guiEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiEditCtrl.h; sourceTree = "<group>"; };
+		867BAE6A16AEC9050033868F /* guiFilterCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFilterCtrl.cc; sourceTree = "<group>"; };
+		867BAE6B16AEC9050033868F /* guiFilterCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiFilterCtrl.h; sourceTree = "<group>"; };
+		867BAE6E16AEC9050033868F /* guiImageList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiImageList.cc; sourceTree = "<group>"; };
+		867BAE6F16AEC9050033868F /* guiImageList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiImageList.h; sourceTree = "<group>"; };
+		867BAE7016AEC9050033868F /* guiInspector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiInspector.cc; sourceTree = "<group>"; };
+		867BAE7116AEC9050033868F /* guiInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiInspector.h; sourceTree = "<group>"; };
+		867BAE7216AEC9050033868F /* guiInspectorTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiInspectorTypes.cc; sourceTree = "<group>"; };
+		867BAE7316AEC9050033868F /* guiInspectorTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiInspectorTypes.h; sourceTree = "<group>"; };
+		867BAE7416AEC9050033868F /* guiMenuBar.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMenuBar.cc; sourceTree = "<group>"; };
+		867BAE7516AEC9050033868F /* guiMenuBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMenuBar.h; sourceTree = "<group>"; };
+		867BAE7616AEC9050033868F /* guiSeparatorCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiSeparatorCtrl.cc; sourceTree = "<group>"; };
+		867BAE7716AEC9050033868F /* guiSeparatorCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiSeparatorCtrl.h; sourceTree = "<group>"; };
+		867BAE7816AEC9050033868F /* guiArrayCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiArrayCtrl.cc; sourceTree = "<group>"; };
+		867BAE7916AEC9050033868F /* guiArrayCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiArrayCtrl.h; sourceTree = "<group>"; };
+		867BAE7A16AEC9050033868F /* guiBackgroundCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBackgroundCtrl.cc; sourceTree = "<group>"; };
+		867BAE7B16AEC9050033868F /* guiBackgroundCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBackgroundCtrl.h; sourceTree = "<group>"; };
+		867BAE7C16AEC9050033868F /* guiBitmapBorderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBitmapBorderCtrl.cc; sourceTree = "<group>"; };
+		867BAE7D16AEC9050033868F /* guiBitmapCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBitmapCtrl.cc; sourceTree = "<group>"; };
+		867BAE7E16AEC9050033868F /* guiBitmapCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBitmapCtrl.h; sourceTree = "<group>"; };
+		867BAE7F16AEC9050033868F /* guiBubbleTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiBubbleTextCtrl.cc; sourceTree = "<group>"; };
+		867BAE8016AEC9050033868F /* guiBubbleTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiBubbleTextCtrl.h; sourceTree = "<group>"; };
+		867BAE8116AEC9050033868F /* guiCanvas.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiCanvas.cc; sourceTree = "<group>"; };
+		867BAE8216AEC9050033868F /* guiCanvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiCanvas.h; sourceTree = "<group>"; };
+		867BAE8516AEC9050033868F /* guiConsole.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiConsole.cc; sourceTree = "<group>"; };
+		867BAE8616AEC9050033868F /* guiConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiConsole.h; sourceTree = "<group>"; };
+		867BAE8716AEC9050033868F /* guiConsoleEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiConsoleEditCtrl.cc; sourceTree = "<group>"; };
+		867BAE8816AEC9050033868F /* guiConsoleEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiConsoleEditCtrl.h; sourceTree = "<group>"; };
+		867BAE8916AEC9050033868F /* guiConsoleTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiConsoleTextCtrl.cc; sourceTree = "<group>"; };
+		867BAE8A16AEC9050033868F /* guiConsoleTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiConsoleTextCtrl.h; sourceTree = "<group>"; };
+		867BAE8B16AEC9050033868F /* guiControl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiControl.cc; sourceTree = "<group>"; };
+		867BAE8C16AEC9050033868F /* guiControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiControl.h; sourceTree = "<group>"; };
+		867BAE8D16AEC9050033868F /* guiDefaultControlRender.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiDefaultControlRender.cc; sourceTree = "<group>"; };
+		867BAE8E16AEC9050033868F /* guiDefaultControlRender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiDefaultControlRender.h; sourceTree = "<group>"; };
+		867BAE8F16AEC9050033868F /* guiFadeinBitmapCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiFadeinBitmapCtrl.cc; sourceTree = "<group>"; };
+		867BAE9016AEC9050033868F /* guiInputCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiInputCtrl.cc; sourceTree = "<group>"; };
+		867BAE9116AEC9050033868F /* guiInputCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiInputCtrl.h; sourceTree = "<group>"; };
+		867BAE9216AEC9050033868F /* guiListBoxCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiListBoxCtrl.cc; sourceTree = "<group>"; };
+		867BAE9316AEC9050033868F /* guiListBoxCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiListBoxCtrl.h; sourceTree = "<group>"; };
+		867BAE9416AEC9050033868F /* guiMessageVectorCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMessageVectorCtrl.cc; sourceTree = "<group>"; };
+		867BAE9516AEC9050033868F /* guiMessageVectorCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMessageVectorCtrl.h; sourceTree = "<group>"; };
+		867BAE9616AEC9050033868F /* guiMLTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMLTextCtrl.cc; sourceTree = "<group>"; };
+		867BAE9716AEC9050033868F /* guiMLTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMLTextCtrl.h; sourceTree = "<group>"; };
+		867BAE9816AEC9050033868F /* guiMLTextEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMLTextEditCtrl.cc; sourceTree = "<group>"; };
+		867BAE9916AEC9050033868F /* guiMLTextEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMLTextEditCtrl.h; sourceTree = "<group>"; };
+		867BAE9A16AEC9050033868F /* guiMouseEventCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiMouseEventCtrl.cc; sourceTree = "<group>"; };
+		867BAE9B16AEC9050033868F /* guiMouseEventCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiMouseEventCtrl.h; sourceTree = "<group>"; };
+		867BAE9C16AEC9050033868F /* guiPopUpCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiPopUpCtrl.cc; sourceTree = "<group>"; };
+		867BAE9D16AEC9050033868F /* guiPopUpCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiPopUpCtrl.h; sourceTree = "<group>"; };
+		867BAE9E16AEC9050033868F /* guiPopUpCtrlEx.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiPopUpCtrlEx.cc; sourceTree = "<group>"; };
+		867BAE9F16AEC9050033868F /* guiPopUpCtrlEx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiPopUpCtrlEx.h; sourceTree = "<group>"; };
+		867BAEA016AEC9050033868F /* guiProgressCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiProgressCtrl.cc; sourceTree = "<group>"; };
+		867BAEA116AEC9050033868F /* guiProgressCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiProgressCtrl.h; sourceTree = "<group>"; };
+		867BAEA216AEC9050033868F /* guiScriptNotifyControl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiScriptNotifyControl.cc; sourceTree = "<group>"; };
+		867BAEA316AEC9050033868F /* guiScriptNotifyControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiScriptNotifyControl.h; sourceTree = "<group>"; };
+		867BAEA616AEC9050033868F /* guiTabPageCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTabPageCtrl.cc; sourceTree = "<group>"; };
+		867BAEA716AEC9050033868F /* guiTabPageCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTabPageCtrl.h; sourceTree = "<group>"; };
+		867BAEA816AEC9050033868F /* guiTextCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextCtrl.cc; sourceTree = "<group>"; };
+		867BAEA916AEC9050033868F /* guiTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextCtrl.h; sourceTree = "<group>"; };
+		867BAEAA16AEC9050033868F /* guiTextEditCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextEditCtrl.cc; sourceTree = "<group>"; };
+		867BAEAB16AEC9050033868F /* guiTextEditCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextEditCtrl.h; sourceTree = "<group>"; };
+		867BAEAC16AEC9050033868F /* guiTextEditSliderCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextEditSliderCtrl.cc; sourceTree = "<group>"; };
+		867BAEAD16AEC9050033868F /* guiTextEditSliderCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextEditSliderCtrl.h; sourceTree = "<group>"; };
+		867BAEAE16AEC9050033868F /* guiTextListCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTextListCtrl.cc; sourceTree = "<group>"; };
+		867BAEAF16AEC9050033868F /* guiTextListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTextListCtrl.h; sourceTree = "<group>"; };
+		867BAEB016AEC9050033868F /* guiTickCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTickCtrl.cc; sourceTree = "<group>"; };
+		867BAEB116AEC9050033868F /* guiTickCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTickCtrl.h; sourceTree = "<group>"; };
+		867BAEB216AEC9050033868F /* guiTreeViewCtrl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTreeViewCtrl.cc; sourceTree = "<group>"; };
+		867BAEB316AEC9050033868F /* guiTreeViewCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTreeViewCtrl.h; sourceTree = "<group>"; };
+		867BAEB416AEC9050033868F /* guiTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guiTypes.cc; sourceTree = "<group>"; };
+		867BAEB516AEC9050033868F /* guiTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guiTypes.h; sourceTree = "<group>"; };
+		867BAEB716AEC9050033868F /* lang.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lang.cc; sourceTree = "<group>"; };
+		867BAEB816AEC9050033868F /* lang.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lang.h; sourceTree = "<group>"; };
+		867BAEB916AEC9050033868F /* messageVector.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messageVector.cc; sourceTree = "<group>"; };
+		867BAEBA16AEC9050033868F /* messageVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messageVector.h; sourceTree = "<group>"; };
+		867BAEBC16AEC9050033868F /* actionMap.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actionMap.cc; sourceTree = "<group>"; };
+		867BAEBD16AEC9050033868F /* actionMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionMap.h; sourceTree = "<group>"; };
+		867BAEBF16AEC9050033868F /* bitStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bitStream.cc; sourceTree = "<group>"; };
+		867BAEC016AEC9050033868F /* bitStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitStream.h; sourceTree = "<group>"; };
+		867BAEC116AEC9050033868F /* bufferStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bufferStream.cc; sourceTree = "<group>"; };
+		867BAEC216AEC9050033868F /* bufferStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bufferStream.h; sourceTree = "<group>"; };
+		867BAEC316AEC9050033868F /* fileObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileObject.cc; sourceTree = "<group>"; };
+		867BAEC416AEC9050033868F /* fileObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileObject.h; sourceTree = "<group>"; };
+		867BAEC516AEC9050033868F /* fileStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileStream.cc; sourceTree = "<group>"; };
+		867BAEC616AEC9050033868F /* fileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStream.h; sourceTree = "<group>"; };
+		867BAEC716AEC9050033868F /* fileStreamObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileStreamObject.cc; sourceTree = "<group>"; };
+		867BAEC816AEC9050033868F /* fileStreamObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileStreamObject.h; sourceTree = "<group>"; };
+		867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileSystemFunctions.cpp; sourceTree = "<group>"; };
+		867BAECA16AEC9050033868F /* filterStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filterStream.cc; sourceTree = "<group>"; };
+		867BAECB16AEC9050033868F /* filterStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filterStream.h; sourceTree = "<group>"; };
+		867BAECC16AEC9050033868F /* memStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memStream.cc; sourceTree = "<group>"; };
+		867BAECD16AEC9050033868F /* memstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memstream.h; sourceTree = "<group>"; };
+		867BAECE16AEC9050033868F /* nStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nStream.cc; sourceTree = "<group>"; };
+		867BAECF16AEC9050033868F /* resizeStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resizeStream.cc; sourceTree = "<group>"; };
+		867BAED016AEC9050033868F /* resizeStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resizeStream.h; sourceTree = "<group>"; };
+		867BAED216AEC9050033868F /* resourceDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resourceDictionary.cc; sourceTree = "<group>"; };
+		867BAED316AEC9050033868F /* resourceManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resourceManager.cc; sourceTree = "<group>"; };
+		867BAED416AEC9050033868F /* resourceManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resourceManager.h; sourceTree = "<group>"; };
+		867BAED516AEC9050033868F /* stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = "<group>"; };
+		867BAED616AEC9050033868F /* streamObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = streamObject.cc; sourceTree = "<group>"; };
+		867BAED716AEC9050033868F /* streamObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = streamObject.h; sourceTree = "<group>"; };
+		867BAED916AEC9050033868F /* centralDir.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = centralDir.cc; sourceTree = "<group>"; };
+		867BAEDA16AEC9050033868F /* centralDir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = centralDir.h; sourceTree = "<group>"; };
+		867BAEDB16AEC9050033868F /* compressor.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compressor.cc; sourceTree = "<group>"; };
+		867BAEDC16AEC9050033868F /* compressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compressor.h; sourceTree = "<group>"; };
+		867BAEDD16AEC9050033868F /* deflate.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deflate.cc; sourceTree = "<group>"; };
+		867BAEDE16AEC9050033868F /* extraField.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extraField.cc; sourceTree = "<group>"; };
+		867BAEDF16AEC9050033868F /* extraField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extraField.h; sourceTree = "<group>"; };
+		867BAEE016AEC9050033868F /* fileHeader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileHeader.cc; sourceTree = "<group>"; };
+		867BAEE116AEC9050033868F /* fileHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileHeader.h; sourceTree = "<group>"; };
+		867BAEE216AEC9050033868F /* stored.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stored.cc; sourceTree = "<group>"; };
+		867BAEE816AEC9050033868F /* zipArchive.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipArchive.cc; sourceTree = "<group>"; };
+		867BAEE916AEC9050033868F /* zipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipArchive.h; sourceTree = "<group>"; };
+		867BAEEA16AEC9050033868F /* zipCryptStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipCryptStream.cc; sourceTree = "<group>"; };
+		867BAEEB16AEC9050033868F /* zipCryptStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipCryptStream.h; sourceTree = "<group>"; };
+		867BAEEC16AEC9050033868F /* zipObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipObject.cc; sourceTree = "<group>"; };
+		867BAEED16AEC9050033868F /* zipObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipObject.h; sourceTree = "<group>"; };
+		867BAEEE16AEC9050033868F /* zipStatFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipStatFilter.h; sourceTree = "<group>"; };
+		867BAEEF16AEC9050033868F /* zipSubStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipSubStream.cc; sourceTree = "<group>"; };
+		867BAEF016AEC9050033868F /* zipSubStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipSubStream.h; sourceTree = "<group>"; };
+		867BAEF116AEC9050033868F /* zipTempStream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zipTempStream.cc; sourceTree = "<group>"; };
+		867BAEF216AEC9050033868F /* zipTempStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zipTempStream.h; sourceTree = "<group>"; };
+		867BAEF416AEC9050033868F /* mathIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathIO.h; sourceTree = "<group>"; };
+		867BAEF516AEC9050033868F /* mathTypes.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mathTypes.cc; sourceTree = "<group>"; };
+		867BAEF616AEC9050033868F /* mathTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathTypes.h; sourceTree = "<group>"; };
+		867BAEF716AEC9050033868F /* mathUtils.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mathUtils.cc; sourceTree = "<group>"; };
+		867BAEF816AEC9050033868F /* mathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathUtils.h; sourceTree = "<group>"; };
+		867BAEF916AEC9050033868F /* mBox.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mBox.cc; sourceTree = "<group>"; };
+		867BAEFA16AEC9050033868F /* mBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mBox.h; sourceTree = "<group>"; };
+		867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mConsoleFunctions.cc; sourceTree = "<group>"; };
+		867BAEFC16AEC9050033868F /* mConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mConstants.h; sourceTree = "<group>"; };
+		867BAEFD16AEC9050033868F /* mMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMath.h; sourceTree = "<group>"; };
+		867BAEFF16AEC9050033868F /* mMath_C.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMath_C.cc; sourceTree = "<group>"; };
+		867BAF0016AEC9050033868F /* mMathAltivec.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMathAltivec.cc; sourceTree = "<group>"; };
+		867BAF0116AEC9050033868F /* mMathAMD.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMathAMD.cc; sourceTree = "<group>"; };
+		867BAF0316AEC9050033868F /* mMathFn.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMathFn.cc; sourceTree = "<group>"; };
+		867BAF0416AEC9050033868F /* mMathFn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMathFn.h; sourceTree = "<group>"; };
+		867BAF0516AEC9050033868F /* mMathSSE.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMathSSE.cc; sourceTree = "<group>"; };
+		867BAF0716AEC9050033868F /* mMatrix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mMatrix.cc; sourceTree = "<group>"; };
+		867BAF0816AEC9050033868F /* mMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mMatrix.h; sourceTree = "<group>"; };
+		867BAF0916AEC9050033868F /* mPlane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mPlane.h; sourceTree = "<group>"; };
+		867BAF0A16AEC9050033868F /* mPlaneTransformer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mPlaneTransformer.cc; sourceTree = "<group>"; };
+		867BAF0B16AEC9050033868F /* mPlaneTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mPlaneTransformer.h; sourceTree = "<group>"; };
+		867BAF0C16AEC9050033868F /* mPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mPoint.h; sourceTree = "<group>"; };
+		867BAF0D16AEC9050033868F /* mQuadPatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mQuadPatch.cc; sourceTree = "<group>"; };
+		867BAF0E16AEC9050033868F /* mQuadPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mQuadPatch.h; sourceTree = "<group>"; };
+		867BAF0F16AEC9050033868F /* mQuat.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mQuat.cc; sourceTree = "<group>"; };
+		867BAF1016AEC9050033868F /* mQuat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mQuat.h; sourceTree = "<group>"; };
+		867BAF1116AEC9050033868F /* mRandom.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mRandom.cc; sourceTree = "<group>"; };
+		867BAF1216AEC9050033868F /* mRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mRandom.h; sourceTree = "<group>"; };
+		867BAF1316AEC9050033868F /* mRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mRect.h; sourceTree = "<group>"; };
+		867BAF1416AEC9050033868F /* mSolver.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mSolver.cc; sourceTree = "<group>"; };
+		867BAF1516AEC9050033868F /* mSphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mSphere.h; sourceTree = "<group>"; };
+		867BAF1616AEC9050033868F /* mSplinePatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mSplinePatch.cc; sourceTree = "<group>"; };
+		867BAF1716AEC9050033868F /* mSplinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mSplinePatch.h; sourceTree = "<group>"; };
+		867BAF1816AEC9050033868F /* rectClipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rectClipper.cpp; sourceTree = "<group>"; };
+		867BAF1916AEC9050033868F /* rectClipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rectClipper.h; sourceTree = "<group>"; };
+		867BAF1B16AEC9050033868F /* dataChunker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataChunker.cc; sourceTree = "<group>"; };
+		867BAF1C16AEC9050033868F /* dataChunker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dataChunker.h; sourceTree = "<group>"; };
+		867BAF1D16AEC9050033868F /* factoryCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = factoryCache.h; sourceTree = "<group>"; };
+		867BAF1E16AEC9050033868F /* frameAllocator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = frameAllocator.cc; sourceTree = "<group>"; };
+		867BAF1F16AEC9050033868F /* frameAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = frameAllocator.h; sourceTree = "<group>"; };
+		867BAF2016AEC9050033868F /* safeDelete.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safeDelete.h; sourceTree = "<group>"; };
+		867BAF2216AEC9050033868F /* dispatcher.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dispatcher.cc; sourceTree = "<group>"; };
+		867BAF2316AEC9050033868F /* dispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dispatcher.h; sourceTree = "<group>"; };
+		867BAF2416AEC9050033868F /* eventManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eventManager.cc; sourceTree = "<group>"; };
+		867BAF2516AEC9050033868F /* eventManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventManager.h; sourceTree = "<group>"; };
+		867BAF2616AEC9050033868F /* message.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = message.cc; sourceTree = "<group>"; };
+		867BAF2716AEC9050033868F /* message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = message.h; sourceTree = "<group>"; };
+		867BAF2816AEC9050033868F /* messageForwarder.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messageForwarder.cc; sourceTree = "<group>"; };
+		867BAF2916AEC9050033868F /* messageForwarder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messageForwarder.h; sourceTree = "<group>"; };
+		867BAF2A16AEC9050033868F /* scriptMsgListener.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scriptMsgListener.cc; sourceTree = "<group>"; };
+		867BAF2B16AEC9050033868F /* scriptMsgListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scriptMsgListener.h; sourceTree = "<group>"; };
+		867BAF2D16AEC9050033868F /* moduleCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleCallbacks.h; sourceTree = "<group>"; };
+		867BAF2E16AEC9050033868F /* moduleDefinition.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moduleDefinition.cc; sourceTree = "<group>"; };
+		867BAF2F16AEC9050033868F /* moduleDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleDefinition.h; sourceTree = "<group>"; };
+		867BAF3016AEC9050033868F /* moduleDefinition_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleDefinition_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAF3116AEC9050033868F /* moduleManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moduleManager.cc; sourceTree = "<group>"; };
+		867BAF3216AEC9050033868F /* moduleManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleManager.h; sourceTree = "<group>"; };
+		867BAF3316AEC9050033868F /* moduleManager_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleManager_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAF3416AEC9050033868F /* moduleMergeDefinition.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moduleMergeDefinition.cc; sourceTree = "<group>"; };
+		867BAF3516AEC9050033868F /* moduleMergeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moduleMergeDefinition.h; sourceTree = "<group>"; };
+		867BAF3616AEC9050033868F /* tamlModuleIdUpdateVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlModuleIdUpdateVisitor.h; sourceTree = "<group>"; };
+		867BAF3816AEC9050033868F /* connectionProtocol.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = connectionProtocol.cc; sourceTree = "<group>"; };
+		867BAF3916AEC9050033868F /* connectionProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionProtocol.h; sourceTree = "<group>"; };
+		867BAF3A16AEC9050033868F /* connectionStringTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = connectionStringTable.cc; sourceTree = "<group>"; };
+		867BAF3B16AEC9050033868F /* connectionStringTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionStringTable.h; sourceTree = "<group>"; };
+		867BAF3C16AEC9050033868F /* httpObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = httpObject.cc; sourceTree = "<group>"; };
+		867BAF3D16AEC9050033868F /* httpObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = httpObject.h; sourceTree = "<group>"; };
+		867BAF3E16AEC9050033868F /* netConnection.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netConnection.cc; sourceTree = "<group>"; };
+		867BAF3F16AEC9050033868F /* netConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netConnection.h; sourceTree = "<group>"; };
+		867BAF4016AEC9050033868F /* netDownload.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netDownload.cc; sourceTree = "<group>"; };
+		867BAF4116AEC9050033868F /* netEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netEvent.cc; sourceTree = "<group>"; };
+		867BAF4216AEC9050033868F /* netGhost.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netGhost.cc; sourceTree = "<group>"; };
+		867BAF4316AEC9050033868F /* netInterface.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netInterface.cc; sourceTree = "<group>"; };
+		867BAF4416AEC9050033868F /* netInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netInterface.h; sourceTree = "<group>"; };
+		867BAF4516AEC9050033868F /* netObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netObject.cc; sourceTree = "<group>"; };
+		867BAF4616AEC9050033868F /* netObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netObject.h; sourceTree = "<group>"; };
+		867BAF4716AEC9050033868F /* netStringTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netStringTable.cc; sourceTree = "<group>"; };
+		867BAF4816AEC9050033868F /* netStringTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = netStringTable.h; sourceTree = "<group>"; };
+		867BAF4916AEC9050033868F /* netTest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = netTest.cc; sourceTree = "<group>"; };
+		867BAF4A16AEC9050033868F /* networkProcessList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = networkProcessList.cc; sourceTree = "<group>"; };
+		867BAF4B16AEC9050033868F /* networkProcessList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = networkProcessList.h; sourceTree = "<group>"; };
+		867BAF4C16AEC9050033868F /* RemoteCommandEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteCommandEvent.cc; sourceTree = "<group>"; };
+		867BAF4D16AEC9050033868F /* serverQuery.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = serverQuery.cc; sourceTree = "<group>"; };
+		867BAF4E16AEC9050033868F /* serverQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serverQuery.h; sourceTree = "<group>"; };
+		867BAF4F16AEC9050033868F /* tcpObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tcpObject.cc; sourceTree = "<group>"; };
+		867BAF5016AEC9050033868F /* tcpObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tcpObject.h; sourceTree = "<group>"; };
+		867BAF5116AEC9050033868F /* telnetConsole.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telnetConsole.cc; sourceTree = "<group>"; };
+		867BAF5216AEC9050033868F /* telnetConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telnetConsole.h; sourceTree = "<group>"; };
+		867BAF5416AEC9050033868F /* SimXMLDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimXMLDocument.cpp; sourceTree = "<group>"; };
+		867BAF5516AEC9050033868F /* SimXMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimXMLDocument.h; sourceTree = "<group>"; };
+		867BAF5716AEC9050033868F /* taml.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taml.cc; sourceTree = "<group>"; };
+		867BAF5816AEC9050033868F /* taml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml.h; sourceTree = "<group>"; };
+		867BAF5916AEC9050033868F /* taml_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taml_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAF5A16AEC9050033868F /* tamlBinaryReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryReader.cc; sourceTree = "<group>"; };
+		867BAF5B16AEC9050033868F /* tamlBinaryReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryReader.h; sourceTree = "<group>"; };
+		867BAF5C16AEC9050033868F /* tamlBinaryWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlBinaryWriter.cc; sourceTree = "<group>"; };
+		867BAF5D16AEC9050033868F /* tamlBinaryWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlBinaryWriter.h; sourceTree = "<group>"; };
+		867BAF5E16AEC9050033868F /* tamlCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlCallbacks.h; sourceTree = "<group>"; };
+		867BAF5F16AEC9050033868F /* tamlChildren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlChildren.h; sourceTree = "<group>"; };
+		867BAF6216AEC9050033868F /* tamlWriteNode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlWriteNode.cc; sourceTree = "<group>"; };
+		867BAF6316AEC9050033868F /* tamlWriteNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlWriteNode.h; sourceTree = "<group>"; };
+		867BAF6416AEC9050033868F /* tamlXmlParser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlParser.cc; sourceTree = "<group>"; };
+		867BAF6516AEC9050033868F /* tamlXmlParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlParser.h; sourceTree = "<group>"; };
+		867BAF6616AEC9050033868F /* tamlXmlReader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlReader.cc; sourceTree = "<group>"; };
+		867BAF6716AEC9050033868F /* tamlXmlReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlReader.h; sourceTree = "<group>"; };
+		867BAF6816AEC9050033868F /* tamlXmlVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlVisitor.h; sourceTree = "<group>"; };
+		867BAF6916AEC9050033868F /* tamlXmlWriter.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tamlXmlWriter.cc; sourceTree = "<group>"; };
+		867BAF6A16AEC9050033868F /* tamlXmlWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tamlXmlWriter.h; sourceTree = "<group>"; };
+		867BAF6C16AEC9050033868F /* tinystr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinystr.cpp; sourceTree = "<group>"; };
+		867BAF6D16AEC9050033868F /* tinystr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinystr.h; sourceTree = "<group>"; };
+		867BAF6E16AEC9050033868F /* tinyxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxml.cpp; sourceTree = "<group>"; };
+		867BAF6F16AEC9050033868F /* tinyxml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tinyxml.h; sourceTree = "<group>"; };
+		867BAF7016AEC9050033868F /* tinyxmlerror.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlerror.cpp; sourceTree = "<group>"; };
+		867BAF7116AEC9050033868F /* tinyxmlparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = "<group>"; };
+		867BAF7316AEC9050033868F /* CursorManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CursorManager.cc; sourceTree = "<group>"; };
+		867BAF7416AEC9050033868F /* eaxtypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eaxtypes.h; sourceTree = "<group>"; };
+		867BAF7516AEC9050033868F /* event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = "<group>"; };
+		867BAF7616AEC9050033868F /* GLCoreFunc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLCoreFunc.h; sourceTree = "<group>"; };
+		867BAF7716AEC9050033868F /* GLExtFunc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLExtFunc.h; sourceTree = "<group>"; };
+		867BAF7816AEC9050033868F /* GLUFunc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLUFunc.h; sourceTree = "<group>"; };
+		867BAF7A16AEC9050033868F /* popupMenu.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = popupMenu.cc; sourceTree = "<group>"; };
+		867BAF7B16AEC9050033868F /* popupMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popupMenu.h; sourceTree = "<group>"; };
+		867BAF7D16AEC9050033868F /* fileDialog.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileDialog.cc; sourceTree = "<group>"; };
+		867BAF7E16AEC9050033868F /* fileDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileDialog.h; sourceTree = "<group>"; };
+		867BAF7F16AEC9050033868F /* fileDialog_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileDialog_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAF8016AEC9050033868F /* msgBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = msgBox.cpp; sourceTree = "<group>"; };
+		867BAF8116AEC9050033868F /* msgBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msgBox.h; sourceTree = "<group>"; };
+		867BAF8216AEC9050033868F /* platform.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platform.cc; sourceTree = "<group>"; };
+		867BAF8316AEC9050033868F /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
+		867BAF8416AEC9050033868F /* platform_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAF8516AEC9050033868F /* platformAL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAL.h; sourceTree = "<group>"; };
+		867BAF8616AEC9050033868F /* platformAssert.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformAssert.cc; sourceTree = "<group>"; };
+		867BAF8716AEC9050033868F /* platformAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAssert.h; sourceTree = "<group>"; };
+		867BAF8816AEC9050033868F /* platformAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformAudio.h; sourceTree = "<group>"; };
+		867BAF8916AEC9050033868F /* platformCPU.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformCPU.cc; sourceTree = "<group>"; };
+		867BAF8A16AEC9050033868F /* platformCPU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformCPU.h; sourceTree = "<group>"; };
+		867BAF8C16AEC9050033868F /* platformEndian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformEndian.h; sourceTree = "<group>"; };
+		867BAF8D16AEC9050033868F /* platformFileIO.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformFileIO.cc; sourceTree = "<group>"; };
+		867BAF8E16AEC9050033868F /* platformFileIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFileIO.h; sourceTree = "<group>"; };
+		867BAF8F16AEC9050033868F /* platformFont.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformFont.cc; sourceTree = "<group>"; };
+		867BAF9016AEC9050033868F /* platformFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformFont.h; sourceTree = "<group>"; };
+		867BAF9116AEC9050033868F /* platformGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformGL.h; sourceTree = "<group>"; };
+		867BAF9216AEC9050033868F /* platformInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformInput.h; sourceTree = "<group>"; };
+		867BAF9316AEC9050033868F /* platformInput_ScriptBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformInput_ScriptBinding.h; sourceTree = "<group>"; };
+		867BAF9416AEC9050033868F /* platformMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformMath.h; sourceTree = "<group>"; };
+		867BAF9516AEC9050033868F /* platformMemory.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformMemory.cc; sourceTree = "<group>"; };
+		867BAF9616AEC9050033868F /* platformMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformMemory.h; sourceTree = "<group>"; };
+		867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetAsync.unix.cc; sourceTree = "<group>"; };
+		867BAF9816AEC9050033868F /* platformNetAsync.unix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformNetAsync.unix.h; sourceTree = "<group>"; };
+		867BAF9916AEC9050033868F /* platformNetwork.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformNetwork.cc; sourceTree = "<group>"; };
+		867BAF9A16AEC9050033868F /* platformNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformNetwork.h; sourceTree = "<group>"; };
+		867BAF9B16AEC9050033868F /* platformSemaphore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformSemaphore.h; sourceTree = "<group>"; };
+		867BAF9C16AEC9050033868F /* platformString.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformString.cc; sourceTree = "<group>"; };
+		867BAF9D16AEC9050033868F /* platformString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformString.h; sourceTree = "<group>"; };
+		867BAF9E16AEC9050033868F /* platformTimeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformTimeManager.h; sourceTree = "<group>"; };
+		867BAF9F16AEC9050033868F /* platformTLS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformTLS.h; sourceTree = "<group>"; };
+		867BAFA016AEC9050033868F /* platformVFS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformVFS.h; sourceTree = "<group>"; };
+		867BAFA116AEC9050033868F /* platformVideo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platformVideo.cc; sourceTree = "<group>"; };
+		867BAFA216AEC9050033868F /* platformVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platformVideo.h; sourceTree = "<group>"; };
+		867BAFA416AEC9050033868F /* mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mutex.h; sourceTree = "<group>"; };
+		867BAFA516AEC9050033868F /* semaphore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = semaphore.h; sourceTree = "<group>"; };
+		867BAFA616AEC9050033868F /* thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = "<group>"; };
+		867BAFA716AEC9050033868F /* Tickable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Tickable.cc; sourceTree = "<group>"; };
+		867BAFA816AEC9050033868F /* Tickable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tickable.h; sourceTree = "<group>"; };
+		867BAFA916AEC9050033868F /* types.arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.arm.h; sourceTree = "<group>"; };
+		867BAFAA16AEC9050033868F /* types.codewarrior.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.codewarrior.h; sourceTree = "<group>"; };
+		867BAFAB16AEC9050033868F /* types.gcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.gcc.h; sourceTree = "<group>"; };
+		867BAFAC16AEC9050033868F /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
+		867BAFAD16AEC9050033868F /* types.posix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.posix.h; sourceTree = "<group>"; };
+		867BAFAE16AEC9050033868F /* types.ppc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.ppc.h; sourceTree = "<group>"; };
+		867BAFAF16AEC9050033868F /* types.visualc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.visualc.h; sourceTree = "<group>"; };
+		867BAFB016AEC9050033868F /* types.win32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.win32.h; sourceTree = "<group>"; };
+		867BAFB116AEC9050033868F /* typesLinux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typesLinux.h; sourceTree = "<group>"; };
+		867BAFB216AEC9050033868F /* typesPPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typesPPC.h; sourceTree = "<group>"; };
+		867BAFB316AEC9050033868F /* typesWin32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typesWin32.h; sourceTree = "<group>"; };
+		867BAFB416AEC9050033868F /* typesX86UNIX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typesX86UNIX.h; sourceTree = "<group>"; };
+		867BAFB616AEC9050033868F /* scriptGroup.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scriptGroup.cc; sourceTree = "<group>"; };
+		867BAFB716AEC9050033868F /* scriptGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scriptGroup.h; sourceTree = "<group>"; };
+		867BAFB816AEC9050033868F /* scriptObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scriptObject.cc; sourceTree = "<group>"; };
+		867BAFB916AEC9050033868F /* scriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scriptObject.h; sourceTree = "<group>"; };
+		867BAFBA16AEC9050033868F /* simBase.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simBase.cc; sourceTree = "<group>"; };
+		867BAFBB16AEC9050033868F /* simBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simBase.h; sourceTree = "<group>"; };
+		867BAFBC16AEC9050033868F /* simConsoleEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simConsoleEvent.cc; sourceTree = "<group>"; };
+		867BAFBD16AEC9050033868F /* simConsoleEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simConsoleEvent.h; sourceTree = "<group>"; };
+		867BAFBE16AEC9050033868F /* simConsoleThreadExecEvent.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simConsoleThreadExecEvent.cc; sourceTree = "<group>"; };
+		867BAFBF16AEC9050033868F /* simConsoleThreadExecEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simConsoleThreadExecEvent.h; sourceTree = "<group>"; };
+		867BAFC016AEC9050033868F /* simDatablock.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simDatablock.cc; sourceTree = "<group>"; };
+		867BAFC116AEC9050033868F /* simDatablock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDatablock.h; sourceTree = "<group>"; };
+		867BAFC216AEC9050033868F /* simDatablockGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDatablockGroup.h; sourceTree = "<group>"; };
+		867BAFC316AEC9050033868F /* simDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simDictionary.cc; sourceTree = "<group>"; };
+		867BAFC416AEC9050033868F /* simDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simDictionary.h; sourceTree = "<group>"; };
+		867BAFC516AEC9050033868F /* simEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simEvent.h; sourceTree = "<group>"; };
+		867BAFC616AEC9050033868F /* simFieldDictionary.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simFieldDictionary.cc; sourceTree = "<group>"; };
+		867BAFC716AEC9050033868F /* simFieldDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simFieldDictionary.h; sourceTree = "<group>"; };
+		867BAFC816AEC9050033868F /* simManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simManager.cc; sourceTree = "<group>"; };
+		867BAFC916AEC9050033868F /* simObject.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simObject.cc; sourceTree = "<group>"; };
+		867BAFCA16AEC9050033868F /* simObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObject.h; sourceTree = "<group>"; };
+		867BAFCB16AEC9050033868F /* SimObjectList.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimObjectList.cc; sourceTree = "<group>"; };
+		867BAFCC16AEC9050033868F /* SimObjectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimObjectList.h; sourceTree = "<group>"; };
+		867BAFCD16AEC9050033868F /* simObjectPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simObjectPtr.h; sourceTree = "<group>"; };
+		867BAFCE16AEC9050033868F /* simSerialize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simSerialize.cpp; sourceTree = "<group>"; };
+		867BAFCF16AEC9050033868F /* simSet.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simSet.cc; sourceTree = "<group>"; };
+		867BAFD016AEC9050033868F /* simSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simSet.h; sourceTree = "<group>"; };
+		867BAFD216AEC9050033868F /* findMatch.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = findMatch.cc; sourceTree = "<group>"; };
+		867BAFD316AEC9050033868F /* findMatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = findMatch.h; sourceTree = "<group>"; };
+		867BAFD416AEC9050033868F /* stringBuffer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringBuffer.cc; sourceTree = "<group>"; };
+		867BAFD516AEC9050033868F /* stringBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringBuffer.h; sourceTree = "<group>"; };
+		867BAFD616AEC9050033868F /* stringStack.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringStack.cc; sourceTree = "<group>"; };
+		867BAFD716AEC9050033868F /* stringStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringStack.h; sourceTree = "<group>"; };
+		867BAFD816AEC9050033868F /* stringTable.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringTable.cc; sourceTree = "<group>"; };
+		867BAFD916AEC9050033868F /* stringTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringTable.h; sourceTree = "<group>"; };
+		867BAFDA16AEC9050033868F /* stringUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringUnit.cpp; sourceTree = "<group>"; };
+		867BAFDB16AEC9050033868F /* stringUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringUnit.h; sourceTree = "<group>"; };
+		867BAFDC16AEC9050033868F /* unicode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unicode.cc; sourceTree = "<group>"; };
+		867BAFDD16AEC9050033868F /* unicode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unicode.h; sourceTree = "<group>"; };
+		867BAFDE16AEC9050033868F /* torqueConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = torqueConfig.h; path = ../../../source/torqueConfig.h; sourceTree = "<group>"; };
+		867BB11D16AEC9FC0033868F /* Box2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Box2D.h; sourceTree = "<group>"; };
+		867BB11F16AEC9FC0033868F /* b2BroadPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BroadPhase.cpp; sourceTree = "<group>"; };
+		867BB12016AEC9FC0033868F /* b2BroadPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BroadPhase.h; sourceTree = "<group>"; };
+		867BB12116AEC9FC0033868F /* b2CollideCircle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideCircle.cpp; sourceTree = "<group>"; };
+		867BB12216AEC9FC0033868F /* b2CollideEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollideEdge.cpp; sourceTree = "<group>"; };
+		867BB12316AEC9FC0033868F /* b2CollidePolygon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CollidePolygon.cpp; sourceTree = "<group>"; };
+		867BB12416AEC9FC0033868F /* b2Collision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Collision.cpp; sourceTree = "<group>"; };
+		867BB12516AEC9FC0033868F /* b2Collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
+		867BB12616AEC9FC0033868F /* b2Distance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Distance.cpp; sourceTree = "<group>"; };
+		867BB12716AEC9FC0033868F /* b2Distance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Distance.h; sourceTree = "<group>"; };
+		867BB12816AEC9FC0033868F /* b2DynamicTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DynamicTree.cpp; sourceTree = "<group>"; };
+		867BB12916AEC9FC0033868F /* b2DynamicTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DynamicTree.h; sourceTree = "<group>"; };
+		867BB12A16AEC9FC0033868F /* b2TimeOfImpact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2TimeOfImpact.cpp; sourceTree = "<group>"; };
+		867BB12B16AEC9FC0033868F /* b2TimeOfImpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeOfImpact.h; sourceTree = "<group>"; };
+		867BB12D16AEC9FC0033868F /* b2ChainShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainShape.cpp; sourceTree = "<group>"; };
+		867BB12E16AEC9FC0033868F /* b2ChainShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainShape.h; sourceTree = "<group>"; };
+		867BB12F16AEC9FC0033868F /* b2CircleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleShape.cpp; sourceTree = "<group>"; };
+		867BB13016AEC9FC0033868F /* b2CircleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleShape.h; sourceTree = "<group>"; };
+		867BB13116AEC9FC0033868F /* b2EdgeShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeShape.cpp; sourceTree = "<group>"; };
+		867BB13216AEC9FC0033868F /* b2EdgeShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeShape.h; sourceTree = "<group>"; };
+		867BB13316AEC9FC0033868F /* b2PolygonShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonShape.cpp; sourceTree = "<group>"; };
+		867BB13416AEC9FC0033868F /* b2PolygonShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonShape.h; sourceTree = "<group>"; };
+		867BB13516AEC9FC0033868F /* b2Shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Shape.h; sourceTree = "<group>"; };
+		867BB13716AEC9FC0033868F /* b2BlockAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2BlockAllocator.cpp; sourceTree = "<group>"; };
+		867BB13816AEC9FC0033868F /* b2BlockAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2BlockAllocator.h; sourceTree = "<group>"; };
+		867BB13916AEC9FC0033868F /* b2Draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Draw.cpp; sourceTree = "<group>"; };
+		867BB13A16AEC9FC0033868F /* b2Draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Draw.h; sourceTree = "<group>"; };
+		867BB13B16AEC9FC0033868F /* b2GrowableStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GrowableStack.h; sourceTree = "<group>"; };
+		867BB13C16AEC9FC0033868F /* b2Math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Math.cpp; sourceTree = "<group>"; };
+		867BB13D16AEC9FC0033868F /* b2Math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Math.h; sourceTree = "<group>"; };
+		867BB13E16AEC9FC0033868F /* b2Settings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Settings.cpp; sourceTree = "<group>"; };
+		867BB13F16AEC9FC0033868F /* b2Settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Settings.h; sourceTree = "<group>"; };
+		867BB14016AEC9FC0033868F /* b2StackAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2StackAllocator.cpp; sourceTree = "<group>"; };
+		867BB14116AEC9FC0033868F /* b2StackAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2StackAllocator.h; sourceTree = "<group>"; };
+		867BB14216AEC9FC0033868F /* b2Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Timer.cpp; sourceTree = "<group>"; };
+		867BB14316AEC9FC0033868F /* b2Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Timer.h; sourceTree = "<group>"; };
+		867BB14516AEC9FC0033868F /* b2Body.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Body.cpp; sourceTree = "<group>"; };
+		867BB14616AEC9FC0033868F /* b2Body.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Body.h; sourceTree = "<group>"; };
+		867BB14716AEC9FC0033868F /* b2ContactManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactManager.cpp; sourceTree = "<group>"; };
+		867BB14816AEC9FC0033868F /* b2ContactManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactManager.h; sourceTree = "<group>"; };
+		867BB14916AEC9FC0033868F /* b2Fixture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Fixture.cpp; sourceTree = "<group>"; };
+		867BB14A16AEC9FC0033868F /* b2Fixture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Fixture.h; sourceTree = "<group>"; };
+		867BB14B16AEC9FC0033868F /* b2Island.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
+		867BB14C16AEC9FC0033868F /* b2Island.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Island.h; sourceTree = "<group>"; };
+		867BB14D16AEC9FC0033868F /* b2TimeStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2TimeStep.h; sourceTree = "<group>"; };
+		867BB14E16AEC9FC0033868F /* b2World.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2World.cpp; sourceTree = "<group>"; };
+		867BB14F16AEC9FC0033868F /* b2World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2World.h; sourceTree = "<group>"; };
+		867BB15016AEC9FC0033868F /* b2WorldCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WorldCallbacks.cpp; sourceTree = "<group>"; };
+		867BB15116AEC9FC0033868F /* b2WorldCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WorldCallbacks.h; sourceTree = "<group>"; };
+		867BB15316AEC9FC0033868F /* b2ChainAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndCircleContact.cpp; sourceTree = "<group>"; };
+		867BB15416AEC9FC0033868F /* b2ChainAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainAndCircleContact.h; sourceTree = "<group>"; };
+		867BB15516AEC9FC0033868F /* b2ChainAndPolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ChainAndPolygonContact.cpp; sourceTree = "<group>"; };
+		867BB15616AEC9FC0033868F /* b2ChainAndPolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ChainAndPolygonContact.h; sourceTree = "<group>"; };
+		867BB15716AEC9FC0033868F /* b2CircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
+		867BB15816AEC9FC0033868F /* b2CircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2CircleContact.h; sourceTree = "<group>"; };
+		867BB15916AEC9FC0033868F /* b2Contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Contact.cpp; sourceTree = "<group>"; };
+		867BB15A16AEC9FC0033868F /* b2Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Contact.h; sourceTree = "<group>"; };
+		867BB15B16AEC9FC0033868F /* b2ContactSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2ContactSolver.cpp; sourceTree = "<group>"; };
+		867BB15C16AEC9FC0033868F /* b2ContactSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2ContactSolver.h; sourceTree = "<group>"; };
+		867BB15D16AEC9FC0033868F /* b2EdgeAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndCircleContact.cpp; sourceTree = "<group>"; };
+		867BB15E16AEC9FC0033868F /* b2EdgeAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndCircleContact.h; sourceTree = "<group>"; };
+		867BB15F16AEC9FC0033868F /* b2EdgeAndPolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2EdgeAndPolygonContact.cpp; sourceTree = "<group>"; };
+		867BB16016AEC9FC0033868F /* b2EdgeAndPolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2EdgeAndPolygonContact.h; sourceTree = "<group>"; };
+		867BB16116AEC9FC0033868F /* b2PolygonAndCircleContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonAndCircleContact.cpp; sourceTree = "<group>"; };
+		867BB16216AEC9FC0033868F /* b2PolygonAndCircleContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonAndCircleContact.h; sourceTree = "<group>"; };
+		867BB16316AEC9FC0033868F /* b2PolygonContact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PolygonContact.cpp; sourceTree = "<group>"; };
+		867BB16416AEC9FC0033868F /* b2PolygonContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PolygonContact.h; sourceTree = "<group>"; };
+		867BB16616AEC9FC0033868F /* b2DistanceJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2DistanceJoint.cpp; sourceTree = "<group>"; };
+		867BB16716AEC9FC0033868F /* b2DistanceJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2DistanceJoint.h; sourceTree = "<group>"; };
+		867BB16816AEC9FC0033868F /* b2FrictionJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2FrictionJoint.cpp; sourceTree = "<group>"; };
+		867BB16916AEC9FC0033868F /* b2FrictionJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2FrictionJoint.h; sourceTree = "<group>"; };
+		867BB16A16AEC9FC0033868F /* b2GearJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2GearJoint.cpp; sourceTree = "<group>"; };
+		867BB16B16AEC9FC0033868F /* b2GearJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2GearJoint.h; sourceTree = "<group>"; };
+		867BB16C16AEC9FC0033868F /* b2Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Joint.cpp; sourceTree = "<group>"; };
+		867BB16D16AEC9FC0033868F /* b2Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Joint.h; sourceTree = "<group>"; };
+		867BB16E16AEC9FC0033868F /* b2MotorJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MotorJoint.cpp; sourceTree = "<group>"; };
+		867BB16F16AEC9FC0033868F /* b2MotorJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MotorJoint.h; sourceTree = "<group>"; };
+		867BB17016AEC9FC0033868F /* b2MouseJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2MouseJoint.cpp; sourceTree = "<group>"; };
+		867BB17116AEC9FC0033868F /* b2MouseJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2MouseJoint.h; sourceTree = "<group>"; };
+		867BB17216AEC9FC0033868F /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
+		867BB17316AEC9FC0033868F /* b2PrismaticJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PrismaticJoint.h; sourceTree = "<group>"; };
+		867BB17416AEC9FC0033868F /* b2PulleyJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2PulleyJoint.cpp; sourceTree = "<group>"; };
+		867BB17516AEC9FC0033868F /* b2PulleyJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2PulleyJoint.h; sourceTree = "<group>"; };
+		867BB17616AEC9FC0033868F /* b2RevoluteJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RevoluteJoint.cpp; sourceTree = "<group>"; };
+		867BB17716AEC9FC0033868F /* b2RevoluteJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RevoluteJoint.h; sourceTree = "<group>"; };
+		867BB17816AEC9FC0033868F /* b2RopeJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2RopeJoint.cpp; sourceTree = "<group>"; };
+		867BB17916AEC9FC0033868F /* b2RopeJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2RopeJoint.h; sourceTree = "<group>"; };
+		867BB17A16AEC9FC0033868F /* b2WeldJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WeldJoint.cpp; sourceTree = "<group>"; };
+		867BB17B16AEC9FC0033868F /* b2WeldJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WeldJoint.h; sourceTree = "<group>"; };
+		867BB17C16AEC9FC0033868F /* b2WheelJoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2WheelJoint.cpp; sourceTree = "<group>"; };
+		867BB17D16AEC9FC0033868F /* b2WheelJoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2WheelJoint.h; sourceTree = "<group>"; };
+		867BB1AD16AEC9FC0033868F /* b2Rope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = b2Rope.cpp; sourceTree = "<group>"; };
+		867BB1AE16AEC9FC0033868F /* b2Rope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = b2Rope.h; sourceTree = "<group>"; };
+		867BB20916AECA070033868F /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../../lib/lpng/png.c; sourceTree = "<group>"; };
+		867BB20A16AECA070033868F /* pngerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngerror.c; path = ../../lib/lpng/pngerror.c; sourceTree = "<group>"; };
+		867BB20B16AECA070033868F /* pngget.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = ../../lib/lpng/pngget.c; sourceTree = "<group>"; };
+		867BB20C16AECA070033868F /* pngmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngmem.c; path = ../../lib/lpng/pngmem.c; sourceTree = "<group>"; };
+		867BB20D16AECA070033868F /* pngpread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = ../../lib/lpng/pngpread.c; sourceTree = "<group>"; };
+		867BB20E16AECA070033868F /* pngread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngread.c; path = ../../lib/lpng/pngread.c; sourceTree = "<group>"; };
+		867BB20F16AECA070033868F /* pngrio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = ../../lib/lpng/pngrio.c; sourceTree = "<group>"; };
+		867BB21016AECA070033868F /* pngrtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrtran.c; path = ../../lib/lpng/pngrtran.c; sourceTree = "<group>"; };
+		867BB21116AECA070033868F /* pngrutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = ../../lib/lpng/pngrutil.c; sourceTree = "<group>"; };
+		867BB21216AECA070033868F /* pngset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngset.c; path = ../../lib/lpng/pngset.c; sourceTree = "<group>"; };
+		867BB21316AECA070033868F /* pngtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = ../../lib/lpng/pngtrans.c; sourceTree = "<group>"; };
+		867BB21416AECA070033868F /* pngwio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwio.c; path = ../../lib/lpng/pngwio.c; sourceTree = "<group>"; };
+		867BB21516AECA070033868F /* pngwrite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwrite.c; path = ../../lib/lpng/pngwrite.c; sourceTree = "<group>"; };
+		867BB21616AECA070033868F /* pngwtran.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = ../../lib/lpng/pngwtran.c; sourceTree = "<group>"; };
+		867BB21716AECA070033868F /* pngwutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pngwutil.c; path = ../../lib/lpng/pngwutil.c; sourceTree = "<group>"; };
+		867BB22716AECA110033868F /* jcapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = ../../lib/ljpeg/jcapimin.c; sourceTree = "<group>"; };
+		867BB22816AECA110033868F /* jcapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = ../../lib/ljpeg/jcapistd.c; sourceTree = "<group>"; };
+		867BB22916AECA110033868F /* jccoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jccoefct.c; path = ../../lib/ljpeg/jccoefct.c; sourceTree = "<group>"; };
+		867BB22A16AECA110033868F /* jccolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = ../../lib/ljpeg/jccolor.c; sourceTree = "<group>"; };
+		867BB22B16AECA110033868F /* jcdctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcdctmgr.c; path = ../../lib/ljpeg/jcdctmgr.c; sourceTree = "<group>"; };
+		867BB22C16AECA110033868F /* jchuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = ../../lib/ljpeg/jchuff.c; sourceTree = "<group>"; };
+		867BB22D16AECA110033868F /* jcinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcinit.c; path = ../../lib/ljpeg/jcinit.c; sourceTree = "<group>"; };
+		867BB22E16AECA110033868F /* jcmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmainct.c; path = ../../lib/ljpeg/jcmainct.c; sourceTree = "<group>"; };
+		867BB22F16AECA110033868F /* jcmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmarker.c; path = ../../lib/ljpeg/jcmarker.c; sourceTree = "<group>"; };
+		867BB23016AECA110033868F /* jcmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcmaster.c; path = ../../lib/ljpeg/jcmaster.c; sourceTree = "<group>"; };
+		867BB23116AECA110033868F /* jcomapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = ../../lib/ljpeg/jcomapi.c; sourceTree = "<group>"; };
+		867BB23216AECA110033868F /* jcparam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = ../../lib/ljpeg/jcparam.c; sourceTree = "<group>"; };
+		867BB23316AECA110033868F /* jcphuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = ../../lib/ljpeg/jcphuff.c; sourceTree = "<group>"; };
+		867BB23416AECA110033868F /* jcprepct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = ../../lib/ljpeg/jcprepct.c; sourceTree = "<group>"; };
+		867BB23516AECA110033868F /* jcsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = ../../lib/ljpeg/jcsample.c; sourceTree = "<group>"; };
+		867BB23616AECA110033868F /* jctrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = ../../lib/ljpeg/jctrans.c; sourceTree = "<group>"; };
+		867BB23716AECA110033868F /* jdapimin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = ../../lib/ljpeg/jdapimin.c; sourceTree = "<group>"; };
+		867BB23816AECA110033868F /* jdapistd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdapistd.c; path = ../../lib/ljpeg/jdapistd.c; sourceTree = "<group>"; };
+		867BB23916AECA110033868F /* jdatadst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdatadst.c; path = ../../lib/ljpeg/jdatadst.c; sourceTree = "<group>"; };
+		867BB23A16AECA110033868F /* jdatasrc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = ../../lib/ljpeg/jdatasrc.c; sourceTree = "<group>"; };
+		867BB23B16AECA110033868F /* jdcoefct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = ../../lib/ljpeg/jdcoefct.c; sourceTree = "<group>"; };
+		867BB23C16AECA110033868F /* jdcolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdcolor.c; path = ../../lib/ljpeg/jdcolor.c; sourceTree = "<group>"; };
+		867BB23D16AECA110033868F /* jddctmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = ../../lib/ljpeg/jddctmgr.c; sourceTree = "<group>"; };
+		867BB23E16AECA110033868F /* jdhuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = ../../lib/ljpeg/jdhuff.c; sourceTree = "<group>"; };
+		867BB23F16AECA110033868F /* jdinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdinput.c; path = ../../lib/ljpeg/jdinput.c; sourceTree = "<group>"; };
+		867BB24016AECA110033868F /* jdmainct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmainct.c; path = ../../lib/ljpeg/jdmainct.c; sourceTree = "<group>"; };
+		867BB24116AECA110033868F /* jdmarker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmarker.c; path = ../../lib/ljpeg/jdmarker.c; sourceTree = "<group>"; };
+		867BB24216AECA110033868F /* jdmaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmaster.c; path = ../../lib/ljpeg/jdmaster.c; sourceTree = "<group>"; };
+		867BB24316AECA110033868F /* jdmerge.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdmerge.c; path = ../../lib/ljpeg/jdmerge.c; sourceTree = "<group>"; };
+		867BB24416AECA110033868F /* jdphuff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdphuff.c; path = ../../lib/ljpeg/jdphuff.c; sourceTree = "<group>"; };
+		867BB24516AECA110033868F /* jdpostct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = ../../lib/ljpeg/jdpostct.c; sourceTree = "<group>"; };
+		867BB24616AECA110033868F /* jdsample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdsample.c; path = ../../lib/ljpeg/jdsample.c; sourceTree = "<group>"; };
+		867BB24716AECA110033868F /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdtrans.c; path = ../../lib/ljpeg/jdtrans.c; sourceTree = "<group>"; };
+		867BB24816AECA110033868F /* jerror.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jerror.c; path = ../../lib/ljpeg/jerror.c; sourceTree = "<group>"; };
+		867BB24916AECA110033868F /* jfdctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctflt.c; path = ../../lib/ljpeg/jfdctflt.c; sourceTree = "<group>"; };
+		867BB24A16AECA110033868F /* jfdctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctfst.c; path = ../../lib/ljpeg/jfdctfst.c; sourceTree = "<group>"; };
+		867BB24B16AECA110033868F /* jfdctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jfdctint.c; path = ../../lib/ljpeg/jfdctint.c; sourceTree = "<group>"; };
+		867BB24C16AECA110033868F /* jidctflt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = ../../lib/ljpeg/jidctflt.c; sourceTree = "<group>"; };
+		867BB24D16AECA110033868F /* jidctfst.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = ../../lib/ljpeg/jidctfst.c; sourceTree = "<group>"; };
+		867BB24E16AECA110033868F /* jidctint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctint.c; path = ../../lib/ljpeg/jidctint.c; sourceTree = "<group>"; };
+		867BB24F16AECA110033868F /* jidctred.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jidctred.c; path = ../../lib/ljpeg/jidctred.c; sourceTree = "<group>"; };
+		867BB25016AECA110033868F /* jmemansi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jmemansi.c; path = ../../lib/ljpeg/jmemansi.c; sourceTree = "<group>"; };
+		867BB25116AECA110033868F /* jmemmgr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jmemmgr.c; path = ../../lib/ljpeg/jmemmgr.c; sourceTree = "<group>"; };
+		867BB25216AECA110033868F /* jquant1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jquant1.c; path = ../../lib/ljpeg/jquant1.c; sourceTree = "<group>"; };
+		867BB25316AECA110033868F /* jquant2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = ../../lib/ljpeg/jquant2.c; sourceTree = "<group>"; };
+		867BB25416AECA110033868F /* jutils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = ../../lib/ljpeg/jutils.c; sourceTree = "<group>"; };
+		867BB44216AED2840033868F /* iOSGL2ES.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOSGL2ES.h; sourceTree = "<group>"; };
+		867BB44316AED2840033868F /* iOSGL2ES.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = iOSGL2ES.mm; sourceTree = "<group>"; };
+		86A9A3B016AEC786003F01E6 /* Torque2D.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Torque2D.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		86A9A3B416AEC786003F01E6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+		86A9A3B616AEC786003F01E6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		86A9A3B816AEC786003F01E6 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		86A9A3BC16AEC786003F01E6 /* Torque2D-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Torque2D-Info.plist"; sourceTree = "<group>"; };
+		86A9A3BE16AEC786003F01E6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		86A9A3C216AEC786003F01E6 /* Torque2D-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Torque2D-Prefix.pch"; sourceTree = "<group>"; };
+		86A9A3C616AEC786003F01E6 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
+		86A9A3C816AEC786003F01E6 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
+		86A9A3CA16AEC786003F01E6 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
+		86A9A3DA16AEC817003F01E6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		86A9A3DB16AEC817003F01E6 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		86A9A3DC16AEC817003F01E6 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		86A9A3DD16AEC817003F01E6 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		86A9A3DE16AEC817003F01E6 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
+		86A9A3DF16AEC817003F01E6 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
+		86A9A3E016AEC817003F01E6 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		86A9A3E116AEC817003F01E6 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; };
+		86A9A3E216AEC817003F01E6 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+		86A9A3E316AEC817003F01E6 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
+		86A9A3E416AEC817003F01E6 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+		86A9A3E516AEC817003F01E6 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+		86A9A3E616AEC817003F01E6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		86A9A3AD16AEC786003F01E6 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2AED7D9316B70102003482CF /* CoreText.framework in Frameworks */,
+				86555D3F16B2C75900881446 /* GLKit.framework in Frameworks */,
+				86A9A3F416AEC836003F01E6 /* AudioToolbox.framework in Frameworks */,
+				86A9A3F516AEC836003F01E6 /* AVFoundation.framework in Frameworks */,
+				86A9A3F616AEC836003F01E6 /* CoreAudio.framework in Frameworks */,
+				86A9A3F716AEC836003F01E6 /* CoreFoundation.framework in Frameworks */,
+				86A9A3F816AEC836003F01E6 /* CoreImage.framework in Frameworks */,
+				86A9A3F916AEC836003F01E6 /* CoreMedia.framework in Frameworks */,
+				86A9A3FA16AEC836003F01E6 /* CoreMotion.framework in Frameworks */,
+				86A9A3FB16AEC836003F01E6 /* CoreVideo.framework in Frameworks */,
+				86A9A3FC16AEC836003F01E6 /* libz.dylib in Frameworks */,
+				86A9A3FD16AEC836003F01E6 /* MediaPlayer.framework in Frameworks */,
+				86A9A3FE16AEC836003F01E6 /* OpenAL.framework in Frameworks */,
+				86A9A3FF16AEC836003F01E6 /* OpenGLES.framework in Frameworks */,
+				86A9A40016AEC836003F01E6 /* QuartzCore.framework in Frameworks */,
+				86A9A3B516AEC786003F01E6 /* UIKit.framework in Frameworks */,
+				86A9A3B716AEC786003F01E6 /* Foundation.framework in Frameworks */,
+				86A9A3B916AEC786003F01E6 /* CoreGraphics.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		867BAC9116AEC8BB0033868F /* platformiOS */ = {
+			isa = PBXGroup;
+			children = (
+				86555D3116B2C2B400881446 /* T2DAppDelegate.h */,
+				86555D3216B2C2B400881446 /* T2DAppDelegate.mm */,
+				86555D3316B2C2B400881446 /* T2DView.h */,
+				86555D3416B2C2B400881446 /* T2DView.mm */,
+				86555D3516B2C2B400881446 /* T2DViewController.h */,
+				86555D3616B2C2B400881446 /* T2DViewController.mm */,
+				867BAC9416AEC8BB0033868F /* GameCenter.h */,
+				867BAC9516AEC8BB0033868F /* GameCenter.mm */,
+				867BAC9616AEC8BB0033868F /* iOS_common_prefix.h */,
+				867BAC9716AEC8BB0033868F /* iOSAlerts.h */,
+				867BAC9816AEC8BB0033868F /* iOSAlerts.mm */,
+				867BAC9916AEC8BB0033868F /* iOSAudio.mm */,
+				867BAC9A16AEC8BB0033868F /* iOSConsole.h */,
+				867BAC9B16AEC8BB0033868F /* iOSConsole.mm */,
+				867BAC9C16AEC8BB0033868F /* iOSCPUInfo.mm */,
+				867BAC9D16AEC8BB0033868F /* iOSDialogs.mm */,
+				867BAC9E16AEC8BB0033868F /* iOSEvents.h */,
+				867BAC9F16AEC8BB0033868F /* iOSEvents.mm */,
+				867BACA016AEC8BB0033868F /* iOSFileio.mm */,
+				867BB44216AED2840033868F /* iOSGL2ES.h */,
+				867BB44316AED2840033868F /* iOSGL2ES.mm */,
+				867BACA116AEC8BB0033868F /* iOSFont.h */,
+				867BACA216AEC8BB0033868F /* iOSFont.mm */,
+				867BACA316AEC8BB0033868F /* iOSGL.mm */,
+				867BACA616AEC8BB0033868F /* iOSInput.mm */,
+				867BACA916AEC8BB0033868F /* iOSMath.mm */,
+				867BACAA16AEC8BB0033868F /* iOSMemory.mm */,
+				867BACAB16AEC8BB0033868F /* iOSMotionManager.h */,
+				867BACAC16AEC8BB0033868F /* iOSMotionManager.mm */,
+				867BACAD16AEC8BB0033868F /* iOSMoviePlayback.h */,
+				867BACAE16AEC8BB0033868F /* iOSMoviePlayback.mm */,
+				867BACAF16AEC8BB0033868F /* iOSMutex.mm */,
+				867BACB016AEC8BB0033868F /* iOSNet.mm */,
+				867BACB116AEC8BB0033868F /* iOSNPatch.h */,
+				867BACB216AEC8BB0033868F /* iOSOGLVideo.h */,
+				867BACB316AEC8BB0033868F /* iOSOGLVideo.mm */,
+				867BACB416AEC8BB0033868F /* iOSOutlineGL.h */,
+				867BACB516AEC8BB0033868F /* iOSOutlineGL.mm */,
+				867BACB616AEC8BB0033868F /* iOSPlatform.mm */,
+				867BACB716AEC8BB0033868F /* iOSProcessControl.mm */,
+				867BACB816AEC8BB0033868F /* iOSProfiler.h */,
+				867BACB916AEC8BB0033868F /* iOSProfiler.mm */,
+				867BACBA16AEC8BB0033868F /* iOSSemaphore.mm */,
+				867BACBB16AEC8BB0033868F /* iOSStreamSource.cc */,
+				867BACBC16AEC8BB0033868F /* iOSStreamSource.h */,
+				867BACBD16AEC8BB0033868F /* iOSStrings.mm */,
+				867BACC216AEC8BB0033868F /* iOSThread.mm */,
+				867BACC316AEC8BB0033868F /* iOSTime.mm */,
+				867BACC416AEC8BB0033868F /* iOSUserMusicLibrary.h */,
+				867BACC516AEC8BB0033868F /* iOSUserMusicLibrary.mm */,
+				867BACC616AEC8BB0033868F /* iOSUtil.h */,
+				867BACC716AEC8BB0033868F /* iOSUtil.mm */,
+				867BACC816AEC8BB0033868F /* iOSWindow.h */,
+				867BACC916AEC8BB0033868F /* iOSWindow.mm */,
+				867BACCA16AEC8BB0033868F /* main.mm */,
+				867BACCB16AEC8BB0033868F /* menus */,
+				867BACCD16AEC8BB0033868F /* platformGL.h */,
+				867BACCE16AEC8BB0033868F /* platformiOS.h */,
+				867BACCF16AEC8BB0033868F /* SoundEngine.h */,
+				867BACD016AEC8BB0033868F /* SoundEngine.mm */,
+			);
+			name = platformiOS;
+			path = ../../source/platformiOS;
+			sourceTree = "<group>";
+		};
+		867BACCB16AEC8BB0033868F /* menus */ = {
+			isa = PBXGroup;
+			children = (
+				867BACCC16AEC8BB0033868F /* popupMenu.mm */,
+			);
+			path = menus;
+			sourceTree = "<group>";
+		};
+		867BACF816AEC9050033868F /* 2d */ = {
+			isa = PBXGroup;
+			children = (
+				867BACF916AEC9050033868F /* assets */,
+				867BAD0C16AEC9050033868F /* core */,
+				867BAD2416AEC9050033868F /* gui */,
+				867BAD3016AEC9050033868F /* scene */,
+				867BAD4516AEC9050033868F /* sceneobject */,
+			);
+			name = 2d;
+			path = ../../../source/2d;
+			sourceTree = "<group>";
+		};
+		867BACF916AEC9050033868F /* assets */ = {
+			isa = PBXGroup;
+			children = (
+				867BACFA16AEC9050033868F /* AnimationAsset.cc */,
+				867BACFB16AEC9050033868F /* AnimationAsset.h */,
+				867BACFC16AEC9050033868F /* AnimationAsset_ScriptBinding.h */,
+				867BACFD16AEC9050033868F /* AnimationController.cc */,
+				867BACFE16AEC9050033868F /* AnimationController.h */,
+				867BACFF16AEC9050033868F /* ImageAsset.cc */,
+				867BAD0016AEC9050033868F /* ImageAsset.h */,
+				867BAD0116AEC9050033868F /* ImageAsset_ScriptBinding.h */,
+				867BAD0216AEC9050033868F /* ParticleAsset.cc */,
+				867BAD0316AEC9050033868F /* ParticleAsset.h */,
+				867BAD0416AEC9050033868F /* ParticleAsset_ScriptBinding.h */,
+				867BAD0516AEC9050033868F /* ParticleAssetEmitter.cc */,
+				867BAD0616AEC9050033868F /* ParticleAssetEmitter.h */,
+				867BAD0716AEC9050033868F /* ParticleAssetEmitter_ScriptBinding.h */,
+				867BAD0816AEC9050033868F /* ParticleAssetField.cc */,
+				867BAD0916AEC9050033868F /* ParticleAssetField.h */,
+				867BAD0A16AEC9050033868F /* ParticleAssetFieldCollection.cc */,
+				867BAD0B16AEC9050033868F /* ParticleAssetFieldCollection.h */,
+			);
+			path = assets;
+			sourceTree = "<group>";
+		};
+		867BAD0C16AEC9050033868F /* core */ = {
+			isa = PBXGroup;
+			children = (
+				867BAD0D16AEC9050033868F /* BatchRender.cc */,
+				867BAD0E16AEC9050033868F /* BatchRender.h */,
+				867BAD0F16AEC9050033868F /* CoreMath.cc */,
+				867BAD1016AEC9050033868F /* CoreMath.h */,
+				867BAD1116AEC9050033868F /* ParticleSystem.cc */,
+				867BAD1216AEC9050033868F /* ParticleSystem.h */,
+				867BAD1316AEC9050033868F /* RenderProxy.cc */,
+				867BAD1416AEC9050033868F /* RenderProxy.h */,
+				867BAD1516AEC9050033868F /* RenderProxy_ScriptBinding.h */,
+				867BAD1616AEC9050033868F /* SpriteBase.cc */,
+				867BAD1716AEC9050033868F /* SpriteBase.h */,
+				867BAD1816AEC9050033868F /* SpriteBase_ScriptBinding.h */,
+				867BAD1916AEC9050033868F /* SpriteBatch.cc */,
+				867BAD1A16AEC9050033868F /* SpriteBatch.h */,
+				867BAD1B16AEC9050033868F /* SpriteBatchItem.cc */,
+				867BAD1C16AEC9050033868F /* SpriteBatchItem.h */,
+				867BAD1D16AEC9050033868F /* SpriteProxyBase.cc */,
+				867BAD1E16AEC9050033868F /* SpriteProxyBase.h */,
+				867BAD1F16AEC9050033868F /* Utility.cc */,
+				867BAD2016AEC9050033868F /* Utility.h */,
+				867BAD2116AEC9050033868F /* Vector2.cc */,
+				867BAD2216AEC9050033868F /* Vector2.h */,
+				867BAD2316AEC9050033868F /* Vector2_ScriptBinding.h */,
+			);
+			path = core;
+			sourceTree = "<group>";
+		};
+		867BAD2416AEC9050033868F /* gui */ = {
+			isa = PBXGroup;
+			children = (
+				867BAD2516AEC9050033868F /* guiImageButtonCtrl.cc */,
+				867BAD2616AEC9050033868F /* guiImageButtonCtrl.h */,
+				867BAD2716AEC9050033868F /* guiImageButtonCtrl_ScriptBindings.h */,
+				867BAD2816AEC9050033868F /* guiSceneObjectCtrl.cc */,
+				867BAD2916AEC9050033868F /* guiSceneObjectCtrl.h */,
+				867BAD2A16AEC9050033868F /* guiSpriteCtrl.cc */,
+				867BAD2B16AEC9050033868F /* guiSpriteCtrl.h */,
+				867BAD2C16AEC9050033868F /* guiSpriteCtrl_ScriptBindings.h */,
+				867BAD2D16AEC9050033868F /* SceneWindow.cc */,
+				867BAD2E16AEC9050033868F /* SceneWindow.h */,
+				867BAD2F16AEC9050033868F /* SceneWindow_ScriptBinding.h */,
+			);
+			path = gui;
+			sourceTree = "<group>";
+		};
+		867BAD3016AEC9050033868F /* scene */ = {
+			isa = PBXGroup;
+			children = (
+				867BAD3116AEC9050033868F /* ContactFilter.cc */,
+				867BAD3216AEC9050033868F /* ContactFilter.h */,
+				867BAD3316AEC9050033868F /* DebugDraw.cc */,
+				867BAD3416AEC9050033868F /* DebugDraw.h */,
+				867BAD3516AEC9050033868F /* DebugStats.h */,
+				867BAD3616AEC9050033868F /* PhysicsProxy.h */,
+				867BAD3716AEC9050033868F /* Scene.cc */,
+				867BAD3816AEC9050033868F /* Scene.h */,
+				867BAD3916AEC9050033868F /* Scene_ScriptBinding.h */,
+				867BAD3A16AEC9050033868F /* SceneRenderFactories.cpp */,
+				867BAD3B16AEC9050033868F /* SceneRenderFactories.h */,
+				867BAD3C16AEC9050033868F /* SceneRenderObject.h */,
+				867BAD3D16AEC9050033868F /* SceneRenderQueue.cpp */,
+				867BAD3E16AEC9050033868F /* SceneRenderQueue.h */,
+				867BAD3F16AEC9050033868F /* SceneRenderRequest.h */,
+				867BAD4016AEC9050033868F /* SceneRenderState.h */,
+				867BAD4116AEC9050033868F /* WorldQuery.cc */,
+				867BAD4216AEC9050033868F /* WorldQuery.h */,
+				867BAD4316AEC9050033868F /* WorldQueryFilter.h */,
+				867BAD4416AEC9050033868F /* WorldQueryResult.h */,
+			);
+			path = scene;
+			sourceTree = "<group>";
+		};
+		867BAD4516AEC9050033868F /* sceneobject */ = {
+			isa = PBXGroup;
+			children = (
+				2AC4404B16B0144500FC4091 /* ImageFont_ScriptBinding.h */,
+				2AC4404C16B0144500FC4091 /* ImageFont.cc */,
+				2AC4404D16B0144500FC4091 /* ImageFont.h */,
+				867BAD4916AEC9050033868F /* CompositeSprite.cc */,
+				867BAD4A16AEC9050033868F /* CompositeSprite.h */,
+				867BAD4B16AEC9050033868F /* CompositeSprite_ScriptBinding.h */,
+				867BAD4C16AEC9050033868F /* ParticlePlayer.cc */,
+				867BAD4D16AEC9050033868F /* ParticlePlayer.h */,
+				867BAD4E16AEC9050033868F /* ParticlePlayer_ScriptBinding.h */,
+				867BAD5216AEC9050033868F /* SceneObject.cc */,
+				867BAD5316AEC9050033868F /* SceneObject.h */,
+				867BAD5416AEC9050033868F /* SceneObject_ScriptBinding.h */,
+				867BAD5716AEC9050033868F /* SceneObjectMoveToEvent.h */,
+				867BAD5816AEC9050033868F /* SceneObjectRotateToEvent.h */,
+				867BAD5C16AEC9050033868F /* SceneObjectTimerEvent.h */,
+				867BAD5D16AEC9050033868F /* Scroller.cc */,
+				867BAD5E16AEC9050033868F /* Scroller.h */,
+				867BAD5F16AEC9050033868F /* Scroller_ScriptBinding.h */,
+				867BAD6016AEC9050033868F /* ShapeVector.cc */,
+				867BAD6116AEC9050033868F /* ShapeVector.h */,
+				867BAD6216AEC9050033868F /* ShapeVector_ScriptBinding.h */,
+				867BAD6316AEC9050033868F /* Sprite.cc */,
+				867BAD6416AEC9050033868F /* Sprite.h */,
+				867BAD6516AEC9050033868F /* Sprite_ScriptBinding.h */,
+				867BAD6616AEC9050033868F /* Trigger.cc */,
+				867BAD6716AEC9050033868F /* Trigger.h */,
+				867BAD6816AEC9050033868F /* Trigger_ScriptBinding.h */,
+			);
+			path = sceneobject;
+			sourceTree = "<group>";
+		};
+		867BAD6916AEC9050033868F /* algorithm */ = {
+			isa = PBXGroup;
+			children = (
+				867BAD6A16AEC9050033868F /* crc.cc */,
+				867BAD6B16AEC9050033868F /* crc.h */,
+				867BAD6C16AEC9050033868F /* crctab.h */,
+				867BAD6D16AEC9050033868F /* hashFunction.cc */,
+				867BAD6E16AEC9050033868F /* hashFunction.h */,
+				867BAD6F16AEC9050033868F /* md5.h */,
+			);
+			name = algorithm;
+			path = ../../../source/algorithm;
+			sourceTree = "<group>";
+		};
+		867BAD7016AEC9050033868F /* assets */ = {
+			isa = PBXGroup;
+			children = (
+				2AF1C54716B439D900C1CF3A /* declaredAssets.cc */,
+				2AF1C54816B439D900C1CF3A /* declaredAssets.h */,
+				2AF1C54916B439D900C1CF3A /* referencedAssets.cc */,
+				2AF1C54A16B439D900C1CF3A /* referencedAssets.h */,
+				867BAD7116AEC9050033868F /* assetBase.cc */,
+				867BAD7216AEC9050033868F /* assetBase.h */,
+				867BAD7316AEC9050033868F /* assetBase_ScriptBinding.h */,
+				867BAD7416AEC9050033868F /* assetDefinition.h */,
+				867BAD7516AEC9050033868F /* assetFieldTypes.cc */,
+				867BAD7616AEC9050033868F /* assetFieldTypes.h */,
+				867BAD7716AEC9050033868F /* assetManager.cc */,
+				867BAD7816AEC9050033868F /* assetManager.h */,
+				867BAD7916AEC9050033868F /* assetManager_ScriptBinding.h */,
+				867BAD7C16AEC9050033868F /* assetPtr.h */,
+				867BAD7D16AEC9050033868F /* assetQuery.cc */,
+				867BAD7E16AEC9050033868F /* assetQuery.h */,
+				867BAD7F16AEC9050033868F /* assetQuery_ScriptBinding.h */,
+				867BAD8016AEC9050033868F /* assetSnapshot.cc */,
+				867BAD8116AEC9050033868F /* assetSnapshot.h */,
+				867BAD8216AEC9050033868F /* assetTagsManifest.cc */,
+				867BAD8316AEC9050033868F /* assetTagsManifest.h */,
+				867BAD8416AEC9050033868F /* assetTagsManifest_ScriptBinding.h */,
+				867BAD8516AEC9050033868F /* tamlAssetDeclaredUpdateVisitor.h */,
+				867BAD8616AEC9050033868F /* tamlAssetDeclaredVisitor.h */,
+				867BAD8716AEC9050033868F /* tamlAssetReferencedUpdateVisitor.h */,
+				867BAD8816AEC9050033868F /* tamlAssetReferencedVisitor.h */,
+			);
+			name = assets;
+			path = ../../../source/assets;
+			sourceTree = "<group>";
+		};
+		867BAD8916AEC9050033868F /* audio */ = {
+			isa = PBXGroup;
+			children = (
+				867BAD8A16AEC9050033868F /* audio.cc */,
+				867BAD8B16AEC9050033868F /* audio.h */,
+				867BAD8C16AEC9050033868F /* AudioAsset.cc */,
+				867BAD8D16AEC9050033868F /* AudioAsset.h */,
+				867BAD8E16AEC9050033868F /* audioBuffer.cc */,
+				867BAD8F16AEC9050033868F /* audioBuffer.h */,
+				867BAD9016AEC9050033868F /* audioDataBlock.cc */,
+				867BAD9116AEC9050033868F /* audioDataBlock.h */,
+				867BAD9216AEC9050033868F /* audioFunctions.cc */,
+				867BAD9316AEC9050033868F /* audioStreamSource.h */,
+				867BAD9416AEC9050033868F /* audioStreamSourceFactory.cc */,
+				867BAD9516AEC9050033868F /* audioStreamSourceFactory.h */,
+				867BAD9616AEC9050033868F /* wavStreamSource.cc */,
+				867BAD9716AEC9050033868F /* wavStreamSource.h */,
+			);
+			name = audio;
+			path = ../../../source/audio;
+			sourceTree = "<group>";
+		};
+		867BAD9816AEC9050033868F /* collection */ = {
+			isa = PBXGroup;
+			children = (
+				867BAD9916AEC9050033868F /* bitMatrix.h */,
+				867BAD9A16AEC9050033868F /* bitSet.h */,
+				867BAD9B16AEC9050033868F /* bitTables.cc */,
+				867BAD9C16AEC9050033868F /* bitTables.h */,
+				867BAD9D16AEC9050033868F /* bitVector.h */,
+				867BAD9E16AEC9050033868F /* bitVectorW.h */,
+				867BAD9F16AEC9050033868F /* findIterator.h */,
+				867BADA016AEC9050033868F /* hashTable.cc */,
+				867BADA116AEC9050033868F /* hashTable.h */,
+				867BADA216AEC9050033868F /* linkedList.h */,
+				867BADA316AEC9050033868F /* nameTags.cpp */,
+				867BADA416AEC9050033868F /* nameTags.h */,
+				867BADA516AEC9050033868F /* nameTags_ScriptBinding.h */,
+				867BADA616AEC9050033868F /* simpleHashTable.h */,
+				867BADA716AEC9050033868F /* sparseArray.h */,
+				867BADA816AEC9050033868F /* undo.cc */,
+				867BADA916AEC9050033868F /* undo.h */,
+				867BADAA16AEC9050033868F /* vector.cc */,
+				867BADAB16AEC9050033868F /* vector.h */,
+				867BADAC16AEC9050033868F /* vector2d.h */,
+				867BADAD16AEC9050033868F /* vectorHeap.h */,
+				867BADAE16AEC9050033868F /* vectorQueue.h */,
+			);
+			name = collection;
+			path = ../../../source/collection;
+			sourceTree = "<group>";
+		};
+		867BADAF16AEC9050033868F /* component */ = {
+			isa = PBXGroup;
+			children = (
+				867BADBE16AEC9050033868F /* behaviors */,
+				867BADC916AEC9050033868F /* dynamicConsoleMethodComponent.cpp */,
+				867BADCA16AEC9050033868F /* dynamicConsoleMethodComponent.h */,
+				867BADCE16AEC9050033868F /* simComponent.cpp */,
+				867BADCF16AEC9050033868F /* simComponent.h */,
+			);
+			name = component;
+			path = ../../../source/component;
+			sourceTree = "<group>";
+		};
+		867BADBE16AEC9050033868F /* behaviors */ = {
+			isa = PBXGroup;
+			children = (
+				867BADBF16AEC9050033868F /* behaviorComponent.cpp */,
+				867BADC016AEC9050033868F /* behaviorComponent.h */,
+				867BADC116AEC9050033868F /* behaviorComponent_ScriptBinding.h */,
+				867BADC216AEC9050033868F /* behaviorComponentRaiseEvent.h */,
+				867BADC316AEC9050033868F /* behaviorInstance.cpp */,
+				867BADC416AEC9050033868F /* behaviorInstance.h */,
+				867BADC516AEC9050033868F /* behaviorInstance_ScriptBinding.h */,
+				867BADC616AEC9050033868F /* behaviorTemplate.cpp */,
+				867BADC716AEC9050033868F /* behaviorTemplate.h */,
+				867BADC816AEC9050033868F /* behaviorTemplate_ScriptBinding.h */,
+			);
+			path = behaviors;
+			sourceTree = "<group>";
+		};
+		867BADD016AEC9050033868F /* console */ = {
+			isa = PBXGroup;
+			children = (
+				867BADD116AEC9050033868F /* ast.h */,
+				867BADD216AEC9050033868F /* astAlloc.cc */,
+				867BADD316AEC9050033868F /* astNodes.cc */,
+				867BADD416AEC9050033868F /* astNodeSizes.h */,
+				867BADD616AEC9050033868F /* bison.simple */,
+				867BADD716AEC9050033868F /* cmdgram.cc */,
+				867BADD816AEC9050033868F /* cmdgram.h */,
+				867BADDA16AEC9050033868F /* CMDscan.cc */,
+				867BADDC16AEC9050033868F /* codeBlock.cc */,
+				867BADDD16AEC9050033868F /* codeBlock.h */,
+				867BADDE16AEC9050033868F /* compiledEval.cc */,
+				867BADDF16AEC9050033868F /* compiler.cc */,
+				867BADE016AEC9050033868F /* compiler.h */,
+				867BADE116AEC9050033868F /* console.cc */,
+				867BADE216AEC9050033868F /* console.h */,
+				867BADE316AEC9050033868F /* consoleBaseType.cc */,
+				867BADE416AEC9050033868F /* consoleBaseType.h */,
+				867BADE516AEC9050033868F /* consoleDictionary.cc */,
+				867BADE616AEC9050033868F /* consoleDictionary.h */,
+				867BADE716AEC9050033868F /* consoleDoc.cc */,
+				867BADE816AEC9050033868F /* consoleDoc.h */,
+				867BADE916AEC9050033868F /* consoleExprEvalState.cc */,
+				867BADEA16AEC9050033868F /* consoleExprEvalState.h */,
+				867BADEB16AEC9050033868F /* consoleFunctions.cc */,
+				867BADEC16AEC9050033868F /* consoleInternal.h */,
+				867BADED16AEC9050033868F /* consoleLogger.cc */,
+				867BADEE16AEC9050033868F /* consoleLogger.h */,
+				867BADEF16AEC9050033868F /* consoleNamespace.cc */,
+				867BADF016AEC9050033868F /* consoleNamespace.h */,
+				867BADF116AEC9050033868F /* consoleObject.cc */,
+				867BADF216AEC9050033868F /* consoleObject.h */,
+				867BADF316AEC9050033868F /* consoleParser.cc */,
+				867BADF416AEC9050033868F /* consoleParser.h */,
+				867BADF516AEC9050033868F /* consoleTypes.cc */,
+				867BADF616AEC9050033868F /* consoleTypes.h */,
+				867BADF716AEC9050033868F /* ConsoleTypeValidators.cc */,
+				867BADF816AEC9050033868F /* ConsoleTypeValidators.h */,
+				867BADFA16AEC9050033868F /* Package.cc */,
+				867BADFB16AEC9050033868F /* Package.h */,
+			);
+			name = console;
+			path = ../../../source/console;
+			sourceTree = "<group>";
+		};
+		867BADFC16AEC9050033868F /* debug */ = {
+			isa = PBXGroup;
+			children = (
+				867BADFD16AEC9050033868F /* profiler.cc */,
+				867BADFE16AEC9050033868F /* profiler.h */,
+				867BADFF16AEC9050033868F /* remote */,
+				867BAE0916AEC9050033868F /* telnetDebugger.cc */,
+				867BAE0A16AEC9050033868F /* telnetDebugger.h */,
+			);
+			name = debug;
+			path = ../../../source/debug;
+			sourceTree = "<group>";
+		};
+		867BADFF16AEC9050033868F /* remote */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE0016AEC9050033868F /* RemoteDebugger1.cc */,
+				867BAE0116AEC9050033868F /* RemoteDebugger1.h */,
+				867BAE0216AEC9050033868F /* RemoteDebugger1_ScriptBinding.h */,
+				867BAE0316AEC9050033868F /* RemoteDebuggerBase.cc */,
+				867BAE0416AEC9050033868F /* RemoteDebuggerBase.h */,
+				867BAE0516AEC9050033868F /* RemoteDebuggerBase_ScriptBinding.h */,
+				867BAE0616AEC9050033868F /* RemoteDebuggerBridge.cc */,
+				867BAE0716AEC9050033868F /* RemoteDebuggerBridge.h */,
+				867BAE0816AEC9050033868F /* RemoteDebuggerBridge_ScriptBinding.h */,
+			);
+			path = remote;
+			sourceTree = "<group>";
+		};
+		867BAE0B16AEC9050033868F /* delegates */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE0C16AEC9050033868F /* delegate.h */,
+				867BAE0D16AEC9050033868F /* delegateSignal.cpp */,
+				867BAE0E16AEC9050033868F /* delegateSignal.h */,
+				867BAE0F16AEC9050033868F /* FastDelegate.h */,
+			);
+			name = delegates;
+			path = ../../../source/delegates;
+			sourceTree = "<group>";
+		};
+		867BAE1016AEC9050033868F /* game */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE1116AEC9050033868F /* defaultGame.cc */,
+				867BAE1216AEC9050033868F /* defaultGame.h */,
+				867BAE1316AEC9050033868F /* gameConnection.cc */,
+				867BAE1416AEC9050033868F /* gameConnection.h */,
+				867BAE1516AEC9050033868F /* gameInterface.cc */,
+				867BAE1616AEC9050033868F /* gameInterface.h */,
+				867BAE1716AEC9050033868F /* gameInterface_ScriptBinding.h */,
+				867BAE1816AEC9050033868F /* resource.h */,
+				867BAE1916AEC9050033868F /* version.cc */,
+				867BAE1A16AEC9050033868F /* version.h */,
+			);
+			name = game;
+			path = ../../../source/game;
+			sourceTree = "<group>";
+		};
+		867BAE1B16AEC9050033868F /* graphics */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE1C16AEC9050033868F /* bitmapBmp.cc */,
+				867BAE1D16AEC9050033868F /* bitmapJpeg.cc */,
+				867BAE1E16AEC9050033868F /* bitmapPng.cc */,
+				867BAE1F16AEC9050033868F /* bitmapPvr.cc */,
+				867BAE2216AEC9050033868F /* color.cc */,
+				867BAE2316AEC9050033868F /* color.h */,
+				867BAE2416AEC9050033868F /* dgl.cc */,
+				867BAE2516AEC9050033868F /* dgl.h */,
+				867BAE2616AEC9050033868F /* dglMatrix.cc */,
+				867BAE2716AEC9050033868F /* DynamicTexture.cc */,
+				867BAE2816AEC9050033868F /* DynamicTexture.h */,
+				867BAE2916AEC9050033868F /* gBitmap.cc */,
+				867BAE2A16AEC9050033868F /* gBitmap.h */,
+				867BAE2B16AEC9050033868F /* gFont.cc */,
+				867BAE2C16AEC9050033868F /* gFont.h */,
+				867BAE2D16AEC9050033868F /* gPalette.cc */,
+				867BAE2E16AEC9050033868F /* gPalette.h */,
+				867BAE2F16AEC9050033868F /* PNGImage.cpp */,
+				867BAE3016AEC9050033868F /* PNGImage.h */,
+				867BAE3116AEC9050033868F /* splineUtil.cc */,
+				867BAE3216AEC9050033868F /* splineUtil.h */,
+				867BAE3316AEC9050033868F /* TextureDictionary.cc */,
+				867BAE3416AEC9050033868F /* TextureDictionary.h */,
+				867BAE3516AEC9050033868F /* TextureHandle.cc */,
+				867BAE3616AEC9050033868F /* TextureHandle.h */,
+				867BAE3716AEC9050033868F /* TextureManager.cc */,
+				867BAE3816AEC9050033868F /* TextureManager.h */,
+				867BAE3916AEC9050033868F /* TextureObject.h */,
+			);
+			name = graphics;
+			path = ../../../source/graphics;
+			sourceTree = "<group>";
+		};
+		867BAE3A16AEC9050033868F /* gui */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE3B16AEC9050033868F /* buttons */,
+				867BAE4B16AEC9050033868F /* containers */,
+				867BAE6416AEC9050033868F /* editor */,
+				867BAE7816AEC9050033868F /* guiArrayCtrl.cc */,
+				867BAE7916AEC9050033868F /* guiArrayCtrl.h */,
+				867BAE7A16AEC9050033868F /* guiBackgroundCtrl.cc */,
+				867BAE7B16AEC9050033868F /* guiBackgroundCtrl.h */,
+				867BAE7C16AEC9050033868F /* guiBitmapBorderCtrl.cc */,
+				867BAE7D16AEC9050033868F /* guiBitmapCtrl.cc */,
+				867BAE7E16AEC9050033868F /* guiBitmapCtrl.h */,
+				867BAE7F16AEC9050033868F /* guiBubbleTextCtrl.cc */,
+				867BAE8016AEC9050033868F /* guiBubbleTextCtrl.h */,
+				867BAE8116AEC9050033868F /* guiCanvas.cc */,
+				867BAE8216AEC9050033868F /* guiCanvas.h */,
+				867BAE8516AEC9050033868F /* guiConsole.cc */,
+				867BAE8616AEC9050033868F /* guiConsole.h */,
+				867BAE8716AEC9050033868F /* guiConsoleEditCtrl.cc */,
+				867BAE8816AEC9050033868F /* guiConsoleEditCtrl.h */,
+				867BAE8916AEC9050033868F /* guiConsoleTextCtrl.cc */,
+				867BAE8A16AEC9050033868F /* guiConsoleTextCtrl.h */,
+				867BAE8B16AEC9050033868F /* guiControl.cc */,
+				867BAE8C16AEC9050033868F /* guiControl.h */,
+				867BAE8D16AEC9050033868F /* guiDefaultControlRender.cc */,
+				867BAE8E16AEC9050033868F /* guiDefaultControlRender.h */,
+				867BAE8F16AEC9050033868F /* guiFadeinBitmapCtrl.cc */,
+				867BAE9016AEC9050033868F /* guiInputCtrl.cc */,
+				867BAE9116AEC9050033868F /* guiInputCtrl.h */,
+				867BAE9216AEC9050033868F /* guiListBoxCtrl.cc */,
+				867BAE9316AEC9050033868F /* guiListBoxCtrl.h */,
+				867BAE9416AEC9050033868F /* guiMessageVectorCtrl.cc */,
+				867BAE9516AEC9050033868F /* guiMessageVectorCtrl.h */,
+				867BAE9616AEC9050033868F /* guiMLTextCtrl.cc */,
+				867BAE9716AEC9050033868F /* guiMLTextCtrl.h */,
+				867BAE9816AEC9050033868F /* guiMLTextEditCtrl.cc */,
+				867BAE9916AEC9050033868F /* guiMLTextEditCtrl.h */,
+				867BAE9A16AEC9050033868F /* guiMouseEventCtrl.cc */,
+				867BAE9B16AEC9050033868F /* guiMouseEventCtrl.h */,
+				867BAE9C16AEC9050033868F /* guiPopUpCtrl.cc */,
+				867BAE9D16AEC9050033868F /* guiPopUpCtrl.h */,
+				867BAE9E16AEC9050033868F /* guiPopUpCtrlEx.cc */,
+				867BAE9F16AEC9050033868F /* guiPopUpCtrlEx.h */,
+				867BAEA016AEC9050033868F /* guiProgressCtrl.cc */,
+				867BAEA116AEC9050033868F /* guiProgressCtrl.h */,
+				867BAEA216AEC9050033868F /* guiScriptNotifyControl.cc */,
+				867BAEA316AEC9050033868F /* guiScriptNotifyControl.h */,
+				867BAEA616AEC9050033868F /* guiTabPageCtrl.cc */,
+				867BAEA716AEC9050033868F /* guiTabPageCtrl.h */,
+				867BAEA816AEC9050033868F /* guiTextCtrl.cc */,
+				867BAEA916AEC9050033868F /* guiTextCtrl.h */,
+				867BAEAA16AEC9050033868F /* guiTextEditCtrl.cc */,
+				867BAEAB16AEC9050033868F /* guiTextEditCtrl.h */,
+				867BAEAC16AEC9050033868F /* guiTextEditSliderCtrl.cc */,
+				867BAEAD16AEC9050033868F /* guiTextEditSliderCtrl.h */,
+				867BAEAE16AEC9050033868F /* guiTextListCtrl.cc */,
+				867BAEAF16AEC9050033868F /* guiTextListCtrl.h */,
+				867BAEB016AEC9050033868F /* guiTickCtrl.cc */,
+				867BAEB116AEC9050033868F /* guiTickCtrl.h */,
+				867BAEB216AEC9050033868F /* guiTreeViewCtrl.cc */,
+				867BAEB316AEC9050033868F /* guiTreeViewCtrl.h */,
+				867BAEB416AEC9050033868F /* guiTypes.cc */,
+				867BAEB516AEC9050033868F /* guiTypes.h */,
+				867BAEB616AEC9050033868F /* language */,
+				867BAEB916AEC9050033868F /* messageVector.cc */,
+				867BAEBA16AEC9050033868F /* messageVector.h */,
+				332307DBC5B7EEEB22E5A736 /* guiSliderCtrl.cc */,
+				33230911303CCA4C673E1A22 /* guiSliderCtrl.h */,
+			);
+			name = gui;
+			path = ../../../source/gui;
+			sourceTree = "<group>";
+		};
+		867BAE3B16AEC9050033868F /* buttons */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE3C16AEC9050033868F /* guiBitmapButtonCtrl.cc */,
+				867BAE3D16AEC9050033868F /* guiBitmapButtonCtrl.h */,
+				867BAE3E16AEC9050033868F /* guiBorderButton.cc */,
+				867BAE3F16AEC9050033868F /* guiButtonBaseCtrl.cc */,
+				867BAE4016AEC9050033868F /* guiButtonBaseCtrl.h */,
+				867BAE4116AEC9050033868F /* guiButtonCtrl.cc */,
+				867BAE4216AEC9050033868F /* guiButtonCtrl.h */,
+				867BAE4316AEC9050033868F /* guiCheckBoxCtrl.cc */,
+				867BAE4416AEC9050033868F /* guiCheckBoxCtrl.h */,
+				867BAE4516AEC9050033868F /* guiIconButtonCtrl.cc */,
+				867BAE4616AEC9050033868F /* guiIconButtonCtrl.h */,
+				867BAE4716AEC9050033868F /* guiRadioCtrl.cc */,
+				867BAE4816AEC9050033868F /* guiRadioCtrl.h */,
+				867BAE4916AEC9050033868F /* guiToolboxButtonCtrl.cc */,
+				867BAE4A16AEC9050033868F /* guiToolboxButtonCtrl.h */,
+			);
+			path = buttons;
+			sourceTree = "<group>";
+		};
+		867BAE4B16AEC9050033868F /* containers */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE4C16AEC9050033868F /* guiAutoScrollCtrl.cc */,
+				867BAE4D16AEC9050033868F /* guiAutoScrollCtrl.h */,
+				867BAE4E16AEC9050033868F /* guiCtrlArrayCtrl.cc */,
+				867BAE4F16AEC9050033868F /* guiCtrlArrayCtrl.h */,
+				867BAE5016AEC9050033868F /* guiDragAndDropCtrl.cc */,
+				867BAE5116AEC9050033868F /* guiDragAndDropCtrl.h */,
+				867BAE5216AEC9050033868F /* guiDynamicCtrlArrayCtrl.cc */,
+				867BAE5316AEC9050033868F /* guiDynamicCtrlArrayCtrl.h */,
+				867BAE5416AEC9050033868F /* guiFormCtrl.cc */,
+				867BAE5516AEC9050033868F /* guiFormCtrl.h */,
+				867BAE5616AEC9050033868F /* guiFrameCtrl.cc */,
+				867BAE5716AEC9050033868F /* guiFrameCtrl.h */,
+				867BAE5816AEC9050033868F /* guiPaneCtrl.cc */,
+				867BAE5916AEC9050033868F /* guiPaneCtrl.h */,
+				867BAE5A16AEC9050033868F /* guiRolloutCtrl.cc */,
+				867BAE5B16AEC9050033868F /* guiRolloutCtrl.h */,
+				867BAE5C16AEC9050033868F /* guiScrollCtrl.cc */,
+				867BAE5D16AEC9050033868F /* guiScrollCtrl.h */,
+				867BAE5E16AEC9050033868F /* guiStackCtrl.cc */,
+				867BAE5F16AEC9050033868F /* guiStackCtrl.h */,
+				867BAE6016AEC9050033868F /* guiTabBookCtrl.cc */,
+				867BAE6116AEC9050033868F /* guiTabBookCtrl.h */,
+				867BAE6216AEC9050033868F /* guiWindowCtrl.cc */,
+				867BAE6316AEC9050033868F /* guiWindowCtrl.h */,
+			);
+			path = containers;
+			sourceTree = "<group>";
+		};
+		867BAE6416AEC9050033868F /* editor */ = {
+			isa = PBXGroup;
+			children = (
+				867BAE6516AEC9050033868F /* guiControlListPopup.cc */,
+				867BAE6616AEC9050033868F /* guiDebugger.cc */,
+				867BAE6716AEC9050033868F /* guiDebugger.h */,
+				867BAE6816AEC9050033868F /* guiEditCtrl.cc */,
+				867BAE6916AEC9050033868F /* guiEditCtrl.h */,
+				867BAE6A16AEC9050033868F /* guiFilterCtrl.cc */,
+				867BAE6B16AEC9050033868F /* guiFilterCtrl.h */,
+				867BAE6E16AEC9050033868F /* guiImageList.cc */,
+				867BAE6F16AEC9050033868F /* guiImageList.h */,
+				867BAE7016AEC9050033868F /* guiInspector.cc */,
+				867BAE7116AEC9050033868F /* guiInspector.h */,
+				867BAE7216AEC9050033868F /* guiInspectorTypes.cc */,
+				867BAE7316AEC9050033868F /* guiInspectorTypes.h */,
+				867BAE7416AEC9050033868F /* guiMenuBar.cc */,
+				867BAE7516AEC9050033868F /* guiMenuBar.h */,
+				867BAE7616AEC9050033868F /* guiSeparatorCtrl.cc */,
+				867BAE7716AEC9050033868F /* guiSeparatorCtrl.h */,
+			);
+			path = editor;
+			sourceTree = "<group>";
+		};
+		867BAEB616AEC9050033868F /* language */ = {
+			isa = PBXGroup;
+			children = (
+				867BAEB716AEC9050033868F /* lang.cc */,
+				867BAEB816AEC9050033868F /* lang.h */,
+			);
+			path = language;
+			sourceTree = "<group>";
+		};
+		867BAEBB16AEC9050033868F /* input */ = {
+			isa = PBXGroup;
+			children = (
+				867BAEBC16AEC9050033868F /* actionMap.cc */,
+				867BAEBD16AEC9050033868F /* actionMap.h */,
+			);
+			name = input;
+			path = ../../../source/input;
+			sourceTree = "<group>";
+		};
+		867BAEBE16AEC9050033868F /* io */ = {
+			isa = PBXGroup;
+			children = (
+				867BAEBF16AEC9050033868F /* bitStream.cc */,
+				867BAEC016AEC9050033868F /* bitStream.h */,
+				867BAEC116AEC9050033868F /* bufferStream.cc */,
+				867BAEC216AEC9050033868F /* bufferStream.h */,
+				867BAEC316AEC9050033868F /* fileObject.cc */,
+				867BAEC416AEC9050033868F /* fileObject.h */,
+				867BAEC516AEC9050033868F /* fileStream.cc */,
+				867BAEC616AEC9050033868F /* fileStream.h */,
+				867BAEC716AEC9050033868F /* fileStreamObject.cc */,
+				867BAEC816AEC9050033868F /* fileStreamObject.h */,
+				867BAEC916AEC9050033868F /* fileSystemFunctions.cpp */,
+				867BAECA16AEC9050033868F /* filterStream.cc */,
+				867BAECB16AEC9050033868F /* filterStream.h */,
+				867BAECC16AEC9050033868F /* memStream.cc */,
+				867BAECD16AEC9050033868F /* memstream.h */,
+				867BAECE16AEC9050033868F /* nStream.cc */,
+				867BAECF16AEC9050033868F /* resizeStream.cc */,
+				867BAED016AEC9050033868F /* resizeStream.h */,
+				867BAED116AEC9050033868F /* resource */,
+				867BAED516AEC9050033868F /* stream.h */,
+				867BAED616AEC9050033868F /* streamObject.cc */,
+				867BAED716AEC9050033868F /* streamObject.h */,
+				867BAED816AEC9050033868F /* zip */,
+			);
+			name = io;
+			path = ../../../source/io;
+			sourceTree = "<group>";
+		};
+		867BAED116AEC9050033868F /* resource */ = {
+			isa = PBXGroup;
+			children = (
+				867BAED216AEC9050033868F /* resourceDictionary.cc */,
+				867BAED316AEC9050033868F /* resourceManager.cc */,
+				867BAED416AEC9050033868F /* resourceManager.h */,
+			);
+			path = resource;
+			sourceTree = "<group>";
+		};
+		867BAED816AEC9050033868F /* zip */ = {
+			isa = PBXGroup;
+			children = (
+				867BAED916AEC9050033868F /* centralDir.cc */,
+				867BAEDA16AEC9050033868F /* centralDir.h */,
+				867BAEDB16AEC9050033868F /* compressor.cc */,
+				867BAEDC16AEC9050033868F /* compressor.h */,
+				867BAEDD16AEC9050033868F /* deflate.cc */,
+				867BAEDE16AEC9050033868F /* extraField.cc */,
+				867BAEDF16AEC9050033868F /* extraField.h */,
+				867BAEE016AEC9050033868F /* fileHeader.cc */,
+				867BAEE116AEC9050033868F /* fileHeader.h */,
+				867BAEE216AEC9050033868F /* stored.cc */,
+				867BAEE816AEC9050033868F /* zipArchive.cc */,
+				867BAEE916AEC9050033868F /* zipArchive.h */,
+				867BAEEA16AEC9050033868F /* zipCryptStream.cc */,
+				867BAEEB16AEC9050033868F /* zipCryptStream.h */,
+				867BAEEC16AEC9050033868F /* zipObject.cc */,
+				867BAEED16AEC9050033868F /* zipObject.h */,
+				867BAEEE16AEC9050033868F /* zipStatFilter.h */,
+				867BAEEF16AEC9050033868F /* zipSubStream.cc */,
+				867BAEF016AEC9050033868F /* zipSubStream.h */,
+				867BAEF116AEC9050033868F /* zipTempStream.cc */,
+				867BAEF216AEC9050033868F /* zipTempStream.h */,
+			);
+			path = zip;
+			sourceTree = "<group>";
+		};
+		867BAEF316AEC9050033868F /* math */ = {
+			isa = PBXGroup;
+			children = (
+				867BAEF416AEC9050033868F /* mathIO.h */,
+				867BAEF516AEC9050033868F /* mathTypes.cc */,
+				867BAEF616AEC9050033868F /* mathTypes.h */,
+				867BAEF716AEC9050033868F /* mathUtils.cc */,
+				867BAEF816AEC9050033868F /* mathUtils.h */,
+				867BAEF916AEC9050033868F /* mBox.cc */,
+				867BAEFA16AEC9050033868F /* mBox.h */,
+				867BAEFB16AEC9050033868F /* mConsoleFunctions.cc */,
+				867BAEFC16AEC9050033868F /* mConstants.h */,
+				867BAEFD16AEC9050033868F /* mMath.h */,
+				867BAEFF16AEC9050033868F /* mMath_C.cc */,
+				867BAF0016AEC9050033868F /* mMathAltivec.cc */,
+				867BAF0116AEC9050033868F /* mMathAMD.cc */,
+				867BAF0316AEC9050033868F /* mMathFn.cc */,
+				867BAF0416AEC9050033868F /* mMathFn.h */,
+				867BAF0516AEC9050033868F /* mMathSSE.cc */,
+				867BAF0716AEC9050033868F /* mMatrix.cc */,
+				867BAF0816AEC9050033868F /* mMatrix.h */,
+				867BAF0916AEC9050033868F /* mPlane.h */,
+				867BAF0A16AEC9050033868F /* mPlaneTransformer.cc */,
+				867BAF0B16AEC9050033868F /* mPlaneTransformer.h */,
+				867BAF0C16AEC9050033868F /* mPoint.h */,
+				867BAF0D16AEC9050033868F /* mQuadPatch.cc */,
+				867BAF0E16AEC9050033868F /* mQuadPatch.h */,
+				867BAF0F16AEC9050033868F /* mQuat.cc */,
+				867BAF1016AEC9050033868F /* mQuat.h */,
+				867BAF1116AEC9050033868F /* mRandom.cc */,
+				867BAF1216AEC9050033868F /* mRandom.h */,
+				867BAF1316AEC9050033868F /* mRect.h */,
+				867BAF1416AEC9050033868F /* mSolver.cc */,
+				867BAF1516AEC9050033868F /* mSphere.h */,
+				867BAF1616AEC9050033868F /* mSplinePatch.cc */,
+				867BAF1716AEC9050033868F /* mSplinePatch.h */,
+				867BAF1816AEC9050033868F /* rectClipper.cpp */,
+				867BAF1916AEC9050033868F /* rectClipper.h */,
+			);
+			name = math;
+			path = ../../../source/math;
+			sourceTree = "<group>";
+		};
+		867BAF1A16AEC9050033868F /* memory */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF1B16AEC9050033868F /* dataChunker.cc */,
+				867BAF1C16AEC9050033868F /* dataChunker.h */,
+				867BAF1D16AEC9050033868F /* factoryCache.h */,
+				867BAF1E16AEC9050033868F /* frameAllocator.cc */,
+				867BAF1F16AEC9050033868F /* frameAllocator.h */,
+				867BAF2016AEC9050033868F /* safeDelete.h */,
+			);
+			name = memory;
+			path = ../../../source/memory;
+			sourceTree = "<group>";
+		};
+		867BAF2116AEC9050033868F /* messaging */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF2216AEC9050033868F /* dispatcher.cc */,
+				867BAF2316AEC9050033868F /* dispatcher.h */,
+				867BAF2416AEC9050033868F /* eventManager.cc */,
+				867BAF2516AEC9050033868F /* eventManager.h */,
+				867BAF2616AEC9050033868F /* message.cc */,
+				867BAF2716AEC9050033868F /* message.h */,
+				867BAF2816AEC9050033868F /* messageForwarder.cc */,
+				867BAF2916AEC9050033868F /* messageForwarder.h */,
+				867BAF2A16AEC9050033868F /* scriptMsgListener.cc */,
+				867BAF2B16AEC9050033868F /* scriptMsgListener.h */,
+			);
+			name = messaging;
+			path = ../../../source/messaging;
+			sourceTree = "<group>";
+		};
+		867BAF2C16AEC9050033868F /* module */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF2D16AEC9050033868F /* moduleCallbacks.h */,
+				867BAF2E16AEC9050033868F /* moduleDefinition.cc */,
+				867BAF2F16AEC9050033868F /* moduleDefinition.h */,
+				867BAF3016AEC9050033868F /* moduleDefinition_ScriptBinding.h */,
+				867BAF3116AEC9050033868F /* moduleManager.cc */,
+				867BAF3216AEC9050033868F /* moduleManager.h */,
+				867BAF3316AEC9050033868F /* moduleManager_ScriptBinding.h */,
+				867BAF3416AEC9050033868F /* moduleMergeDefinition.cc */,
+				867BAF3516AEC9050033868F /* moduleMergeDefinition.h */,
+				867BAF3616AEC9050033868F /* tamlModuleIdUpdateVisitor.h */,
+			);
+			name = module;
+			path = ../../../source/module;
+			sourceTree = "<group>";
+		};
+		867BAF3716AEC9050033868F /* network */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF3816AEC9050033868F /* connectionProtocol.cc */,
+				867BAF3916AEC9050033868F /* connectionProtocol.h */,
+				867BAF3A16AEC9050033868F /* connectionStringTable.cc */,
+				867BAF3B16AEC9050033868F /* connectionStringTable.h */,
+				867BAF3C16AEC9050033868F /* httpObject.cc */,
+				867BAF3D16AEC9050033868F /* httpObject.h */,
+				867BAF3E16AEC9050033868F /* netConnection.cc */,
+				867BAF3F16AEC9050033868F /* netConnection.h */,
+				867BAF4016AEC9050033868F /* netDownload.cc */,
+				867BAF4116AEC9050033868F /* netEvent.cc */,
+				867BAF4216AEC9050033868F /* netGhost.cc */,
+				867BAF4316AEC9050033868F /* netInterface.cc */,
+				867BAF4416AEC9050033868F /* netInterface.h */,
+				867BAF4516AEC9050033868F /* netObject.cc */,
+				867BAF4616AEC9050033868F /* netObject.h */,
+				867BAF4716AEC9050033868F /* netStringTable.cc */,
+				867BAF4816AEC9050033868F /* netStringTable.h */,
+				867BAF4916AEC9050033868F /* netTest.cc */,
+				867BAF4A16AEC9050033868F /* networkProcessList.cc */,
+				867BAF4B16AEC9050033868F /* networkProcessList.h */,
+				867BAF4C16AEC9050033868F /* RemoteCommandEvent.cc */,
+				867BAF4D16AEC9050033868F /* serverQuery.cc */,
+				867BAF4E16AEC9050033868F /* serverQuery.h */,
+				867BAF4F16AEC9050033868F /* tcpObject.cc */,
+				867BAF5016AEC9050033868F /* tcpObject.h */,
+				867BAF5116AEC9050033868F /* telnetConsole.cc */,
+				867BAF5216AEC9050033868F /* telnetConsole.h */,
+			);
+			name = network;
+			path = ../../../source/network;
+			sourceTree = "<group>";
+		};
+		867BAF5316AEC9050033868F /* persistence */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF5416AEC9050033868F /* SimXMLDocument.cpp */,
+				867BAF5516AEC9050033868F /* SimXMLDocument.h */,
+				867BAF5616AEC9050033868F /* taml */,
+				867BAF6B16AEC9050033868F /* tinyXML */,
+			);
+			name = persistence;
+			path = ../../../source/persistence;
+			sourceTree = "<group>";
+		};
+		867BAF5616AEC9050033868F /* taml */ = {
+			isa = PBXGroup;
+			children = (
+				2AB97A1F16B66BE50080F940 /* tamlCustom.cc */,
+				2AB97A2016B66BE50080F940 /* tamlCustom.h */,
+				867BAF5716AEC9050033868F /* taml.cc */,
+				867BAF5816AEC9050033868F /* taml.h */,
+				867BAF5916AEC9050033868F /* taml_ScriptBinding.h */,
+				867BAF5A16AEC9050033868F /* tamlBinaryReader.cc */,
+				867BAF5B16AEC9050033868F /* tamlBinaryReader.h */,
+				867BAF5C16AEC9050033868F /* tamlBinaryWriter.cc */,
+				867BAF5D16AEC9050033868F /* tamlBinaryWriter.h */,
+				867BAF5E16AEC9050033868F /* tamlCallbacks.h */,
+				867BAF5F16AEC9050033868F /* tamlChildren.h */,
+				867BAF6216AEC9050033868F /* tamlWriteNode.cc */,
+				867BAF6316AEC9050033868F /* tamlWriteNode.h */,
+				867BAF6416AEC9050033868F /* tamlXmlParser.cc */,
+				867BAF6516AEC9050033868F /* tamlXmlParser.h */,
+				867BAF6616AEC9050033868F /* tamlXmlReader.cc */,
+				867BAF6716AEC9050033868F /* tamlXmlReader.h */,
+				867BAF6816AEC9050033868F /* tamlXmlVisitor.h */,
+				867BAF6916AEC9050033868F /* tamlXmlWriter.cc */,
+				867BAF6A16AEC9050033868F /* tamlXmlWriter.h */,
+			);
+			path = taml;
+			sourceTree = "<group>";
+		};
+		867BAF6B16AEC9050033868F /* tinyXML */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF6C16AEC9050033868F /* tinystr.cpp */,
+				867BAF6D16AEC9050033868F /* tinystr.h */,
+				867BAF6E16AEC9050033868F /* tinyxml.cpp */,
+				867BAF6F16AEC9050033868F /* tinyxml.h */,
+				867BAF7016AEC9050033868F /* tinyxmlerror.cpp */,
+				867BAF7116AEC9050033868F /* tinyxmlparser.cpp */,
+			);
+			path = tinyXML;
+			sourceTree = "<group>";
+		};
+		867BAF7216AEC9050033868F /* platform */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF7316AEC9050033868F /* CursorManager.cc */,
+				867BAF7416AEC9050033868F /* eaxtypes.h */,
+				867BAF7516AEC9050033868F /* event.h */,
+				867BAF7616AEC9050033868F /* GLCoreFunc.h */,
+				867BAF7716AEC9050033868F /* GLExtFunc.h */,
+				867BAF7816AEC9050033868F /* GLUFunc.h */,
+				867BAF7916AEC9050033868F /* menus */,
+				867BAF7C16AEC9050033868F /* nativeDialogs */,
+				867BAF8216AEC9050033868F /* platform.cc */,
+				867BAF8316AEC9050033868F /* platform.h */,
+				867BAF8416AEC9050033868F /* platform_ScriptBinding.h */,
+				867BAF8516AEC9050033868F /* platformAL.h */,
+				867BAF8616AEC9050033868F /* platformAssert.cc */,
+				867BAF8716AEC9050033868F /* platformAssert.h */,
+				867BAF8816AEC9050033868F /* platformAudio.h */,
+				867BAF8916AEC9050033868F /* platformCPU.cc */,
+				867BAF8A16AEC9050033868F /* platformCPU.h */,
+				867BAF8C16AEC9050033868F /* platformEndian.h */,
+				867BAF8D16AEC9050033868F /* platformFileIO.cc */,
+				867BAF8E16AEC9050033868F /* platformFileIO.h */,
+				867BAF8F16AEC9050033868F /* platformFont.cc */,
+				867BAF9016AEC9050033868F /* platformFont.h */,
+				867BAF9116AEC9050033868F /* platformGL.h */,
+				867BAF9216AEC9050033868F /* platformInput.h */,
+				867BAF9316AEC9050033868F /* platformInput_ScriptBinding.h */,
+				867BAF9416AEC9050033868F /* platformMath.h */,
+				867BAF9516AEC9050033868F /* platformMemory.cc */,
+				867BAF9616AEC9050033868F /* platformMemory.h */,
+				867BAF9716AEC9050033868F /* platformNetAsync.unix.cc */,
+				867BAF9816AEC9050033868F /* platformNetAsync.unix.h */,
+				867BAF9916AEC9050033868F /* platformNetwork.cc */,
+				867BAF9A16AEC9050033868F /* platformNetwork.h */,
+				867BAF9B16AEC9050033868F /* platformSemaphore.h */,
+				867BAF9C16AEC9050033868F /* platformString.cc */,
+				867BAF9D16AEC9050033868F /* platformString.h */,
+				867BAF9E16AEC9050033868F /* platformTimeManager.h */,
+				867BAF9F16AEC9050033868F /* platformTLS.h */,
+				867BAFA016AEC9050033868F /* platformVFS.h */,
+				867BAFA116AEC9050033868F /* platformVideo.cc */,
+				867BAFA216AEC9050033868F /* platformVideo.h */,
+				867BAFA316AEC9050033868F /* threads */,
+				867BAFA716AEC9050033868F /* Tickable.cc */,
+				867BAFA816AEC9050033868F /* Tickable.h */,
+				867BAFA916AEC9050033868F /* types.arm.h */,
+				867BAFAA16AEC9050033868F /* types.codewarrior.h */,
+				867BAFAB16AEC9050033868F /* types.gcc.h */,
+				867BAFAC16AEC9050033868F /* types.h */,
+				867BAFAD16AEC9050033868F /* types.posix.h */,
+				867BAFAE16AEC9050033868F /* types.ppc.h */,
+				867BAFAF16AEC9050033868F /* types.visualc.h */,
+				867BAFB016AEC9050033868F /* types.win32.h */,
+				867BAFB116AEC9050033868F /* typesLinux.h */,
+				867BAFB216AEC9050033868F /* typesPPC.h */,
+				867BAFB316AEC9050033868F /* typesWin32.h */,
+				867BAFB416AEC9050033868F /* typesX86UNIX.h */,
+			);
+			name = platform;
+			path = ../../../source/platform;
+			sourceTree = "<group>";
+		};
+		867BAF7916AEC9050033868F /* menus */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF7A16AEC9050033868F /* popupMenu.cc */,
+				867BAF7B16AEC9050033868F /* popupMenu.h */,
+			);
+			path = menus;
+			sourceTree = "<group>";
+		};
+		867BAF7C16AEC9050033868F /* nativeDialogs */ = {
+			isa = PBXGroup;
+			children = (
+				867BAF7D16AEC9050033868F /* fileDialog.cc */,
+				867BAF7E16AEC9050033868F /* fileDialog.h */,
+				867BAF7F16AEC9050033868F /* fileDialog_ScriptBinding.h */,
+				867BAF8016AEC9050033868F /* msgBox.cpp */,
+				867BAF8116AEC9050033868F /* msgBox.h */,
+			);
+			path = nativeDialogs;
+			sourceTree = "<group>";
+		};
+		867BAFA316AEC9050033868F /* threads */ = {
+			isa = PBXGroup;
+			children = (
+				867BAFA416AEC9050033868F /* mutex.h */,
+				867BAFA516AEC9050033868F /* semaphore.h */,
+				867BAFA616AEC9050033868F /* thread.h */,
+			);
+			path = threads;
+			sourceTree = "<group>";
+		};
+		867BAFB516AEC9050033868F /* sim */ = {
+			isa = PBXGroup;
+			children = (
+				867BAFB616AEC9050033868F /* scriptGroup.cc */,
+				867BAFB716AEC9050033868F /* scriptGroup.h */,
+				867BAFB816AEC9050033868F /* scriptObject.cc */,
+				867BAFB916AEC9050033868F /* scriptObject.h */,
+				867BAFBA16AEC9050033868F /* simBase.cc */,
+				867BAFBB16AEC9050033868F /* simBase.h */,
+				867BAFBC16AEC9050033868F /* simConsoleEvent.cc */,
+				867BAFBD16AEC9050033868F /* simConsoleEvent.h */,
+				867BAFBE16AEC9050033868F /* simConsoleThreadExecEvent.cc */,
+				867BAFBF16AEC9050033868F /* simConsoleThreadExecEvent.h */,
+				867BAFC016AEC9050033868F /* simDatablock.cc */,
+				867BAFC116AEC9050033868F /* simDatablock.h */,
+				867BAFC216AEC9050033868F /* simDatablockGroup.h */,
+				867BAFC316AEC9050033868F /* simDictionary.cc */,
+				867BAFC416AEC9050033868F /* simDictionary.h */,
+				867BAFC516AEC9050033868F /* simEvent.h */,
+				867BAFC616AEC9050033868F /* simFieldDictionary.cc */,
+				867BAFC716AEC9050033868F /* simFieldDictionary.h */,
+				867BAFC816AEC9050033868F /* simManager.cc */,
+				867BAFC916AEC9050033868F /* simObject.cc */,
+				867BAFCA16AEC9050033868F /* simObject.h */,
+				867BAFCB16AEC9050033868F /* SimObjectList.cc */,
+				867BAFCC16AEC9050033868F /* SimObjectList.h */,
+				867BAFCD16AEC9050033868F /* simObjectPtr.h */,
+				867BAFCE16AEC9050033868F /* simSerialize.cpp */,
+				867BAFCF16AEC9050033868F /* simSet.cc */,
+				867BAFD016AEC9050033868F /* simSet.h */,
+			);
+			name = sim;
+			path = ../../../source/sim;
+			sourceTree = "<group>";
+		};
+		867BAFD116AEC9050033868F /* string */ = {
+			isa = PBXGroup;
+			children = (
+				867BAFD216AEC9050033868F /* findMatch.cc */,
+				867BAFD316AEC9050033868F /* findMatch.h */,
+				867BAFD416AEC9050033868F /* stringBuffer.cc */,
+				867BAFD516AEC9050033868F /* stringBuffer.h */,
+				867BAFD616AEC9050033868F /* stringStack.cc */,
+				867BAFD716AEC9050033868F /* stringStack.h */,
+				867BAFD816AEC9050033868F /* stringTable.cc */,
+				867BAFD916AEC9050033868F /* stringTable.h */,
+				867BAFDA16AEC9050033868F /* stringUnit.cpp */,
+				867BAFDB16AEC9050033868F /* stringUnit.h */,
+				867BAFDC16AEC9050033868F /* unicode.cc */,
+				867BAFDD16AEC9050033868F /* unicode.h */,
+			);
+			name = string;
+			path = ../../../source/string;
+			sourceTree = "<group>";
+		};
+		867BB11916AEC9E10033868F /* Support_Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				867BB11C16AEC9FC0033868F /* box2d */,
+				867BB11B16AEC9ED0033868F /* lpng */,
+				867BB11A16AEC9E90033868F /* ljpeg */,
+			);
+			name = Support_Libraries;
+			sourceTree = "<group>";
+		};
+		867BB11A16AEC9E90033868F /* ljpeg */ = {
+			isa = PBXGroup;
+			children = (
+				867BB22716AECA110033868F /* jcapimin.c */,
+				867BB22816AECA110033868F /* jcapistd.c */,
+				867BB22916AECA110033868F /* jccoefct.c */,
+				867BB22A16AECA110033868F /* jccolor.c */,
+				867BB22B16AECA110033868F /* jcdctmgr.c */,
+				867BB22C16AECA110033868F /* jchuff.c */,
+				867BB22D16AECA110033868F /* jcinit.c */,
+				867BB22E16AECA110033868F /* jcmainct.c */,
+				867BB22F16AECA110033868F /* jcmarker.c */,
+				867BB23016AECA110033868F /* jcmaster.c */,
+				867BB23116AECA110033868F /* jcomapi.c */,
+				867BB23216AECA110033868F /* jcparam.c */,
+				867BB23316AECA110033868F /* jcphuff.c */,
+				867BB23416AECA110033868F /* jcprepct.c */,
+				867BB23516AECA110033868F /* jcsample.c */,
+				867BB23616AECA110033868F /* jctrans.c */,
+				867BB23716AECA110033868F /* jdapimin.c */,
+				867BB23816AECA110033868F /* jdapistd.c */,
+				867BB23916AECA110033868F /* jdatadst.c */,
+				867BB23A16AECA110033868F /* jdatasrc.c */,
+				867BB23B16AECA110033868F /* jdcoefct.c */,
+				867BB23C16AECA110033868F /* jdcolor.c */,
+				867BB23D16AECA110033868F /* jddctmgr.c */,
+				867BB23E16AECA110033868F /* jdhuff.c */,
+				867BB23F16AECA110033868F /* jdinput.c */,
+				867BB24016AECA110033868F /* jdmainct.c */,
+				867BB24116AECA110033868F /* jdmarker.c */,
+				867BB24216AECA110033868F /* jdmaster.c */,
+				867BB24316AECA110033868F /* jdmerge.c */,
+				867BB24416AECA110033868F /* jdphuff.c */,
+				867BB24516AECA110033868F /* jdpostct.c */,
+				867BB24616AECA110033868F /* jdsample.c */,
+				867BB24716AECA110033868F /* jdtrans.c */,
+				867BB24816AECA110033868F /* jerror.c */,
+				867BB24916AECA110033868F /* jfdctflt.c */,
+				867BB24A16AECA110033868F /* jfdctfst.c */,
+				867BB24B16AECA110033868F /* jfdctint.c */,
+				867BB24C16AECA110033868F /* jidctflt.c */,
+				867BB24D16AECA110033868F /* jidctfst.c */,
+				867BB24E16AECA110033868F /* jidctint.c */,
+				867BB24F16AECA110033868F /* jidctred.c */,
+				867BB25016AECA110033868F /* jmemansi.c */,
+				867BB25116AECA110033868F /* jmemmgr.c */,
+				867BB25216AECA110033868F /* jquant1.c */,
+				867BB25316AECA110033868F /* jquant2.c */,
+				867BB25416AECA110033868F /* jutils.c */,
+			);
+			name = ljpeg;
+			sourceTree = "<group>";
+		};
+		867BB11B16AEC9ED0033868F /* lpng */ = {
+			isa = PBXGroup;
+			children = (
+				867BB20916AECA070033868F /* png.c */,
+				867BB20A16AECA070033868F /* pngerror.c */,
+				867BB20B16AECA070033868F /* pngget.c */,
+				867BB20C16AECA070033868F /* pngmem.c */,
+				867BB20D16AECA070033868F /* pngpread.c */,
+				867BB20E16AECA070033868F /* pngread.c */,
+				867BB20F16AECA070033868F /* pngrio.c */,
+				867BB21016AECA070033868F /* pngrtran.c */,
+				867BB21116AECA070033868F /* pngrutil.c */,
+				867BB21216AECA070033868F /* pngset.c */,
+				867BB21316AECA070033868F /* pngtrans.c */,
+				867BB21416AECA070033868F /* pngwio.c */,
+				867BB21516AECA070033868F /* pngwrite.c */,
+				867BB21616AECA070033868F /* pngwtran.c */,
+				867BB21716AECA070033868F /* pngwutil.c */,
+			);
+			name = lpng;
+			sourceTree = "<group>";
+		};
+		867BB11C16AEC9FC0033868F /* box2d */ = {
+			isa = PBXGroup;
+			children = (
+				867BB11D16AEC9FC0033868F /* Box2D.h */,
+				867BB11E16AEC9FC0033868F /* Collision */,
+				867BB13616AEC9FC0033868F /* Common */,
+				867BB14416AEC9FC0033868F /* Dynamics */,
+				867BB1AC16AEC9FC0033868F /* Rope */,
+			);
+			name = box2d;
+			path = ../../source/box2d;
+			sourceTree = "<group>";
+		};
+		867BB11E16AEC9FC0033868F /* Collision */ = {
+			isa = PBXGroup;
+			children = (
+				867BB11F16AEC9FC0033868F /* b2BroadPhase.cpp */,
+				867BB12016AEC9FC0033868F /* b2BroadPhase.h */,
+				867BB12116AEC9FC0033868F /* b2CollideCircle.cpp */,
+				867BB12216AEC9FC0033868F /* b2CollideEdge.cpp */,
+				867BB12316AEC9FC0033868F /* b2CollidePolygon.cpp */,
+				867BB12416AEC9FC0033868F /* b2Collision.cpp */,
+				867BB12516AEC9FC0033868F /* b2Collision.h */,
+				867BB12616AEC9FC0033868F /* b2Distance.cpp */,
+				867BB12716AEC9FC0033868F /* b2Distance.h */,
+				867BB12816AEC9FC0033868F /* b2DynamicTree.cpp */,
+				867BB12916AEC9FC0033868F /* b2DynamicTree.h */,
+				867BB12A16AEC9FC0033868F /* b2TimeOfImpact.cpp */,
+				867BB12B16AEC9FC0033868F /* b2TimeOfImpact.h */,
+				867BB12C16AEC9FC0033868F /* Shapes */,
+			);
+			path = Collision;
+			sourceTree = "<group>";
+		};
+		867BB12C16AEC9FC0033868F /* Shapes */ = {
+			isa = PBXGroup;
+			children = (
+				867BB12D16AEC9FC0033868F /* b2ChainShape.cpp */,
+				867BB12E16AEC9FC0033868F /* b2ChainShape.h */,
+				867BB12F16AEC9FC0033868F /* b2CircleShape.cpp */,
+				867BB13016AEC9FC0033868F /* b2CircleShape.h */,
+				867BB13116AEC9FC0033868F /* b2EdgeShape.cpp */,
+				867BB13216AEC9FC0033868F /* b2EdgeShape.h */,
+				867BB13316AEC9FC0033868F /* b2PolygonShape.cpp */,
+				867BB13416AEC9FC0033868F /* b2PolygonShape.h */,
+				867BB13516AEC9FC0033868F /* b2Shape.h */,
+			);
+			path = Shapes;
+			sourceTree = "<group>";
+		};
+		867BB13616AEC9FC0033868F /* Common */ = {
+			isa = PBXGroup;
+			children = (
+				867BB13716AEC9FC0033868F /* b2BlockAllocator.cpp */,
+				867BB13816AEC9FC0033868F /* b2BlockAllocator.h */,
+				867BB13916AEC9FC0033868F /* b2Draw.cpp */,
+				867BB13A16AEC9FC0033868F /* b2Draw.h */,
+				867BB13B16AEC9FC0033868F /* b2GrowableStack.h */,
+				867BB13C16AEC9FC0033868F /* b2Math.cpp */,
+				867BB13D16AEC9FC0033868F /* b2Math.h */,
+				867BB13E16AEC9FC0033868F /* b2Settings.cpp */,
+				867BB13F16AEC9FC0033868F /* b2Settings.h */,
+				867BB14016AEC9FC0033868F /* b2StackAllocator.cpp */,
+				867BB14116AEC9FC0033868F /* b2StackAllocator.h */,
+				867BB14216AEC9FC0033868F /* b2Timer.cpp */,
+				867BB14316AEC9FC0033868F /* b2Timer.h */,
+			);
+			path = Common;
+			sourceTree = "<group>";
+		};
+		867BB14416AEC9FC0033868F /* Dynamics */ = {
+			isa = PBXGroup;
+			children = (
+				867BB14516AEC9FC0033868F /* b2Body.cpp */,
+				867BB14616AEC9FC0033868F /* b2Body.h */,
+				867BB14716AEC9FC0033868F /* b2ContactManager.cpp */,
+				867BB14816AEC9FC0033868F /* b2ContactManager.h */,
+				867BB14916AEC9FC0033868F /* b2Fixture.cpp */,
+				867BB14A16AEC9FC0033868F /* b2Fixture.h */,
+				867BB14B16AEC9FC0033868F /* b2Island.cpp */,
+				867BB14C16AEC9FC0033868F /* b2Island.h */,
+				867BB14D16AEC9FC0033868F /* b2TimeStep.h */,
+				867BB14E16AEC9FC0033868F /* b2World.cpp */,
+				867BB14F16AEC9FC0033868F /* b2World.h */,
+				867BB15016AEC9FC0033868F /* b2WorldCallbacks.cpp */,
+				867BB15116AEC9FC0033868F /* b2WorldCallbacks.h */,
+				867BB15216AEC9FC0033868F /* Contacts */,
+				867BB16516AEC9FC0033868F /* Joints */,
+			);
+			path = Dynamics;
+			sourceTree = "<group>";
+		};
+		867BB15216AEC9FC0033868F /* Contacts */ = {
+			isa = PBXGroup;
+			children = (
+				867BB15316AEC9FC0033868F /* b2ChainAndCircleContact.cpp */,
+				867BB15416AEC9FC0033868F /* b2ChainAndCircleContact.h */,
+				867BB15516AEC9FC0033868F /* b2ChainAndPolygonContact.cpp */,
+				867BB15616AEC9FC0033868F /* b2ChainAndPolygonContact.h */,
+				867BB15716AEC9FC0033868F /* b2CircleContact.cpp */,
+				867BB15816AEC9FC0033868F /* b2CircleContact.h */,
+				867BB15916AEC9FC0033868F /* b2Contact.cpp */,
+				867BB15A16AEC9FC0033868F /* b2Contact.h */,
+				867BB15B16AEC9FC0033868F /* b2ContactSolver.cpp */,
+				867BB15C16AEC9FC0033868F /* b2ContactSolver.h */,
+				867BB15D16AEC9FC0033868F /* b2EdgeAndCircleContact.cpp */,
+				867BB15E16AEC9FC0033868F /* b2EdgeAndCircleContact.h */,
+				867BB15F16AEC9FC0033868F /* b2EdgeAndPolygonContact.cpp */,
+				867BB16016AEC9FC0033868F /* b2EdgeAndPolygonContact.h */,
+				867BB16116AEC9FC0033868F /* b2PolygonAndCircleContact.cpp */,
+				867BB16216AEC9FC0033868F /* b2PolygonAndCircleContact.h */,
+				867BB16316AEC9FC0033868F /* b2PolygonContact.cpp */,
+				867BB16416AEC9FC0033868F /* b2PolygonContact.h */,
+			);
+			path = Contacts;
+			sourceTree = "<group>";
+		};
+		867BB16516AEC9FC0033868F /* Joints */ = {
+			isa = PBXGroup;
+			children = (
+				867BB16616AEC9FC0033868F /* b2DistanceJoint.cpp */,
+				867BB16716AEC9FC0033868F /* b2DistanceJoint.h */,
+				867BB16816AEC9FC0033868F /* b2FrictionJoint.cpp */,
+				867BB16916AEC9FC0033868F /* b2FrictionJoint.h */,
+				867BB16A16AEC9FC0033868F /* b2GearJoint.cpp */,
+				867BB16B16AEC9FC0033868F /* b2GearJoint.h */,
+				867BB16C16AEC9FC0033868F /* b2Joint.cpp */,
+				867BB16D16AEC9FC0033868F /* b2Joint.h */,
+				867BB16E16AEC9FC0033868F /* b2MotorJoint.cpp */,
+				867BB16F16AEC9FC0033868F /* b2MotorJoint.h */,
+				867BB17016AEC9FC0033868F /* b2MouseJoint.cpp */,
+				867BB17116AEC9FC0033868F /* b2MouseJoint.h */,
+				867BB17216AEC9FC0033868F /* b2PrismaticJoint.cpp */,
+				867BB17316AEC9FC0033868F /* b2PrismaticJoint.h */,
+				867BB17416AEC9FC0033868F /* b2PulleyJoint.cpp */,
+				867BB17516AEC9FC0033868F /* b2PulleyJoint.h */,
+				867BB17616AEC9FC0033868F /* b2RevoluteJoint.cpp */,
+				867BB17716AEC9FC0033868F /* b2RevoluteJoint.h */,
+				867BB17816AEC9FC0033868F /* b2RopeJoint.cpp */,
+				867BB17916AEC9FC0033868F /* b2RopeJoint.h */,
+				867BB17A16AEC9FC0033868F /* b2WeldJoint.cpp */,
+				867BB17B16AEC9FC0033868F /* b2WeldJoint.h */,
+				867BB17C16AEC9FC0033868F /* b2WheelJoint.cpp */,
+				867BB17D16AEC9FC0033868F /* b2WheelJoint.h */,
+			);
+			path = Joints;
+			sourceTree = "<group>";
+		};
+		867BB1AC16AEC9FC0033868F /* Rope */ = {
+			isa = PBXGroup;
+			children = (
+				867BB1AD16AEC9FC0033868F /* b2Rope.cpp */,
+				867BB1AE16AEC9FC0033868F /* b2Rope.h */,
+			);
+			path = Rope;
+			sourceTree = "<group>";
+		};
+		867BB28316AECA960033868F /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				8610F32D16AEEC670015BCEB /* main.cs */,
+				8610F32E16AEEC670015BCEB /* modules */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		86A9A3A516AEC786003F01E6 = {
+			isa = PBXGroup;
+			children = (
+				867BB28316AECA960033868F /* Resources */,
+				867BB11916AEC9E10033868F /* Support_Libraries */,
+				867BAC9116AEC8BB0033868F /* platformiOS */,
+				86A9A3BB16AEC786003F01E6 /* Supporting Files */,
+				86A9A3BA16AEC786003F01E6 /* Torque2D */,
+				86A9A3B316AEC786003F01E6 /* Frameworks */,
+				86A9A3B116AEC786003F01E6 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		86A9A3B116AEC786003F01E6 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				86A9A3B016AEC786003F01E6 /* Torque2D.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		86A9A3B316AEC786003F01E6 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				2AED7D9216B70102003482CF /* CoreText.framework */,
+				86555D3E16B2C75900881446 /* GLKit.framework */,
+				86A9A3DA16AEC817003F01E6 /* AudioToolbox.framework */,
+				86A9A3DB16AEC817003F01E6 /* AVFoundation.framework */,
+				86A9A3DC16AEC817003F01E6 /* CoreAudio.framework */,
+				86A9A3DD16AEC817003F01E6 /* CoreFoundation.framework */,
+				86A9A3DE16AEC817003F01E6 /* CoreImage.framework */,
+				86A9A3DF16AEC817003F01E6 /* CoreMedia.framework */,
+				86A9A3E016AEC817003F01E6 /* CoreMotion.framework */,
+				86A9A3E116AEC817003F01E6 /* CoreVideo.framework */,
+				86A9A3E216AEC817003F01E6 /* libz.dylib */,
+				86A9A3E316AEC817003F01E6 /* MediaPlayer.framework */,
+				86A9A3E416AEC817003F01E6 /* OpenAL.framework */,
+				86A9A3E516AEC817003F01E6 /* OpenGLES.framework */,
+				86A9A3E616AEC817003F01E6 /* QuartzCore.framework */,
+				86A9A3B416AEC786003F01E6 /* UIKit.framework */,
+				86A9A3B616AEC786003F01E6 /* Foundation.framework */,
+				86A9A3B816AEC786003F01E6 /* CoreGraphics.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		86A9A3BA16AEC786003F01E6 /* Torque2D */ = {
+			isa = PBXGroup;
+			children = (
+				867BACF816AEC9050033868F /* 2d */,
+				867BAD6916AEC9050033868F /* algorithm */,
+				867BAD7016AEC9050033868F /* assets */,
+				867BAD8916AEC9050033868F /* audio */,
+				867BAD9816AEC9050033868F /* collection */,
+				867BADAF16AEC9050033868F /* component */,
+				867BADD016AEC9050033868F /* console */,
+				867BADFC16AEC9050033868F /* debug */,
+				867BAE0B16AEC9050033868F /* delegates */,
+				867BAE1016AEC9050033868F /* game */,
+				867BAE1B16AEC9050033868F /* graphics */,
+				867BAE3A16AEC9050033868F /* gui */,
+				867BAEBB16AEC9050033868F /* input */,
+				867BAEBE16AEC9050033868F /* io */,
+				867BAEF316AEC9050033868F /* math */,
+				867BAF1A16AEC9050033868F /* memory */,
+				867BAF2116AEC9050033868F /* messaging */,
+				867BAF2C16AEC9050033868F /* module */,
+				867BAF3716AEC9050033868F /* network */,
+				867BAF5316AEC9050033868F /* persistence */,
+				867BAF7216AEC9050033868F /* platform */,
+				867BAFB516AEC9050033868F /* sim */,
+				867BAFD116AEC9050033868F /* string */,
+				867BAFDE16AEC9050033868F /* torqueConfig.h */,
+			);
+			path = Torque2D;
+			sourceTree = "<group>";
+		};
+		86A9A3BB16AEC786003F01E6 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				86A9A3BC16AEC786003F01E6 /* Torque2D-Info.plist */,
+				86555D2B16B2C29200881446 /* iPadStoryboard.storyboard */,
+				86555D2D16B2C29200881446 /* iPhoneStoryboard.storyboard */,
+				86A9A3BD16AEC786003F01E6 /* InfoPlist.strings */,
+				86A9A3C216AEC786003F01E6 /* Torque2D-Prefix.pch */,
+				86A9A3C616AEC786003F01E6 /* Default.png */,
+				86A9A3C816AEC786003F01E6 /* [email protected] */,
+				86A9A3CA16AEC786003F01E6 /* [email protected] */,
+			);
+			name = "Supporting Files";
+			path = Torque2D;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		86A9A3AF16AEC786003F01E6 /* Torque2D */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 86A9A3D716AEC786003F01E6 /* Build configuration list for PBXNativeTarget "Torque2D" */;
+			buildPhases = (
+				86A9A3AC16AEC786003F01E6 /* Sources */,
+				86A9A3AD16AEC786003F01E6 /* Frameworks */,
+				86A9A3AE16AEC786003F01E6 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Torque2D;
+			productName = Torque2D;
+			productReference = 86A9A3B016AEC786003F01E6 /* Torque2D.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		86A9A3A716AEC786003F01E6 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0450;
+				ORGANIZATIONNAME = "Michael Perry";
+			};
+			buildConfigurationList = 86A9A3AA16AEC786003F01E6 /* Build configuration list for PBXProject "Torque2D" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 86A9A3A516AEC786003F01E6;
+			productRefGroup = 86A9A3B116AEC786003F01E6 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				86A9A3AF16AEC786003F01E6 /* Torque2D */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		86A9A3AE16AEC786003F01E6 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				86A9A3BF16AEC786003F01E6 /* InfoPlist.strings in Resources */,
+				86A9A3C716AEC786003F01E6 /* Default.png in Resources */,
+				86A9A3C916AEC786003F01E6 /* [email protected] in Resources */,
+				86A9A3CB16AEC786003F01E6 /* [email protected] in Resources */,
+				867BB02916AEC9050033868F /* bison.simple in Resources */,
+				8610F32F16AEEC670015BCEB /* main.cs in Resources */,
+				8610F33016AEEC670015BCEB /* modules in Resources */,
+				86555D2F16B2C29200881446 /* iPadStoryboard.storyboard in Resources */,
+				86555D3016B2C29200881446 /* iPhoneStoryboard.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		86A9A3AC16AEC786003F01E6 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				867BACD216AEC8BB0033868F /* GameCenter.mm in Sources */,
+				867BACD316AEC8BB0033868F /* iOSAlerts.mm in Sources */,
+				867BACD416AEC8BB0033868F /* iOSAudio.mm in Sources */,
+				867BACD516AEC8BB0033868F /* iOSConsole.mm in Sources */,
+				867BACD616AEC8BB0033868F /* iOSCPUInfo.mm in Sources */,
+				867BACD716AEC8BB0033868F /* iOSDialogs.mm in Sources */,
+				867BACD816AEC8BB0033868F /* iOSEvents.mm in Sources */,
+				867BACD916AEC8BB0033868F /* iOSFileio.mm in Sources */,
+				867BACDA16AEC8BB0033868F /* iOSFont.mm in Sources */,
+				867BACDB16AEC8BB0033868F /* iOSGL.mm in Sources */,
+				867BACDD16AEC8BB0033868F /* iOSInput.mm in Sources */,
+				867BACDF16AEC8BB0033868F /* iOSMath.mm in Sources */,
+				867BACE016AEC8BB0033868F /* iOSMemory.mm in Sources */,
+				867BACE116AEC8BB0033868F /* iOSMotionManager.mm in Sources */,
+				867BACE216AEC8BB0033868F /* iOSMoviePlayback.mm in Sources */,
+				867BACE316AEC8BB0033868F /* iOSMutex.mm in Sources */,
+				867BACE416AEC8BB0033868F /* iOSNet.mm in Sources */,
+				867BACE516AEC8BB0033868F /* iOSOGLVideo.mm in Sources */,
+				867BACE616AEC8BB0033868F /* iOSOutlineGL.mm in Sources */,
+				867BACE716AEC8BB0033868F /* iOSPlatform.mm in Sources */,
+				867BACE816AEC8BB0033868F /* iOSProcessControl.mm in Sources */,
+				867BACE916AEC8BB0033868F /* iOSProfiler.mm in Sources */,
+				867BACEA16AEC8BB0033868F /* iOSSemaphore.mm in Sources */,
+				867BACEB16AEC8BB0033868F /* iOSStreamSource.cc in Sources */,
+				867BACEC16AEC8BB0033868F /* iOSStrings.mm in Sources */,
+				867BACEF16AEC8BB0033868F /* iOSThread.mm in Sources */,
+				867BACF016AEC8BB0033868F /* iOSTime.mm in Sources */,
+				867BACF116AEC8BB0033868F /* iOSUserMusicLibrary.mm in Sources */,
+				867BACF216AEC8BB0033868F /* iOSUtil.mm in Sources */,
+				867BACF316AEC8BB0033868F /* iOSWindow.mm in Sources */,
+				867BACF416AEC8BB0033868F /* main.mm in Sources */,
+				867BACF516AEC8BB0033868F /* popupMenu.mm in Sources */,
+				867BACF616AEC8BB0033868F /* SoundEngine.mm in Sources */,
+				867BAFDF16AEC9050033868F /* AnimationAsset.cc in Sources */,
+				867BAFE016AEC9050033868F /* AnimationController.cc in Sources */,
+				867BAFE116AEC9050033868F /* ImageAsset.cc in Sources */,
+				867BAFE216AEC9050033868F /* ParticleAsset.cc in Sources */,
+				867BAFE316AEC9050033868F /* ParticleAssetEmitter.cc in Sources */,
+				867BAFE416AEC9050033868F /* ParticleAssetField.cc in Sources */,
+				867BAFE516AEC9050033868F /* ParticleAssetFieldCollection.cc in Sources */,
+				867BAFE616AEC9050033868F /* BatchRender.cc in Sources */,
+				867BAFE716AEC9050033868F /* CoreMath.cc in Sources */,
+				867BAFE816AEC9050033868F /* ParticleSystem.cc in Sources */,
+				867BAFE916AEC9050033868F /* RenderProxy.cc in Sources */,
+				867BAFEA16AEC9050033868F /* SpriteBase.cc in Sources */,
+				867BAFEB16AEC9050033868F /* SpriteBatch.cc in Sources */,
+				867BAFEC16AEC9050033868F /* SpriteBatchItem.cc in Sources */,
+				867BAFED16AEC9050033868F /* SpriteProxyBase.cc in Sources */,
+				867BAFEE16AEC9050033868F /* Utility.cc in Sources */,
+				867BAFEF16AEC9050033868F /* Vector2.cc in Sources */,
+				867BAFF016AEC9050033868F /* guiImageButtonCtrl.cc in Sources */,
+				867BAFF116AEC9050033868F /* guiSceneObjectCtrl.cc in Sources */,
+				867BAFF216AEC9050033868F /* guiSpriteCtrl.cc in Sources */,
+				867BAFF316AEC9050033868F /* SceneWindow.cc in Sources */,
+				867BAFF416AEC9050033868F /* ContactFilter.cc in Sources */,
+				867BAFF516AEC9050033868F /* DebugDraw.cc in Sources */,
+				867BAFF616AEC9050033868F /* Scene.cc in Sources */,
+				867BAFF716AEC9050033868F /* SceneRenderFactories.cpp in Sources */,
+				867BAFF816AEC9050033868F /* SceneRenderQueue.cpp in Sources */,
+				867BAFF916AEC9050033868F /* WorldQuery.cc in Sources */,
+				867BAFFB16AEC9050033868F /* CompositeSprite.cc in Sources */,
+				867BAFFC16AEC9050033868F /* ParticlePlayer.cc in Sources */,
+				867BAFFE16AEC9050033868F /* SceneObject.cc in Sources */,
+				867BB00116AEC9050033868F /* Scroller.cc in Sources */,
+				867BB00216AEC9050033868F /* ShapeVector.cc in Sources */,
+				867BB00316AEC9050033868F /* Sprite.cc in Sources */,
+				867BB00416AEC9050033868F /* Trigger.cc in Sources */,
+				867BB00516AEC9050033868F /* crc.cc in Sources */,
+				867BB00616AEC9050033868F /* hashFunction.cc in Sources */,
+				867BB00716AEC9050033868F /* assetBase.cc in Sources */,
+				867BB00816AEC9050033868F /* assetFieldTypes.cc in Sources */,
+				867BB00916AEC9050033868F /* assetManager.cc in Sources */,
+				867BB00B16AEC9050033868F /* assetQuery.cc in Sources */,
+				867BB00C16AEC9050033868F /* assetSnapshot.cc in Sources */,
+				867BB00D16AEC9050033868F /* assetTagsManifest.cc in Sources */,
+				867BB00E16AEC9050033868F /* audio.cc in Sources */,
+				867BB00F16AEC9050033868F /* AudioAsset.cc in Sources */,
+				867BB01016AEC9050033868F /* audioBuffer.cc in Sources */,
+				867BB01116AEC9050033868F /* audioDataBlock.cc in Sources */,
+				867BB01216AEC9050033868F /* audioFunctions.cc in Sources */,
+				867BB01316AEC9050033868F /* audioStreamSourceFactory.cc in Sources */,
+				867BB01416AEC9050033868F /* wavStreamSource.cc in Sources */,
+				867BB01516AEC9050033868F /* bitTables.cc in Sources */,
+				867BB01616AEC9050033868F /* hashTable.cc in Sources */,
+				867BB01716AEC9050033868F /* nameTags.cpp in Sources */,
+				867BB01816AEC9050033868F /* undo.cc in Sources */,
+				867BB01916AEC9050033868F /* vector.cc in Sources */,
+				867BB02016AEC9050033868F /* behaviorComponent.cpp in Sources */,
+				867BB02116AEC9050033868F /* behaviorInstance.cpp in Sources */,
+				867BB02216AEC9050033868F /* behaviorTemplate.cpp in Sources */,
+				867BB02316AEC9050033868F /* dynamicConsoleMethodComponent.cpp in Sources */,
+				867BB02516AEC9050033868F /* simComponent.cpp in Sources */,
+				867BB02616AEC9050033868F /* astAlloc.cc in Sources */,
+				867BB02716AEC9050033868F /* astNodes.cc in Sources */,
+				867BB02A16AEC9050033868F /* cmdgram.cc in Sources */,
+				867BB02C16AEC9050033868F /* CMDscan.cc in Sources */,
+				867BB02E16AEC9050033868F /* codeBlock.cc in Sources */,
+				867BB02F16AEC9050033868F /* compiledEval.cc in Sources */,
+				867BB03016AEC9050033868F /* compiler.cc in Sources */,
+				867BB03116AEC9050033868F /* console.cc in Sources */,
+				867BB03216AEC9050033868F /* consoleBaseType.cc in Sources */,
+				867BB03316AEC9050033868F /* consoleDictionary.cc in Sources */,
+				867BB03416AEC9050033868F /* consoleDoc.cc in Sources */,
+				867BB03516AEC9050033868F /* consoleExprEvalState.cc in Sources */,
+				867BB03616AEC9050033868F /* consoleFunctions.cc in Sources */,
+				867BB03716AEC9050033868F /* consoleLogger.cc in Sources */,
+				867BB03816AEC9050033868F /* consoleNamespace.cc in Sources */,
+				867BB03916AEC9050033868F /* consoleObject.cc in Sources */,
+				867BB03A16AEC9050033868F /* consoleParser.cc in Sources */,
+				867BB03B16AEC9050033868F /* consoleTypes.cc in Sources */,
+				867BB03C16AEC9050033868F /* ConsoleTypeValidators.cc in Sources */,
+				867BB03E16AEC9050033868F /* Package.cc in Sources */,
+				867BB03F16AEC9050033868F /* profiler.cc in Sources */,
+				867BB04016AEC9050033868F /* RemoteDebugger1.cc in Sources */,
+				867BB04116AEC9050033868F /* RemoteDebuggerBase.cc in Sources */,
+				867BB04216AEC9050033868F /* RemoteDebuggerBridge.cc in Sources */,
+				867BB04316AEC9050033868F /* telnetDebugger.cc in Sources */,
+				867BB04416AEC9050033868F /* delegateSignal.cpp in Sources */,
+				867BB04516AEC9050033868F /* defaultGame.cc in Sources */,
+				867BB04616AEC9050033868F /* gameConnection.cc in Sources */,
+				867BB04716AEC9050033868F /* gameInterface.cc in Sources */,
+				867BB04816AEC9050033868F /* version.cc in Sources */,
+				867BB04916AEC9050033868F /* bitmapBmp.cc in Sources */,
+				867BB04A16AEC9050033868F /* bitmapJpeg.cc in Sources */,
+				867BB04B16AEC9050033868F /* bitmapPng.cc in Sources */,
+				867BB04C16AEC9050033868F /* bitmapPvr.cc in Sources */,
+				867BB04E16AEC9050033868F /* color.cc in Sources */,
+				867BB04F16AEC9050033868F /* dgl.cc in Sources */,
+				867BB05016AEC9050033868F /* dglMatrix.cc in Sources */,
+				867BB05116AEC9050033868F /* DynamicTexture.cc in Sources */,
+				867BB05216AEC9050033868F /* gBitmap.cc in Sources */,
+				867BB05316AEC9050033868F /* gFont.cc in Sources */,
+				867BB05416AEC9050033868F /* gPalette.cc in Sources */,
+				867BB05516AEC9050033868F /* PNGImage.cpp in Sources */,
+				867BB05616AEC9050033868F /* splineUtil.cc in Sources */,
+				867BB05716AEC9050033868F /* TextureDictionary.cc in Sources */,
+				867BB05816AEC9050033868F /* TextureHandle.cc in Sources */,
+				867BB05916AEC9050033868F /* TextureManager.cc in Sources */,
+				867BB05A16AEC9050033868F /* guiBitmapButtonCtrl.cc in Sources */,
+				867BB05B16AEC9050033868F /* guiBorderButton.cc in Sources */,
+				867BB05C16AEC9050033868F /* guiButtonBaseCtrl.cc in Sources */,
+				867BB05D16AEC9050033868F /* guiButtonCtrl.cc in Sources */,
+				867BB05E16AEC9050033868F /* guiCheckBoxCtrl.cc in Sources */,
+				867BB05F16AEC9050033868F /* guiIconButtonCtrl.cc in Sources */,
+				867BB06016AEC9050033868F /* guiRadioCtrl.cc in Sources */,
+				867BB06116AEC9050033868F /* guiToolboxButtonCtrl.cc in Sources */,
+				867BB06216AEC9050033868F /* guiAutoScrollCtrl.cc in Sources */,
+				867BB06316AEC9050033868F /* guiCtrlArrayCtrl.cc in Sources */,
+				867BB06416AEC9050033868F /* guiDragAndDropCtrl.cc in Sources */,
+				867BB06516AEC9050033868F /* guiDynamicCtrlArrayCtrl.cc in Sources */,
+				867BB06616AEC9050033868F /* guiFormCtrl.cc in Sources */,
+				867BB06716AEC9050033868F /* guiFrameCtrl.cc in Sources */,
+				867BB06816AEC9050033868F /* guiPaneCtrl.cc in Sources */,
+				867BB06916AEC9050033868F /* guiRolloutCtrl.cc in Sources */,
+				867BB06A16AEC9050033868F /* guiScrollCtrl.cc in Sources */,
+				867BB06B16AEC9050033868F /* guiStackCtrl.cc in Sources */,
+				867BB06C16AEC9050033868F /* guiTabBookCtrl.cc in Sources */,
+				867BB06D16AEC9050033868F /* guiWindowCtrl.cc in Sources */,
+				867BB06E16AEC9050033868F /* guiControlListPopup.cc in Sources */,
+				867BB06F16AEC9050033868F /* guiDebugger.cc in Sources */,
+				867BB07016AEC9050033868F /* guiEditCtrl.cc in Sources */,
+				867BB07116AEC9050033868F /* guiFilterCtrl.cc in Sources */,
+				867BB07316AEC9050033868F /* guiImageList.cc in Sources */,
+				867BB07416AEC9050033868F /* guiInspector.cc in Sources */,
+				867BB07516AEC9050033868F /* guiInspectorTypes.cc in Sources */,
+				867BB07616AEC9050033868F /* guiMenuBar.cc in Sources */,
+				867BB07716AEC9050033868F /* guiSeparatorCtrl.cc in Sources */,
+				867BB07816AEC9050033868F /* guiArrayCtrl.cc in Sources */,
+				867BB07916AEC9050033868F /* guiBackgroundCtrl.cc in Sources */,
+				867BB07A16AEC9050033868F /* guiBitmapBorderCtrl.cc in Sources */,
+				867BB07B16AEC9050033868F /* guiBitmapCtrl.cc in Sources */,
+				867BB07C16AEC9050033868F /* guiBubbleTextCtrl.cc in Sources */,
+				867BB07D16AEC9050033868F /* guiCanvas.cc in Sources */,
+				867BB07F16AEC9050033868F /* guiConsole.cc in Sources */,
+				867BB08016AEC9050033868F /* guiConsoleEditCtrl.cc in Sources */,
+				867BB08116AEC9050033868F /* guiConsoleTextCtrl.cc in Sources */,
+				867BB08216AEC9050033868F /* guiControl.cc in Sources */,
+				867BB08316AEC9050033868F /* guiDefaultControlRender.cc in Sources */,
+				867BB08416AEC9050033868F /* guiFadeinBitmapCtrl.cc in Sources */,
+				867BB08516AEC9050033868F /* guiInputCtrl.cc in Sources */,
+				867BB08616AEC9050033868F /* guiListBoxCtrl.cc in Sources */,
+				867BB08716AEC9050033868F /* guiMessageVectorCtrl.cc in Sources */,
+				867BB08816AEC9050033868F /* guiMLTextCtrl.cc in Sources */,
+				867BB08916AEC9050033868F /* guiMLTextEditCtrl.cc in Sources */,
+				867BB08A16AEC9050033868F /* guiMouseEventCtrl.cc in Sources */,
+				867BB08B16AEC9050033868F /* guiPopUpCtrl.cc in Sources */,
+				867BB08C16AEC9050033868F /* guiPopUpCtrlEx.cc in Sources */,
+				867BB08D16AEC9050033868F /* guiProgressCtrl.cc in Sources */,
+				867BB08E16AEC9050033868F /* guiScriptNotifyControl.cc in Sources */,
+				867BB09016AEC9050033868F /* guiTabPageCtrl.cc in Sources */,
+				867BB09116AEC9050033868F /* guiTextCtrl.cc in Sources */,
+				867BB09216AEC9050033868F /* guiTextEditCtrl.cc in Sources */,
+				867BB09316AEC9050033868F /* guiTextEditSliderCtrl.cc in Sources */,
+				867BB09416AEC9050033868F /* guiTextListCtrl.cc in Sources */,
+				867BB09516AEC9050033868F /* guiTickCtrl.cc in Sources */,
+				867BB09616AEC9050033868F /* guiTreeViewCtrl.cc in Sources */,
+				867BB09716AEC9050033868F /* guiTypes.cc in Sources */,
+				867BB09816AEC9050033868F /* lang.cc in Sources */,
+				867BB09916AEC9050033868F /* messageVector.cc in Sources */,
+				867BB09A16AEC9050033868F /* actionMap.cc in Sources */,
+				867BB09B16AEC9050033868F /* bitStream.cc in Sources */,
+				867BB09C16AEC9050033868F /* bufferStream.cc in Sources */,
+				867BB09D16AEC9050033868F /* fileObject.cc in Sources */,
+				867BB09E16AEC9050033868F /* fileStream.cc in Sources */,
+				867BB09F16AEC9050033868F /* fileStreamObject.cc in Sources */,
+				867BB0A016AEC9050033868F /* fileSystemFunctions.cpp in Sources */,
+				867BB0A116AEC9050033868F /* filterStream.cc in Sources */,
+				867BB0A216AEC9050033868F /* memStream.cc in Sources */,
+				867BB0A316AEC9050033868F /* nStream.cc in Sources */,
+				867BB0A416AEC9050033868F /* resizeStream.cc in Sources */,
+				867BB0A516AEC9050033868F /* resourceDictionary.cc in Sources */,
+				867BB0A616AEC9050033868F /* resourceManager.cc in Sources */,
+				867BB0A716AEC9050033868F /* streamObject.cc in Sources */,
+				867BB0A816AEC9050033868F /* centralDir.cc in Sources */,
+				867BB0A916AEC9050033868F /* compressor.cc in Sources */,
+				867BB0AA16AEC9050033868F /* deflate.cc in Sources */,
+				867BB0AB16AEC9050033868F /* extraField.cc in Sources */,
+				867BB0AC16AEC9050033868F /* fileHeader.cc in Sources */,
+				867BB0AD16AEC9050033868F /* stored.cc in Sources */,
+				867BB0B116AEC9050033868F /* zipArchive.cc in Sources */,
+				867BB0B216AEC9050033868F /* zipCryptStream.cc in Sources */,
+				867BB0B316AEC9050033868F /* zipObject.cc in Sources */,
+				867BB0B416AEC9050033868F /* zipSubStream.cc in Sources */,
+				867BB0B516AEC9050033868F /* zipTempStream.cc in Sources */,
+				867BB0B616AEC9050033868F /* mathTypes.cc in Sources */,
+				867BB0B716AEC9050033868F /* mathUtils.cc in Sources */,
+				867BB0B816AEC9050033868F /* mBox.cc in Sources */,
+				867BB0B916AEC9050033868F /* mConsoleFunctions.cc in Sources */,
+				867BB0BB16AEC9050033868F /* mMath_C.cc in Sources */,
+				867BB0BC16AEC9050033868F /* mMathAltivec.cc in Sources */,
+				867BB0BD16AEC9050033868F /* mMathAMD.cc in Sources */,
+				867BB0BF16AEC9050033868F /* mMathFn.cc in Sources */,
+				867BB0C016AEC9050033868F /* mMathSSE.cc in Sources */,
+				867BB0C216AEC9050033868F /* mMatrix.cc in Sources */,
+				867BB0C316AEC9050033868F /* mPlaneTransformer.cc in Sources */,
+				867BB0C416AEC9050033868F /* mQuadPatch.cc in Sources */,
+				867BB0C516AEC9050033868F /* mQuat.cc in Sources */,
+				867BB0C616AEC9050033868F /* mRandom.cc in Sources */,
+				867BB0C716AEC9050033868F /* mSolver.cc in Sources */,
+				867BB0C816AEC9050033868F /* mSplinePatch.cc in Sources */,
+				867BB0C916AEC9050033868F /* rectClipper.cpp in Sources */,
+				867BB0CA16AEC9050033868F /* dataChunker.cc in Sources */,
+				867BB0CB16AEC9050033868F /* frameAllocator.cc in Sources */,
+				867BB0CC16AEC9050033868F /* dispatcher.cc in Sources */,
+				867BB0CD16AEC9050033868F /* eventManager.cc in Sources */,
+				867BB0CE16AEC9050033868F /* message.cc in Sources */,
+				867BB0CF16AEC9050033868F /* messageForwarder.cc in Sources */,
+				867BB0D016AEC9050033868F /* scriptMsgListener.cc in Sources */,
+				867BB0D116AEC9050033868F /* moduleDefinition.cc in Sources */,
+				867BB0D216AEC9050033868F /* moduleManager.cc in Sources */,
+				867BB0D316AEC9050033868F /* moduleMergeDefinition.cc in Sources */,
+				867BB0D416AEC9050033868F /* connectionProtocol.cc in Sources */,
+				867BB0D516AEC9050033868F /* connectionStringTable.cc in Sources */,
+				867BB0D616AEC9050033868F /* httpObject.cc in Sources */,
+				867BB0D716AEC9050033868F /* netConnection.cc in Sources */,
+				867BB0D816AEC9050033868F /* netDownload.cc in Sources */,
+				867BB0D916AEC9050033868F /* netEvent.cc in Sources */,
+				867BB0DA16AEC9050033868F /* netGhost.cc in Sources */,
+				867BB0DB16AEC9050033868F /* netInterface.cc in Sources */,
+				867BB0DC16AEC9050033868F /* netObject.cc in Sources */,
+				867BB0DD16AEC9050033868F /* netStringTable.cc in Sources */,
+				867BB0DE16AEC9050033868F /* netTest.cc in Sources */,
+				867BB0DF16AEC9050033868F /* networkProcessList.cc in Sources */,
+				867BB0E016AEC9050033868F /* RemoteCommandEvent.cc in Sources */,
+				867BB0E116AEC9050033868F /* serverQuery.cc in Sources */,
+				867BB0E216AEC9050033868F /* tcpObject.cc in Sources */,
+				867BB0E316AEC9050033868F /* telnetConsole.cc in Sources */,
+				867BB0E416AEC9050033868F /* SimXMLDocument.cpp in Sources */,
+				867BB0E516AEC9050033868F /* taml.cc in Sources */,
+				867BB0E616AEC9050033868F /* tamlBinaryReader.cc in Sources */,
+				867BB0E716AEC9050033868F /* tamlBinaryWriter.cc in Sources */,
+				867BB0E916AEC9050033868F /* tamlWriteNode.cc in Sources */,
+				867BB0EA16AEC9050033868F /* tamlXmlParser.cc in Sources */,
+				867BB0EB16AEC9050033868F /* tamlXmlReader.cc in Sources */,
+				867BB0EC16AEC9050033868F /* tamlXmlWriter.cc in Sources */,
+				867BB0ED16AEC9050033868F /* tinystr.cpp in Sources */,
+				867BB0EE16AEC9050033868F /* tinyxml.cpp in Sources */,
+				867BB0EF16AEC9050033868F /* tinyxmlerror.cpp in Sources */,
+				867BB0F016AEC9050033868F /* tinyxmlparser.cpp in Sources */,
+				867BB0F116AEC9050033868F /* CursorManager.cc in Sources */,
+				867BB0F216AEC9050033868F /* popupMenu.cc in Sources */,
+				867BB0F316AEC9050033868F /* fileDialog.cc in Sources */,
+				867BB0F416AEC9050033868F /* msgBox.cpp in Sources */,
+				867BB0F516AEC9050033868F /* platform.cc in Sources */,
+				867BB0F616AEC9050033868F /* platformAssert.cc in Sources */,
+				867BB0F716AEC9050033868F /* platformCPU.cc in Sources */,
+				867BB0F916AEC9050033868F /* platformFileIO.cc in Sources */,
+				867BB0FA16AEC9050033868F /* platformFont.cc in Sources */,
+				867BB0FB16AEC9050033868F /* platformMemory.cc in Sources */,
+				867BB0FC16AEC9050033868F /* platformNetAsync.unix.cc in Sources */,
+				867BB0FD16AEC9050033868F /* platformNetwork.cc in Sources */,
+				867BB0FE16AEC9050033868F /* platformString.cc in Sources */,
+				867BB0FF16AEC9050033868F /* platformVideo.cc in Sources */,
+				867BB10016AEC9050033868F /* Tickable.cc in Sources */,
+				867BB10116AEC9050033868F /* scriptGroup.cc in Sources */,
+				867BB10216AEC9050033868F /* scriptObject.cc in Sources */,
+				867BB10316AEC9050033868F /* simBase.cc in Sources */,
+				867BB10416AEC9050033868F /* simConsoleEvent.cc in Sources */,
+				867BB10516AEC9050033868F /* simConsoleThreadExecEvent.cc in Sources */,
+				867BB10616AEC9050033868F /* simDatablock.cc in Sources */,
+				867BB10716AEC9050033868F /* simDictionary.cc in Sources */,
+				867BB10816AEC9050033868F /* simFieldDictionary.cc in Sources */,
+				867BB10916AEC9050033868F /* simManager.cc in Sources */,
+				867BB10A16AEC9050033868F /* simObject.cc in Sources */,
+				867BB10B16AEC9050033868F /* SimObjectList.cc in Sources */,
+				867BB10C16AEC9050033868F /* simSerialize.cpp in Sources */,
+				867BB10D16AEC9050033868F /* simSet.cc in Sources */,
+				867BB10E16AEC9050033868F /* findMatch.cc in Sources */,
+				867BB10F16AEC9050033868F /* stringBuffer.cc in Sources */,
+				867BB11016AEC9050033868F /* stringStack.cc in Sources */,
+				867BB11116AEC9050033868F /* stringTable.cc in Sources */,
+				867BB11216AEC9050033868F /* stringUnit.cpp in Sources */,
+				867BB11316AEC9050033868F /* unicode.cc in Sources */,
+				867BB1AF16AEC9FC0033868F /* b2BroadPhase.cpp in Sources */,
+				867BB1B016AEC9FC0033868F /* b2CollideCircle.cpp in Sources */,
+				867BB1B116AEC9FC0033868F /* b2CollideEdge.cpp in Sources */,
+				867BB1B216AEC9FC0033868F /* b2CollidePolygon.cpp in Sources */,
+				867BB1B316AEC9FC0033868F /* b2Collision.cpp in Sources */,
+				867BB1B416AEC9FC0033868F /* b2Distance.cpp in Sources */,
+				867BB1B516AEC9FC0033868F /* b2DynamicTree.cpp in Sources */,
+				867BB1B616AEC9FC0033868F /* b2TimeOfImpact.cpp in Sources */,
+				867BB1B716AEC9FC0033868F /* b2ChainShape.cpp in Sources */,
+				867BB1B816AEC9FC0033868F /* b2CircleShape.cpp in Sources */,
+				867BB1B916AEC9FC0033868F /* b2EdgeShape.cpp in Sources */,
+				867BB1BA16AEC9FC0033868F /* b2PolygonShape.cpp in Sources */,
+				867BB1BB16AEC9FC0033868F /* b2BlockAllocator.cpp in Sources */,
+				867BB1BC16AEC9FC0033868F /* b2Draw.cpp in Sources */,
+				867BB1BD16AEC9FC0033868F /* b2Math.cpp in Sources */,
+				867BB1BE16AEC9FC0033868F /* b2Settings.cpp in Sources */,
+				867BB1BF16AEC9FC0033868F /* b2StackAllocator.cpp in Sources */,
+				867BB1C016AEC9FC0033868F /* b2Timer.cpp in Sources */,
+				867BB1C116AEC9FC0033868F /* b2Body.cpp in Sources */,
+				867BB1C216AEC9FC0033868F /* b2ContactManager.cpp in Sources */,
+				867BB1C316AEC9FC0033868F /* b2Fixture.cpp in Sources */,
+				867BB1C416AEC9FC0033868F /* b2Island.cpp in Sources */,
+				867BB1C516AEC9FC0033868F /* b2World.cpp in Sources */,
+				867BB1C616AEC9FC0033868F /* b2WorldCallbacks.cpp in Sources */,
+				867BB1C716AEC9FC0033868F /* b2ChainAndCircleContact.cpp in Sources */,
+				867BB1C816AEC9FC0033868F /* b2ChainAndPolygonContact.cpp in Sources */,
+				867BB1C916AEC9FC0033868F /* b2CircleContact.cpp in Sources */,
+				867BB1CA16AEC9FC0033868F /* b2Contact.cpp in Sources */,
+				867BB1CB16AEC9FC0033868F /* b2ContactSolver.cpp in Sources */,
+				867BB1CC16AEC9FC0033868F /* b2EdgeAndCircleContact.cpp in Sources */,
+				867BB1CD16AEC9FC0033868F /* b2EdgeAndPolygonContact.cpp in Sources */,
+				867BB1CE16AEC9FC0033868F /* b2PolygonAndCircleContact.cpp in Sources */,
+				867BB1CF16AEC9FC0033868F /* b2PolygonContact.cpp in Sources */,
+				867BB1D016AEC9FC0033868F /* b2DistanceJoint.cpp in Sources */,
+				867BB1D116AEC9FC0033868F /* b2FrictionJoint.cpp in Sources */,
+				867BB1D216AEC9FC0033868F /* b2GearJoint.cpp in Sources */,
+				867BB1D316AEC9FC0033868F /* b2Joint.cpp in Sources */,
+				867BB1D416AEC9FC0033868F /* b2MotorJoint.cpp in Sources */,
+				867BB1D516AEC9FC0033868F /* b2MouseJoint.cpp in Sources */,
+				867BB1D616AEC9FC0033868F /* b2PrismaticJoint.cpp in Sources */,
+				867BB1D716AEC9FC0033868F /* b2PulleyJoint.cpp in Sources */,
+				867BB1D816AEC9FC0033868F /* b2RevoluteJoint.cpp in Sources */,
+				867BB1D916AEC9FC0033868F /* b2RopeJoint.cpp in Sources */,
+				867BB1DA16AEC9FC0033868F /* b2WeldJoint.cpp in Sources */,
+				867BB1DB16AEC9FC0033868F /* b2WheelJoint.cpp in Sources */,
+				867BB20816AEC9FC0033868F /* b2Rope.cpp in Sources */,
+				867BB21816AECA070033868F /* png.c in Sources */,
+				867BB21916AECA070033868F /* pngerror.c in Sources */,
+				867BB21A16AECA070033868F /* pngget.c in Sources */,
+				867BB21B16AECA070033868F /* pngmem.c in Sources */,
+				867BB21C16AECA070033868F /* pngpread.c in Sources */,
+				867BB21D16AECA070033868F /* pngread.c in Sources */,
+				867BB21E16AECA070033868F /* pngrio.c in Sources */,
+				867BB21F16AECA070033868F /* pngrtran.c in Sources */,
+				867BB22016AECA070033868F /* pngrutil.c in Sources */,
+				867BB22116AECA070033868F /* pngset.c in Sources */,
+				867BB22216AECA070033868F /* pngtrans.c in Sources */,
+				867BB22316AECA070033868F /* pngwio.c in Sources */,
+				867BB22416AECA070033868F /* pngwrite.c in Sources */,
+				867BB22516AECA070033868F /* pngwtran.c in Sources */,
+				867BB22616AECA070033868F /* pngwutil.c in Sources */,
+				867BB25516AECA110033868F /* jcapimin.c in Sources */,
+				867BB25616AECA110033868F /* jcapistd.c in Sources */,
+				867BB25716AECA110033868F /* jccoefct.c in Sources */,
+				867BB25816AECA110033868F /* jccolor.c in Sources */,
+				867BB25916AECA110033868F /* jcdctmgr.c in Sources */,
+				867BB25A16AECA110033868F /* jchuff.c in Sources */,
+				867BB25B16AECA110033868F /* jcinit.c in Sources */,
+				867BB25C16AECA110033868F /* jcmainct.c in Sources */,
+				867BB25D16AECA110033868F /* jcmarker.c in Sources */,
+				867BB25E16AECA110033868F /* jcmaster.c in Sources */,
+				867BB25F16AECA110033868F /* jcomapi.c in Sources */,
+				867BB26016AECA110033868F /* jcparam.c in Sources */,
+				867BB26116AECA110033868F /* jcphuff.c in Sources */,
+				867BB26216AECA110033868F /* jcprepct.c in Sources */,
+				867BB26316AECA110033868F /* jcsample.c in Sources */,
+				867BB26416AECA110033868F /* jctrans.c in Sources */,
+				867BB26516AECA110033868F /* jdapimin.c in Sources */,
+				867BB26616AECA110033868F /* jdapistd.c in Sources */,
+				867BB26716AECA110033868F /* jdatadst.c in Sources */,
+				867BB26816AECA110033868F /* jdatasrc.c in Sources */,
+				867BB26916AECA110033868F /* jdcoefct.c in Sources */,
+				867BB26A16AECA110033868F /* jdcolor.c in Sources */,
+				867BB26B16AECA110033868F /* jddctmgr.c in Sources */,
+				867BB26C16AECA110033868F /* jdhuff.c in Sources */,
+				867BB26D16AECA110033868F /* jdinput.c in Sources */,
+				867BB26E16AECA110033868F /* jdmainct.c in Sources */,
+				867BB26F16AECA110033868F /* jdmarker.c in Sources */,
+				867BB27016AECA110033868F /* jdmaster.c in Sources */,
+				867BB27116AECA110033868F /* jdmerge.c in Sources */,
+				867BB27216AECA110033868F /* jdphuff.c in Sources */,
+				867BB27316AECA110033868F /* jdpostct.c in Sources */,
+				867BB27416AECA110033868F /* jdsample.c in Sources */,
+				867BB27516AECA110033868F /* jdtrans.c in Sources */,
+				867BB27616AECA110033868F /* jerror.c in Sources */,
+				867BB27716AECA110033868F /* jfdctflt.c in Sources */,
+				867BB27816AECA110033868F /* jfdctfst.c in Sources */,
+				867BB27916AECA110033868F /* jfdctint.c in Sources */,
+				867BB27A16AECA110033868F /* jidctflt.c in Sources */,
+				867BB27B16AECA110033868F /* jidctfst.c in Sources */,
+				867BB27C16AECA110033868F /* jidctint.c in Sources */,
+				867BB27D16AECA110033868F /* jidctred.c in Sources */,
+				867BB27E16AECA110033868F /* jmemansi.c in Sources */,
+				867BB27F16AECA110033868F /* jmemmgr.c in Sources */,
+				867BB28016AECA110033868F /* jquant1.c in Sources */,
+				867BB28116AECA110033868F /* jquant2.c in Sources */,
+				867BB28216AECA110033868F /* jutils.c in Sources */,
+				867BB44416AED2850033868F /* iOSGL2ES.mm in Sources */,
+				2AC4404E16B0144500FC4091 /* ImageFont.cc in Sources */,
+				86555D3716B2C2B400881446 /* T2DAppDelegate.mm in Sources */,
+				86555D3816B2C2B400881446 /* T2DView.mm in Sources */,
+				86555D3916B2C2B400881446 /* T2DViewController.mm in Sources */,
+				2AF1C54B16B439D900C1CF3A /* declaredAssets.cc in Sources */,
+				2AF1C54C16B439D900C1CF3A /* referencedAssets.cc in Sources */,
+				2AB97A2116B66BE50080F940 /* tamlCustom.cc in Sources */,
+				33230F1656FA2C7C493DA2D2 /* guiSliderCtrl.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		86555D2B16B2C29200881446 /* iPadStoryboard.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				86555D2C16B2C29200881446 /* en */,
+			);
+			name = iPadStoryboard.storyboard;
+			sourceTree = "<group>";
+		};
+		86555D2D16B2C29200881446 /* iPhoneStoryboard.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				86555D2E16B2C29200881446 /* en */,
+			);
+			name = iPhoneStoryboard.storyboard;
+			sourceTree = "<group>";
+		};
+		86A9A3BD16AEC786003F01E6 /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				86A9A3BE16AEC786003F01E6 /* en */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		86A9A3D516AEC786003F01E6 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_DEBUG,
+					TORQUE_OS_IOS,
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		86A9A3D616AEC786003F01E6 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					TORQUE_RELEASE,
+					TORQUE_OS_IOS,
+				);
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		86A9A3D816AEC786003F01E6 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = YES;
+				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Torque2D/Torque2D-Prefix.pch";
+				HEADER_SEARCH_PATHS = (
+					../../source,
+					../../lib,
+					../../lib/lpng,
+					../../lib/ljpeg,
+					../../lib/lungif,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+				);
+				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Debug;
+		};
+		86A9A3D916AEC786003F01E6 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = YES;
+				"FRAMEWORK_SEARCH_PATHS[arch=*]" = "";
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "Torque2D/Torque2D-Prefix.pch";
+				HEADER_SEARCH_PATHS = (
+					../../source,
+					../../lib,
+					../../lib/lpng,
+					../../lib/ljpeg,
+					../../lib/lungif,
+					"$(SYSTEM_LIBRARY_DIR)/Frameworks/OpenGL.framework/Headers",
+				);
+				INFOPLIST_FILE = "Torque2D/Torque2D-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				WRAPPER_EXTENSION = app;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		86A9A3AA16AEC786003F01E6 /* Build configuration list for PBXProject "Torque2D" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				86A9A3D516AEC786003F01E6 /* Debug */,
+				86A9A3D616AEC786003F01E6 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		86A9A3D716AEC786003F01E6 /* Build configuration list for PBXNativeTarget "Torque2D" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				86A9A3D816AEC786003F01E6 /* Debug */,
+				86A9A3D916AEC786003F01E6 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 86A9A3A716AEC786003F01E6 /* Project object */;
+}

BIN
engine/compilers/Xcode_iOS/Torque2D/[email protected]


BIN
engine/compilers/Xcode_iOS/Torque2D/Default.png


BIN
engine/compilers/Xcode_iOS/Torque2D/[email protected]


+ 46 - 0
engine/compilers/Xcode_iOS/Torque2D/Torque2D-Info.plist

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.garagegames.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIMainStoryboardFile</key>
+	<string>iPhoneStoryboard</string>
+	<key>UIMainStoryboardFile~ipad</key>
+	<string>iPadStoryboard</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>

+ 14 - 0
engine/compilers/Xcode_iOS/Torque2D/Torque2D-Prefix.pch

@@ -0,0 +1,14 @@
+//
+// Prefix header for all source files of the 'Torque2D' target in the 'Torque2D' project
+//
+
+#import <Availability.h>
+
+#ifndef __IPHONE_4_0
+#warning "This project uses features only available in iOS SDK 4.0 and later."
+#endif
+
+#ifdef __OBJC__
+    #import <UIKit/UIKit.h>
+    #import <Foundation/Foundation.h>
+#endif

+ 2 - 0
engine/compilers/Xcode_iOS/Torque2D/en.lproj/InfoPlist.strings

@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+

+ 40 - 0
engine/compilers/Xcode_iOS/Torque2D/en.lproj/iPadStoryboard.storyboard

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="3084" systemVersion="12C3012" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="dmt-Sj-hPu">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="2083"/>
+    </dependencies>
+    <scenes>
+        <!--GLKit View Controller-->
+        <scene sceneID="ChZ-MO-rvv">
+            <objects>
+                <glkViewController autoresizesArchivedViewToFullSize="NO" wantsFullScreenLayout="YES" definesPresentationContext="YES" preferredFramesPerSecond="60" id="dmt-Sj-hPu" customClass="T2DViewController" sceneMemberID="viewController">
+                    <glkView key="view" autoresizesSubviews="NO" clearsContextBeforeDrawing="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" enableSetNeedsDisplay="NO" id="Tvu-zf-Q0n" customClass="T2DView">
+                        <rect key="frame" x="0.0" y="20" width="1024" height="748"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                        <gestureRecognizers/>
+                        <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+                        <connections>
+                            <outlet property="delegate" destination="dmt-Sj-hPu" id="ej0-QG-7FL"/>
+                        </connections>
+                    </glkView>
+                </glkViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="OPz-he-Sgg" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="188" y="-203"/>
+        </scene>
+    </scenes>
+    <classes>
+        <class className="T2DView" superclassName="GLKView">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/T2DView.h"/>
+        </class>
+        <class className="T2DViewController" superclassName="GLKViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/T2DViewController.h"/>
+        </class>
+    </classes>
+    <simulatedMetricsContainer key="defaultSimulatedMetrics">
+        <simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
+        <simulatedOrientationMetrics key="orientation" orientation="landscapeRight"/>
+        <simulatedScreenMetrics key="destination"/>
+    </simulatedMetricsContainer>
+</document>

+ 38 - 0
engine/compilers/Xcode_iOS/Torque2D/en.lproj/iPhoneStoryboard.storyboard

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="2844" systemVersion="12C3012" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="8SX-pT-DzL">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1930"/>
+    </dependencies>
+    <scenes>
+        <!--GLKit View Controller-->
+        <scene sceneID="cCP-0k-fSa">
+            <objects>
+                <glkViewController autoresizesArchivedViewToFullSize="NO" preferredFramesPerSecond="60" id="8SX-pT-DzL" customClass="T2DViewController" sceneMemberID="viewController">
+                    <glkView key="view" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" enableSetNeedsDisplay="NO" id="K2C-LI-t1R" customClass="T2DView">
+                        <rect key="frame" x="0.0" y="20" width="480" height="300"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
+                        <connections>
+                            <outlet property="delegate" destination="8SX-pT-DzL" id="kdH-F8-syu"/>
+                        </connections>
+                    </glkView>
+                </glkViewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="9XP-6d-xaw" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="374" y="139"/>
+        </scene>
+    </scenes>
+    <classes>
+        <class className="T2DView" superclassName="GLKView">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/T2DView.h"/>
+        </class>
+        <class className="T2DViewController" superclassName="GLKViewController">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/T2DViewController.h"/>
+        </class>
+    </classes>
+    <simulatedMetricsContainer key="defaultSimulatedMetrics">
+        <simulatedStatusBarMetrics key="statusBar"/>
+        <simulatedOrientationMetrics key="orientation" orientation="landscapeRight"/>
+        <simulatedScreenMetrics key="destination"/>
+    </simulatedMetricsContainer>
+</document>

+ 18 - 0
engine/compilers/Xcode_iOS/Torque2D/main.m

@@ -0,0 +1,18 @@
+//
+//  main.m
+//  Torque2D
+//
+//  Created by Michael Perry on 1/22/13.
+//  Copyright (c) 2013 Michael Perry. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "AppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+    @autoreleasepool {
+        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+    }
+}

+ 385 - 0
engine/lib/ljpeg/extras/README

@@ -0,0 +1,385 @@
+The Independent JPEG Group's JPEG software
+==========================================
+
+README for release 6b of 27-Mar-1998
+====================================
+
+This distribution contains the sixth public release of the Independent JPEG
+Group's free JPEG software.  You are welcome to redistribute this software and
+to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
+
+Serious users of this software (particularly those incorporating it into
+larger programs) should contact IJG at [email protected] to be added to
+our electronic mailing list.  Mailing list members are notified of updates
+and have a chance to participate in technical discussions, etc.
+
+This software is the work of Tom Lane, Philip Gladstone, Jim Boucher,
+Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi,
+Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG
+Group.
+
+IJG is not affiliated with the official ISO JPEG standards committee.
+
+
+DOCUMENTATION ROADMAP
+=====================
+
+This file contains the following sections:
+
+OVERVIEW            General description of JPEG and the IJG software.
+LEGAL ISSUES        Copyright, lack of warranty, terms of distribution.
+REFERENCES          Where to learn more about JPEG.
+ARCHIVE LOCATIONS   Where to find newer versions of this software.
+RELATED SOFTWARE    Other stuff you should get.
+FILE FORMAT WARS    Software *not* to get.
+TO DO               Plans for future IJG releases.
+
+Other documentation files in the distribution are:
+
+User documentation:
+  install.doc       How to configure and install the IJG software.
+  usage.doc         Usage instructions for cjpeg, djpeg, jpegtran,
+                    rdjpgcom, and wrjpgcom.
+  *.1               Unix-style man pages for programs (same info as usage.doc).
+  wizard.doc        Advanced usage instructions for JPEG wizards only.
+  change.log        Version-to-version change highlights.
+Programmer and internal documentation:
+  libjpeg.doc       How to use the JPEG library in your own programs.
+  example.c         Sample code for calling the JPEG library.
+  structure.doc     Overview of the JPEG library's internal structure.
+  filelist.doc      Road map of IJG files.
+  coderules.doc     Coding style rules --- please read if you contribute code.
+
+Please read at least the files install.doc and usage.doc.  Useful information
+can also be found in the JPEG FAQ (Frequently Asked Questions) article.  See
+ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
+
+If you want to understand how the JPEG code works, we suggest reading one or
+more of the REFERENCES, then looking at the documentation files (in roughly
+the order listed) before diving into the code.
+
+
+OVERVIEW
+========
+
+This package contains C software to implement JPEG image compression and
+decompression.  JPEG (pronounced "jay-peg") is a standardized compression
+method for full-color and gray-scale images.  JPEG is intended for compressing
+"real-world" scenes; line drawings, cartoons and other non-realistic images
+are not its strong suit.  JPEG is lossy, meaning that the output image is not
+exactly identical to the input image.  Hence you must not use JPEG if you
+have to have identical output bits.  However, on typical photographic images,
+very good compression levels can be obtained with no visible change, and
+remarkably high compression levels are possible if you can tolerate a
+low-quality image.  For more details, see the references, or just experiment
+with various compression settings.
+
+This software implements JPEG baseline, extended-sequential, and progressive
+compression processes.  Provision is made for supporting all variants of these
+processes, although some uncommon parameter settings aren't implemented yet.
+For legal reasons, we are not distributing code for the arithmetic-coding
+variants of JPEG; see LEGAL ISSUES.  We have made no provision for supporting
+the hierarchical or lossless processes defined in the standard.
+
+We provide a set of library routines for reading and writing JPEG image files,
+plus two sample applications "cjpeg" and "djpeg", which use the library to
+perform conversion between JPEG and some other popular image file formats.
+The library is intended to be reused in other applications.
+
+In order to support file conversion and viewing software, we have included
+considerable functionality beyond the bare JPEG coding/decoding capability;
+for example, the color quantization modules are not strictly part of JPEG
+decoding, but they are essential for output to colormapped file formats or
+colormapped displays.  These extra functions can be compiled out of the
+library if not required for a particular application.  We have also included
+"jpegtran", a utility for lossless transcoding between different JPEG
+processes, and "rdjpgcom" and "wrjpgcom", two simple applications for
+inserting and extracting textual comments in JFIF files.
+
+The emphasis in designing this software has been on achieving portability and
+flexibility, while also making it fast enough to be useful.  In particular,
+the software is not intended to be read as a tutorial on JPEG.  (See the
+REFERENCES section for introductory material.)  Rather, it is intended to
+be reliable, portable, industrial-strength code.  We do not claim to have
+achieved that goal in every aspect of the software, but we strive for it.
+
+We welcome the use of this software as a component of commercial products.
+No royalty is required, but we do ask for an acknowledgement in product
+documentation, as described under LEGAL ISSUES.
+
+
+LEGAL ISSUES
+============
+
+In plain English:
+
+1. We don't promise that this software works.  (But if you find any bugs,
+   please let us know!)
+2. You can use this software for whatever you want.  You don't have to pay us.
+3. You may not pretend that you wrote this software.  If you use it in a
+   program, you must acknowledge somewhere in your documentation that
+   you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+by the usual distribution terms of the Free Software Foundation; principally,
+that you must include source code if you redistribute it.  (See the file
+ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
+of any program generated from the IJG code, this does not limit you more than
+the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltconfig, ltmain.sh).  Another support script, install-sh, is copyright
+by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by
+patents owned by IBM, AT&T, and Mitsubishi.  Hence arithmetic coding cannot
+legally be used without obtaining one or more licenses.  For this reason,
+support for arithmetic coding has been removed from the free JPEG software.
+(Since arithmetic coding provides only a marginal gain over the unpatented
+Huffman mode, it is unlikely that very many implementations will support it.)
+So far as we are aware, there are no patent restrictions on the remaining
+code.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs".  This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+
+REFERENCES
+==========
+
+We highly recommend reading one or more of these references before trying to
+understand the innards of the JPEG software.
+
+The best short technical introduction to the JPEG compression algorithm is
+	Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
+	Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
+(Adjacent articles in that issue discuss MPEG motion picture compression,
+applications of JPEG, and related topics.)  If you don't have the CACM issue
+handy, a PostScript file containing a revised version of Wallace's article is
+available at ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz.  The file (actually
+a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
+omits the sample images that appeared in CACM, but it includes corrections
+and some added material.  Note: the Wallace article is copyright ACM and IEEE,
+and it may not be used for commercial purposes.
+
+A somewhat less technical, more leisurely introduction to JPEG can be found in
+"The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
+M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1.  This book provides
+good explanations and example C code for a multitude of compression methods
+including JPEG.  It is an excellent source if you are comfortable reading C
+code but don't know much about data compression in general.  The book's JPEG
+sample code is far from industrial-strength, but when you are ready to look
+at a full implementation, you've got one here...
+
+The best full description of JPEG is the textbook "JPEG Still Image Data
+Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published
+by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.  Price US$59.95, 638 pp.
+The book includes the complete text of the ISO JPEG standards (DIS 10918-1
+and draft DIS 10918-2).  This is by far the most complete exposition of JPEG
+in existence, and we highly recommend it.
+
+The JPEG standard itself is not available electronically; you must order a
+paper copy through ISO or ITU.  (Unless you feel a need to own a certified
+official copy, we recommend buying the Pennebaker and Mitchell book instead;
+it's much cheaper and includes a great deal of useful explanatory material.)
+In the USA, copies of the standard may be ordered from ANSI Sales at (212)
+642-4900, or from Global Engineering Documents at (800) 854-7179.  (ANSI
+doesn't take credit card orders, but Global does.)  It's not cheap: as of
+1992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7%
+shipping/handling.  The standard is divided into two parts, Part 1 being the
+actual specification, while Part 2 covers compliance testing methods.  Part 1
+is titled "Digital Compression and Coding of Continuous-tone Still Images,
+Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
+10918-1, ITU-T T.81.  Part 2 is titled "Digital Compression and Coding of
+Continuous-tone Still Images, Part 2: Compliance testing" and has document
+numbers ISO/IEC IS 10918-2, ITU-T T.83.
+
+Some extensions to the original JPEG standard are defined in JPEG Part 3,
+a newer ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84.  IJG
+currently does not support any Part 3 extensions.
+
+The JPEG standard does not specify all details of an interchangeable file
+format.  For the omitted details we follow the "JFIF" conventions, revision
+1.02.  A copy of the JFIF spec is available from:
+	Literature Department
+	C-Cube Microsystems, Inc.
+	1778 McCarthy Blvd.
+	Milpitas, CA 95035
+	phone (408) 944-6300,  fax (408) 944-6314
+A PostScript version of this document is available by FTP at
+ftp://ftp.uu.net/graphics/jpeg/jfif.ps.gz.  There is also a plain text
+version at ftp://ftp.uu.net/graphics/jpeg/jfif.txt.gz, but it is missing
+the figures.
+
+The TIFF 6.0 file format specification can be obtained by FTP from
+ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz.  The JPEG incorporation scheme
+found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
+IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
+Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
+(Compression tag 7).  Copies of this Note can be obtained from ftp.sgi.com or
+from ftp://ftp.uu.net/graphics/jpeg/.  It is expected that the next revision
+of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
+Although IJG's own code does not support TIFF/JPEG, the free libtiff library
+uses our library to implement TIFF/JPEG per the Note.  libtiff is available
+from ftp://ftp.sgi.com/graphics/tiff/.
+
+
+ARCHIVE LOCATIONS
+=================
+
+The "official" archive site for this software is ftp.uu.net (Internet
+address 192.48.96.9).  The most recent released version can always be found
+there in directory graphics/jpeg.  This particular version will be archived
+as ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz.  If you don't have
+direct Internet access, UUNET's archives are also available via UUCP; contact
[email protected] for information on retrieving files that way.
+
+Numerous Internet sites maintain copies of the UUNET files.  However, only
+ftp.uu.net is guaranteed to have the latest official version.
+
+You can also obtain this software in DOS-compatible "zip" archive format from
+the SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or
+on CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12
+"JPEG Tools".  Again, these versions may sometimes lag behind the ftp.uu.net
+release.
+
+The JPEG FAQ (Frequently Asked Questions) article is a useful source of
+general information about JPEG.  It is updated constantly and therefore is
+not included in this distribution.  The FAQ is posted every two weeks to
+Usenet newsgroups comp.graphics.misc, news.answers, and other groups.
+It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/
+and other news.answers archive sites, including the official news.answers
+archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/.
+If you don't have Web or FTP access, send e-mail to [email protected]
+with body
+	send usenet/news.answers/jpeg-faq/part1
+	send usenet/news.answers/jpeg-faq/part2
+
+
+RELATED SOFTWARE
+================
+
+Numerous viewing and image manipulation programs now support JPEG.  (Quite a
+few of them use this library to do so.)  The JPEG FAQ described above lists
+some of the more popular free and shareware viewers, and tells where to
+obtain them on Internet.
+
+If you are on a Unix machine, we highly recommend Jef Poskanzer's free
+PBMPLUS software, which provides many useful operations on PPM-format image
+files.  In particular, it can convert PPM images to and from a wide range of
+other formats, thus making cjpeg/djpeg considerably more useful.  The latest
+version is distributed by the NetPBM group, and is available from numerous
+sites, notably ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/.
+Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software is;
+you are likely to have difficulty making it work on any non-Unix machine.
+
+A different free JPEG implementation, written by the PVRG group at Stanford,
+is available from ftp://havefun.stanford.edu/pub/jpeg/.  This program
+is designed for research and experimentation rather than production use;
+it is slower, harder to use, and less portable than the IJG code, but it
+is easier to read and modify.  Also, the PVRG code supports lossless JPEG,
+which we do not.  (On the other hand, it doesn't do progressive JPEG.)
+
+
+FILE FORMAT WARS
+================
+
+Some JPEG programs produce files that are not compatible with our library.
+The root of the problem is that the ISO JPEG committee failed to specify a
+concrete file format.  Some vendors "filled in the blanks" on their own,
+creating proprietary formats that no one else could read.  (For example, none
+of the early commercial JPEG implementations for the Macintosh were able to
+exchange compressed files.)
+
+The file format we have adopted is called JFIF (see REFERENCES).  This format
+has been agreed to by a number of major commercial JPEG vendors, and it has
+become the de facto standard.  JFIF is a minimal or "low end" representation.
+We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF
+Technical Note #2) for "high end" applications that need to record a lot of
+additional data about an image.  TIFF/JPEG is fairly new and not yet widely
+supported, unfortunately.
+
+The upcoming JPEG Part 3 standard defines a file format called SPIFF.
+SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should
+be able to read the most common variant of SPIFF.  SPIFF has some technical
+advantages over JFIF, but its major claim to fame is simply that it is an
+official standard rather than an informal one.  At this point it is unclear
+whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto
+standard.  IJG intends to support SPIFF once the standard is frozen, but we
+have not decided whether it should become our default output format or not.
+(In any case, our decoder will remain capable of reading JFIF indefinitely.)
+
+Various proprietary file formats incorporating JPEG compression also exist.
+We have little or no sympathy for the existence of these formats.  Indeed,
+one of the original reasons for developing this free software was to help
+force convergence on common, open format standards for JPEG files.  Don't
+use a proprietary file format!
+
+
+TO DO
+=====
+
+The major thrust for v7 will probably be improvement of visual quality.
+The current method for scaling the quantization tables is known not to be
+very good at low Q values.  We also intend to investigate block boundary
+smoothing, "poor man's variable quantization", and other means of improving
+quality-vs-file-size performance without sacrificing compatibility.
+
+In future versions, we are considering supporting some of the upcoming JPEG
+Part 3 extensions --- principally, variable quantization and the SPIFF file
+format.
+
+As always, speeding things up is of great interest.
+
+Please send bug reports, offers of help, etc. to [email protected].

+ 36 - 0
engine/lib/ljpeg/extras/ansi2knr.1

@@ -0,0 +1,36 @@
+.TH ANSI2KNR 1 "19 Jan 1996"
+.SH NAME
+ansi2knr \- convert ANSI C to Kernighan & Ritchie C
+.SH SYNOPSIS
+.I ansi2knr
+[--varargs] input_file [output_file]
+.SH DESCRIPTION
+If no output_file is supplied, output goes to stdout.
+.br
+There are no error messages.
+.sp
+.I ansi2knr
+recognizes function definitions by seeing a non-keyword identifier at the left
+margin, followed by a left parenthesis, with a right parenthesis as the last
+character on the line, and with a left brace as the first token on the
+following line (ignoring possible intervening comments).  It will recognize a
+multi-line header provided that no intervening line ends with a left or right
+brace or a semicolon.  These algorithms ignore whitespace and comments, except
+that the function name must be the first thing on the line.
+.sp
+The following constructs will confuse it:
+.br
+     - Any other construct that starts at the left margin and follows the
+above syntax (such as a macro or function call).
+.br
+     - Some macros that tinker with the syntax of the function header.
+.sp
+The --varargs switch is obsolete, and is recognized only for
+backwards compatibility.  The present version of
+.I ansi2knr
+will always attempt to convert a ... argument to va_alist and va_dcl.
+.SH AUTHOR
+L. Peter Deutsch <[email protected]> wrote the original ansi2knr and
+continues to maintain the current version; most of the code in the current
+version is his work.  ansi2knr also includes contributions by Francois
+Pinard <[email protected]> and Jim Avera <[email protected]>.

+ 693 - 0
engine/lib/ljpeg/extras/ansi2knr.c

@@ -0,0 +1,693 @@
+/* ansi2knr.c */
+/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
+
+/*
+ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY.  No author or distributor accepts responsibility to anyone for the
+consequences of using it or for whether it serves any particular purpose or
+works at all, unless he says so in writing.  Refer to the GNU General Public
+License (the "GPL") for full details.
+
+Everyone is granted permission to copy, modify and redistribute ansi2knr,
+but only under the conditions described in the GPL.  A copy of this license
+is supposed to have been given to you along with ansi2knr so you can know
+your rights and responsibilities.  It should be in a file named COPYLEFT.
+[In the IJG distribution, the GPL appears below, not in a separate file.]
+Among other things, the copyright notice and this notice must be preserved
+on all copies.
+
+We explicitly state here what we believe is already implied by the GPL: if
+the ansi2knr program is distributed as a separate set of sources and a
+separate executable file which are aggregated on a storage medium together
+with another program, this in itself does not bring the other program under
+the GPL, nor does the mere fact that such a program or the procedures for
+constructing it invoke the ansi2knr executable bring any other part of the
+program under the GPL.
+*/
+
+/*
+---------- Here is the GNU GPL file COPYLEFT, referred to above ----------
+----- These terms do NOT apply to the JPEG software itself; see README ------
+
+		    GHOSTSCRIPT GENERAL PUBLIC LICENSE
+		    (Clarified 11 Feb 1988)
+
+ Copyright (C) 1988 Richard M. Stallman
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license, but changing it is not allowed.  You can also use this wording
+ to make the terms for other programs.
+
+  The license agreements of most software companies keep you at the
+mercy of those companies.  By contrast, our general public license is
+intended to give everyone the right to share Ghostscript.  To make sure
+that you get the rights we want you to have, we need to make
+restrictions that forbid anyone to deny you these rights or to ask you
+to surrender the rights.  Hence this license agreement.
+
+  Specifically, we want to make sure that you have the right to give
+away copies of Ghostscript, that you receive source code or else can get
+it if you want it, that you can change Ghostscript or use pieces of it
+in new free programs, and that you know you can do these things.
+
+  To make sure that everyone has such rights, we have to forbid you to
+deprive anyone else of these rights.  For example, if you distribute
+copies of Ghostscript, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  Also, for our own protection, we must make certain that everyone finds
+out that there is no warranty for Ghostscript.  If Ghostscript is
+modified by someone else and passed on, we want its recipients to know
+that what they have is not what we distributed, so that any problems
+introduced by others will not reflect on our reputation.
+
+  Therefore we (Richard M. Stallman and the Free Software Foundation,
+Inc.) make the following terms which say what you must do to be allowed
+to distribute or change Ghostscript.
+
+
+			COPYING POLICIES
+
+  1. You may copy and distribute verbatim copies of Ghostscript source
+code as you receive it, in any medium, provided that you conspicuously
+and appropriately publish on each copy a valid copyright and license
+notice "Copyright (C) 1989 Aladdin Enterprises.  All rights reserved.
+Distributed by Free Software Foundation, Inc." (or with whatever year is
+appropriate); keep intact the notices on all files that refer to this
+License Agreement and to the absence of any warranty; and give any other
+recipients of the Ghostscript program a copy of this License Agreement
+along with the program.  You may charge a distribution fee for the
+physical act of transferring a copy.
+
+  2. You may modify your copy or copies of Ghostscript or any portion of
+it, and copy and distribute such modifications under the terms of
+Paragraph 1 above, provided that you also do the following:
+
+    a) cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change; and
+
+    b) cause the whole of any work that you distribute or publish,
+    that in whole or in part contains or is a derivative of Ghostscript
+    or any part thereof, to be licensed at no charge to all third
+    parties on terms identical to those contained in this License
+    Agreement (except that you may choose to grant more extensive
+    warranty protection to some or all third parties, at your option).
+
+    c) You may charge a distribution fee for the physical act of
+    transferring a copy, and you may at your option offer warranty
+    protection in exchange for a fee.
+
+Mere aggregation of another unrelated program with this program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other program under the scope of these terms.
+
+  3. You may copy and distribute Ghostscript (or a portion or derivative
+of it, under Paragraph 2) in object code or executable form under the
+terms of Paragraphs 1 and 2 above provided that you also do one of the
+following:
+
+    a) accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    b) accompany it with a written offer, valid for at least three
+    years, to give any third party free (except for a nominal
+    shipping charge) a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    c) accompany it with the information you received as to where the
+    corresponding source code may be obtained.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form alone.)
+
+For an executable file, complete source code means all the source code for
+all modules it contains; but, as a special exception, it need not include
+source code for modules which are standard libraries that accompany the
+operating system on which the executable file runs.
+
+  4. You may not copy, sublicense, distribute or transfer Ghostscript
+except as expressly provided under this License Agreement.  Any attempt
+otherwise to copy, sublicense, distribute or transfer Ghostscript is
+void and your rights to use the program under this License agreement
+shall be automatically terminated.  However, parties who have received
+computer software programs from you with this License Agreement will not
+have their licenses terminated so long as such parties remain in full
+compliance.
+
+  5. If you wish to incorporate parts of Ghostscript into other free
+programs whose distribution conditions are different, write to the Free
+Software Foundation at 675 Mass Ave, Cambridge, MA 02139.  We have not
+yet worked out a simple rule that can be stated here, but we will often
+permit this.  We will be guided by the two goals of preserving the free
+status of all derivatives of our free software and of promoting the
+sharing and reuse of software.
+
+Your comments and suggestions about our licensing policies and our
+software are welcome!  Please contact the Free Software Foundation,
+Inc., 675 Mass Ave, Cambridge, MA 02139, or call (617) 876-3296.
+
+		       NO WARRANTY
+
+  BECAUSE GHOSTSCRIPT IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
+NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT
+WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, RICHARD
+M. STALLMAN, ALADDIN ENTERPRISES, L. PETER DEUTSCH, AND/OR OTHER PARTIES
+PROVIDE GHOSTSCRIPT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF GHOSTSCRIPT IS WITH
+YOU.  SHOULD GHOSTSCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
+STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., L. PETER DEUTSCH, ALADDIN
+ENTERPRISES, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE
+GHOSTSCRIPT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
+ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) GHOSTSCRIPT, EVEN IF YOU
+HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM
+BY ANY OTHER PARTY.
+
+-------------------- End of file COPYLEFT ------------------------------
+*/
+
+/*
+ * Usage:
+	ansi2knr input_file [output_file]
+ * If no output_file is supplied, output goes to stdout.
+ * There are no error messages.
+ *
+ * ansi2knr recognizes function definitions by seeing a non-keyword
+ * identifier at the left margin, followed by a left parenthesis,
+ * with a right parenthesis as the last character on the line,
+ * and with a left brace as the first token on the following line
+ * (ignoring possible intervening comments).
+ * It will recognize a multi-line header provided that no intervening
+ * line ends with a left or right brace or a semicolon.
+ * These algorithms ignore whitespace and comments, except that
+ * the function name must be the first thing on the line.
+ * The following constructs will confuse it:
+ *	- Any other construct that starts at the left margin and
+ *	    follows the above syntax (such as a macro or function call).
+ *	- Some macros that tinker with the syntax of the function header.
+ */
+
+/*
+ * The original and principal author of ansi2knr is L. Peter Deutsch
+ * <[email protected]>.  Other authors are noted in the change history
+ * that follows (in reverse chronological order):
+	lpd 96-01-21 added code to cope with not HAVE_CONFIG_H and with
+		compilers that don't understand void, as suggested by
+		Tom Lane
+	lpd 96-01-15 changed to require that the first non-comment token
+		on the line following a function header be a left brace,
+		to reduce sensitivity to macros, as suggested by Tom Lane
+		<[email protected]>
+	lpd 95-06-22 removed #ifndefs whose sole purpose was to define
+		undefined preprocessor symbols as 0; changed all #ifdefs
+		for configuration symbols to #ifs
+	lpd 95-04-05 changed copyright notice to make it clear that
+		including ansi2knr in a program does not bring the entire
+		program under the GPL
+	lpd 94-12-18 added conditionals for systems where ctype macros
+		don't handle 8-bit characters properly, suggested by
+		Francois Pinard <[email protected]>;
+		removed --varargs switch (this is now the default)
+	lpd 94-10-10 removed CONFIG_BROKETS conditional
+	lpd 94-07-16 added some conditionals to help GNU `configure',
+		suggested by Francois Pinard <[email protected]>;
+		properly erase prototype args in function parameters,
+		contributed by Jim Avera <[email protected]>;
+		correct error in writeblanks (it shouldn't erase EOLs)
+	lpd 89-xx-xx original version
+ */
+
+/* Most of the conditionals here are to make ansi2knr work with */
+/* or without the GNU configure machinery. */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+
+#if HAVE_CONFIG_H
+
+/*
+   For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
+   This will define HAVE_CONFIG_H and so, activate the following lines.
+ */
+
+# if STDC_HEADERS || HAVE_STRING_H
+#  include <string.h>
+# else
+#  include <strings.h>
+# endif
+
+#else /* not HAVE_CONFIG_H */
+
+/* Otherwise do it the hard way */
+
+# ifdef BSD
+#  include <strings.h>
+# else
+#  ifdef VMS
+    extern int strlen(), strncmp();
+#  else
+#   include <string.h>
+#  endif
+# endif
+
+#endif /* not HAVE_CONFIG_H */
+
+#if STDC_HEADERS
+# include <stdlib.h>
+#else
+/*
+   malloc and free should be declared in stdlib.h,
+   but if you've got a K&R compiler, they probably aren't.
+ */
+# ifdef MSDOS
+#  include <malloc.h>
+# else
+#  ifdef VMS
+     extern char *malloc();
+     extern void free();
+#  else
+     extern char *malloc();
+     extern int free();
+#  endif
+# endif
+
+#endif
+
+/*
+ * The ctype macros don't always handle 8-bit characters correctly.
+ * Compensate for this here.
+ */
+#ifdef isascii
+#  undef HAVE_ISASCII		/* just in case */
+#  define HAVE_ISASCII 1
+#else
+#endif
+#if STDC_HEADERS || !HAVE_ISASCII
+#  define is_ascii(c) 1
+#else
+#  define is_ascii(c) isascii(c)
+#endif
+
+#define is_space(c) (is_ascii(c) && isspace(c))
+#define is_alpha(c) (is_ascii(c) && isalpha(c))
+#define is_alnum(c) (is_ascii(c) && isalnum(c))
+
+/* Scanning macros */
+#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
+#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
+
+/* Forward references */
+char *skipspace();
+int writeblanks();
+int test1();
+int convert1();
+
+/* The main program */
+int
+main(argc, argv)
+    int argc;
+    char *argv[];
+{	FILE *in, *out;
+#define bufsize 5000			/* arbitrary size */
+	char *buf;
+	char *line;
+	char *more;
+	/*
+	 * In previous versions, ansi2knr recognized a --varargs switch.
+	 * If this switch was supplied, ansi2knr would attempt to convert
+	 * a ... argument to va_alist and va_dcl; if this switch was not
+	 * supplied, ansi2knr would simply drop any such arguments.
+	 * Now, ansi2knr always does this conversion, and we only
+	 * check for this switch for backward compatibility.
+	 */
+	int convert_varargs = 1;
+
+	if ( argc > 1 && argv[1][0] == '-' )
+	  {	if ( !strcmp(argv[1], "--varargs") )
+		  {	convert_varargs = 1;
+			argc--;
+			argv++;
+		  }
+		else
+		  {	fprintf(stderr, "Unrecognized switch: %s\n", argv[1]);
+			exit(1);
+		  }
+	  }
+	switch ( argc )
+	   {
+	default:
+		printf("Usage: ansi2knr input_file [output_file]\n");
+		exit(0);
+	case 2:
+		out = stdout;
+		break;
+	case 3:
+		out = fopen(argv[2], "w");
+		if ( out == NULL )
+		   {	fprintf(stderr, "Cannot open output file %s\n", argv[2]);
+			exit(1);
+		   }
+	   }
+	in = fopen(argv[1], "r");
+	if ( in == NULL )
+	   {	fprintf(stderr, "Cannot open input file %s\n", argv[1]);
+		exit(1);
+	   }
+	fprintf(out, "#line 1 \"%s\"\n", argv[1]);
+	buf = malloc(bufsize);
+	line = buf;
+	while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
+	   {
+test:		line += strlen(line);
+		switch ( test1(buf) )
+		   {
+		case 2:			/* a function header */
+			convert1(buf, out, 1, convert_varargs);
+			break;
+		case 1:			/* a function */
+			/* Check for a { at the start of the next line. */
+			more = ++line;
+f:			if ( line >= buf + (bufsize - 1) ) /* overflow check */
+			  goto wl;
+			if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
+			  goto wl;
+			switch ( *skipspace(more, 1) )
+			  {
+			  case '{':
+			    /* Definitely a function header. */
+			    convert1(buf, out, 0, convert_varargs);
+			    fputs(more, out);
+			    break;
+			  case 0:
+			    /* The next line was blank or a comment: */
+			    /* keep scanning for a non-comment. */
+			    line += strlen(line);
+			    goto f;
+			  default:
+			    /* buf isn't a function header, but */
+			    /* more might be. */
+			    fputs(buf, out);
+			    strcpy(buf, more);
+			    line = buf;
+			    goto test;
+			  }
+			break;
+		case -1:		/* maybe the start of a function */
+			if ( line != buf + (bufsize - 1) ) /* overflow check */
+			  continue;
+			/* falls through */
+		default:		/* not a function */
+wl:			fputs(buf, out);
+			break;
+		   }
+		line = buf;
+	   }
+	if ( line != buf )
+	  fputs(buf, out);
+	free(buf);
+	fclose(out);
+	fclose(in);
+	return 0;
+}
+
+/* Skip over space and comments, in either direction. */
+char *
+skipspace(p, dir)
+    register char *p;
+    register int dir;			/* 1 for forward, -1 for backward */
+{	for ( ; ; )
+	   {	while ( is_space(*p) )
+		  p += dir;
+		if ( !(*p == '/' && p[dir] == '*') )
+		  break;
+		p += dir;  p += dir;
+		while ( !(*p == '*' && p[dir] == '/') )
+		   {	if ( *p == 0 )
+			  return p;	/* multi-line comment?? */
+			p += dir;
+		   }
+		p += dir;  p += dir;
+	   }
+	return p;
+}
+
+/*
+ * Write blanks over part of a string.
+ * Don't overwrite end-of-line characters.
+ */
+int
+writeblanks(start, end)
+    char *start;
+    char *end;
+{	char *p;
+	for ( p = start; p < end; p++ )
+	  if ( *p != '\r' && *p != '\n' )
+	    *p = ' ';
+	return 0;
+}
+
+/*
+ * Test whether the string in buf is a function definition.
+ * The string may contain and/or end with a newline.
+ * Return as follows:
+ *	0 - definitely not a function definition;
+ *	1 - definitely a function definition;
+ *	2 - definitely a function prototype (NOT USED);
+ *	-1 - may be the beginning of a function definition,
+ *		append another line and look again.
+ * The reason we don't attempt to convert function prototypes is that
+ * Ghostscript's declaration-generating macros look too much like
+ * prototypes, and confuse the algorithms.
+ */
+int
+test1(buf)
+    char *buf;
+{	register char *p = buf;
+	char *bend;
+	char *endfn;
+	int contin;
+
+	if ( !isidfirstchar(*p) )
+	  return 0;		/* no name at left margin */
+	bend = skipspace(buf + strlen(buf) - 1, -1);
+	switch ( *bend )
+	   {
+	   case ';': contin = 0 /*2*/; break;
+	   case ')': contin = 1; break;
+	   case '{': return 0;		/* not a function */
+	   case '}': return 0;		/* not a function */
+	   default: contin = -1;
+	   }
+	while ( isidchar(*p) )
+	  p++;
+	endfn = p;
+	p = skipspace(p, 1);
+	if ( *p++ != '(' )
+	  return 0;		/* not a function */
+	p = skipspace(p, 1);
+	if ( *p == ')' )
+	  return 0;		/* no parameters */
+	/* Check that the apparent function name isn't a keyword. */
+	/* We only need to check for keywords that could be followed */
+	/* by a left parenthesis (which, unfortunately, is most of them). */
+	   {	static char *words[] =
+		   {	"asm", "auto", "case", "char", "const", "double",
+			"extern", "float", "for", "if", "int", "long",
+			"register", "return", "short", "signed", "sizeof",
+			"static", "switch", "typedef", "unsigned",
+			"void", "volatile", "while", 0
+		   };
+		char **key = words;
+		char *kp;
+		int len = endfn - buf;
+
+		while ( (kp = *key) != 0 )
+		   {	if ( strlen(kp) == len && !strncmp(kp, buf, len) )
+			  return 0;	/* name is a keyword */
+			key++;
+		   }
+	   }
+	return contin;
+}
+
+/* Convert a recognized function definition or header to K&R syntax. */
+int
+convert1(buf, out, header, convert_varargs)
+    char *buf;
+    FILE *out;
+    int header;			/* Boolean */
+    int convert_varargs;	/* Boolean */
+{	char *endfn;
+	register char *p;
+	char **breaks;
+	unsigned num_breaks = 2;	/* for testing */
+	char **btop;
+	char **bp;
+	char **ap;
+	char *vararg = 0;
+
+	/* Pre-ANSI implementations don't agree on whether strchr */
+	/* is called strchr or index, so we open-code it here. */
+	for ( endfn = buf; *(endfn++) != '('; )
+	  ;
+top:	p = endfn;
+	breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
+	if ( breaks == 0 )
+	   {	/* Couldn't allocate break table, give up */
+		fprintf(stderr, "Unable to allocate break table!\n");
+		fputs(buf, out);
+		return -1;
+	   }
+	btop = breaks + num_breaks * 2 - 2;
+	bp = breaks;
+	/* Parse the argument list */
+	do
+	   {	int level = 0;
+		char *lp = NULL;
+		char *rp;
+		char *end = NULL;
+
+		if ( bp >= btop )
+		   {	/* Filled up break table. */
+			/* Allocate a bigger one and start over. */
+			free((char *)breaks);
+			num_breaks <<= 1;
+			goto top;
+		   }
+		*bp++ = p;
+		/* Find the end of the argument */
+		for ( ; end == NULL; p++ )
+		   {	switch(*p)
+			   {
+			   case ',':
+				if ( !level ) end = p;
+				break;
+			   case '(':
+				if ( !level ) lp = p;
+				level++;
+				break;
+			   case ')':
+				if ( --level < 0 ) end = p;
+				else rp = p;
+				break;
+			   case '/':
+				p = skipspace(p, 1) - 1;
+				break;
+			   default:
+				;
+			   }
+		   }
+		/* Erase any embedded prototype parameters. */
+		if ( lp )
+		  writeblanks(lp + 1, rp);
+		p--;			/* back up over terminator */
+		/* Find the name being declared. */
+		/* This is complicated because of procedure and */
+		/* array modifiers. */
+		for ( ; ; )
+		   {	p = skipspace(p - 1, -1);
+			switch ( *p )
+			   {
+			   case ']':	/* skip array dimension(s) */
+			   case ')':	/* skip procedure args OR name */
+			   {	int level = 1;
+				while ( level )
+				 switch ( *--p )
+				   {
+				   case ']': case ')': level++; break;
+				   case '[': case '(': level--; break;
+				   case '/': p = skipspace(p, -1) + 1; break;
+				   default: ;
+				   }
+			   }
+				if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
+				   {	/* We found the name being declared */
+					while ( !isidfirstchar(*p) )
+					  p = skipspace(p, 1) + 1;
+					goto found;
+				   }
+				break;
+			   default:
+				goto found;
+			   }
+		   }
+found:		if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
+		  {	if ( convert_varargs )
+			  {	*bp++ = "va_alist";
+				vararg = p-2;
+			  }
+			else
+			  {	p++;
+				if ( bp == breaks + 1 )	/* sole argument */
+				  writeblanks(breaks[0], p);
+				else
+				  writeblanks(bp[-1] - 1, p);
+				bp--;
+			  }
+		   }
+		else
+		   {	while ( isidchar(*p) ) p--;
+			*bp++ = p+1;
+		   }
+		p = end;
+	   }
+	while ( *p++ == ',' );
+	*bp = p;
+	/* Make a special check for 'void' arglist */
+	if ( bp == breaks+2 )
+	   {	p = skipspace(breaks[0], 1);
+		if ( !strncmp(p, "void", 4) )
+		   {	p = skipspace(p+4, 1);
+			if ( p == breaks[2] - 1 )
+			   {	bp = breaks;	/* yup, pretend arglist is empty */
+				writeblanks(breaks[0], p + 1);
+			   }
+		   }
+	   }
+	/* Put out the function name and left parenthesis. */
+	p = buf;
+	while ( p != endfn ) putc(*p, out), p++;
+	/* Put out the declaration. */
+	if ( header )
+	  {	fputs(");", out);
+		for ( p = breaks[0]; *p; p++ )
+		  if ( *p == '\r' || *p == '\n' )
+		    putc(*p, out);
+	  }
+	else
+	  {	for ( ap = breaks+1; ap < bp; ap += 2 )
+		  {	p = *ap;
+			while ( isidchar(*p) )
+			  putc(*p, out), p++;
+			if ( ap < bp - 1 )
+			  fputs(", ", out);
+		  }
+		fputs(")  ", out);
+		/* Put out the argument declarations */
+		for ( ap = breaks+2; ap <= bp; ap += 2 )
+		  (*ap)[-1] = ';';
+		if ( vararg != 0 )
+		  {	*vararg = 0;
+			fputs(breaks[0], out);		/* any prior args */
+			fputs("va_dcl", out);		/* the final arg */
+			fputs(bp[0], out);
+		  }
+		else
+		  fputs(breaks[0], out);
+	  }
+	free((char *)breaks);
+	return 0;
+}

+ 132 - 0
engine/lib/ljpeg/extras/cderror.h

@@ -0,0 +1,132 @@
+/*
+ * cderror.h
+ *
+ * Copyright (C) 1994-1997, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file defines the error and message codes for the cjpeg/djpeg
+ * applications.  These strings are not needed as part of the JPEG library
+ * proper.
+ * Edit this file to add new codes, or to translate the message strings to
+ * some other language.
+ */
+
+/*
+ * To define the enum list of message codes, include this file without
+ * defining macro JMESSAGE.  To create a message string table, include it
+ * again with a suitable JMESSAGE definition (see jerror.c for an example).
+ */
+#ifndef JMESSAGE
+#ifndef CDERROR_H
+#define CDERROR_H
+/* First time through, define the enum list */
+#define JMAKE_ENUM_LIST
+#else
+/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
+#define JMESSAGE(code,string)
+#endif /* CDERROR_H */
+#endif /* JMESSAGE */
+
+#ifdef JMAKE_ENUM_LIST
+
+typedef enum {
+
+#define JMESSAGE(code,string)	code ,
+
+#endif /* JMAKE_ENUM_LIST */
+
+JMESSAGE(JMSG_FIRSTADDONCODE=1000, NULL) /* Must be first entry! */
+
+#ifdef BMP_SUPPORTED
+JMESSAGE(JERR_BMP_BADCMAP, "Unsupported BMP colormap format")
+JMESSAGE(JERR_BMP_BADDEPTH, "Only 8- and 24-bit BMP files are supported")
+JMESSAGE(JERR_BMP_BADHEADER, "Invalid BMP file: bad header length")
+JMESSAGE(JERR_BMP_BADPLANES, "Invalid BMP file: biPlanes not equal to 1")
+JMESSAGE(JERR_BMP_COLORSPACE, "BMP output must be grayscale or RGB")
+JMESSAGE(JERR_BMP_COMPRESSED, "Sorry, compressed BMPs not yet supported")
+JMESSAGE(JERR_BMP_NOT, "Not a BMP file - does not start with BM")
+JMESSAGE(JTRC_BMP, "%ux%u 24-bit BMP image")
+JMESSAGE(JTRC_BMP_MAPPED, "%ux%u 8-bit colormapped BMP image")
+JMESSAGE(JTRC_BMP_OS2, "%ux%u 24-bit OS2 BMP image")
+JMESSAGE(JTRC_BMP_OS2_MAPPED, "%ux%u 8-bit colormapped OS2 BMP image")
+#endif /* BMP_SUPPORTED */
+
+#ifdef GIF_SUPPORTED
+JMESSAGE(JERR_GIF_BUG, "GIF output got confused")
+JMESSAGE(JERR_GIF_CODESIZE, "Bogus GIF codesize %d")
+JMESSAGE(JERR_GIF_COLORSPACE, "GIF output must be grayscale or RGB")
+JMESSAGE(JERR_GIF_IMAGENOTFOUND, "Too few images in GIF file")
+JMESSAGE(JERR_GIF_NOT, "Not a GIF file")
+JMESSAGE(JTRC_GIF, "%ux%ux%d GIF image")
+JMESSAGE(JTRC_GIF_BADVERSION,
+	 "Warning: unexpected GIF version number '%c%c%c'")
+JMESSAGE(JTRC_GIF_EXTENSION, "Ignoring GIF extension block of type 0x%02x")
+JMESSAGE(JTRC_GIF_NONSQUARE, "Caution: nonsquare pixels in input")
+JMESSAGE(JWRN_GIF_BADDATA, "Corrupt data in GIF file")
+JMESSAGE(JWRN_GIF_CHAR, "Bogus char 0x%02x in GIF file, ignoring")
+JMESSAGE(JWRN_GIF_ENDCODE, "Premature end of GIF image")
+JMESSAGE(JWRN_GIF_NOMOREDATA, "Ran out of GIF bits")
+#endif /* GIF_SUPPORTED */
+
+#ifdef PPM_SUPPORTED
+JMESSAGE(JERR_PPM_COLORSPACE, "PPM output must be grayscale or RGB")
+JMESSAGE(JERR_PPM_NONNUMERIC, "Nonnumeric data in PPM file")
+JMESSAGE(JERR_PPM_NOT, "Not a PPM/PGM file")
+JMESSAGE(JTRC_PGM, "%ux%u PGM image")
+JMESSAGE(JTRC_PGM_TEXT, "%ux%u text PGM image")
+JMESSAGE(JTRC_PPM, "%ux%u PPM image")
+JMESSAGE(JTRC_PPM_TEXT, "%ux%u text PPM image")
+#endif /* PPM_SUPPORTED */
+
+#ifdef RLE_SUPPORTED
+JMESSAGE(JERR_RLE_BADERROR, "Bogus error code from RLE library")
+JMESSAGE(JERR_RLE_COLORSPACE, "RLE output must be grayscale or RGB")
+JMESSAGE(JERR_RLE_DIMENSIONS, "Image dimensions (%ux%u) too large for RLE")
+JMESSAGE(JERR_RLE_EMPTY, "Empty RLE file")
+JMESSAGE(JERR_RLE_EOF, "Premature EOF in RLE header")
+JMESSAGE(JERR_RLE_MEM, "Insufficient memory for RLE header")
+JMESSAGE(JERR_RLE_NOT, "Not an RLE file")
+JMESSAGE(JERR_RLE_TOOMANYCHANNELS, "Cannot handle %d output channels for RLE")
+JMESSAGE(JERR_RLE_UNSUPPORTED, "Cannot handle this RLE setup")
+JMESSAGE(JTRC_RLE, "%ux%u full-color RLE file")
+JMESSAGE(JTRC_RLE_FULLMAP, "%ux%u full-color RLE file with map of length %d")
+JMESSAGE(JTRC_RLE_GRAY, "%ux%u grayscale RLE file")
+JMESSAGE(JTRC_RLE_MAPGRAY, "%ux%u grayscale RLE file with map of length %d")
+JMESSAGE(JTRC_RLE_MAPPED, "%ux%u colormapped RLE file with map of length %d")
+#endif /* RLE_SUPPORTED */
+
+#ifdef TARGA_SUPPORTED
+JMESSAGE(JERR_TGA_BADCMAP, "Unsupported Targa colormap format")
+JMESSAGE(JERR_TGA_BADPARMS, "Invalid or unsupported Targa file")
+JMESSAGE(JERR_TGA_COLORSPACE, "Targa output must be grayscale or RGB")
+JMESSAGE(JTRC_TGA, "%ux%u RGB Targa image")
+JMESSAGE(JTRC_TGA_GRAY, "%ux%u grayscale Targa image")
+JMESSAGE(JTRC_TGA_MAPPED, "%ux%u colormapped Targa image")
+#else
+JMESSAGE(JERR_TGA_NOTCOMP, "Targa support was not compiled")
+#endif /* TARGA_SUPPORTED */
+
+JMESSAGE(JERR_BAD_CMAP_FILE,
+	 "Color map file is invalid or of unsupported format")
+JMESSAGE(JERR_TOO_MANY_COLORS,
+	 "Output file format cannot handle %d colormap entries")
+JMESSAGE(JERR_UNGETC_FAILED, "ungetc failed")
+#ifdef TARGA_SUPPORTED
+JMESSAGE(JERR_UNKNOWN_FORMAT,
+	 "Unrecognized input file format --- perhaps you need -targa")
+#else
+JMESSAGE(JERR_UNKNOWN_FORMAT, "Unrecognized input file format")
+#endif
+JMESSAGE(JERR_UNSUPPORTED_FORMAT, "Unsupported output file format")
+
+#ifdef JMAKE_ENUM_LIST
+
+  JMSG_LASTADDONCODE
+} ADDON_MESSAGE_CODE;
+
+#undef JMAKE_ENUM_LIST
+#endif /* JMAKE_ENUM_LIST */
+
+/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
+#undef JMESSAGE

+ 181 - 0
engine/lib/ljpeg/extras/cdjpeg.c

@@ -0,0 +1,181 @@
+/*
+ * cdjpeg.c
+ *
+ * Copyright (C) 1991-1997, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains common support routines used by the IJG application
+ * programs (cjpeg, djpeg, jpegtran).
+ */
+
+#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
+#include <ctype.h>		/* to declare isupper(), tolower() */
+#ifdef NEED_SIGNAL_CATCHER
+#include <signal.h>		/* to declare signal() */
+#endif
+#ifdef USE_SETMODE
+#include <fcntl.h>		/* to declare setmode()'s parameter macros */
+/* If you have setmode() but not <io.h>, just delete this line: */
+#include <io.h>			/* to declare setmode() */
+#endif
+
+
+/*
+ * Signal catcher to ensure that temporary files are removed before aborting.
+ * NB: for Amiga Manx C this is actually a global routine named _abort();
+ * we put "#define signal_catcher _abort" in jconfig.h.  Talk about bogus...
+ */
+
+#ifdef NEED_SIGNAL_CATCHER
+
+static j_common_ptr sig_cinfo;
+
+void				/* must be global for Manx C */
+signal_catcher (int signum)
+{
+  if (sig_cinfo != NULL) {
+    if (sig_cinfo->err != NULL) /* turn off trace output */
+      sig_cinfo->err->trace_level = 0;
+    jpeg_destroy(sig_cinfo);	/* clean up memory allocation & temp files */
+  }
+  exit(EXIT_FAILURE);
+}
+
+
+GLOBAL(void)
+enable_signal_catcher (j_common_ptr cinfo)
+{
+  sig_cinfo = cinfo;
+#ifdef SIGINT			/* not all systems have SIGINT */
+  signal(SIGINT, signal_catcher);
+#endif
+#ifdef SIGTERM			/* not all systems have SIGTERM */
+  signal(SIGTERM, signal_catcher);
+#endif
+}
+
+#endif
+
+
+/*
+ * Optional progress monitor: display a percent-done figure on stderr.
+ */
+
+#ifdef PROGRESS_REPORT
+
+METHODDEF(void)
+progress_monitor (j_common_ptr cinfo)
+{
+  cd_progress_ptr prog = (cd_progress_ptr) cinfo->progress;
+  int total_passes = prog->pub.total_passes + prog->total_extra_passes;
+  int percent_done = (int) (prog->pub.pass_counter*100L/prog->pub.pass_limit);
+
+  if (percent_done != prog->percent_done) {
+    prog->percent_done = percent_done;
+    if (total_passes > 1) {
+      fprintf(stderr, "\rPass %d/%d: %3d%% ",
+	      prog->pub.completed_passes + prog->completed_extra_passes + 1,
+	      total_passes, percent_done);
+    } else {
+      fprintf(stderr, "\r %3d%% ", percent_done);
+    }
+    fflush(stderr);
+  }
+}
+
+
+GLOBAL(void)
+start_progress_monitor (j_common_ptr cinfo, cd_progress_ptr progress)
+{
+  /* Enable progress display, unless trace output is on */
+  if (cinfo->err->trace_level == 0) {
+    progress->pub.progress_monitor = progress_monitor;
+    progress->completed_extra_passes = 0;
+    progress->total_extra_passes = 0;
+    progress->percent_done = -1;
+    cinfo->progress = &progress->pub;
+  }
+}
+
+
+GLOBAL(void)
+end_progress_monitor (j_common_ptr cinfo)
+{
+  /* Clear away progress display */
+  if (cinfo->err->trace_level == 0) {
+    fprintf(stderr, "\r                \r");
+    fflush(stderr);
+  }
+}
+
+#endif
+
+
+/*
+ * Case-insensitive matching of possibly-abbreviated keyword switches.
+ * keyword is the constant keyword (must be lower case already),
+ * minchars is length of minimum legal abbreviation.
+ */
+
+GLOBAL(boolean)
+keymatch (char * arg, const char * keyword, int minchars)
+{
+  register int ca, ck;
+  register int nmatched = 0;
+
+  while ((ca = *arg++) != '\0') {
+    if ((ck = *keyword++) == '\0')
+      return FALSE;		/* arg longer than keyword, no good */
+    if (isupper(ca))		/* force arg to lcase (assume ck is already) */
+      ca = tolower(ca);
+    if (ca != ck)
+      return FALSE;		/* no good */
+    nmatched++;			/* count matched characters */
+  }
+  /* reached end of argument; fail if it's too short for unique abbrev */
+  if (nmatched < minchars)
+    return FALSE;
+  return TRUE;			/* A-OK */
+}
+
+
+/*
+ * Routines to establish binary I/O mode for stdin and stdout.
+ * Non-Unix systems often require some hacking to get out of text mode.
+ */
+
+GLOBAL(FILE *)
+read_stdin (void)
+{
+  FILE * input_file = stdin;
+
+#ifdef USE_SETMODE		/* need to hack file mode? */
+  setmode(fileno(stdin), O_BINARY);
+#endif
+#ifdef USE_FDOPEN		/* need to re-open in binary mode? */
+  if ((input_file = fdopen(fileno(stdin), READ_BINARY)) == NULL) {
+    fprintf(stderr, "Cannot reopen stdin\n");
+    exit(EXIT_FAILURE);
+  }
+#endif
+  return input_file;
+}
+
+
+GLOBAL(FILE *)
+write_stdout (void)
+{
+  FILE * output_file = stdout;
+
+#ifdef USE_SETMODE		/* need to hack file mode? */
+  setmode(fileno(stdout), O_BINARY);
+#endif
+#ifdef USE_FDOPEN		/* need to re-open in binary mode? */
+  if ((output_file = fdopen(fileno(stdout), WRITE_BINARY)) == NULL) {
+    fprintf(stderr, "Cannot reopen stdout\n");
+    exit(EXIT_FAILURE);
+  }
+#endif
+  return output_file;
+}

+ 184 - 0
engine/lib/ljpeg/extras/cdjpeg.h

@@ -0,0 +1,184 @@
+/*
+ * cdjpeg.h
+ *
+ * Copyright (C) 1994-1997, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains common declarations for the sample applications
+ * cjpeg and djpeg.  It is NOT used by the core JPEG library.
+ */
+
+#define JPEG_CJPEG_DJPEG	/* define proper options in jconfig.h */
+#define JPEG_INTERNAL_OPTIONS	/* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */
+#include "jinclude.h"
+#include "jpeglib.h"
+#include "jerror.h"		/* get library error codes too */
+#include "cderror.h"		/* get application-specific error codes */
+
+
+/*
+ * Object interface for cjpeg's source file decoding modules
+ */
+
+typedef struct cjpeg_source_struct * cjpeg_source_ptr;
+
+struct cjpeg_source_struct {
+  JMETHOD(void, start_input, (j_compress_ptr cinfo,
+			      cjpeg_source_ptr sinfo));
+  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,
+				       cjpeg_source_ptr sinfo));
+  JMETHOD(void, finish_input, (j_compress_ptr cinfo,
+			       cjpeg_source_ptr sinfo));
+
+  FILE *input_file;
+
+  JSAMPARRAY buffer;
+  JDIMENSION buffer_height;
+};
+
+
+/*
+ * Object interface for djpeg's output file encoding modules
+ */
+
+typedef struct djpeg_dest_struct * djpeg_dest_ptr;
+
+struct djpeg_dest_struct {
+  /* start_output is called after jpeg_start_decompress finishes.
+   * The color map will be ready at this time, if one is needed.
+   */
+  JMETHOD(void, start_output, (j_decompress_ptr cinfo,
+			       djpeg_dest_ptr dinfo));
+  /* Emit the specified number of pixel rows from the buffer. */
+  JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo,
+				 djpeg_dest_ptr dinfo,
+				 JDIMENSION rows_supplied));
+  /* Finish up at the end of the image. */
+  JMETHOD(void, finish_output, (j_decompress_ptr cinfo,
+				djpeg_dest_ptr dinfo));
+
+  /* Target file spec; filled in by djpeg.c after object is created. */
+  FILE * output_file;
+
+  /* Output pixel-row buffer.  Created by module init or start_output.
+   * Width is cinfo->output_width * cinfo->output_components;
+   * height is buffer_height.
+   */
+  JSAMPARRAY buffer;
+  JDIMENSION buffer_height;
+};
+
+
+/*
+ * cjpeg/djpeg may need to perform extra passes to convert to or from
+ * the source/destination file format.  The JPEG library does not know
+ * about these passes, but we'd like them to be counted by the progress
+ * monitor.  We use an expanded progress monitor object to hold the
+ * additional pass count.
+ */
+
+struct cdjpeg_progress_mgr {
+  struct jpeg_progress_mgr pub;	/* fields known to JPEG library */
+  int completed_extra_passes;	/* extra passes completed */
+  int total_extra_passes;	/* total extra */
+  /* last printed percentage stored here to avoid multiple printouts */
+  int percent_done;
+};
+
+typedef struct cdjpeg_progress_mgr * cd_progress_ptr;
+
+
+/* Short forms of external names for systems with brain-damaged linkers. */
+
+#ifdef NEED_SHORT_EXTERNAL_NAMES
+#define jinit_read_bmp		jIRdBMP
+#define jinit_write_bmp		jIWrBMP
+#define jinit_read_gif		jIRdGIF
+#define jinit_write_gif		jIWrGIF
+#define jinit_read_ppm		jIRdPPM
+#define jinit_write_ppm		jIWrPPM
+#define jinit_read_rle		jIRdRLE
+#define jinit_write_rle		jIWrRLE
+#define jinit_read_targa	jIRdTarga
+#define jinit_write_targa	jIWrTarga
+#define read_quant_tables	RdQTables
+#define read_scan_script	RdScnScript
+#define set_quant_slots		SetQSlots
+#define set_sample_factors	SetSFacts
+#define read_color_map		RdCMap
+#define enable_signal_catcher	EnSigCatcher
+#define start_progress_monitor	StProgMon
+#define end_progress_monitor	EnProgMon
+#define read_stdin		RdStdin
+#define write_stdout		WrStdout
+#endif /* NEED_SHORT_EXTERNAL_NAMES */
+
+/* Module selection routines for I/O modules. */
+
+EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo,
+					    boolean is_os2));
+EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo));
+EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo));
+EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo));
+EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo));
+EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo));
+
+/* cjpeg support routines (in rdswitch.c) */
+
+EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename,
+				    int scale_factor, boolean force_baseline));
+EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename));
+EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg));
+EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg));
+
+/* djpeg support routines (in rdcolmap.c) */
+
+EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FILE * infile));
+
+/* common support routines (in cdjpeg.c) */
+
+EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo));
+EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo,
+					 cd_progress_ptr progress));
+EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo));
+EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars));
+EXTERN(FILE *) read_stdin JPP((void));
+EXTERN(FILE *) write_stdout JPP((void));
+
+/* miscellaneous useful macros */
+
+#ifdef DONT_USE_B_MODE		/* define mode parameters for fopen() */
+#define READ_BINARY	"r"
+#define WRITE_BINARY	"w"
+#else
+#ifdef VMS			/* VMS is very nonstandard */
+#define READ_BINARY	"rb", "ctx=stm"
+#define WRITE_BINARY	"wb", "ctx=stm"
+#else				/* standard ANSI-compliant case */
+#define READ_BINARY	"rb"
+#define WRITE_BINARY	"wb"
+#endif
+#endif
+
+#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
+#define EXIT_FAILURE  1
+#endif
+#ifndef EXIT_SUCCESS
+#ifdef VMS
+#define EXIT_SUCCESS  1		/* VMS is very nonstandard */
+#else
+#define EXIT_SUCCESS  0
+#endif
+#endif
+#ifndef EXIT_WARNING
+#ifdef VMS
+#define EXIT_WARNING  1		/* VMS is very nonstandard */
+#else
+#define EXIT_WARNING  2
+#endif
+#endif

+ 292 - 0
engine/lib/ljpeg/extras/cjpeg.1

@@ -0,0 +1,292 @@
+.TH CJPEG 1 "20 March 1998"
+.SH NAME
+cjpeg \- compress an image file to a JPEG file
+.SH SYNOPSIS
+.B cjpeg
+[
+.I options
+]
+[
+.I filename
+]
+.LP
+.SH DESCRIPTION
+.LP
+.B cjpeg
+compresses the named image file, or the standard input if no file is
+named, and produces a JPEG/JFIF file on the standard output.
+The currently supported input file formats are: PPM (PBMPLUS color
+format), PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster
+Toolkit format).  (RLE is supported only if the URT library is available.)
+.SH OPTIONS
+All switch names may be abbreviated; for example,
+.B \-grayscale
+may be written
+.B \-gray
+or
+.BR \-gr .
+Most of the "basic" switches can be abbreviated to as little as one letter.
+Upper and lower case are equivalent (thus
+.B \-BMP
+is the same as
+.BR \-bmp ).
+British spellings are also accepted (e.g.,
+.BR \-greyscale ),
+though for brevity these are not mentioned below.
+.PP
+The basic switches are:
+.TP
+.BI \-quality " N"
+Scale quantization tables to adjust image quality.  Quality is 0 (worst) to
+100 (best); default is 75.  (See below for more info.)
+.TP
+.B \-grayscale
+Create monochrome JPEG file from color input.  Be sure to use this switch when
+compressing a grayscale BMP file, because
+.B cjpeg
+isn't bright enough to notice whether a BMP file uses only shades of gray.
+By saying
+.BR \-grayscale ,
+you'll get a smaller JPEG file that takes less time to process.
+.TP
+.B \-optimize
+Perform optimization of entropy encoding parameters.  Without this, default
+encoding parameters are used.
+.B \-optimize
+usually makes the JPEG file a little smaller, but
+.B cjpeg
+runs somewhat slower and needs much more memory.  Image quality and speed of
+decompression are unaffected by
+.BR \-optimize .
+.TP
+.B \-progressive
+Create progressive JPEG file (see below).
+.TP
+.B \-targa
+Input file is Targa format.  Targa files that contain an "identification"
+field will not be automatically recognized by
+.BR cjpeg ;
+for such files you must specify
+.B \-targa
+to make
+.B cjpeg
+treat the input as Targa format.
+For most Targa files, you won't need this switch.
+.PP
+The
+.B \-quality
+switch lets you trade off compressed file size against quality of the
+reconstructed image: the higher the quality setting, the larger the JPEG file,
+and the closer the output image will be to the original input.  Normally you
+want to use the lowest quality setting (smallest file) that decompresses into
+something visually indistinguishable from the original image.  For this
+purpose the quality setting should be between 50 and 95; the default of 75 is
+often about right.  If you see defects at
+.B \-quality
+75, then go up 5 or 10 counts at a time until you are happy with the output
+image.  (The optimal setting will vary from one image to another.)
+.PP
+.B \-quality
+100 will generate a quantization table of all 1's, minimizing loss in the
+quantization step (but there is still information loss in subsampling, as well
+as roundoff error).  This setting is mainly of interest for experimental
+purposes.  Quality values above about 95 are
+.B not
+recommended for normal use; the compressed file size goes up dramatically for
+hardly any gain in output image quality.
+.PP
+In the other direction, quality values below 50 will produce very small files
+of low image quality.  Settings around 5 to 10 might be useful in preparing an
+index of a large image library, for example.  Try
+.B \-quality
+2 (or so) for some amusing Cubist effects.  (Note: quality
+values below about 25 generate 2-byte quantization tables, which are
+considered optional in the JPEG standard.
+.B cjpeg
+emits a warning message when you give such a quality value, because some
+other JPEG programs may be unable to decode the resulting file.  Use
+.B \-baseline
+if you need to ensure compatibility at low quality values.)
+.PP
+The
+.B \-progressive
+switch creates a "progressive JPEG" file.  In this type of JPEG file, the data
+is stored in multiple scans of increasing quality.  If the file is being
+transmitted over a slow communications link, the decoder can use the first
+scan to display a low-quality image very quickly, and can then improve the
+display with each subsequent scan.  The final image is exactly equivalent to a
+standard JPEG file of the same quality setting, and the total file size is
+about the same --- often a little smaller.
+.B Caution:
+progressive JPEG is not yet widely implemented, so many decoders will be
+unable to view a progressive JPEG file at all.
+.PP
+Switches for advanced users:
+.TP
+.B \-dct int
+Use integer DCT method (default).
+.TP
+.B \-dct fast
+Use fast integer DCT (less accurate).
+.TP
+.B \-dct float
+Use floating-point DCT method.
+The float method is very slightly more accurate than the int method, but is
+much slower unless your machine has very fast floating-point hardware.  Also
+note that results of the floating-point method may vary slightly across
+machines, while the integer methods should give the same results everywhere.
+The fast integer method is much less accurate than the other two.
+.TP
+.BI \-restart " N"
+Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
+attached to the number.
+.B \-restart 0
+(the default) means no restart markers.
+.TP
+.BI \-smooth " N"
+Smooth the input image to eliminate dithering noise.  N, ranging from 1 to
+100, indicates the strength of smoothing.  0 (the default) means no smoothing.
+.TP
+.BI \-maxmemory " N"
+Set limit for amount of memory to use in processing large images.  Value is
+in thousands of bytes, or millions of bytes if "M" is attached to the
+number.  For example,
+.B \-max 4m
+selects 4000000 bytes.  If more space is needed, temporary files will be used.
+.TP
+.BI \-outfile " name"
+Send output image to the named file, not to standard output.
+.TP
+.B \-verbose
+Enable debug printout.  More
+.BR \-v 's
+give more output.  Also, version information is printed at startup.
+.TP
+.B \-debug
+Same as
+.BR \-verbose .
+.PP
+The
+.B \-restart
+option inserts extra markers that allow a JPEG decoder to resynchronize after
+a transmission error.  Without restart markers, any damage to a compressed
+file will usually ruin the image from the point of the error to the end of the
+image; with restart markers, the damage is usually confined to the portion of
+the image up to the next restart marker.  Of course, the restart markers
+occupy extra space.  We recommend
+.B \-restart 1
+for images that will be transmitted across unreliable networks such as Usenet.
+.PP
+The
+.B \-smooth
+option filters the input to eliminate fine-scale noise.  This is often useful
+when converting dithered images to JPEG: a moderate smoothing factor of 10 to
+50 gets rid of dithering patterns in the input file, resulting in a smaller
+JPEG file and a better-looking image.  Too large a smoothing factor will
+visibly blur the image, however.
+.PP
+Switches for wizards:
+.TP
+.B \-baseline
+Force baseline-compatible quantization tables to be generated.  This clamps
+quantization values to 8 bits even at low quality settings.  (This switch is
+poorly named, since it does not ensure that the output is actually baseline
+JPEG.  For example, you can use
+.B \-baseline
+and
+.B \-progressive
+together.)
+.TP
+.BI \-qtables " file"
+Use the quantization tables given in the specified text file.
+.TP
+.BI \-qslots " N[,...]"
+Select which quantization table to use for each color component.
+.TP
+.BI \-sample " HxV[,...]"
+Set JPEG sampling factors for each color component.
+.TP
+.BI \-scans " file"
+Use the scan script given in the specified text file.
+.PP
+The "wizard" switches are intended for experimentation with JPEG.  If you
+don't know what you are doing, \fBdon't use them\fR.  These switches are
+documented further in the file wizard.doc.
+.SH EXAMPLES
+.LP
+This example compresses the PPM file foo.ppm with a quality factor of
+60 and saves the output as foo.jpg:
+.IP
+.B cjpeg \-quality
+.I 60 foo.ppm
+.B >
+.I foo.jpg
+.SH HINTS
+Color GIF files are not the ideal input for JPEG; JPEG is really intended for
+compressing full-color (24-bit) images.  In particular, don't try to convert
+cartoons, line drawings, and other images that have only a few distinct
+colors.  GIF works great on these, JPEG does not.  If you want to convert a
+GIF to JPEG, you should experiment with
+.BR cjpeg 's
+.B \-quality
+and
+.B \-smooth
+options to get a satisfactory conversion.
+.B \-smooth 10
+or so is often helpful.
+.PP
+Avoid running an image through a series of JPEG compression/decompression
+cycles.  Image quality loss will accumulate; after ten or so cycles the image
+may be noticeably worse than it was after one cycle.  It's best to use a
+lossless format while manipulating an image, then convert to JPEG format when
+you are ready to file the image away.
+.PP
+The
+.B \-optimize
+option to
+.B cjpeg
+is worth using when you are making a "final" version for posting or archiving.
+It's also a win when you are using low quality settings to make very small
+JPEG files; the percentage improvement is often a lot more than it is on
+larger files.  (At present,
+.B \-optimize
+mode is always selected when generating progressive JPEG files.)
+.SH ENVIRONMENT
+.TP
+.B JPEGMEM
+If this environment variable is set, its value is the default memory limit.
+The value is specified as described for the
+.B \-maxmemory
+switch.
+.B JPEGMEM
+overrides the default value specified when the program was compiled, and
+itself is overridden by an explicit
+.BR \-maxmemory .
+.SH SEE ALSO
+.BR djpeg (1),
+.BR jpegtran (1),
+.BR rdjpgcom (1),
+.BR wrjpgcom (1)
+.br
+.BR ppm (5),
+.BR pgm (5)
+.br
+Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
+Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
+.SH AUTHOR
+Independent JPEG Group
+.SH BUGS
+Arithmetic coding is not supported for legal reasons.
+.PP
+GIF input files are no longer supported, to avoid the Unisys LZW patent.
+Use a Unisys-licensed program if you need to read a GIF file.  (Conversion
+of GIF files to JPEG is usually a bad idea anyway.)
+.PP
+Not all variants of BMP and Targa file formats are supported.
+.PP
+The
+.B \-targa
+switch is not a bug, it's a feature.  (It would be a bug if the Targa format
+designers had not been clueless.)
+.PP
+Still not as fast as we'd like.

+ 606 - 0
engine/lib/ljpeg/extras/cjpeg.c

@@ -0,0 +1,606 @@
+/*
+ * cjpeg.c
+ *
+ * Copyright (C) 1991-1998, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains a command-line user interface for the JPEG compressor.
+ * It should work on any system with Unix- or MS-DOS-style command lines.
+ *
+ * Two different command line styles are permitted, depending on the
+ * compile-time switch TWO_FILE_COMMANDLINE:
+ *	cjpeg [options]  inputfile outputfile
+ *	cjpeg [options]  [inputfile]
+ * In the second style, output is always to standard output, which you'd
+ * normally redirect to a file or pipe to some other program.  Input is
+ * either from a named file or from standard input (typically redirected).
+ * The second style is convenient on Unix but is unhelpful on systems that
+ * don't support pipes.  Also, you MUST use the first style if your system
+ * doesn't do binary I/O to stdin/stdout.
+ * To simplify script writing, the "-outfile" switch is provided.  The syntax
+ *	cjpeg [options]  -outfile outputfile  inputfile
+ * works regardless of which command line style is used.
+ */
+
+#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
+#include "jversion.h"		/* for version message */
+
+#ifdef USE_CCOMMAND		/* command-line reader for Macintosh */
+#ifdef __MWERKS__
+#include <SIOUX.h>              /* Metrowerks needs this */
+#include <console.h>		/* ... and this */
+#endif
+#ifdef THINK_C
+#include <console.h>		/* Think declares it here */
+#endif
+#endif
+
+
+/* Create the add-on message string table. */
+
+#define JMESSAGE(code,string)	string ,
+
+static const char * const cdjpeg_message_table[] = {
+#include "cderror.h"
+  NULL
+};
+
+
+/*
+ * This routine determines what format the input file is,
+ * and selects the appropriate input-reading module.
+ *
+ * To determine which family of input formats the file belongs to,
+ * we may look only at the first byte of the file, since C does not
+ * guarantee that more than one character can be pushed back with ungetc.
+ * Looking at additional bytes would require one of these approaches:
+ *     1) assume we can fseek() the input file (fails for piped input);
+ *     2) assume we can push back more than one character (works in
+ *        some C implementations, but unportable);
+ *     3) provide our own buffering (breaks input readers that want to use
+ *        stdio directly, such as the RLE library);
+ * or  4) don't put back the data, and modify the input_init methods to assume
+ *        they start reading after the start of file (also breaks RLE library).
+ * #1 is attractive for MS-DOS but is untenable on Unix.
+ *
+ * The most portable solution for file types that can't be identified by their
+ * first byte is to make the user tell us what they are.  This is also the
+ * only approach for "raw" file types that contain only arbitrary values.
+ * We presently apply this method for Targa files.  Most of the time Targa
+ * files start with 0x00, so we recognize that case.  Potentially, however,
+ * a Targa file could start with any byte value (byte 0 is the length of the
+ * seldom-used ID field), so we provide a switch to force Targa input mode.
+ */
+
+static boolean is_targa;	/* records user -targa switch */
+
+
+LOCAL(cjpeg_source_ptr)
+select_file_type (j_compress_ptr cinfo, FILE * infile)
+{
+  int c;
+
+  if (is_targa) {
+#ifdef TARGA_SUPPORTED
+    return jinit_read_targa(cinfo);
+#else
+    ERREXIT(cinfo, JERR_TGA_NOTCOMP);
+#endif
+  }
+
+  if ((c = getc(infile)) == EOF)
+    ERREXIT(cinfo, JERR_INPUT_EMPTY);
+  if (ungetc(c, infile) == EOF)
+    ERREXIT(cinfo, JERR_UNGETC_FAILED);
+
+  switch (c) {
+#ifdef BMP_SUPPORTED
+  case 'B':
+    return jinit_read_bmp(cinfo);
+#endif
+#ifdef GIF_SUPPORTED
+  case 'G':
+    return jinit_read_gif(cinfo);
+#endif
+#ifdef PPM_SUPPORTED
+  case 'P':
+    return jinit_read_ppm(cinfo);
+#endif
+#ifdef RLE_SUPPORTED
+  case 'R':
+    return jinit_read_rle(cinfo);
+#endif
+#ifdef TARGA_SUPPORTED
+  case 0x00:
+    return jinit_read_targa(cinfo);
+#endif
+  default:
+    ERREXIT(cinfo, JERR_UNKNOWN_FORMAT);
+    break;
+  }
+
+  return NULL;			/* suppress compiler warnings */
+}
+
+
+/*
+ * Argument-parsing code.
+ * The switch parser is designed to be useful with DOS-style command line
+ * syntax, ie, intermixed switches and file names, where only the switches
+ * to the left of a given file name affect processing of that file.
+ * The main program in this file doesn't actually use this capability...
+ */
+
+
+static const char * progname;	/* program name for error messages */
+static char * outfilename;	/* for -outfile switch */
+
+
+LOCAL(void)
+usage (void)
+/* complain about bad command line */
+{
+  fprintf(stderr, "usage: %s [switches] ", progname);
+#ifdef TWO_FILE_COMMANDLINE
+  fprintf(stderr, "inputfile outputfile\n");
+#else
+  fprintf(stderr, "[inputfile]\n");
+#endif
+
+  fprintf(stderr, "Switches (names may be abbreviated):\n");
+  fprintf(stderr, "  -quality N     Compression quality (0..100; 5-95 is useful range)\n");
+  fprintf(stderr, "  -grayscale     Create monochrome JPEG file\n");
+#ifdef ENTROPY_OPT_SUPPORTED
+  fprintf(stderr, "  -optimize      Optimize Huffman table (smaller file, but slow compression)\n");
+#endif
+#ifdef C_PROGRESSIVE_SUPPORTED
+  fprintf(stderr, "  -progressive   Create progressive JPEG file\n");
+#endif
+#ifdef TARGA_SUPPORTED
+  fprintf(stderr, "  -targa         Input file is Targa format (usually not needed)\n");
+#endif
+  fprintf(stderr, "Switches for advanced users:\n");
+#ifdef DCT_ISLOW_SUPPORTED
+  fprintf(stderr, "  -dct int       Use integer DCT method%s\n",
+	  (JDCT_DEFAULT == JDCT_ISLOW ? " (default)" : ""));
+#endif
+#ifdef DCT_IFAST_SUPPORTED
+  fprintf(stderr, "  -dct fast      Use fast integer DCT (less accurate)%s\n",
+	  (JDCT_DEFAULT == JDCT_IFAST ? " (default)" : ""));
+#endif
+#ifdef DCT_FLOAT_SUPPORTED
+  fprintf(stderr, "  -dct float     Use floating-point DCT method%s\n",
+	  (JDCT_DEFAULT == JDCT_FLOAT ? " (default)" : ""));
+#endif
+  fprintf(stderr, "  -restart N     Set restart interval in rows, or in blocks with B\n");
+#ifdef INPUT_SMOOTHING_SUPPORTED
+  fprintf(stderr, "  -smooth N      Smooth dithered input (N=1..100 is strength)\n");
+#endif
+  fprintf(stderr, "  -maxmemory N   Maximum memory to use (in kbytes)\n");
+  fprintf(stderr, "  -outfile name  Specify name for output file\n");
+  fprintf(stderr, "  -verbose  or  -debug   Emit debug output\n");
+  fprintf(stderr, "Switches for wizards:\n");
+#ifdef C_ARITH_CODING_SUPPORTED
+  fprintf(stderr, "  -arithmetic    Use arithmetic coding\n");
+#endif
+  fprintf(stderr, "  -baseline      Force baseline quantization tables\n");
+  fprintf(stderr, "  -qtables file  Use quantization tables given in file\n");
+  fprintf(stderr, "  -qslots N[,...]    Set component quantization tables\n");
+  fprintf(stderr, "  -sample HxV[,...]  Set component sampling factors\n");
+#ifdef C_MULTISCAN_FILES_SUPPORTED
+  fprintf(stderr, "  -scans file    Create multi-scan JPEG per script file\n");
+#endif
+  exit(EXIT_FAILURE);
+}
+
+
+LOCAL(int)
+parse_switches (j_compress_ptr cinfo, int argc, char **argv,
+		int last_file_arg_seen, boolean for_real)
+/* Parse optional switches.
+ * Returns argv[] index of first file-name argument (== argc if none).
+ * Any file names with indexes <= last_file_arg_seen are ignored;
+ * they have presumably been processed in a previous iteration.
+ * (Pass 0 for last_file_arg_seen on the first or only iteration.)
+ * for_real is FALSE on the first (dummy) pass; we may skip any expensive
+ * processing.
+ */
+{
+  int argn;
+  char * arg;
+  int quality;			/* -quality parameter */
+  int q_scale_factor;		/* scaling percentage for -qtables */
+  boolean force_baseline;
+  boolean simple_progressive;
+  char * qtablefile = NULL;	/* saves -qtables filename if any */
+  char * qslotsarg = NULL;	/* saves -qslots parm if any */
+  char * samplearg = NULL;	/* saves -sample parm if any */
+  char * scansarg = NULL;	/* saves -scans parm if any */
+
+  /* Set up default JPEG parameters. */
+  /* Note that default -quality level need not, and does not,
+   * match the default scaling for an explicit -qtables argument.
+   */
+  quality = 75;			/* default -quality value */
+  q_scale_factor = 100;		/* default to no scaling for -qtables */
+  force_baseline = FALSE;	/* by default, allow 16-bit quantizers */
+  simple_progressive = FALSE;
+  is_targa = FALSE;
+  outfilename = NULL;
+  cinfo->err->trace_level = 0;
+
+  /* Scan command line options, adjust parameters */
+
+  for (argn = 1; argn < argc; argn++) {
+    arg = argv[argn];
+    if (*arg != '-') {
+      /* Not a switch, must be a file name argument */
+      if (argn <= last_file_arg_seen) {
+	outfilename = NULL;	/* -outfile applies to just one input file */
+	continue;		/* ignore this name if previously processed */
+      }
+      break;			/* else done parsing switches */
+    }
+    arg++;			/* advance past switch marker character */
+
+    if (keymatch(arg, "arithmetic", 1)) {
+      /* Use arithmetic coding. */
+#ifdef C_ARITH_CODING_SUPPORTED
+      cinfo->arith_code = TRUE;
+#else
+      fprintf(stderr, "%s: sorry, arithmetic coding not supported\n",
+	      progname);
+      exit(EXIT_FAILURE);
+#endif
+
+    } else if (keymatch(arg, "baseline", 1)) {
+      /* Force baseline-compatible output (8-bit quantizer values). */
+      force_baseline = TRUE;
+
+    } else if (keymatch(arg, "dct", 2)) {
+      /* Select DCT algorithm. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (keymatch(argv[argn], "int", 1)) {
+	cinfo->dct_method = JDCT_ISLOW;
+      } else if (keymatch(argv[argn], "fast", 2)) {
+	cinfo->dct_method = JDCT_IFAST;
+      } else if (keymatch(argv[argn], "float", 2)) {
+	cinfo->dct_method = JDCT_FLOAT;
+      } else
+	usage();
+
+    } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) {
+      /* Enable debug printouts. */
+      /* On first -d, print version identification */
+      static boolean printed_version = FALSE;
+
+      if (! printed_version) {
+	fprintf(stderr, "Independent JPEG Group's CJPEG, version %s\n%s\n",
+		JVERSION, JCOPYRIGHT);
+	printed_version = TRUE;
+      }
+      cinfo->err->trace_level++;
+
+    } else if (keymatch(arg, "grayscale", 2) || keymatch(arg, "greyscale",2)) {
+      /* Force a monochrome JPEG file to be generated. */
+      jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);
+
+    } else if (keymatch(arg, "maxmemory", 3)) {
+      /* Maximum memory in Kb (or Mb with 'm'). */
+      long lval;
+      char ch = 'x';
+
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
+	usage();
+      if (ch == 'm' || ch == 'M')
+	lval *= 1000L;
+      cinfo->mem->max_memory_to_use = lval * 1000L;
+
+    } else if (keymatch(arg, "optimize", 1) || keymatch(arg, "optimise", 1)) {
+      /* Enable entropy parm optimization. */
+#ifdef ENTROPY_OPT_SUPPORTED
+      cinfo->optimize_coding = TRUE;
+#else
+      fprintf(stderr, "%s: sorry, entropy optimization was not compiled\n",
+	      progname);
+      exit(EXIT_FAILURE);
+#endif
+
+    } else if (keymatch(arg, "outfile", 4)) {
+      /* Set output file name. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      outfilename = argv[argn];	/* save it away for later use */
+
+    } else if (keymatch(arg, "progressive", 1)) {
+      /* Select simple progressive mode. */
+#ifdef C_PROGRESSIVE_SUPPORTED
+      simple_progressive = TRUE;
+      /* We must postpone execution until num_components is known. */
+#else
+      fprintf(stderr, "%s: sorry, progressive output was not compiled\n",
+	      progname);
+      exit(EXIT_FAILURE);
+#endif
+
+    } else if (keymatch(arg, "quality", 1)) {
+      /* Quality factor (quantization table scaling factor). */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%d", &quality) != 1)
+	usage();
+      /* Change scale factor in case -qtables is present. */
+      q_scale_factor = jpeg_quality_scaling(quality);
+
+    } else if (keymatch(arg, "qslots", 2)) {
+      /* Quantization table slot numbers. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      qslotsarg = argv[argn];
+      /* Must delay setting qslots until after we have processed any
+       * colorspace-determining switches, since jpeg_set_colorspace sets
+       * default quant table numbers.
+       */
+
+    } else if (keymatch(arg, "qtables", 2)) {
+      /* Quantization tables fetched from file. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      qtablefile = argv[argn];
+      /* We postpone actually reading the file in case -quality comes later. */
+
+    } else if (keymatch(arg, "restart", 1)) {
+      /* Restart interval in MCU rows (or in MCUs with 'b'). */
+      long lval;
+      char ch = 'x';
+
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
+	usage();
+      if (lval < 0 || lval > 65535L)
+	usage();
+      if (ch == 'b' || ch == 'B') {
+	cinfo->restart_interval = (unsigned int) lval;
+	cinfo->restart_in_rows = 0; /* else prior '-restart n' overrides me */
+      } else {
+	cinfo->restart_in_rows = (int) lval;
+	/* restart_interval will be computed during startup */
+      }
+
+    } else if (keymatch(arg, "sample", 2)) {
+      /* Set sampling factors. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      samplearg = argv[argn];
+      /* Must delay setting sample factors until after we have processed any
+       * colorspace-determining switches, since jpeg_set_colorspace sets
+       * default sampling factors.
+       */
+
+    } else if (keymatch(arg, "scans", 2)) {
+      /* Set scan script. */
+#ifdef C_MULTISCAN_FILES_SUPPORTED
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      scansarg = argv[argn];
+      /* We must postpone reading the file in case -progressive appears. */
+#else
+      fprintf(stderr, "%s: sorry, multi-scan output was not compiled\n",
+	      progname);
+      exit(EXIT_FAILURE);
+#endif
+
+    } else if (keymatch(arg, "smooth", 2)) {
+      /* Set input smoothing factor. */
+      int val;
+
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%d", &val) != 1)
+	usage();
+      if (val < 0 || val > 100)
+	usage();
+      cinfo->smoothing_factor = val;
+
+    } else if (keymatch(arg, "targa", 1)) {
+      /* Input file is Targa format. */
+      is_targa = TRUE;
+
+    } else {
+      usage();			/* bogus switch */
+    }
+  }
+
+  /* Post-switch-scanning cleanup */
+
+  if (for_real) {
+
+    /* Set quantization tables for selected quality. */
+    /* Some or all may be overridden if -qtables is present. */
+    jpeg_set_quality(cinfo, quality, force_baseline);
+
+    if (qtablefile != NULL)	/* process -qtables if it was present */
+      if (! read_quant_tables(cinfo, qtablefile,
+			      q_scale_factor, force_baseline))
+	usage();
+
+    if (qslotsarg != NULL)	/* process -qslots if it was present */
+      if (! set_quant_slots(cinfo, qslotsarg))
+	usage();
+
+    if (samplearg != NULL)	/* process -sample if it was present */
+      if (! set_sample_factors(cinfo, samplearg))
+	usage();
+
+#ifdef C_PROGRESSIVE_SUPPORTED
+    if (simple_progressive)	/* process -progressive; -scans can override */
+      jpeg_simple_progression(cinfo);
+#endif
+
+#ifdef C_MULTISCAN_FILES_SUPPORTED
+    if (scansarg != NULL)	/* process -scans if it was present */
+      if (! read_scan_script(cinfo, scansarg))
+	usage();
+#endif
+  }
+
+  return argn;			/* return index of next arg (file name) */
+}
+
+
+/*
+ * The main program.
+ */
+
+int
+main (int argc, char **argv)
+{
+  struct jpeg_compress_struct cinfo;
+  struct jpeg_error_mgr jerr;
+#ifdef PROGRESS_REPORT
+  struct cdjpeg_progress_mgr progress;
+#endif
+  int file_index;
+  cjpeg_source_ptr src_mgr;
+  FILE * input_file;
+  FILE * output_file;
+  JDIMENSION num_scanlines;
+
+  /* On Mac, fetch a command line. */
+#ifdef USE_CCOMMAND
+  argc = ccommand(&argv);
+#endif
+
+  progname = argv[0];
+  if (progname == NULL || progname[0] == 0)
+    progname = "cjpeg";		/* in case C library doesn't provide it */
+
+  /* Initialize the JPEG compression object with default error handling. */
+  cinfo.err = jpeg_std_error(&jerr);
+  jpeg_create_compress(&cinfo);
+  /* Add some application-specific error messages (from cderror.h) */
+  jerr.addon_message_table = cdjpeg_message_table;
+  jerr.first_addon_message = JMSG_FIRSTADDONCODE;
+  jerr.last_addon_message = JMSG_LASTADDONCODE;
+
+  /* Now safe to enable signal catcher. */
+#ifdef NEED_SIGNAL_CATCHER
+  enable_signal_catcher((j_common_ptr) &cinfo);
+#endif
+
+  /* Initialize JPEG parameters.
+   * Much of this may be overridden later.
+   * In particular, we don't yet know the input file's color space,
+   * but we need to provide some value for jpeg_set_defaults() to work.
+   */
+
+  cinfo.in_color_space = JCS_RGB; /* arbitrary guess */
+  jpeg_set_defaults(&cinfo);
+
+  /* Scan command line to find file names.
+   * It is convenient to use just one switch-parsing routine, but the switch
+   * values read here are ignored; we will rescan the switches after opening
+   * the input file.
+   */
+
+  file_index = parse_switches(&cinfo, argc, argv, 0, FALSE);
+
+#ifdef TWO_FILE_COMMANDLINE
+  /* Must have either -outfile switch or explicit output file name */
+  if (outfilename == NULL) {
+    if (file_index != argc-2) {
+      fprintf(stderr, "%s: must name one input and one output file\n",
+	      progname);
+      usage();
+    }
+    outfilename = argv[file_index+1];
+  } else {
+    if (file_index != argc-1) {
+      fprintf(stderr, "%s: must name one input and one output file\n",
+	      progname);
+      usage();
+    }
+  }
+#else
+  /* Unix style: expect zero or one file name */
+  if (file_index < argc-1) {
+    fprintf(stderr, "%s: only one input file\n", progname);
+    usage();
+  }
+#endif /* TWO_FILE_COMMANDLINE */
+
+  /* Open the input file. */
+  if (file_index < argc) {
+    if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) {
+      fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);
+      exit(EXIT_FAILURE);
+    }
+  } else {
+    /* default input file is stdin */
+    input_file = read_stdin();
+  }
+
+  /* Open the output file. */
+  if (outfilename != NULL) {
+    if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) {
+      fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
+      exit(EXIT_FAILURE);
+    }
+  } else {
+    /* default output file is stdout */
+    output_file = write_stdout();
+  }
+
+#ifdef PROGRESS_REPORT
+  start_progress_monitor((j_common_ptr) &cinfo, &progress);
+#endif
+
+  /* Figure out the input file format, and set up to read it. */
+  src_mgr = select_file_type(&cinfo, input_file);
+  src_mgr->input_file = input_file;
+
+  /* Read the input file header to obtain file size & colorspace. */
+  (*src_mgr->start_input) (&cinfo, src_mgr);
+
+  /* Now that we know input colorspace, fix colorspace-dependent defaults */
+  jpeg_default_colorspace(&cinfo);
+
+  /* Adjust default compression parameters by re-parsing the options */
+  file_index = parse_switches(&cinfo, argc, argv, 0, TRUE);
+
+  /* Specify data destination for compression */
+  jpeg_stdio_dest(&cinfo, output_file);
+
+  /* Start compressor */
+  jpeg_start_compress(&cinfo, TRUE);
+
+  /* Process data */
+  while (cinfo.next_scanline < cinfo.image_height) {
+    num_scanlines = (*src_mgr->get_pixel_rows) (&cinfo, src_mgr);
+    (void) jpeg_write_scanlines(&cinfo, src_mgr->buffer, num_scanlines);
+  }
+
+  /* Finish compression and release memory */
+  (*src_mgr->finish_input) (&cinfo, src_mgr);
+  jpeg_finish_compress(&cinfo);
+  jpeg_destroy_compress(&cinfo);
+
+  /* Close files, if we opened them */
+  if (input_file != stdin)
+    fclose(input_file);
+  if (output_file != stdout)
+    fclose(output_file);
+
+#ifdef PROGRESS_REPORT
+  end_progress_monitor((j_common_ptr) &cinfo);
+#endif
+
+  /* All done. */
+  exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS);
+  return 0;			/* suppress no-return-value warnings */
+}

+ 402 - 0
engine/lib/ljpeg/extras/ckconfig.c

@@ -0,0 +1,402 @@
+/*
+ * ckconfig.c
+ *
+ * Copyright (C) 1991-1994, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ */
+
+/*
+ * This program is intended to help you determine how to configure the JPEG
+ * software for installation on a particular system.  The idea is to try to
+ * compile and execute this program.  If your compiler fails to compile the
+ * program, make changes as indicated in the comments below.  Once you can
+ * compile the program, run it, and it will produce a "jconfig.h" file for
+ * your system.
+ *
+ * As a general rule, each time you try to compile this program,
+ * pay attention only to the *first* error message you get from the compiler.
+ * Many C compilers will issue lots of spurious error messages once they
+ * have gotten confused.  Go to the line indicated in the first error message,
+ * and read the comments preceding that line to see what to change.
+ *
+ * Almost all of the edits you may need to make to this program consist of
+ * changing a line that reads "#define SOME_SYMBOL" to "#undef SOME_SYMBOL",
+ * or vice versa.  This is called defining or undefining that symbol.
+ */
+
+
+/* First we must see if your system has the include files we need.
+ * We start out with the assumption that your system has all the ANSI-standard
+ * include files.  If you get any error trying to include one of these files,
+ * undefine the corresponding HAVE_xxx symbol.
+ */
+
+#define HAVE_STDDEF_H		/* replace 'define' by 'undef' if error here */
+#ifdef HAVE_STDDEF_H		/* next line will be skipped if you undef... */
+#include <stddef.h>
+#endif
+
+#define HAVE_STDLIB_H		/* same thing for stdlib.h */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>		/* If you ain't got this, you ain't got C. */
+
+/* We have to see if your string functions are defined by
+ * strings.h (old BSD convention) or string.h (everybody else).
+ * We try the non-BSD convention first; define NEED_BSD_STRINGS
+ * if the compiler says it can't find string.h.
+ */
+
+#undef NEED_BSD_STRINGS
+
+#ifdef NEED_BSD_STRINGS
+#include <strings.h>
+#else
+#include <string.h>
+#endif
+
+/* On some systems (especially older Unix machines), type size_t is
+ * defined only in the include file <sys/types.h>.  If you get a failure
+ * on the size_t test below, try defining NEED_SYS_TYPES_H.
+ */
+
+#undef NEED_SYS_TYPES_H		/* start by assuming we don't need it */
+#ifdef NEED_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+
+/* Usually type size_t is defined in one of the include files we've included
+ * above.  If not, you'll get an error on the "typedef size_t my_size_t;" line.
+ * In that case, first try defining NEED_SYS_TYPES_H just above.
+ * If that doesn't work, you'll have to search through your system library
+ * to figure out which include file defines "size_t".  Look for a line that
+ * says "typedef something-or-other size_t;".  Then, change the line below
+ * that says "#include <someincludefile.h>" to instead include the file
+ * you found size_t in, and define NEED_SPECIAL_INCLUDE.  If you can't find
+ * type size_t anywhere, try replacing "#include <someincludefile.h>" with
+ * "typedef unsigned int size_t;".
+ */
+
+#undef NEED_SPECIAL_INCLUDE	/* assume we DON'T need it, for starters */
+
+#ifdef NEED_SPECIAL_INCLUDE
+#include <someincludefile.h>
+#endif
+
+typedef size_t my_size_t;	/* The payoff: do we have size_t now? */
+
+
+/* The next question is whether your compiler supports ANSI-style function
+ * prototypes.  You need to know this in order to choose between using
+ * makefile.ansi and using makefile.unix.
+ * The #define line below is set to assume you have ANSI function prototypes.
+ * If you get an error in this group of lines, undefine HAVE_PROTOTYPES.
+ */
+
+#define HAVE_PROTOTYPES
+
+#ifdef HAVE_PROTOTYPES
+int testfunction (int arg1, int * arg2); /* check prototypes */
+
+struct methods_struct {		/* check method-pointer declarations */
+  int (*error_exit) (char *msgtext);
+  int (*trace_message) (char *msgtext);
+  int (*another_method) (void);
+};
+
+int testfunction (int arg1, int * arg2) /* check definitions */
+{
+  return arg2[arg1];
+}
+
+int test2function (void)	/* check void arg list */
+{
+  return 0;
+}
+#endif
+
+
+/* Now we want to find out if your compiler knows what "unsigned char" means.
+ * If you get an error on the "unsigned char un_char;" line,
+ * then undefine HAVE_UNSIGNED_CHAR.
+ */
+
+#define HAVE_UNSIGNED_CHAR
+
+#ifdef HAVE_UNSIGNED_CHAR
+unsigned char un_char;
+#endif
+
+
+/* Now we want to find out if your compiler knows what "unsigned short" means.
+ * If you get an error on the "unsigned short un_short;" line,
+ * then undefine HAVE_UNSIGNED_SHORT.
+ */
+
+#define HAVE_UNSIGNED_SHORT
+
+#ifdef HAVE_UNSIGNED_SHORT
+unsigned short un_short;
+#endif
+
+
+/* Now we want to find out if your compiler understands type "void".
+ * If you get an error anywhere in here, undefine HAVE_VOID.
+ */
+
+#define HAVE_VOID
+
+#ifdef HAVE_VOID
+/* Caution: a C++ compiler will insist on complete prototypes */
+typedef void * void_ptr;	/* check void * */
+#ifdef HAVE_PROTOTYPES		/* check ptr to function returning void */
+typedef void (*void_func) (int a, int b);
+#else
+typedef void (*void_func) ();
+#endif
+
+#ifdef HAVE_PROTOTYPES		/* check void function result */
+void test3function (void_ptr arg1, void_func arg2)
+#else
+void test3function (arg1, arg2)
+     void_ptr arg1;
+     void_func arg2;
+#endif
+{
+  char * locptr = (char *) arg1; /* check casting to and from void * */
+  arg1 = (void *) locptr;
+  (*arg2) (1, 2);		/* check call of fcn returning void */
+}
+#endif
+
+
+/* Now we want to find out if your compiler knows what "const" means.
+ * If you get an error here, undefine HAVE_CONST.
+ */
+
+#define HAVE_CONST
+
+#ifdef HAVE_CONST
+static const int carray[3] = {1, 2, 3};
+
+#ifdef HAVE_PROTOTYPES
+int test4function (const int arg1)
+#else
+int test4function (arg1)
+     const int arg1;
+#endif
+{
+  return carray[arg1];
+}
+#endif
+
+
+/* If you get an error or warning about this structure definition,
+ * define INCOMPLETE_TYPES_BROKEN.
+ */
+
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifndef INCOMPLETE_TYPES_BROKEN
+typedef struct undefined_structure * undef_struct_ptr;
+#endif
+
+
+/* If you get an error about duplicate names,
+ * define NEED_SHORT_EXTERNAL_NAMES.
+ */
+
+#undef NEED_SHORT_EXTERNAL_NAMES
+
+#ifndef NEED_SHORT_EXTERNAL_NAMES
+
+int possibly_duplicate_function ()
+{
+  return 0;
+}
+
+int possibly_dupli_function ()
+{
+  return 1;
+}
+
+#endif
+
+
+
+/************************************************************************
+ *  OK, that's it.  You should not have to change anything beyond this
+ *  point in order to compile and execute this program.  (You might get
+ *  some warnings, but you can ignore them.)
+ *  When you run the program, it will make a couple more tests that it
+ *  can do automatically, and then it will create jconfig.h and print out
+ *  any additional suggestions it has.
+ ************************************************************************
+ */
+
+
+#ifdef HAVE_PROTOTYPES
+int is_char_signed (int arg)
+#else
+int is_char_signed (arg)
+     int arg;
+#endif
+{
+  if (arg == 189) {		/* expected result for unsigned char */
+    return 0;			/* type char is unsigned */
+  }
+  else if (arg != -67) {	/* expected result for signed char */
+    printf("Hmm, it seems 'char' is not eight bits wide on your machine.\n");
+    printf("I fear the JPEG software will not work at all.\n\n");
+  }
+  return 1;			/* assume char is signed otherwise */
+}
+
+
+#ifdef HAVE_PROTOTYPES
+int is_shifting_signed (long arg)
+#else
+int is_shifting_signed (arg)
+     long arg;
+#endif
+/* See whether right-shift on a long is signed or not. */
+{
+  long res = arg >> 4;
+
+  if (res == -0x7F7E80CL) {	/* expected result for signed shift */
+    return 1;			/* right shift is signed */
+  }
+  /* see if unsigned-shift hack will fix it. */
+  /* we can't just test exact value since it depends on width of long... */
+  res |= (~0L) << (32-4);
+  if (res == -0x7F7E80CL) {	/* expected result now? */
+    return 0;			/* right shift is unsigned */
+  }
+  printf("Right shift isn't acting as I expect it to.\n");
+  printf("I fear the JPEG software will not work at all.\n\n");
+  return 0;			/* try it with unsigned anyway */
+}
+
+
+#ifdef HAVE_PROTOTYPES
+int main (int argc, char ** argv)
+#else
+int main (argc, argv)
+     int argc;
+     char ** argv;
+#endif
+{
+  char signed_char_check = (char) (-67);
+  FILE *outfile;
+
+  /* Attempt to write jconfig.h */
+  if ((outfile = fopen("jconfig.h", "w")) == NULL) {
+    printf("Failed to write jconfig.h\n");
+    return 1;
+  }
+
+  /* Write out all the info */
+  fprintf(outfile, "/* jconfig.h --- generated by ckconfig.c */\n");
+  fprintf(outfile, "/* see jconfig.doc for explanations */\n\n");
+#ifdef HAVE_PROTOTYPES
+  fprintf(outfile, "#define HAVE_PROTOTYPES\n");
+#else
+  fprintf(outfile, "#undef HAVE_PROTOTYPES\n");
+#endif
+#ifdef HAVE_UNSIGNED_CHAR
+  fprintf(outfile, "#define HAVE_UNSIGNED_CHAR\n");
+#else
+  fprintf(outfile, "#undef HAVE_UNSIGNED_CHAR\n");
+#endif
+#ifdef HAVE_UNSIGNED_SHORT
+  fprintf(outfile, "#define HAVE_UNSIGNED_SHORT\n");
+#else
+  fprintf(outfile, "#undef HAVE_UNSIGNED_SHORT\n");
+#endif
+#ifdef HAVE_VOID
+  fprintf(outfile, "/* #define void char */\n");
+#else
+  fprintf(outfile, "#define void char\n");
+#endif
+#ifdef HAVE_CONST
+  fprintf(outfile, "/* #define const */\n");
+#else
+  fprintf(outfile, "#define const\n");
+#endif
+  if (is_char_signed((int) signed_char_check))
+    fprintf(outfile, "#undef CHAR_IS_UNSIGNED\n");
+  else
+    fprintf(outfile, "#define CHAR_IS_UNSIGNED\n");
+#ifdef HAVE_STDDEF_H
+  fprintf(outfile, "#define HAVE_STDDEF_H\n");
+#else
+  fprintf(outfile, "#undef HAVE_STDDEF_H\n");
+#endif
+#ifdef HAVE_STDLIB_H
+  fprintf(outfile, "#define HAVE_STDLIB_H\n");
+#else
+  fprintf(outfile, "#undef HAVE_STDLIB_H\n");
+#endif
+#ifdef NEED_BSD_STRINGS
+  fprintf(outfile, "#define NEED_BSD_STRINGS\n");
+#else
+  fprintf(outfile, "#undef NEED_BSD_STRINGS\n");
+#endif
+#ifdef NEED_SYS_TYPES_H
+  fprintf(outfile, "#define NEED_SYS_TYPES_H\n");
+#else
+  fprintf(outfile, "#undef NEED_SYS_TYPES_H\n");
+#endif
+  fprintf(outfile, "#undef NEED_FAR_POINTERS\n");
+#ifdef NEED_SHORT_EXTERNAL_NAMES
+  fprintf(outfile, "#define NEED_SHORT_EXTERNAL_NAMES\n");
+#else
+  fprintf(outfile, "#undef NEED_SHORT_EXTERNAL_NAMES\n");
+#endif
+#ifdef INCOMPLETE_TYPES_BROKEN
+  fprintf(outfile, "#define INCOMPLETE_TYPES_BROKEN\n");
+#else
+  fprintf(outfile, "#undef INCOMPLETE_TYPES_BROKEN\n");
+#endif
+  fprintf(outfile, "\n#ifdef JPEG_INTERNALS\n\n");
+  if (is_shifting_signed(-0x7F7E80B1L))
+    fprintf(outfile, "#undef RIGHT_SHIFT_IS_UNSIGNED\n");
+  else
+    fprintf(outfile, "#define RIGHT_SHIFT_IS_UNSIGNED\n");
+  fprintf(outfile, "\n#endif /* JPEG_INTERNALS */\n");
+  fprintf(outfile, "\n#ifdef JPEG_CJPEG_DJPEG\n\n");
+  fprintf(outfile, "#define BMP_SUPPORTED		/* BMP image file format */\n");
+  fprintf(outfile, "#define GIF_SUPPORTED		/* GIF image file format */\n");
+  fprintf(outfile, "#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */\n");
+  fprintf(outfile, "#undef RLE_SUPPORTED		/* Utah RLE image file format */\n");
+  fprintf(outfile, "#define TARGA_SUPPORTED		/* Targa image file format */\n\n");
+  fprintf(outfile, "#undef TWO_FILE_COMMANDLINE	/* You may need this on non-Unix systems */\n");
+  fprintf(outfile, "#undef NEED_SIGNAL_CATCHER	/* Define this if you use jmemname.c */\n");
+  fprintf(outfile, "#undef DONT_USE_B_MODE\n");
+  fprintf(outfile, "/* #define PROGRESS_REPORT */	/* optional */\n");
+  fprintf(outfile, "\n#endif /* JPEG_CJPEG_DJPEG */\n");
+
+  /* Close the jconfig.h file */
+  fclose(outfile);
+
+  /* User report */
+  printf("Configuration check for Independent JPEG Group's software done.\n");
+  printf("\nI have written the jconfig.h file for you.\n\n");
+#ifdef HAVE_PROTOTYPES
+  printf("You should use makefile.ansi as the starting point for your Makefile.\n");
+#else
+  printf("You should use makefile.unix as the starting point for your Makefile.\n");
+#endif
+
+#ifdef NEED_SPECIAL_INCLUDE
+  printf("\nYou'll need to change jconfig.h to include the system include file\n");
+  printf("that you found type size_t in, or add a direct definition of type\n");
+  printf("size_t if that's what you used.  Just add it to the end.\n");
+#endif
+
+  return 0;
+}

+ 118 - 0
engine/lib/ljpeg/extras/coderules.doc

@@ -0,0 +1,118 @@
+IJG JPEG LIBRARY:  CODING RULES
+
+Copyright (C) 1991-1996, Thomas G. Lane.
+This file is part of the Independent JPEG Group's software.
+For conditions of distribution and use, see the accompanying README file.
+
+
+Since numerous people will be contributing code and bug fixes, it's important
+to establish a common coding style.  The goal of using similar coding styles
+is much more important than the details of just what that style is.
+
+In general we follow the recommendations of "Recommended C Style and Coding
+Standards" revision 6.1 (Cannon et al. as modified by Spencer, Keppel and
+Brader).  This document is available in the IJG FTP archive (see
+jpeg/doc/cstyle.ms.tbl.Z, or cstyle.txt.Z for those without nroff/tbl).
+
+Block comments should be laid out thusly:
+
+/*
+ *  Block comments in this style.
+ */
+
+We indent statements in K&R style, e.g.,
+	if (test) {
+	  then-part;
+	} else {
+	  else-part;
+	}
+with two spaces per indentation level.  (This indentation convention is
+handled automatically by GNU Emacs and many other text editors.)
+
+Multi-word names should be written in lower case with underscores, e.g.,
+multi_word_name (not multiWordName).  Preprocessor symbols and enum constants
+are similar but upper case (MULTI_WORD_NAME).  Names should be unique within
+the first fifteen characters.  (On some older systems, global names must be
+unique within six characters.  We accommodate this without cluttering the
+source code by using macros to substitute shorter names.)
+
+We use function prototypes everywhere; we rely on automatic source code
+transformation to feed prototype-less C compilers.  Transformation is done
+by the simple and portable tool 'ansi2knr.c' (courtesy of Ghostscript).
+ansi2knr is not very bright, so it imposes a format requirement on function
+declarations: the function name MUST BEGIN IN COLUMN 1.  Thus all functions
+should be written in the following style:
+
+LOCAL(int *)
+function_name (int a, char *b)
+{
+    code...
+}
+
+Note that each function definition must begin with GLOBAL(type), LOCAL(type),
+or METHODDEF(type).  These macros expand to "static type" or just "type" as
+appropriate.  They provide a readable indication of the routine's usage and
+can readily be changed for special needs.  (For instance, special linkage
+keywords can be inserted for use in Windows DLLs.)
+
+ansi2knr does not transform method declarations (function pointers in
+structs).  We handle these with a macro JMETHOD, defined as
+	#ifdef HAVE_PROTOTYPES
+	#define JMETHOD(type,methodname,arglist)  type (*methodname) arglist
+	#else
+	#define JMETHOD(type,methodname,arglist)  type (*methodname) ()
+	#endif
+which is used like this:
+	struct function_pointers {
+	  JMETHOD(void, init_entropy_encoder, (int somearg, jparms *jp));
+	  JMETHOD(void, term_entropy_encoder, (void));
+	};
+Note the set of parentheses surrounding the parameter list.
+
+A similar solution is used for forward and external function declarations
+(see the EXTERN and JPP macros).
+
+If the code is to work on non-ANSI compilers, we cannot rely on a prototype
+declaration to coerce actual parameters into the right types.  Therefore, use
+explicit casts on actual parameters whenever the actual parameter type is not
+identical to the formal parameter.  Beware of implicit conversions to "int".
+
+It seems there are some non-ANSI compilers in which the sizeof() operator
+is defined to return int, yet size_t is defined as long.  Needless to say,
+this is brain-damaged.  Always use the SIZEOF() macro in place of sizeof(),
+so that the result is guaranteed to be of type size_t.
+
+
+The JPEG library is intended to be used within larger programs.  Furthermore,
+we want it to be reentrant so that it can be used by applications that process
+multiple images concurrently.  The following rules support these requirements:
+
+1. Avoid direct use of file I/O, "malloc", error report printouts, etc;
+pass these through the common routines provided.
+
+2. Minimize global namespace pollution.  Functions should be declared static
+wherever possible.  (Note that our method-based calling conventions help this
+a lot: in many modules only the initialization function will ever need to be
+called directly, so only that function need be externally visible.)  All
+global function names should begin with "jpeg_", and should have an
+abbreviated name (unique in the first six characters) substituted by macro
+when NEED_SHORT_EXTERNAL_NAMES is set.
+
+3. Don't use global variables; anything that must be used in another module
+should be in the common data structures.
+
+4. Don't use static variables except for read-only constant tables.  Variables
+that should be private to a module can be placed into private structures (see
+the system architecture document, structure.doc).
+
+5. Source file names should begin with "j" for files that are part of the
+library proper; source files that are not part of the library, such as cjpeg.c
+and djpeg.c, do not begin with "j".  Keep source file names to eight
+characters (plus ".c" or ".h", etc) to make life easy for MS-DOSers.  Keep
+compression and decompression code in separate source files --- some
+applications may want only one half of the library.
+
+Note: these rules (particularly #4) are not followed religiously in the
+modules that are used in cjpeg/djpeg but are not part of the JPEG library
+proper.  Those modules are not really intended to be used in other
+applications.

+ 883 - 0
engine/lib/ljpeg/extras/config.guess

@@ -0,0 +1,883 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Written by Per Bothner <[email protected]>.
+# The master version of this file is at the FSF in /home/gd/gnu/lib.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit system type (host/target name).
+#
+# Only a few systems have been added to this list; please add others
+# (but try to keep the structure clean).
+#
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# ([email protected] 8/24/94.)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	cat <<EOF >dummy.s
+	.globl main
+	.ent main
+main:
+	.frame \$30,0,\$26,0
+	.prologue 0
+	.long 0x47e03d80 # implver $0
+	lda \$2,259
+	.long 0x47e20c21 # amask $2,$1
+	srl \$1,8,\$2
+	sll \$2,2,\$2
+	sll \$0,3,\$0
+	addl \$1,\$0,\$0
+	addl \$2,\$0,\$0
+	ret \$31,(\$26),1
+	.end main
+EOF
+	${CC-cc} dummy.s -o dummy 2>/dev/null
+	if test "$?" = 0 ; then
+		./dummy
+		case "$?" in
+			7)
+				UNAME_MACHINE="alpha"
+				;;
+			15)
+				UNAME_MACHINE="alphaev5"
+				;;
+			14)
+				UNAME_MACHINE="alphaev56"
+				;;
+			10)
+				UNAME_MACHINE="alphapca56"
+				;;
+			16)
+				UNAME_MACHINE="alphaev6"
+				;;
+		esac
+	fi
+	rm -f dummy.s dummy
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
+	exit 0 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-cbm-sysv4
+	exit 0;;
+    amiga:NetBSD:*:*)
+      echo m68k-cbm-netbsd${UNAME_RELEASE}
+      exit 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc64:OpenBSD:*:*)
+	echo mips64el-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hkmips:OpenBSD:*:*)
+	echo mips-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mips-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit 0;;
+    arm32:NetBSD:*:*)
+	echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    SR2?01:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit 0;;
+    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
+	# [email protected] (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit 0 ;;
+    NILE:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit 0 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit 0 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:NetBSD:*:*)
+	echo m68k-atari-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3*:NetBSD:*:*)
+	echo m68k-sun-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3*:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:NetBSD:*:*)
+	echo m68k-apple-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit 0 ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    2020:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	sed 's/^	//' << EOF >dummy.c
+	int main (argc, argv) int argc; char **argv; {
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	${CC-cc} dummy.c -o dummy \
+	  && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm dummy.c dummy && exit 0
+	rm -f dummy.c dummy
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit 0 ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit 0 ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit 0 ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
+	if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
+	     -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	fi
+        else echo i586-dg-dgux${UNAME_RELEASE}
+        fi
+ 	exit 0 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit 0 ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit 0 ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i?86:AIX:*:*)
+	echo i386-ibm-aix
+	exit 0 ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		sed 's/^		//' << EOF >dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+		rm -f dummy.c dummy
+		echo rs6000-ibm-aix3.2.5
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit 0 ;;
+    *:AIX:*:4)
+	if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=4.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit 0 ;;
+    9000/[3478]??:HP-UX:*:*)
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
+	    9000/8?? )            HP_ARCH=hppa1.0 ;;
+	esac
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    3050*:HI-UX:*:*)
+	sed 's/^	//' << EOF >dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+	rm -f dummy.c dummy
+	echo unknown-hitachi-hiuxwe2
+	exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit 0 ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit 0 ;;
+    i?86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit 0 ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*X-MP:*:*:*)
+	echo xmp-cray-unicos
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE}
+	exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+	exit 0 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE}
+	exit 0 ;;
+    CRAY-2:*:*:*)
+	echo cray2-cray-unicos
+        exit 0 ;;
+    F300:UNIX_System_V:*:*)
+        FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    F301:UNIX_System_V:*:*)
+       echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
+       exit 0 ;;
+    hp3[0-9][05]:NetBSD:*:*)
+	echo m68k-hp-netbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    i?86:BSD/386:*:* | *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit 0 ;;
+    *:NetBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo i386-pc-cygwin32
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo i386-pc-mingw32
+	exit 0 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin32
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    *:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us.
+	ld_help_string=`ld --help 2>&1`
+	ld_supported_emulations=`echo $ld_help_string \
+			 | sed -ne '/supported emulations:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported emulations: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_emulations" in
+	  i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
+	  i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
+	  sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+	  m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+	  elf32ppc)   echo "powerpc-unknown-linux-gnu"              ; exit 0 ;;
+	esac
+
+	if test "${UNAME_MACHINE}" = "alpha" ; then
+		sed 's/^	//'  <<EOF >dummy.s
+		.globl main
+		.ent main
+	main:
+		.frame \$30,0,\$26,0
+		.prologue 0
+		.long 0x47e03d80 # implver $0
+		lda \$2,259
+		.long 0x47e20c21 # amask $2,$1
+		srl \$1,8,\$2
+		sll \$2,2,\$2
+		sll \$0,3,\$0
+		addl \$1,\$0,\$0
+		addl \$2,\$0,\$0
+		ret \$31,(\$26),1
+		.end main
+EOF
+		LIBC=""
+		${CC-cc} dummy.s -o dummy 2>/dev/null
+		if test "$?" = 0 ; then
+			./dummy
+			case "$?" in
+			7)
+				UNAME_MACHINE="alpha"
+				;;
+			15)
+				UNAME_MACHINE="alphaev5"
+				;;
+			14)
+				UNAME_MACHINE="alphaev56"
+				;;
+			10)
+				UNAME_MACHINE="alphapca56"
+				;;
+			16)
+				UNAME_MACHINE="alphaev6"
+				;;
+			esac	
+
+			objdump --private-headers dummy | \
+			  grep ld.so.1 > /dev/null
+			if test "$?" = 0 ; then
+				LIBC="libc1"
+			fi
+		fi	
+		rm -f dummy.s dummy
+		echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
+	elif test "${UNAME_MACHINE}" = "mips" ; then
+	  cat >dummy.c <<EOF
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#ifdef __MIPSEB__
+  printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+  printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+	  ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+	  rm -f dummy.c dummy
+	else
+	  # Either a pre-BFD a.out linker (linux-gnuoldld)
+	  # or one that does not give us useful --help.
+	  # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+	  # If ld does not provide *any* "supported emulations:"
+	  # that means it is gnuoldld.
+	  echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
+	  test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+
+	  case "${UNAME_MACHINE}" in
+	  i?86)
+	    VENDOR=pc;
+	    ;;
+	  *)
+	    VENDOR=unknown;
+	    ;;
+	  esac
+	  # Determine whether the default compiler is a.out or elf
+	  cat >dummy.c <<EOF
+#include <features.h>
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#ifdef __ELF__
+# ifdef __GLIBC__
+#  if __GLIBC__ >= 2
+    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
+#  else
+    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+#  endif
+# else
+   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+# endif
+#else
+  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+	  ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+	  rm -f dummy.c dummy
+	fi ;;
+# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
+# are messed up and put the nodename in both sysname and nodename.
+    i?86:DYNIX/ptx:4*:*)
+	echo i386-sequent-sysv4
+	exit 0 ;;
+    i?86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit 0 ;;
+    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+	fi
+	exit 0 ;;
+    i?86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit 0 ;;
+    pc:*:*:*)
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit 0 ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit 0 ;;
+    i?86:LynxOS:2.*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit 0 ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit 0 ;;
+    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                           # says <[email protected]>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <[email protected]>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit 0 ;;
+    *:*:*:FTX*)
+	# From [email protected].
+	echo i860-stratus-sysv4
+	exit 0 ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit 0 ;;
+    news*:NEWS-OS:*:6*)
+	echo mips-sony-newsos6
+	exit 0 ;;
+    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+cat >dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+  printf ("vax-dec-bsd\n"); exit (0);
+#else
+  printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
+rm -f dummy.c dummy
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit 0 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit 0 ;;
+    c34*)
+	echo c34-convex-bsd
+	exit 0 ;;
+    c38*)
+	echo c38-convex-bsd
+	exit 0 ;;
+    c4*)
+	echo c4-convex-bsd
+	exit 0 ;;
+    esac
+fi
+
+#echo '(Unable to guess system type)' 1>&2
+
+exit 1

+ 954 - 0
engine/lib/ljpeg/extras/config.sub

@@ -0,0 +1,954 @@
+#! /bin/sh
+# Configuration validation subroutine script, version 1.1.
+#   Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+if [ x$1 = x ]
+then
+	echo Configuration name missing. 1>&2
+	echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
+	echo "or     $0 ALIAS" 1>&2
+	echo where ALIAS is a recognized configuration type. 1>&2
+	exit 1
+fi
+
+# First pass through any local machine types.
+case $1 in
+	*local*)
+		echo $1
+		exit 0
+		;;
+	*)
+	;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  linux-gnu*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple)
+		os=
+		basic_machine=$1
+		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+		| arme[lb] | pyramid | mn10200 | mn10300 \
+		| tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
+		| alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
+		| i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
+		| mips64 | mipsel | mips64el | mips64orion | mips64orionel \
+		| mipstx39 | mipstx39el \
+		| sparc | sparclet | sparclite | sparc64 | v850)
+		basic_machine=$basic_machine-unknown
+		;;
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i[3456]86)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+	      | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+	      | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
+	      | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+	      | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
+	      | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
+	      | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+	      | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+	      | sparc64-* | mips64-* | mipsel-* \
+	      | mips64el-* | mips64orion-* | mips64orionel-*  \
+	      | mipstx39-* | mipstx39el-* \
+	      | f301-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-cbm
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-cbm
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-cbm
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	cray2)
+		basic_machine=cray2-cray
+		os=-unicos
+		;;
+	[ctj]90-cray)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i[3456]86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i[3456]86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i[3456]86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i[3456]86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	mipsel*-linux*)
+		basic_machine=mipsel-unknown
+		os=-linux-gnu
+		;;
+	mips*-linux*)
+		basic_machine=mips-unknown
+		os=-linux-gnu
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+        pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5)
+		basic_machine=i586-intel
+		;;
+	pentiumpro | p6)
+		basic_machine=i686-intel
+		;;
+	pentium-* | p5-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	k5)
+		# We don't have specific support for AMD's K5 yet, so just call it a Pentium
+		basic_machine=i586-amd
+		;;
+	nexen)
+		# We don't have specific support for Nexgen yet, so just call it a Pentium
+		basic_machine=i586-nexgen
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=rs6000-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+	        ;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+	        ;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	xmp)
+		basic_machine=xmp-cray
+		os=-unicos
+		;;
+        xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	mips)
+		if [ x$os = x-linux-gnu ]; then
+			basic_machine=mips-unknown
+		else
+			basic_machine=mips-mips
+		fi
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sparc)
+		basic_machine=sparc-sun
+		;;
+        cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-ns2 )
+	        os=-nextstep2
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+        *-gould)
+		os=-sysv
+		;;
+        *-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+        *-sgi)
+		os=-irix
+		;;
+        *-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f301-fujitsu)
+		os=-uxpv
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-vxsim* | -vxworks*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os

+ 2011 - 0
engine/lib/ljpeg/extras/configure

@@ -0,0 +1,2011 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.12 
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+  --enable-shared         build shared library using GNU libtool"
+ac_help="$ac_help
+  --enable-static         build static library using GNU libtool"
+ac_help="$ac_help
+  --enable-maxmem[=N]     enable use of temp files, set max mem usage to N MB"
+ac_help="$ac_help
+"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  case "$ac_option" in
+  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) ac_optarg= ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case "$ac_option" in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir="$ac_optarg" ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build="$ac_optarg" ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file="$ac_optarg" ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir="$ac_optarg" ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    eval "enable_${ac_feature}=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he)
+    # Omit some internal or obsolete options to make the list less imposing.
+    # This message is too long to be a string in the A/UX 3.1 sh.
+    cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+  --cache-file=FILE       cache test results in FILE
+  --help                  print this message
+  --no-create             do not create output files
+  --quiet, --silent       do not print \`checking...' messages
+  --version               print the version of autoconf that created configure
+Directory and file names:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [same as prefix]
+  --bindir=DIR            user executables in DIR [EPREFIX/bin]
+  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
+  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
+  --datadir=DIR           read-only architecture-independent data in DIR
+                          [PREFIX/share]
+  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
+                          [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
+  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
+  --includedir=DIR        C header files in DIR [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
+  --infodir=DIR           info documentation in DIR [PREFIX/info]
+  --mandir=DIR            man documentation in DIR [PREFIX/man]
+  --srcdir=DIR            find the sources in DIR [configure dir or ..]
+  --program-prefix=PREFIX prepend PREFIX to installed program names
+  --program-suffix=SUFFIX append SUFFIX to installed program names
+  --program-transform-name=PROGRAM
+                          run sed PROGRAM on installed program names
+EOF
+    cat << EOF
+Host type:
+  --build=BUILD           configure for building on BUILD [BUILD=HOST]
+  --host=HOST             configure for HOST [guessed]
+  --target=TARGET         configure for TARGET [TARGET=HOST]
+Features and packages:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --x-includes=DIR        X include files are in DIR
+  --x-libraries=DIR       X library files are in DIR
+EOF
+    if test -n "$ac_help"; then
+      echo "--enable and --with options recognized:$ac_help"
+    fi
+    exit 0 ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host="$ac_optarg" ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir="$ac_optarg" ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir="$ac_optarg" ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir="$ac_optarg" ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir="$ac_optarg" ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir="$ac_optarg" ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir="$ac_optarg" ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir="$ac_optarg" ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix="$ac_optarg" ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix="$ac_optarg" ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name="$ac_optarg" ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir="$ac_optarg" ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir="$ac_optarg" ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site="$ac_optarg" ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir="$ac_optarg" ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir="$ac_optarg" ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target="$ac_optarg" ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers)
+    echo "configure generated by autoconf version 2.12"
+    exit 0 ;;
+
+  -with-* | --with-*)
+    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_${ac_package}='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    eval "with_${ac_package}=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes="$ac_optarg" ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries="$ac_optarg" ;;
+
+  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+    ;;
+
+  *=*)
+    varname=`echo "$ac_option"|sed -e 's/=.*//'`
+    # Reject names that aren't valid shell variable names.
+    if test -n "`echo $varname| sed 's/[a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $varname: invalid shell variable name" 1>&2; exit 1; }
+    fi
+    val="`echo "$ac_option"|sed 's/[^=]*=//'`"
+    test -n "$verbose" && echo "	setting shell variable $varname to $val"
+    eval "$varname='$val'"
+    eval "export $varname" ;;
+
+  *)
+    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+      echo "configure: warning: $ac_option: invalid host type" 1>&2
+    fi
+    if test "x$nonopt" != xNONE; then
+      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+    fi
+    nonopt="$ac_option"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+  case "$ac_arg" in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+  esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set.  These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=jcmaster.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+  else
+    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+  fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    echo "loading site script $ac_site_file"
+    . "$ac_site_file"
+  fi
+done
+
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says [email protected].
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='	'
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:538: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_CC="gcc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:567: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  ac_prog_rejected=no
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+        ac_prog_rejected=yes
+	continue
+      fi
+      ac_cv_prog_CC="cc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# -gt 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    set dummy "$ac_dir/$ac_word" "$@"
+    shift
+    ac_cv_prog_CC="$@"
+  fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:615: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext <<EOF
+#line 625 "configure"
+#include "confdefs.h"
+main(){return(0);}
+EOF
+if { (eval echo configure:629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  ac_cv_prog_cc_works=yes
+  # If we can't run a trivial program, we are probably using a cross compiler.
+  if (./conftest; exit) 2>/dev/null; then
+    ac_cv_prog_cc_cross=no
+  else
+    ac_cv_prog_cc_cross=yes
+  fi
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:649: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:654: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+  ac_cv_prog_gcc=yes
+else
+  ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+  GCC=yes
+  test "${CFLAGS+set}" = set || CFLAGS="-O2"
+else
+  GCC=
+  test "${CFLAGS+set}" = set || CFLAGS="-O"
+fi
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:681: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    # This must be in double quotes, not single quotes, because CPP may get
+  # substituted into the Makefile and "${CC-cc}" will confuse make.
+  CPP="${CC-cc} -E"
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp.
+  cat > conftest.$ac_ext <<EOF
+#line 696 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -E -traditional-cpp"
+  cat > conftest.$ac_ext <<EOF
+#line 713 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+  ac_cv_prog_CPP="$CPP"
+fi
+  CPP="$ac_cv_prog_CPP"
+else
+  ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+echo $ac_n "checking for function prototypes""... $ac_c" 1>&6
+echo "configure:742: checking for function prototypes" >&5
+if eval "test \"`echo '$''{'ijg_cv_have_prototypes'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 747 "configure"
+#include "confdefs.h"
+
+int testfunction (int arg1, int * arg2); /* check prototypes */
+struct methods_struct {		/* check method-pointer declarations */
+  int (*error_exit) (char *msgtext);
+  int (*trace_message) (char *msgtext);
+  int (*another_method) (void);
+};
+int testfunction (int arg1, int * arg2) /* check definitions */
+{ return arg2[arg1]; }
+int test2function (void)	/* check void arg list */
+{ return 0; }
+
+int main() {
+ 
+; return 0; }
+EOF
+if { (eval echo configure:765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ijg_cv_have_prototypes=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ijg_cv_have_prototypes=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ijg_cv_have_prototypes" 1>&6
+if test $ijg_cv_have_prototypes = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_PROTOTYPES 
+EOF
+
+else
+  echo Your compiler does not seem to know about function prototypes.
+  echo Perhaps it needs a special switch to enable ANSI C mode.
+  echo If so, we recommend running configure like this:
+  echo "   ./configure  CC='cc -switch'"
+  echo where -switch is the proper switch.
+fi
+ac_safe=`echo "stddef.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for stddef.h""... $ac_c" 1>&6
+echo "configure:792: checking for stddef.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 797 "configure"
+#include "confdefs.h"
+#include <stddef.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:802: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_STDDEF_H 
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6
+echo "configure:828: checking for stdlib.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 833 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_STDLIB_H 
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for string.h""... $ac_c" 1>&6
+echo "configure:864: checking for string.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 869 "configure"
+#include "confdefs.h"
+#include <string.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+cat >> confdefs.h <<\EOF
+#define NEED_BSD_STRINGS 
+EOF
+
+fi
+
+echo $ac_n "checking for size_t""... $ac_c" 1>&6
+echo "configure:900: checking for size_t" >&5
+cat > conftest.$ac_ext <<EOF
+#line 902 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#ifdef NEED_BSD_STRINGS
+#include <strings.h>
+#else
+#include <string.h>
+#endif
+typedef size_t my_size_t;
+
+int main() {
+ my_size_t foovar; 
+; return 0; }
+EOF
+if { (eval echo configure:923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ijg_size_t_ok=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ijg_size_t_ok="not ANSI, perhaps it is in sys/types.h"
+fi
+rm -f conftest*
+echo "$ac_t""$ijg_size_t_ok" 1>&6
+if test "$ijg_size_t_ok" != yes; then
+ac_safe=`echo "sys/types.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for sys/types.h""... $ac_c" 1>&6
+echo "configure:937: checking for sys/types.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 942 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define NEED_SYS_TYPES_H 
+EOF
+
+cat > conftest.$ac_ext <<EOF
+#line 968 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "size_t" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ijg_size_t_ok="size_t is in sys/types.h"
+else
+  rm -rf conftest*
+  ijg_size_t_ok=no
+fi
+rm -f conftest*
+
+else
+  echo "$ac_t""no" 1>&6
+ijg_size_t_ok=no
+fi
+
+echo "$ac_t""$ijg_size_t_ok" 1>&6
+if test "$ijg_size_t_ok" = no; then
+  echo Type size_t is not defined in any of the usual places.
+  echo Try putting '"typedef unsigned int size_t;"' in jconfig.h.
+fi
+fi
+echo $ac_n "checking for type unsigned char""... $ac_c" 1>&6
+echo "configure:994: checking for type unsigned char" >&5
+cat > conftest.$ac_ext <<EOF
+#line 996 "configure"
+#include "confdefs.h"
+
+int main() {
+ unsigned char un_char; 
+; return 0; }
+EOF
+if { (eval echo configure:1003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+cat >> confdefs.h <<\EOF
+#define HAVE_UNSIGNED_CHAR 
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+fi
+rm -f conftest*
+echo $ac_n "checking for type unsigned short""... $ac_c" 1>&6
+echo "configure:1018: checking for type unsigned short" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1020 "configure"
+#include "confdefs.h"
+
+int main() {
+ unsigned short un_short; 
+; return 0; }
+EOF
+if { (eval echo configure:1027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+cat >> confdefs.h <<\EOF
+#define HAVE_UNSIGNED_SHORT 
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+fi
+rm -f conftest*
+echo $ac_n "checking for type void""... $ac_c" 1>&6
+echo "configure:1042: checking for type void" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1044 "configure"
+#include "confdefs.h"
+
+/* Caution: a C++ compiler will insist on valid prototypes */
+typedef void * void_ptr;	/* check void * */
+#ifdef HAVE_PROTOTYPES		/* check ptr to function returning void */
+typedef void (*void_func) (int a, int b);
+#else
+typedef void (*void_func) ();
+#endif
+
+#ifdef HAVE_PROTOTYPES		/* check void function result */
+void test3function (void_ptr arg1, void_func arg2)
+#else
+void test3function (arg1, arg2)
+     void_ptr arg1;
+     void_func arg2;
+#endif
+{
+  char * locptr = (char *) arg1; /* check casting to and from void * */
+  arg1 = (void *) locptr;
+  (*arg2) (1, 2);		/* check call of fcn returning void */
+}
+
+int main() {
+ 
+; return 0; }
+EOF
+if { (eval echo configure:1072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+cat >> confdefs.h <<\EOF
+#define void char
+EOF
+
+fi
+rm -f conftest*
+
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+echo "configure:1088: checking for working const" >&5
+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1093 "configure"
+#include "confdefs.h"
+
+int main() {
+
+/* Ultrix mips cc rejects this.  */
+typedef int charset[2]; const charset x;
+/* SunOS 4.1.1 cc rejects this.  */
+char const *const *ccp;
+char **p;
+/* NEC SVR4.0.2 mips cc rejects this.  */
+struct point {int x, y;};
+static struct point const zero = {0,0};
+/* AIX XL C 1.02.0.0 rejects this.
+   It does not let you subtract one const X* pointer from another in an arm
+   of an if-expression whose if-part is not a constant expression */
+const char *g = "string";
+ccp = &g + (g ? g-g : 0);
+/* HPUX 7.0 cc rejects these. */
+++ccp;
+p = (char**) ccp;
+ccp = (char const *const *) p;
+{ /* SCO 3.2v4 cc rejects this.  */
+  char *t;
+  char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+  *t++ = 0;
+}
+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+  int x[] = {25, 17};
+  const int *foo = &x[0];
+  ++foo;
+}
+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+  typedef const int *iptr;
+  iptr p = 0;
+  ++p;
+}
+{ /* AIX XL C 1.02.0.0 rejects this saying
+     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+  struct s { int j; const int *ap[3]; };
+  struct s *b; b->j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+  const int foo = 10;
+}
+
+; return 0; }
+EOF
+if { (eval echo configure:1142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_const=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_c_const=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_c_const" 1>&6
+if test $ac_cv_c_const = no; then
+  cat >> confdefs.h <<\EOF
+#define const 
+EOF
+
+fi
+
+echo $ac_n "checking for inline""... $ac_c" 1>&6
+echo "configure:1163: checking for inline" >&5
+ijg_cv_inline=""
+cat > conftest.$ac_ext <<EOF
+#line 1166 "configure"
+#include "confdefs.h"
+
+int main() {
+} __inline__ int foo() { return 0; }
+int bar() { return foo();
+; return 0; }
+EOF
+if { (eval echo configure:1174: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ijg_cv_inline="__inline__"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat > conftest.$ac_ext <<EOF
+#line 1182 "configure"
+#include "confdefs.h"
+
+int main() {
+} __inline int foo() { return 0; }
+int bar() { return foo();
+; return 0; }
+EOF
+if { (eval echo configure:1190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ijg_cv_inline="__inline"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat > conftest.$ac_ext <<EOF
+#line 1198 "configure"
+#include "confdefs.h"
+
+int main() {
+} inline int foo() { return 0; }
+int bar() { return foo();
+; return 0; }
+EOF
+if { (eval echo configure:1206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ijg_cv_inline="inline"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+echo "$ac_t""$ijg_cv_inline" 1>&6
+cat >> confdefs.h <<EOF
+#define INLINE $ijg_cv_inline
+EOF
+
+echo $ac_n "checking for broken incomplete types""... $ac_c" 1>&6
+echo "configure:1224: checking for broken incomplete types" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1226 "configure"
+#include "confdefs.h"
+ typedef struct undefined_structure * undef_struct_ptr; 
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:1233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo "$ac_t""ok" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""broken" 1>&6
+cat >> confdefs.h <<\EOF
+#define INCOMPLETE_TYPES_BROKEN 
+EOF
+
+fi
+rm -f conftest*
+echo $ac_n "checking for short external names""... $ac_c" 1>&6
+echo "configure:1248: checking for short external names" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1250 "configure"
+#include "confdefs.h"
+
+int possibly_duplicate_function () { return 0; }
+int possibly_dupli_function () { return 1; }
+
+int main() {
+ 
+; return 0; }
+EOF
+if { (eval echo configure:1260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  echo "$ac_t""ok" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""short" 1>&6
+cat >> confdefs.h <<\EOF
+#define NEED_SHORT_EXTERNAL_NAMES 
+EOF
+
+fi
+rm -f conftest*
+echo $ac_n "checking to see if char is signed""... $ac_c" 1>&6
+echo "configure:1275: checking to see if char is signed" >&5
+if test "$cross_compiling" = yes; then
+  echo Assuming that char is signed on target machine.
+echo If it is unsigned, this will be a little bit inefficient.
+
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1282 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_PROTOTYPES
+int is_char_signed (int arg)
+#else
+int is_char_signed (arg)
+     int arg;
+#endif
+{
+  if (arg == 189) {		/* expected result for unsigned char */
+    return 0;			/* type char is unsigned */
+  }
+  else if (arg != -67) {	/* expected result for signed char */
+    printf("Hmm, it seems 'char' is not eight bits wide on your machine.\n");
+    printf("I fear the JPEG software will not work at all.\n\n");
+  }
+  return 1;			/* assume char is signed otherwise */
+}
+char signed_char_check = (char) (-67);
+main() {
+  exit(is_char_signed((int) signed_char_check));
+}
+EOF
+if { (eval echo configure:1306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo "$ac_t""no" 1>&6
+cat >> confdefs.h <<\EOF
+#define CHAR_IS_UNSIGNED 
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo "$ac_t""yes" 1>&6
+fi
+rm -fr conftest*
+fi
+
+echo $ac_n "checking to see if right shift is signed""... $ac_c" 1>&6
+echo "configure:1323: checking to see if right shift is signed" >&5
+if test "$cross_compiling" = yes; then
+  echo "$ac_t""Assuming that right shift is signed on target machine." 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1328 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_PROTOTYPES
+int is_shifting_signed (long arg)
+#else
+int is_shifting_signed (arg)
+     long arg;
+#endif
+/* See whether right-shift on a long is signed or not. */
+{
+  long res = arg >> 4;
+
+  if (res == -0x7F7E80CL) {	/* expected result for signed shift */
+    return 1;			/* right shift is signed */
+  }
+  /* see if unsigned-shift hack will fix it. */
+  /* we can't just test exact value since it depends on width of long... */
+  res |= (~0L) << (32-4);
+  if (res == -0x7F7E80CL) {	/* expected result now? */
+    return 0;			/* right shift is unsigned */
+  }
+  printf("Right shift isn't acting as I expect it to.\n");
+  printf("I fear the JPEG software will not work at all.\n\n");
+  return 0;			/* try it with unsigned anyway */
+}
+main() {
+  exit(is_shifting_signed(-0x7F7E80B1L));
+}
+EOF
+if { (eval echo configure:1358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo "$ac_t""no" 1>&6
+cat >> confdefs.h <<\EOF
+#define RIGHT_SHIFT_IS_UNSIGNED 
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo "$ac_t""yes" 1>&6
+fi
+rm -fr conftest*
+fi
+
+echo $ac_n "checking to see if fopen accepts b spec""... $ac_c" 1>&6
+echo "configure:1375: checking to see if fopen accepts b spec" >&5
+if test "$cross_compiling" = yes; then
+  echo "$ac_t""Assuming that it does." 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1380 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+main() {
+  if (fopen("conftestdata", "wb") != NULL)
+    exit(0);
+  exit(1);
+}
+EOF
+if { (eval echo configure:1390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo "$ac_t""yes" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo "$ac_t""no" 1>&6
+cat >> confdefs.h <<\EOF
+#define DONT_USE_B_MODE 
+EOF
+
+fi
+rm -fr conftest*
+fi
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:1436: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    # Account for people who put trailing slashes in PATH elements.
+    case "$ac_dir/" in
+    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      for ac_prog in ginstall installbsd scoinst install; do
+        if test -f $ac_dir/$ac_prog; then
+	  if test $ac_prog = install &&
+            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    # OSF/1 installbsd also uses dspmsg, but is usable.
+	    :
+	  else
+	    ac_cv_path_install="$ac_dir/$ac_prog -c"
+	    break 2
+	  fi
+	fi
+      done
+      ;;
+    esac
+  done
+  IFS="$ac_save_IFS"
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL="$ac_cv_path_install"
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL="$ac_install_sh"
+  fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+# Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1488: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_RANLIB="ranlib"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
+fi
+fi
+RANLIB="$ac_cv_prog_RANLIB"
+if test -n "$RANLIB"; then
+  echo "$ac_t""$RANLIB" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+# Decide whether to use libtool,
+# and if so whether to build shared, static, or both flavors of library.
+LTSHARED="no"
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  LTSHARED="$enableval"
+fi
+
+LTSTATIC="no"
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  LTSTATIC="$enableval"
+fi
+
+if test "x$LTSHARED" != xno  -o  "x$LTSTATIC" != xno; then
+  USELIBTOOL="yes"
+  LIBTOOL="./libtool"
+  O="lo"
+  A="la"
+  LN='$(LIBTOOL) --mode=link $(CC)'
+  INSTALL_LIB='$(LIBTOOL) --mode=install ${INSTALL}'
+  INSTALL_PROGRAM="\$(LIBTOOL) --mode=install $INSTALL_PROGRAM"
+else
+  USELIBTOOL="no"
+  LIBTOOL=""
+  O="o"
+  A="a"
+  LN='$(CC)'
+  INSTALL_LIB="$INSTALL_DATA"
+fi
+
+
+
+
+
+
+# Configure libtool if needed.
+if test $USELIBTOOL = yes; then
+  disable_shared=
+  disable_static=
+  if test "x$LTSHARED" = xno; then
+    disable_shared="--disable-shared"
+  fi
+  if test "x$LTSTATIC" = xno; then
+    disable_static="--disable-static"
+  fi
+  $srcdir/ltconfig $disable_shared $disable_static $srcdir/ltmain.sh
+fi
+
+# Select memory manager depending on user input.
+# If no "-enable-maxmem", use jmemnobs
+MEMORYMGR='jmemnobs.$(O)'
+MAXMEM="no"
+# Check whether --enable-maxmem or --disable-maxmem was given.
+if test "${enable_maxmem+set}" = set; then
+  enableval="$enable_maxmem"
+  MAXMEM="$enableval"
+fi
+
+# support --with-maxmem for backwards compatibility with IJG V5.
+# Check whether --with-maxmem or --without-maxmem was given.
+if test "${with_maxmem+set}" = set; then
+  withval="$with_maxmem"
+  MAXMEM="$withval"
+fi
+
+if test "x$MAXMEM" = xyes; then
+  MAXMEM=1
+fi
+if test "x$MAXMEM" != xno; then
+  if test -n "`echo $MAXMEM | sed 's/[0-9]//g'`"; then
+    { echo "configure: error: non-numeric argument to --enable-maxmem" 1>&2; exit 1; }
+  fi
+  DEFAULTMAXMEM=`expr $MAXMEM \* 1048576`
+cat >> confdefs.h <<EOF
+#define DEFAULT_MAX_MEM ${DEFAULTMAXMEM}
+EOF
+
+echo $ac_n "checking for 'tmpfile()'""... $ac_c" 1>&6
+echo "configure:1596: checking for 'tmpfile()'" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1598 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int main() {
+ FILE * tfile = tmpfile(); 
+; return 0; }
+EOF
+if { (eval echo configure:1605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+MEMORYMGR='jmemansi.$(O)'
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+MEMORYMGR='jmemname.$(O)'
+cat >> confdefs.h <<\EOF
+#define NEED_SIGNAL_CATCHER 
+EOF
+
+echo $ac_n "checking for 'mktemp()'""... $ac_c" 1>&6
+echo "configure:1620: checking for 'mktemp()'" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1622 "configure"
+#include "confdefs.h"
+
+int main() {
+ char fname[80]; mktemp(fname); 
+; return 0; }
+EOF
+if { (eval echo configure:1629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+cat >> confdefs.h <<\EOF
+#define NO_MKTEMP 
+EOF
+
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+
+
+# Extract the library version ID from jpeglib.h.
+echo $ac_n "checking libjpeg version number""... $ac_c" 1>&6
+echo "configure:1650: checking libjpeg version number" >&5
+JPEG_LIB_VERSION=`sed -e '/^#define JPEG_LIB_VERSION/!d' -e 's/^[^0-9]*\([0-9][0-9]*\).*$/\1/' $srcdir/jpeglib.h`
+echo "$ac_t""$JPEG_LIB_VERSION" 1>&6
+
+
+# Prepare to massage makefile.cfg correctly.
+if test $ijg_cv_have_prototypes = yes; then
+  A2K_DEPS=""
+  COM_A2K="# "
+else
+  A2K_DEPS="ansi2knr"
+  COM_A2K=""
+fi
+
+
+# ansi2knr needs -DBSD if string.h is missing
+if test $ac_cv_header_string_h = no; then
+  ANSI2KNRFLAGS="-DBSD"
+else
+  ANSI2KNRFLAGS=""
+fi
+
+# Substitutions to enable or disable libtool-related stuff
+if test $USELIBTOOL = yes -a $ijg_cv_have_prototypes = yes; then
+  COM_LT=""
+else
+  COM_LT="# "
+fi
+
+if test "x$LTSHARED" != xno; then
+  FORCE_INSTALL_LIB="install-lib"
+else
+  FORCE_INSTALL_LIB=""
+fi
+
+# Set up -I directives
+if test "x$srcdir" = x.; then
+  INCLUDEFLAGS='-I$(srcdir)'
+else
+  INCLUDEFLAGS='-I. -I$(srcdir)'
+fi
+
+trap '' 1 2 15
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[ 	]*VPATH[ 	]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+  case "\$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "$CONFIG_STATUS generated by autoconf version 2.12"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "\$ac_cs_usage"; exit 0 ;;
+  *) echo "\$ac_cs_usage"; exit 1 ;;
+  esac
+done
+
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
+
+trap 'rm -fr `echo "Makefile:makefile.cfg jconfig.h:jconfig.cfg" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@CC@%$CC%g
+s%@CPP@%$CPP%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@RANLIB@%$RANLIB%g
+s%@LIBTOOL@%$LIBTOOL%g
+s%@O@%$O%g
+s%@A@%$A%g
+s%@LN@%$LN%g
+s%@INSTALL_LIB@%$INSTALL_LIB%g
+s%@MEMORYMGR@%$MEMORYMGR%g
+s%@JPEG_LIB_VERSION@%$JPEG_LIB_VERSION%g
+s%@A2K_DEPS@%$A2K_DEPS%g
+s%@COM_A2K@%$COM_A2K%g
+s%@ANSI2KNRFLAGS@%$ANSI2KNRFLAGS%g
+s%@COM_LT@%$COM_LT%g
+s%@FORCE_INSTALL_LIB@%$FORCE_INSTALL_LIB%g
+s%@INCLUDEFLAGS@%$INCLUDEFLAGS%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+  if test $ac_beg -gt 1; then
+    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+  else
+    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+  fi
+  if test ! -s conftest.s$ac_file; then
+    ac_more_lines=false
+    rm -f conftest.s$ac_file
+  else
+    if test -z "$ac_sed_cmds"; then
+      ac_sed_cmds="sed -f conftest.s$ac_file"
+    else
+      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+    fi
+    ac_file=`expr $ac_file + 1`
+    ac_beg=$ac_end
+    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+  fi
+done
+if test -z "$ac_sed_cmds"; then
+  ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"Makefile:makefile.cfg"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  case "$ac_given_INSTALL" in
+  [/$]*) INSTALL="$ac_given_INSTALL" ;;
+  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+  esac
+
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB='\([ 	][ 	]*\)[^ 	]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB='\([ 	]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+  CONFIG_HEADERS="jconfig.h:jconfig.cfg"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h.  And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+  ac_lines=`grep -c . conftest.vals`
+  # grep -c gives empty output for an empty file on some AIX systems.
+  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+  # Write a limited-size here document to conftest.frag.
+  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  echo 'CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    # Remove last slash and all that follows it.  Not all systems have dirname.
+      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+      # The file is in a subdirectory.
+      test ! -d "$ac_dir" && mkdir "$ac_dir"
+    fi
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+

+ 253 - 0
engine/lib/ljpeg/extras/djpeg.1

@@ -0,0 +1,253 @@
+.TH DJPEG 1 "22 August 1997"
+.SH NAME
+djpeg \- decompress a JPEG file to an image file
+.SH SYNOPSIS
+.B djpeg
+[
+.I options
+]
+[
+.I filename
+]
+.LP
+.SH DESCRIPTION
+.LP
+.B djpeg
+decompresses the named JPEG file, or the standard input if no file is named,
+and produces an image file on the standard output.  PBMPLUS (PPM/PGM), BMP,
+GIF, Targa, or RLE (Utah Raster Toolkit) output format can be selected.
+(RLE is supported only if the URT library is available.)
+.SH OPTIONS
+All switch names may be abbreviated; for example,
+.B \-grayscale
+may be written
+.B \-gray
+or
+.BR \-gr .
+Most of the "basic" switches can be abbreviated to as little as one letter.
+Upper and lower case are equivalent (thus
+.B \-BMP
+is the same as
+.BR \-bmp ).
+British spellings are also accepted (e.g.,
+.BR \-greyscale ),
+though for brevity these are not mentioned below.
+.PP
+The basic switches are:
+.TP
+.BI \-colors " N"
+Reduce image to at most N colors.  This reduces the number of colors used in
+the output image, so that it can be displayed on a colormapped display or
+stored in a colormapped file format.  For example, if you have an 8-bit
+display, you'd need to reduce to 256 or fewer colors.
+.TP
+.BI \-quantize " N"
+Same as
+.BR \-colors .
+.B \-colors
+is the recommended name,
+.B \-quantize
+is provided only for backwards compatibility.
+.TP
+.B \-fast
+Select recommended processing options for fast, low quality output.  (The
+default options are chosen for highest quality output.)  Currently, this is
+equivalent to \fB\-dct fast \-nosmooth \-onepass \-dither ordered\fR.
+.TP
+.B \-grayscale
+Force gray-scale output even if JPEG file is color.  Useful for viewing on
+monochrome displays; also,
+.B djpeg
+runs noticeably faster in this mode.
+.TP
+.BI \-scale " M/N"
+Scale the output image by a factor M/N.  Currently the scale factor must be
+1/1, 1/2, 1/4, or 1/8.  Scaling is handy if the image is larger than your
+screen; also,
+.B djpeg
+runs much faster when scaling down the output.
+.TP
+.B \-bmp
+Select BMP output format (Windows flavor).  8-bit colormapped format is
+emitted if
+.B \-colors
+or
+.B \-grayscale
+is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
+format is emitted.
+.TP
+.B \-gif
+Select GIF output format.  Since GIF does not support more than 256 colors,
+.B \-colors 256
+is assumed (unless you specify a smaller number of colors).
+.TP
+.B \-os2
+Select BMP output format (OS/2 1.x flavor).  8-bit colormapped format is
+emitted if
+.B \-colors
+or
+.B \-grayscale
+is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
+format is emitted.
+.TP
+.B \-pnm
+Select PBMPLUS (PPM/PGM) output format (this is the default format).
+PGM is emitted if the JPEG file is gray-scale or if
+.B \-grayscale
+is specified; otherwise PPM is emitted.
+.TP
+.B \-rle
+Select RLE output format.  (Requires URT library.)
+.TP
+.B \-targa
+Select Targa output format.  Gray-scale format is emitted if the JPEG file is
+gray-scale or if
+.B \-grayscale
+is specified; otherwise, colormapped format is emitted if
+.B \-colors
+is specified; otherwise, 24-bit full-color format is emitted.
+.PP
+Switches for advanced users:
+.TP
+.B \-dct int
+Use integer DCT method (default).
+.TP
+.B \-dct fast
+Use fast integer DCT (less accurate).
+.TP
+.B \-dct float
+Use floating-point DCT method.
+The float method is very slightly more accurate than the int method, but is
+much slower unless your machine has very fast floating-point hardware.  Also
+note that results of the floating-point method may vary slightly across
+machines, while the integer methods should give the same results everywhere.
+The fast integer method is much less accurate than the other two.
+.TP
+.B \-dither fs
+Use Floyd-Steinberg dithering in color quantization.
+.TP
+.B \-dither ordered
+Use ordered dithering in color quantization.
+.TP
+.B \-dither none
+Do not use dithering in color quantization.
+By default, Floyd-Steinberg dithering is applied when quantizing colors; this
+is slow but usually produces the best results.  Ordered dither is a compromise
+between speed and quality; no dithering is fast but usually looks awful.  Note
+that these switches have no effect unless color quantization is being done.
+Ordered dither is only available in
+.B \-onepass
+mode.
+.TP
+.BI \-map " file"
+Quantize to the colors used in the specified image file.  This is useful for
+producing multiple files with identical color maps, or for forcing a
+predefined set of colors to be used.  The
+.I file
+must be a GIF or PPM file. This option overrides
+.B \-colors
+and
+.BR \-onepass .
+.TP
+.B \-nosmooth
+Use a faster, lower-quality upsampling routine.
+.TP
+.B \-onepass
+Use one-pass instead of two-pass color quantization.  The one-pass method is
+faster and needs less memory, but it produces a lower-quality image.
+.B \-onepass
+is ignored unless you also say
+.B \-colors
+.IR N .
+Also, the one-pass method is always used for gray-scale output (the two-pass
+method is no improvement then).
+.TP
+.BI \-maxmemory " N"
+Set limit for amount of memory to use in processing large images.  Value is
+in thousands of bytes, or millions of bytes if "M" is attached to the
+number.  For example,
+.B \-max 4m
+selects 4000000 bytes.  If more space is needed, temporary files will be used.
+.TP
+.BI \-outfile " name"
+Send output image to the named file, not to standard output.
+.TP
+.B \-verbose
+Enable debug printout.  More
+.BR \-v 's
+give more output.  Also, version information is printed at startup.
+.TP
+.B \-debug
+Same as
+.BR \-verbose .
+.SH EXAMPLES
+.LP
+This example decompresses the JPEG file foo.jpg, quantizes it to
+256 colors, and saves the output in 8-bit BMP format in foo.bmp:
+.IP
+.B djpeg \-colors 256 \-bmp
+.I foo.jpg
+.B >
+.I foo.bmp
+.SH HINTS
+To get a quick preview of an image, use the
+.B \-grayscale
+and/or
+.B \-scale
+switches.
+.B \-grayscale \-scale 1/8
+is the fastest case.
+.PP
+Several options are available that trade off image quality to gain speed.
+.B \-fast
+turns on the recommended settings.
+.PP
+.B \-dct fast
+and/or
+.B \-nosmooth
+gain speed at a small sacrifice in quality.
+When producing a color-quantized image,
+.B \-onepass \-dither ordered
+is fast but much lower quality than the default behavior.
+.B \-dither none
+may give acceptable results in two-pass mode, but is seldom tolerable in
+one-pass mode.
+.PP
+If you are fortunate enough to have very fast floating point hardware,
+\fB\-dct float\fR may be even faster than \fB\-dct fast\fR.  But on most
+machines \fB\-dct float\fR is slower than \fB\-dct int\fR; in this case it is
+not worth using, because its theoretical accuracy advantage is too small to be
+significant in practice.
+.SH ENVIRONMENT
+.TP
+.B JPEGMEM
+If this environment variable is set, its value is the default memory limit.
+The value is specified as described for the
+.B \-maxmemory
+switch.
+.B JPEGMEM
+overrides the default value specified when the program was compiled, and
+itself is overridden by an explicit
+.BR \-maxmemory .
+.SH SEE ALSO
+.BR cjpeg (1),
+.BR jpegtran (1),
+.BR rdjpgcom (1),
+.BR wrjpgcom (1)
+.br
+.BR ppm (5),
+.BR pgm (5)
+.br
+Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
+Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
+.SH AUTHOR
+Independent JPEG Group
+.SH BUGS
+Arithmetic coding is not supported for legal reasons.
+.PP
+To avoid the Unisys LZW patent,
+.B djpeg
+produces uncompressed GIF files.  These are larger than they should be, but
+are readable by standard GIF decoders.
+.PP
+Still not as fast as we'd like.

+ 616 - 0
engine/lib/ljpeg/extras/djpeg.c

@@ -0,0 +1,616 @@
+/*
+ * djpeg.c
+ *
+ * Copyright (C) 1991-1997, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains a command-line user interface for the JPEG decompressor.
+ * It should work on any system with Unix- or MS-DOS-style command lines.
+ *
+ * Two different command line styles are permitted, depending on the
+ * compile-time switch TWO_FILE_COMMANDLINE:
+ *	djpeg [options]  inputfile outputfile
+ *	djpeg [options]  [inputfile]
+ * In the second style, output is always to standard output, which you'd
+ * normally redirect to a file or pipe to some other program.  Input is
+ * either from a named file or from standard input (typically redirected).
+ * The second style is convenient on Unix but is unhelpful on systems that
+ * don't support pipes.  Also, you MUST use the first style if your system
+ * doesn't do binary I/O to stdin/stdout.
+ * To simplify script writing, the "-outfile" switch is provided.  The syntax
+ *	djpeg [options]  -outfile outputfile  inputfile
+ * works regardless of which command line style is used.
+ */
+
+#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
+#include "jversion.h"		/* for version message */
+
+#include <ctype.h>		/* to declare isprint() */
+
+#ifdef USE_CCOMMAND		/* command-line reader for Macintosh */
+#ifdef __MWERKS__
+#include <SIOUX.h>              /* Metrowerks needs this */
+#include <console.h>		/* ... and this */
+#endif
+#ifdef THINK_C
+#include <console.h>		/* Think declares it here */
+#endif
+#endif
+
+
+/* Create the add-on message string table. */
+
+#define JMESSAGE(code,string)	string ,
+
+static const char * const cdjpeg_message_table[] = {
+#include "cderror.h"
+  NULL
+};
+
+
+/*
+ * This list defines the known output image formats
+ * (not all of which need be supported by a given version).
+ * You can change the default output format by defining DEFAULT_FMT;
+ * indeed, you had better do so if you undefine PPM_SUPPORTED.
+ */
+
+typedef enum {
+	FMT_BMP,		/* BMP format (Windows flavor) */
+	FMT_GIF,		/* GIF format */
+	FMT_OS2,		/* BMP format (OS/2 flavor) */
+	FMT_PPM,		/* PPM/PGM (PBMPLUS formats) */
+	FMT_RLE,		/* RLE format */
+	FMT_TARGA,		/* Targa format */
+	FMT_TIFF		/* TIFF format */
+} IMAGE_FORMATS;
+
+#ifndef DEFAULT_FMT		/* so can override from CFLAGS in Makefile */
+#define DEFAULT_FMT	FMT_PPM
+#endif
+
+static IMAGE_FORMATS requested_fmt;
+
+
+/*
+ * Argument-parsing code.
+ * The switch parser is designed to be useful with DOS-style command line
+ * syntax, ie, intermixed switches and file names, where only the switches
+ * to the left of a given file name affect processing of that file.
+ * The main program in this file doesn't actually use this capability...
+ */
+
+
+static const char * progname;	/* program name for error messages */
+static char * outfilename;	/* for -outfile switch */
+
+
+LOCAL(void)
+usage (void)
+/* complain about bad command line */
+{
+  fprintf(stderr, "usage: %s [switches] ", progname);
+#ifdef TWO_FILE_COMMANDLINE
+  fprintf(stderr, "inputfile outputfile\n");
+#else
+  fprintf(stderr, "[inputfile]\n");
+#endif
+
+  fprintf(stderr, "Switches (names may be abbreviated):\n");
+  fprintf(stderr, "  -colors N      Reduce image to no more than N colors\n");
+  fprintf(stderr, "  -fast          Fast, low-quality processing\n");
+  fprintf(stderr, "  -grayscale     Force grayscale output\n");
+#ifdef IDCT_SCALING_SUPPORTED
+  fprintf(stderr, "  -scale M/N     Scale output image by fraction M/N, eg, 1/8\n");
+#endif
+#ifdef BMP_SUPPORTED
+  fprintf(stderr, "  -bmp           Select BMP output format (Windows style)%s\n",
+	  (DEFAULT_FMT == FMT_BMP ? " (default)" : ""));
+#endif
+#ifdef GIF_SUPPORTED
+  fprintf(stderr, "  -gif           Select GIF output format%s\n",
+	  (DEFAULT_FMT == FMT_GIF ? " (default)" : ""));
+#endif
+#ifdef BMP_SUPPORTED
+  fprintf(stderr, "  -os2           Select BMP output format (OS/2 style)%s\n",
+	  (DEFAULT_FMT == FMT_OS2 ? " (default)" : ""));
+#endif
+#ifdef PPM_SUPPORTED
+  fprintf(stderr, "  -pnm           Select PBMPLUS (PPM/PGM) output format%s\n",
+	  (DEFAULT_FMT == FMT_PPM ? " (default)" : ""));
+#endif
+#ifdef RLE_SUPPORTED
+  fprintf(stderr, "  -rle           Select Utah RLE output format%s\n",
+	  (DEFAULT_FMT == FMT_RLE ? " (default)" : ""));
+#endif
+#ifdef TARGA_SUPPORTED
+  fprintf(stderr, "  -targa         Select Targa output format%s\n",
+	  (DEFAULT_FMT == FMT_TARGA ? " (default)" : ""));
+#endif
+  fprintf(stderr, "Switches for advanced users:\n");
+#ifdef DCT_ISLOW_SUPPORTED
+  fprintf(stderr, "  -dct int       Use integer DCT method%s\n",
+	  (JDCT_DEFAULT == JDCT_ISLOW ? " (default)" : ""));
+#endif
+#ifdef DCT_IFAST_SUPPORTED
+  fprintf(stderr, "  -dct fast      Use fast integer DCT (less accurate)%s\n",
+	  (JDCT_DEFAULT == JDCT_IFAST ? " (default)" : ""));
+#endif
+#ifdef DCT_FLOAT_SUPPORTED
+  fprintf(stderr, "  -dct float     Use floating-point DCT method%s\n",
+	  (JDCT_DEFAULT == JDCT_FLOAT ? " (default)" : ""));
+#endif
+  fprintf(stderr, "  -dither fs     Use F-S dithering (default)\n");
+  fprintf(stderr, "  -dither none   Don't use dithering in quantization\n");
+  fprintf(stderr, "  -dither ordered  Use ordered dither (medium speed, quality)\n");
+#ifdef QUANT_2PASS_SUPPORTED
+  fprintf(stderr, "  -map FILE      Map to colors used in named image file\n");
+#endif
+  fprintf(stderr, "  -nosmooth      Don't use high-quality upsampling\n");
+#ifdef QUANT_1PASS_SUPPORTED
+  fprintf(stderr, "  -onepass       Use 1-pass quantization (fast, low quality)\n");
+#endif
+  fprintf(stderr, "  -maxmemory N   Maximum memory to use (in kbytes)\n");
+  fprintf(stderr, "  -outfile name  Specify name for output file\n");
+  fprintf(stderr, "  -verbose  or  -debug   Emit debug output\n");
+  exit(EXIT_FAILURE);
+}
+
+
+LOCAL(int)
+parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
+		int last_file_arg_seen, boolean for_real)
+/* Parse optional switches.
+ * Returns argv[] index of first file-name argument (== argc if none).
+ * Any file names with indexes <= last_file_arg_seen are ignored;
+ * they have presumably been processed in a previous iteration.
+ * (Pass 0 for last_file_arg_seen on the first or only iteration.)
+ * for_real is FALSE on the first (dummy) pass; we may skip any expensive
+ * processing.
+ */
+{
+  int argn;
+  char * arg;
+
+  /* Set up default JPEG parameters. */
+  requested_fmt = DEFAULT_FMT;	/* set default output file format */
+  outfilename = NULL;
+  cinfo->err->trace_level = 0;
+
+  /* Scan command line options, adjust parameters */
+
+  for (argn = 1; argn < argc; argn++) {
+    arg = argv[argn];
+    if (*arg != '-') {
+      /* Not a switch, must be a file name argument */
+      if (argn <= last_file_arg_seen) {
+	outfilename = NULL;	/* -outfile applies to just one input file */
+	continue;		/* ignore this name if previously processed */
+      }
+      break;			/* else done parsing switches */
+    }
+    arg++;			/* advance past switch marker character */
+
+    if (keymatch(arg, "bmp", 1)) {
+      /* BMP output format. */
+      requested_fmt = FMT_BMP;
+
+    } else if (keymatch(arg, "colors", 1) || keymatch(arg, "colours", 1) ||
+	       keymatch(arg, "quantize", 1) || keymatch(arg, "quantise", 1)) {
+      /* Do color quantization. */
+      int val;
+
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%d", &val) != 1)
+	usage();
+      cinfo->desired_number_of_colors = val;
+      cinfo->quantize_colors = TRUE;
+
+    } else if (keymatch(arg, "dct", 2)) {
+      /* Select IDCT algorithm. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (keymatch(argv[argn], "int", 1)) {
+	cinfo->dct_method = JDCT_ISLOW;
+      } else if (keymatch(argv[argn], "fast", 2)) {
+	cinfo->dct_method = JDCT_IFAST;
+      } else if (keymatch(argv[argn], "float", 2)) {
+	cinfo->dct_method = JDCT_FLOAT;
+      } else
+	usage();
+
+    } else if (keymatch(arg, "dither", 2)) {
+      /* Select dithering algorithm. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (keymatch(argv[argn], "fs", 2)) {
+	cinfo->dither_mode = JDITHER_FS;
+      } else if (keymatch(argv[argn], "none", 2)) {
+	cinfo->dither_mode = JDITHER_NONE;
+      } else if (keymatch(argv[argn], "ordered", 2)) {
+	cinfo->dither_mode = JDITHER_ORDERED;
+      } else
+	usage();
+
+    } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) {
+      /* Enable debug printouts. */
+      /* On first -d, print version identification */
+      static boolean printed_version = FALSE;
+
+      if (! printed_version) {
+	fprintf(stderr, "Independent JPEG Group's DJPEG, version %s\n%s\n",
+		JVERSION, JCOPYRIGHT);
+	printed_version = TRUE;
+      }
+      cinfo->err->trace_level++;
+
+    } else if (keymatch(arg, "fast", 1)) {
+      /* Select recommended processing options for quick-and-dirty output. */
+      cinfo->two_pass_quantize = FALSE;
+      cinfo->dither_mode = JDITHER_ORDERED;
+      if (! cinfo->quantize_colors) /* don't override an earlier -colors */
+	cinfo->desired_number_of_colors = 216;
+      cinfo->dct_method = JDCT_FASTEST;
+      cinfo->do_fancy_upsampling = FALSE;
+
+    } else if (keymatch(arg, "gif", 1)) {
+      /* GIF output format. */
+      requested_fmt = FMT_GIF;
+
+    } else if (keymatch(arg, "grayscale", 2) || keymatch(arg, "greyscale",2)) {
+      /* Force monochrome output. */
+      cinfo->out_color_space = JCS_GRAYSCALE;
+
+    } else if (keymatch(arg, "map", 3)) {
+      /* Quantize to a color map taken from an input file. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (for_real) {		/* too expensive to do twice! */
+#ifdef QUANT_2PASS_SUPPORTED	/* otherwise can't quantize to supplied map */
+	FILE * mapfile;
+
+	if ((mapfile = fopen(argv[argn], READ_BINARY)) == NULL) {
+	  fprintf(stderr, "%s: can't open %s\n", progname, argv[argn]);
+	  exit(EXIT_FAILURE);
+	}
+	read_color_map(cinfo, mapfile);
+	fclose(mapfile);
+	cinfo->quantize_colors = TRUE;
+#else
+	ERREXIT(cinfo, JERR_NOT_COMPILED);
+#endif
+      }
+
+    } else if (keymatch(arg, "maxmemory", 3)) {
+      /* Maximum memory in Kb (or Mb with 'm'). */
+      long lval;
+      char ch = 'x';
+
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
+	usage();
+      if (ch == 'm' || ch == 'M')
+	lval *= 1000L;
+      cinfo->mem->max_memory_to_use = lval * 1000L;
+
+    } else if (keymatch(arg, "nosmooth", 3)) {
+      /* Suppress fancy upsampling */
+      cinfo->do_fancy_upsampling = FALSE;
+
+    } else if (keymatch(arg, "onepass", 3)) {
+      /* Use fast one-pass quantization. */
+      cinfo->two_pass_quantize = FALSE;
+
+    } else if (keymatch(arg, "os2", 3)) {
+      /* BMP output format (OS/2 flavor). */
+      requested_fmt = FMT_OS2;
+
+    } else if (keymatch(arg, "outfile", 4)) {
+      /* Set output file name. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      outfilename = argv[argn];	/* save it away for later use */
+
+    } else if (keymatch(arg, "pnm", 1) || keymatch(arg, "ppm", 1)) {
+      /* PPM/PGM output format. */
+      requested_fmt = FMT_PPM;
+
+    } else if (keymatch(arg, "rle", 1)) {
+      /* RLE output format. */
+      requested_fmt = FMT_RLE;
+
+    } else if (keymatch(arg, "scale", 1)) {
+      /* Scale the output image by a fraction M/N. */
+      if (++argn >= argc)	/* advance to next argument */
+	usage();
+      if (sscanf(argv[argn], "%d/%d",
+		 &cinfo->scale_num, &cinfo->scale_denom) != 2)
+	usage();
+
+    } else if (keymatch(arg, "targa", 1)) {
+      /* Targa output format. */
+      requested_fmt = FMT_TARGA;
+
+    } else {
+      usage();			/* bogus switch */
+    }
+  }
+
+  return argn;			/* return index of next arg (file name) */
+}
+
+
+/*
+ * Marker processor for COM and interesting APPn markers.
+ * This replaces the library's built-in processor, which just skips the marker.
+ * We want to print out the marker as text, to the extent possible.
+ * Note this code relies on a non-suspending data source.
+ */
+
+LOCAL(unsigned int)
+jpeg_getc (j_decompress_ptr cinfo)
+/* Read next byte */
+{
+  struct jpeg_source_mgr * datasrc = cinfo->src;
+
+  if (datasrc->bytes_in_buffer == 0) {
+    if (! (*datasrc->fill_input_buffer) (cinfo))
+      ERREXIT(cinfo, JERR_CANT_SUSPEND);
+  }
+  datasrc->bytes_in_buffer--;
+  return GETJOCTET(*datasrc->next_input_byte++);
+}
+
+
+METHODDEF(boolean)
+print_text_marker (j_decompress_ptr cinfo)
+{
+  boolean traceit = (cinfo->err->trace_level >= 1);
+  INT32 length;
+  unsigned int ch;
+  unsigned int lastch = 0;
+
+  length = jpeg_getc(cinfo) << 8;
+  length += jpeg_getc(cinfo);
+  length -= 2;			/* discount the length word itself */
+
+  if (traceit) {
+    if (cinfo->unread_marker == JPEG_COM)
+      fprintf(stderr, "Comment, length %ld:\n", (long) length);
+    else			/* assume it is an APPn otherwise */
+      fprintf(stderr, "APP%d, length %ld:\n",
+	      cinfo->unread_marker - JPEG_APP0, (long) length);
+  }
+
+  while (--length >= 0) {
+    ch = jpeg_getc(cinfo);
+    if (traceit) {
+      /* Emit the character in a readable form.
+       * Nonprintables are converted to \nnn form,
+       * while \ is converted to \\.
+       * Newlines in CR, CR/LF, or LF form will be printed as one newline.
+       */
+      if (ch == '\r') {
+	fprintf(stderr, "\n");
+      } else if (ch == '\n') {
+	if (lastch != '\r')
+	  fprintf(stderr, "\n");
+      } else if (ch == '\\') {
+	fprintf(stderr, "\\\\");
+      } else if (isprint(ch)) {
+	putc(ch, stderr);
+      } else {
+	fprintf(stderr, "\\%03o", ch);
+      }
+      lastch = ch;
+    }
+  }
+
+  if (traceit)
+    fprintf(stderr, "\n");
+
+  return TRUE;
+}
+
+
+/*
+ * The main program.
+ */
+
+int
+main (int argc, char **argv)
+{
+  struct jpeg_decompress_struct cinfo;
+  struct jpeg_error_mgr jerr;
+#ifdef PROGRESS_REPORT
+  struct cdjpeg_progress_mgr progress;
+#endif
+  int file_index;
+  djpeg_dest_ptr dest_mgr = NULL;
+  FILE * input_file;
+  FILE * output_file;
+  JDIMENSION num_scanlines;
+
+  /* On Mac, fetch a command line. */
+#ifdef USE_CCOMMAND
+  argc = ccommand(&argv);
+#endif
+
+  progname = argv[0];
+  if (progname == NULL || progname[0] == 0)
+    progname = "djpeg";		/* in case C library doesn't provide it */
+
+  /* Initialize the JPEG decompression object with default error handling. */
+  cinfo.err = jpeg_std_error(&jerr);
+  jpeg_create_decompress(&cinfo);
+  /* Add some application-specific error messages (from cderror.h) */
+  jerr.addon_message_table = cdjpeg_message_table;
+  jerr.first_addon_message = JMSG_FIRSTADDONCODE;
+  jerr.last_addon_message = JMSG_LASTADDONCODE;
+
+  /* Insert custom marker processor for COM and APP12.
+   * APP12 is used by some digital camera makers for textual info,
+   * so we provide the ability to display it as text.
+   * If you like, additional APPn marker types can be selected for display,
+   * but don't try to override APP0 or APP14 this way (see libjpeg.doc).
+   */
+  jpeg_set_marker_processor(&cinfo, JPEG_COM, print_text_marker);
+  jpeg_set_marker_processor(&cinfo, JPEG_APP0+12, print_text_marker);
+
+  /* Now safe to enable signal catcher. */
+#ifdef NEED_SIGNAL_CATCHER
+  enable_signal_catcher((j_common_ptr) &cinfo);
+#endif
+
+  /* Scan command line to find file names. */
+  /* It is convenient to use just one switch-parsing routine, but the switch
+   * values read here are ignored; we will rescan the switches after opening
+   * the input file.
+   * (Exception: tracing level set here controls verbosity for COM markers
+   * found during jpeg_read_header...)
+   */
+
+  file_index = parse_switches(&cinfo, argc, argv, 0, FALSE);
+
+#ifdef TWO_FILE_COMMANDLINE
+  /* Must have either -outfile switch or explicit output file name */
+  if (outfilename == NULL) {
+    if (file_index != argc-2) {
+      fprintf(stderr, "%s: must name one input and one output file\n",
+	      progname);
+      usage();
+    }
+    outfilename = argv[file_index+1];
+  } else {
+    if (file_index != argc-1) {
+      fprintf(stderr, "%s: must name one input and one output file\n",
+	      progname);
+      usage();
+    }
+  }
+#else
+  /* Unix style: expect zero or one file name */
+  if (file_index < argc-1) {
+    fprintf(stderr, "%s: only one input file\n", progname);
+    usage();
+  }
+#endif /* TWO_FILE_COMMANDLINE */
+
+  /* Open the input file. */
+  if (file_index < argc) {
+    if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) {
+      fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);
+      exit(EXIT_FAILURE);
+    }
+  } else {
+    /* default input file is stdin */
+    input_file = read_stdin();
+  }
+
+  /* Open the output file. */
+  if (outfilename != NULL) {
+    if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) {
+      fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
+      exit(EXIT_FAILURE);
+    }
+  } else {
+    /* default output file is stdout */
+    output_file = write_stdout();
+  }
+
+#ifdef PROGRESS_REPORT
+  start_progress_monitor((j_common_ptr) &cinfo, &progress);
+#endif
+
+  /* Specify data source for decompression */
+  jpeg_stdio_src(&cinfo, input_file);
+
+  /* Read file header, set default decompression parameters */
+  (void) jpeg_read_header(&cinfo, TRUE);
+
+  /* Adjust default decompression parameters by re-parsing the options */
+  file_index = parse_switches(&cinfo, argc, argv, 0, TRUE);
+
+  /* Initialize the output module now to let it override any crucial
+   * option settings (for instance, GIF wants to force color quantization).
+   */
+  switch (requested_fmt) {
+#ifdef BMP_SUPPORTED
+  case FMT_BMP:
+    dest_mgr = jinit_write_bmp(&cinfo, FALSE);
+    break;
+  case FMT_OS2:
+    dest_mgr = jinit_write_bmp(&cinfo, TRUE);
+    break;
+#endif
+#ifdef GIF_SUPPORTED
+  case FMT_GIF:
+    dest_mgr = jinit_write_gif(&cinfo);
+    break;
+#endif
+#ifdef PPM_SUPPORTED
+  case FMT_PPM:
+    dest_mgr = jinit_write_ppm(&cinfo);
+    break;
+#endif
+#ifdef RLE_SUPPORTED
+  case FMT_RLE:
+    dest_mgr = jinit_write_rle(&cinfo);
+    break;
+#endif
+#ifdef TARGA_SUPPORTED
+  case FMT_TARGA:
+    dest_mgr = jinit_write_targa(&cinfo);
+    break;
+#endif
+  default:
+    ERREXIT(&cinfo, JERR_UNSUPPORTED_FORMAT);
+    break;
+  }
+  dest_mgr->output_file = output_file;
+
+  /* Start decompressor */
+  (void) jpeg_start_decompress(&cinfo);
+
+  /* Write output file header */
+  (*dest_mgr->start_output) (&cinfo, dest_mgr);
+
+  /* Process data */
+  while (cinfo.output_scanline < cinfo.output_height) {
+    num_scanlines = jpeg_read_scanlines(&cinfo, dest_mgr->buffer,
+					dest_mgr->buffer_height);
+    (*dest_mgr->put_pixel_rows) (&cinfo, dest_mgr, num_scanlines);
+  }
+
+#ifdef PROGRESS_REPORT
+  /* Hack: count final pass as done in case finish_output does an extra pass.
+   * The library won't have updated completed_passes.
+   */
+  progress.pub.completed_passes = progress.pub.total_passes;
+#endif
+
+  /* Finish decompression and release memory.
+   * I must do it in this order because output module has allocated memory
+   * of lifespan JPOOL_IMAGE; it needs to finish before releasing memory.
+   */
+  (*dest_mgr->finish_output) (&cinfo, dest_mgr);
+  (void) jpeg_finish_decompress(&cinfo);
+  jpeg_destroy_decompress(&cinfo);
+
+  /* Close files, if we opened them */
+  if (input_file != stdin)
+    fclose(input_file);
+  if (output_file != stdout)
+    fclose(output_file);
+
+#ifdef PROGRESS_REPORT
+  end_progress_monitor((j_common_ptr) &cinfo);
+#endif
+
+  /* All done. */
+  exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS);
+  return 0;			/* suppress no-return-value warnings */
+}

+ 433 - 0
engine/lib/ljpeg/extras/example.c

@@ -0,0 +1,433 @@
+/*
+ * example.c
+ *
+ * This file illustrates how to use the IJG code as a subroutine library
+ * to read or write JPEG image files.  You should look at this code in
+ * conjunction with the documentation file libjpeg.doc.
+ *
+ * This code will not do anything useful as-is, but it may be helpful as a
+ * skeleton for constructing routines that call the JPEG library.  
+ *
+ * We present these routines in the same coding style used in the JPEG code
+ * (ANSI function definitions, etc); but you are of course free to code your
+ * routines in a different style if you prefer.
+ */
+
+#include <stdio.h>
+
+/*
+ * Include file for users of JPEG library.
+ * You will need to have included system headers that define at least
+ * the typedefs FILE and size_t before you can include jpeglib.h.
+ * (stdio.h is sufficient on ANSI-conforming systems.)
+ * You may also wish to include "jerror.h".
+ */
+
+#include "jpeglib.h"
+
+/*
+ * <setjmp.h> is used for the optional error recovery mechanism shown in
+ * the second part of the example.
+ */
+
+#include <setjmp.h>
+
+
+
+/******************** JPEG COMPRESSION SAMPLE INTERFACE *******************/
+
+/* This half of the example shows how to feed data into the JPEG compressor.
+ * We present a minimal version that does not worry about refinements such
+ * as error recovery (the JPEG code will just exit() if it gets an error).
+ */
+
+
+/*
+ * IMAGE DATA FORMATS:
+ *
+ * The standard input image format is a rectangular array of pixels, with
+ * each pixel having the same number of "component" values (color channels).
+ * Each pixel row is an array of JSAMPLEs (which typically are unsigned chars).
+ * If you are working with color data, then the color values for each pixel
+ * must be adjacent in the row; for example, R,G,B,R,G,B,R,G,B,... for 24-bit
+ * RGB color.
+ *
+ * For this example, we'll assume that this data structure matches the way
+ * our application has stored the image in memory, so we can just pass a
+ * pointer to our image buffer.  In particular, let's say that the image is
+ * RGB color and is described by:
+ */
+
+extern JSAMPLE * image_buffer;	/* Points to large array of R,G,B-order data */
+extern int image_height;	/* Number of rows in image */
+extern int image_width;		/* Number of columns in image */
+
+
+/*
+ * Sample routine for JPEG compression.  We assume that the target file name
+ * and a compression quality factor are passed in.
+ */
+
+GLOBAL(void)
+write_JPEG_file (char * filename, int quality)
+{
+  /* This struct contains the JPEG compression parameters and pointers to
+   * working space (which is allocated as needed by the JPEG library).
+   * It is possible to have several such structures, representing multiple
+   * compression/decompression processes, in existence at once.  We refer
+   * to any one struct (and its associated working data) as a "JPEG object".
+   */
+  struct jpeg_compress_struct cinfo;
+  /* This struct represents a JPEG error handler.  It is declared separately
+   * because applications often want to supply a specialized error handler
+   * (see the second half of this file for an example).  But here we just
+   * take the easy way out and use the standard error handler, which will
+   * print a message on stderr and call exit() if compression fails.
+   * Note that this struct must live as long as the main JPEG parameter
+   * struct, to avoid dangling-pointer problems.
+   */
+  struct jpeg_error_mgr jerr;
+  /* More stuff */
+  FILE * outfile;		/* target file */
+  JSAMPROW row_pointer[1];	/* pointer to JSAMPLE row[s] */
+  int row_stride;		/* physical row width in image buffer */
+
+  /* Step 1: allocate and initialize JPEG compression object */
+
+  /* We have to set up the error handler first, in case the initialization
+   * step fails.  (Unlikely, but it could happen if you are out of memory.)
+   * This routine fills in the contents of struct jerr, and returns jerr's
+   * address which we place into the link field in cinfo.
+   */
+  cinfo.err = jpeg_std_error(&jerr);
+  /* Now we can initialize the JPEG compression object. */
+  jpeg_create_compress(&cinfo);
+
+  /* Step 2: specify data destination (eg, a file) */
+  /* Note: steps 2 and 3 can be done in either order. */
+
+  /* Here we use the library-supplied code to send compressed data to a
+   * stdio stream.  You can also write your own code to do something else.
+   * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that
+   * requires it in order to write binary files.
+   */
+  if ((outfile = fopen(filename, "wb")) == NULL) {
+    fprintf(stderr, "can't open %s\n", filename);
+    exit(1);
+  }
+  jpeg_stdio_dest(&cinfo, outfile);
+
+  /* Step 3: set parameters for compression */
+
+  /* First we supply a description of the input image.
+   * Four fields of the cinfo struct must be filled in:
+   */
+  cinfo.image_width = image_width; 	/* image width and height, in pixels */
+  cinfo.image_height = image_height;
+  cinfo.input_components = 3;		/* # of color components per pixel */
+  cinfo.in_color_space = JCS_RGB; 	/* colorspace of input image */
+  /* Now use the library's routine to set default compression parameters.
+   * (You must set at least cinfo.in_color_space before calling this,
+   * since the defaults depend on the source color space.)
+   */
+  jpeg_set_defaults(&cinfo);
+  /* Now you can set any non-default parameters you wish to.
+   * Here we just illustrate the use of quality (quantization table) scaling:
+   */
+  jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */);
+
+  /* Step 4: Start compressor */
+
+  /* TRUE ensures that we will write a complete interchange-JPEG file.
+   * Pass TRUE unless you are very sure of what you're doing.
+   */
+  jpeg_start_compress(&cinfo, TRUE);
+
+  /* Step 5: while (scan lines remain to be written) */
+  /*           jpeg_write_scanlines(...); */
+
+  /* Here we use the library's state variable cinfo.next_scanline as the
+   * loop counter, so that we don't have to keep track ourselves.
+   * To keep things simple, we pass one scanline per call; you can pass
+   * more if you wish, though.
+   */
+  row_stride = image_width * 3;	/* JSAMPLEs per row in image_buffer */
+
+  while (cinfo.next_scanline < cinfo.image_height) {
+    /* jpeg_write_scanlines expects an array of pointers to scanlines.
+     * Here the array is only one element long, but you could pass
+     * more than one scanline at a time if that's more convenient.
+     */
+    row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];
+    (void) jpeg_write_scanlines(&cinfo, row_pointer, 1);
+  }
+
+  /* Step 6: Finish compression */
+
+  jpeg_finish_compress(&cinfo);
+  /* After finish_compress, we can close the output file. */
+  fclose(outfile);
+
+  /* Step 7: release JPEG compression object */
+
+  /* This is an important step since it will release a good deal of memory. */
+  jpeg_destroy_compress(&cinfo);
+
+  /* And we're done! */
+}
+
+
+/*
+ * SOME FINE POINTS:
+ *
+ * In the above loop, we ignored the return value of jpeg_write_scanlines,
+ * which is the number of scanlines actually written.  We could get away
+ * with this because we were only relying on the value of cinfo.next_scanline,
+ * which will be incremented correctly.  If you maintain additional loop
+ * variables then you should be careful to increment them properly.
+ * Actually, for output to a stdio stream you needn't worry, because
+ * then jpeg_write_scanlines will write all the lines passed (or else exit
+ * with a fatal error).  Partial writes can only occur if you use a data
+ * destination module that can demand suspension of the compressor.
+ * (If you don't know what that's for, you don't need it.)
+ *
+ * If the compressor requires full-image buffers (for entropy-coding
+ * optimization or a multi-scan JPEG file), it will create temporary
+ * files for anything that doesn't fit within the maximum-memory setting.
+ * (Note that temp files are NOT needed if you use the default parameters.)
+ * On some systems you may need to set up a signal handler to ensure that
+ * temporary files are deleted if the program is interrupted.  See libjpeg.doc.
+ *
+ * Scanlines MUST be supplied in top-to-bottom order if you want your JPEG
+ * files to be compatible with everyone else's.  If you cannot readily read
+ * your data in that order, you'll need an intermediate array to hold the
+ * image.  See rdtarga.c or rdbmp.c for examples of handling bottom-to-top
+ * source data using the JPEG code's internal virtual-array mechanisms.
+ */
+
+
+
+/******************** JPEG DECOMPRESSION SAMPLE INTERFACE *******************/
+
+/* This half of the example shows how to read data from the JPEG decompressor.
+ * It's a bit more refined than the above, in that we show:
+ *   (a) how to modify the JPEG library's standard error-reporting behavior;
+ *   (b) how to allocate workspace using the library's memory manager.
+ *
+ * Just to make this example a little different from the first one, we'll
+ * assume that we do not intend to put the whole image into an in-memory
+ * buffer, but to send it line-by-line someplace else.  We need a one-
+ * scanline-high JSAMPLE array as a work buffer, and we will let the JPEG
+ * memory manager allocate it for us.  This approach is actually quite useful
+ * because we don't need to remember to deallocate the buffer separately: it
+ * will go away automatically when the JPEG object is cleaned up.
+ */
+
+
+/*
+ * ERROR HANDLING:
+ *
+ * The JPEG library's standard error handler (jerror.c) is divided into
+ * several "methods" which you can override individually.  This lets you
+ * adjust the behavior without duplicating a lot of code, which you might
+ * have to update with each future release.
+ *
+ * Our example here shows how to override the "error_exit" method so that
+ * control is returned to the library's caller when a fatal error occurs,
+ * rather than calling exit() as the standard error_exit method does.
+ *
+ * We use C's setjmp/longjmp facility to return control.  This means that the
+ * routine which calls the JPEG library must first execute a setjmp() call to
+ * establish the return point.  We want the replacement error_exit to do a
+ * longjmp().  But we need to make the setjmp buffer accessible to the
+ * error_exit routine.  To do this, we make a private extension of the
+ * standard JPEG error handler object.  (If we were using C++, we'd say we
+ * were making a subclass of the regular error handler.)
+ *
+ * Here's the extended error handler struct:
+ */
+
+struct my_error_mgr {
+  struct jpeg_error_mgr pub;	/* "public" fields */
+
+  jmp_buf setjmp_buffer;	/* for return to caller */
+};
+
+typedef struct my_error_mgr * my_error_ptr;
+
+/*
+ * Here's the routine that will replace the standard error_exit method:
+ */
+
+METHODDEF(void)
+my_error_exit (j_common_ptr cinfo)
+{
+  /* cinfo->err really points to a my_error_mgr struct, so coerce pointer */
+  my_error_ptr myerr = (my_error_ptr) cinfo->err;
+
+  /* Always display the message. */
+  /* We could postpone this until after returning, if we chose. */
+  (*cinfo->err->output_message) (cinfo);
+
+  /* Return control to the setjmp point */
+  longjmp(myerr->setjmp_buffer, 1);
+}
+
+
+/*
+ * Sample routine for JPEG decompression.  We assume that the source file name
+ * is passed in.  We want to return 1 on success, 0 on error.
+ */
+
+
+GLOBAL(int)
+read_JPEG_file (char * filename)
+{
+  /* This struct contains the JPEG decompression parameters and pointers to
+   * working space (which is allocated as needed by the JPEG library).
+   */
+  struct jpeg_decompress_struct cinfo;
+  /* We use our private extension JPEG error handler.
+   * Note that this struct must live as long as the main JPEG parameter
+   * struct, to avoid dangling-pointer problems.
+   */
+  struct my_error_mgr jerr;
+  /* More stuff */
+  FILE * infile;		/* source file */
+  JSAMPARRAY buffer;		/* Output row buffer */
+  int row_stride;		/* physical row width in output buffer */
+
+  /* In this example we want to open the input file before doing anything else,
+   * so that the setjmp() error recovery below can assume the file is open.
+   * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that
+   * requires it in order to read binary files.
+   */
+
+  if ((infile = fopen(filename, "rb")) == NULL) {
+    fprintf(stderr, "can't open %s\n", filename);
+    return 0;
+  }
+
+  /* Step 1: allocate and initialize JPEG decompression object */
+
+  /* We set up the normal JPEG error routines, then override error_exit. */
+  cinfo.err = jpeg_std_error(&jerr.pub);
+  jerr.pub.error_exit = my_error_exit;
+  /* Establish the setjmp return context for my_error_exit to use. */
+  if (setjmp(jerr.setjmp_buffer)) {
+    /* If we get here, the JPEG code has signaled an error.
+     * We need to clean up the JPEG object, close the input file, and return.
+     */
+    jpeg_destroy_decompress(&cinfo);
+    fclose(infile);
+    return 0;
+  }
+  /* Now we can initialize the JPEG decompression object. */
+  jpeg_create_decompress(&cinfo);
+
+  /* Step 2: specify data source (eg, a file) */
+
+  jpeg_stdio_src(&cinfo, infile);
+
+  /* Step 3: read file parameters with jpeg_read_header() */
+
+  (void) jpeg_read_header(&cinfo, TRUE);
+  /* We can ignore the return value from jpeg_read_header since
+   *   (a) suspension is not possible with the stdio data source, and
+   *   (b) we passed TRUE to reject a tables-only JPEG file as an error.
+   * See libjpeg.doc for more info.
+   */
+
+  /* Step 4: set parameters for decompression */
+
+  /* In this example, we don't need to change any of the defaults set by
+   * jpeg_read_header(), so we do nothing here.
+   */
+
+  /* Step 5: Start decompressor */
+
+  (void) jpeg_start_decompress(&cinfo);
+  /* We can ignore the return value since suspension is not possible
+   * with the stdio data source.
+   */
+
+  /* We may need to do some setup of our own at this point before reading
+   * the data.  After jpeg_start_decompress() we have the correct scaled
+   * output image dimensions available, as well as the output colormap
+   * if we asked for color quantization.
+   * In this example, we need to make an output work buffer of the right size.
+   */ 
+  /* JSAMPLEs per row in output buffer */
+  row_stride = cinfo.output_width * cinfo.output_components;
+  /* Make a one-row-high sample array that will go away when done with image */
+  buffer = (*cinfo.mem->alloc_sarray)
+		((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
+
+  /* Step 6: while (scan lines remain to be read) */
+  /*           jpeg_read_scanlines(...); */
+
+  /* Here we use the library's state variable cinfo.output_scanline as the
+   * loop counter, so that we don't have to keep track ourselves.
+   */
+  while (cinfo.output_scanline < cinfo.output_height) {
+    /* jpeg_read_scanlines expects an array of pointers to scanlines.
+     * Here the array is only one element long, but you could ask for
+     * more than one scanline at a time if that's more convenient.
+     */
+    (void) jpeg_read_scanlines(&cinfo, buffer, 1);
+    /* Assume put_scanline_someplace wants a pointer and sample count. */
+    put_scanline_someplace(buffer[0], row_stride);
+  }
+
+  /* Step 7: Finish decompression */
+
+  (void) jpeg_finish_decompress(&cinfo);
+  /* We can ignore the return value since suspension is not possible
+   * with the stdio data source.
+   */
+
+  /* Step 8: Release JPEG decompression object */
+
+  /* This is an important step since it will release a good deal of memory. */
+  jpeg_destroy_decompress(&cinfo);
+
+  /* After finish_decompress, we can close the input file.
+   * Here we postpone it until after no more JPEG errors are possible,
+   * so as to simplify the setjmp error logic above.  (Actually, I don't
+   * think that jpeg_destroy can do an error exit, but why assume anything...)
+   */
+  fclose(infile);
+
+  /* At this point you may want to check to see whether any corrupt-data
+   * warnings occurred (test whether jerr.pub.num_warnings is nonzero).
+   */
+
+  /* And we're done! */
+  return 1;
+}
+
+
+/*
+ * SOME FINE POINTS:
+ *
+ * In the above code, we ignored the return value of jpeg_read_scanlines,
+ * which is the number of scanlines actually read.  We could get away with
+ * this because we asked for only one line at a time and we weren't using
+ * a suspending data source.  See libjpeg.doc for more info.
+ *
+ * We cheated a bit by calling alloc_sarray() after jpeg_start_decompress();
+ * we should have done it beforehand to ensure that the space would be
+ * counted against the JPEG max_memory setting.  In some systems the above
+ * code would risk an out-of-memory error.  However, in general we don't
+ * know the output image dimensions before jpeg_start_decompress(), unless we
+ * call jpeg_calc_output_dimensions().  See libjpeg.doc for more about this.
+ *
+ * Scanlines are returned in the same order as they appear in the JPEG file,
+ * which is standardly top-to-bottom.  If you must emit data bottom-to-top,
+ * you can use one of the virtual arrays provided by the JPEG memory manager
+ * to invert the data.  See wrbmp.c for an example.
+ *
+ * As with compression, some operating modes may require temporary files.
+ * On some systems you may need to set up a signal handler to ensure that
+ * temporary files are deleted if the program is interrupted.  See libjpeg.doc.
+ */

+ 210 - 0
engine/lib/ljpeg/extras/filelist.doc

@@ -0,0 +1,210 @@
+IJG JPEG LIBRARY:  FILE LIST
+
+Copyright (C) 1994-1998, Thomas G. Lane.
+This file is part of the Independent JPEG Group's software.
+For conditions of distribution and use, see the accompanying README file.
+
+
+Here is a road map to the files in the IJG JPEG distribution.  The
+distribution includes the JPEG library proper, plus two application
+programs ("cjpeg" and "djpeg") which use the library to convert JPEG
+files to and from some other popular image formats.  A third application
+"jpegtran" uses the library to do lossless conversion between different
+variants of JPEG.  There are also two stand-alone applications,
+"rdjpgcom" and "wrjpgcom".
+
+
+THE JPEG LIBRARY
+================
+
+Include files:
+
+jpeglib.h	JPEG library's exported data and function declarations.
+jconfig.h	Configuration declarations.  Note: this file is not present
+		in the distribution; it is generated during installation.
+jmorecfg.h	Additional configuration declarations; need not be changed
+		for a standard installation.
+jerror.h	Declares JPEG library's error and trace message codes.
+jinclude.h	Central include file used by all IJG .c files to reference
+		system include files.
+jpegint.h	JPEG library's internal data structures.
+jchuff.h	Private declarations for Huffman encoder modules.
+jdhuff.h	Private declarations for Huffman decoder modules.
+jdct.h		Private declarations for forward & reverse DCT subsystems.
+jmemsys.h	Private declarations for memory management subsystem.
+jversion.h	Version information.
+
+Applications using the library should include jpeglib.h (which in turn
+includes jconfig.h and jmorecfg.h).  Optionally, jerror.h may be included
+if the application needs to reference individual JPEG error codes.  The
+other include files are intended for internal use and would not normally
+be included by an application program.  (cjpeg/djpeg/etc do use jinclude.h,
+since its function is to improve portability of the whole IJG distribution.
+Most other applications will directly include the system include files they
+want, and hence won't need jinclude.h.)
+
+
+C source code files:
+
+These files contain most of the functions intended to be called directly by
+an application program:
+
+jcapimin.c	Application program interface: core routines for compression.
+jcapistd.c	Application program interface: standard compression.
+jdapimin.c	Application program interface: core routines for decompression.
+jdapistd.c	Application program interface: standard decompression.
+jcomapi.c	Application program interface routines common to compression
+		and decompression.
+jcparam.c	Compression parameter setting helper routines.
+jctrans.c	API and library routines for transcoding compression.
+jdtrans.c	API and library routines for transcoding decompression.
+
+Compression side of the library:
+
+jcinit.c	Initialization: determines which other modules to use.
+jcmaster.c	Master control: setup and inter-pass sequencing logic.
+jcmainct.c	Main buffer controller (preprocessor => JPEG compressor).
+jcprepct.c	Preprocessor buffer controller.
+jccoefct.c	Buffer controller for DCT coefficient buffer.
+jccolor.c	Color space conversion.
+jcsample.c	Downsampling.
+jcdctmgr.c	DCT manager (DCT implementation selection & control).
+jfdctint.c	Forward DCT using slow-but-accurate integer method.
+jfdctfst.c	Forward DCT using faster, less accurate integer method.
+jfdctflt.c	Forward DCT using floating-point arithmetic.
+jchuff.c	Huffman entropy coding for sequential JPEG.
+jcphuff.c	Huffman entropy coding for progressive JPEG.
+jcmarker.c	JPEG marker writing.
+jdatadst.c	Data destination manager for stdio output.
+
+Decompression side of the library:
+
+jdmaster.c	Master control: determines which other modules to use.
+jdinput.c	Input controller: controls input processing modules.
+jdmainct.c	Main buffer controller (JPEG decompressor => postprocessor).
+jdcoefct.c	Buffer controller for DCT coefficient buffer.
+jdpostct.c	Postprocessor buffer controller.
+jdmarker.c	JPEG marker reading.
+jdhuff.c	Huffman entropy decoding for sequential JPEG.
+jdphuff.c	Huffman entropy decoding for progressive JPEG.
+jddctmgr.c	IDCT manager (IDCT implementation selection & control).
+jidctint.c	Inverse DCT using slow-but-accurate integer method.
+jidctfst.c	Inverse DCT using faster, less accurate integer method.
+jidctflt.c	Inverse DCT using floating-point arithmetic.
+jidctred.c	Inverse DCTs with reduced-size outputs.
+jdsample.c	Upsampling.
+jdcolor.c	Color space conversion.
+jdmerge.c	Merged upsampling/color conversion (faster, lower quality).
+jquant1.c	One-pass color quantization using a fixed-spacing colormap.
+jquant2.c	Two-pass color quantization using a custom-generated colormap.
+		Also handles one-pass quantization to an externally given map.
+jdatasrc.c	Data source manager for stdio input.
+
+Support files for both compression and decompression:
+
+jerror.c	Standard error handling routines (application replaceable).
+jmemmgr.c	System-independent (more or less) memory management code.
+jutils.c	Miscellaneous utility routines.
+
+jmemmgr.c relies on a system-dependent memory management module.  The IJG
+distribution includes the following implementations of the system-dependent
+module:
+
+jmemnobs.c	"No backing store": assumes adequate virtual memory exists.
+jmemansi.c	Makes temporary files with ANSI-standard routine tmpfile().
+jmemname.c	Makes temporary files with program-generated file names.
+jmemdos.c	Custom implementation for MS-DOS (16-bit environment only):
+		can use extended and expanded memory as well as temp files.
+jmemmac.c	Custom implementation for Apple Macintosh.
+
+Exactly one of the system-dependent modules should be configured into an
+installed JPEG library (see install.doc for hints about which one to use).
+On unusual systems you may find it worthwhile to make a special
+system-dependent memory manager.
+
+
+Non-C source code files:
+
+jmemdosa.asm	80x86 assembly code support for jmemdos.c; used only in
+		MS-DOS-specific configurations of the JPEG library.
+
+
+CJPEG/DJPEG/JPEGTRAN
+====================
+
+Include files:
+
+cdjpeg.h	Declarations shared by cjpeg/djpeg/jpegtran modules.
+cderror.h	Additional error and trace message codes for cjpeg et al.
+transupp.h	Declarations for jpegtran support routines in transupp.c.
+
+C source code files:
+
+cjpeg.c		Main program for cjpeg.
+djpeg.c		Main program for djpeg.
+jpegtran.c	Main program for jpegtran.
+cdjpeg.c	Utility routines used by all three programs.
+rdcolmap.c	Code to read a colormap file for djpeg's "-map" switch.
+rdswitch.c	Code to process some of cjpeg's more complex switches.
+		Also used by jpegtran.
+transupp.c	Support code for jpegtran: lossless image manipulations.
+
+Image file reader modules for cjpeg:
+
+rdbmp.c		BMP file input.
+rdgif.c		GIF file input (now just a stub).
+rdppm.c		PPM/PGM file input.
+rdrle.c		Utah RLE file input.
+rdtarga.c	Targa file input.
+
+Image file writer modules for djpeg:
+
+wrbmp.c		BMP file output.
+wrgif.c		GIF file output (a mere shadow of its former self).
+wrppm.c		PPM/PGM file output.
+wrrle.c		Utah RLE file output.
+wrtarga.c	Targa file output.
+
+
+RDJPGCOM/WRJPGCOM
+=================
+
+C source code files:
+
+rdjpgcom.c	Stand-alone rdjpgcom application.
+wrjpgcom.c	Stand-alone wrjpgcom application.
+
+These programs do not depend on the IJG library.  They do use
+jconfig.h and jinclude.h, only to improve portability.
+
+
+ADDITIONAL FILES
+================
+
+Documentation (see README for a guide to the documentation files):
+
+README		Master documentation file.
+*.doc		Other documentation files.
+*.1		Documentation in Unix man page format.
+change.log	Version-to-version change highlights.
+example.c	Sample code for calling JPEG library.
+
+Configuration/installation files and programs (see install.doc for more info):
+
+configure	Unix shell script to perform automatic configuration.
+ltconfig	Support scripts for configure (from GNU libtool).
+ltmain.sh
+config.guess
+config.sub
+install-sh	Install shell script for those Unix systems lacking one.
+ckconfig.c	Program to generate jconfig.h on non-Unix systems.
+jconfig.doc	Template for making jconfig.h by hand.
+makefile.*	Sample makefiles for particular systems.
+jconfig.*	Sample jconfig.h for particular systems.
+ansi2knr.c	De-ANSIfier for pre-ANSI C compilers (courtesy of
+		L. Peter Deutsch and Aladdin Enterprises).
+
+Test files (see install.doc for test procedure):
+
+test*.*		Source and comparison files for confidence test.
+		These are binary image files, NOT text files.

+ 250 - 0
engine/lib/ljpeg/extras/install-sh

@@ -0,0 +1,250 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission.  M.I.T. makes no representations about the
+# suitability of this software for any purpose.  It is provided "as is"
+# without express or implied warranty.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0

+ 1063 - 0
engine/lib/ljpeg/extras/install.doc

@@ -0,0 +1,1063 @@
+INSTALLATION INSTRUCTIONS for the Independent JPEG Group's JPEG software
+
+Copyright (C) 1991-1998, Thomas G. Lane.
+This file is part of the Independent JPEG Group's software.
+For conditions of distribution and use, see the accompanying README file.
+
+
+This file explains how to configure and install the IJG software.  We have
+tried to make this software extremely portable and flexible, so that it can be
+adapted to almost any environment.  The downside of this decision is that the
+installation process is complicated.  We have provided shortcuts to simplify
+the task on common systems.  But in any case, you will need at least a little
+familiarity with C programming and program build procedures for your system.
+
+If you are only using this software as part of a larger program, the larger
+program's installation procedure may take care of configuring the IJG code.
+For example, Ghostscript's installation script will configure the IJG code.
+You don't need to read this file if you just want to compile Ghostscript.
+
+If you are on a Unix machine, you may not need to read this file at all.
+Try doing
+	./configure
+	make
+	make test
+If that doesn't complain, do
+	make install
+(better do "make -n install" first to see if the makefile will put the files
+where you want them).  Read further if you run into snags or want to customize
+the code for your system.
+
+
+TABLE OF CONTENTS
+-----------------
+
+Before you start
+Configuring the software:
+	using the automatic "configure" script
+	using one of the supplied jconfig and makefile files
+	by hand
+Building the software
+Testing the software
+Installing the software
+Optional stuff
+Optimization
+Hints for specific systems
+
+
+BEFORE YOU START
+================
+
+Before installing the software you must unpack the distributed source code.
+Since you are reading this file, you have probably already succeeded in this
+task.  However, there is a potential for error if you needed to convert the
+files to the local standard text file format (for example, if you are on
+MS-DOS you may have converted LF end-of-line to CR/LF).  You must apply
+such conversion to all the files EXCEPT those whose names begin with "test".
+The test files contain binary data; if you change them in any way then the
+self-test will give bad results.
+
+Please check the last section of this file to see if there are hints for the
+specific machine or compiler you are using.
+
+
+CONFIGURING THE SOFTWARE
+========================
+
+To configure the IJG code for your system, you need to create two files:
+  * jconfig.h: contains values for system-dependent #define symbols.
+  * Makefile: controls the compilation process.
+(On a non-Unix machine, you may create "project files" or some other
+substitute for a Makefile.  jconfig.h is needed in any environment.)
+
+We provide three different ways to generate these files:
+  * On a Unix system, you can just run the "configure" script.
+  * We provide sample jconfig files and makefiles for popular machines;
+    if your machine matches one of the samples, just copy the right sample
+    files to jconfig.h and Makefile.
+  * If all else fails, read the instructions below and make your own files.
+
+
+Configuring the software using the automatic "configure" script
+---------------------------------------------------------------
+
+If you are on a Unix machine, you can just type
+	./configure
+and let the configure script construct appropriate configuration files.
+If you're using "csh" on an old version of System V, you might need to type
+	sh configure
+instead to prevent csh from trying to execute configure itself.
+Expect configure to run for a few minutes, particularly on slower machines;
+it works by compiling a series of test programs.
+
+Configure was created with GNU Autoconf and it follows the usual conventions
+for GNU configure scripts.  It makes a few assumptions that you may want to
+override.  You can do this by providing optional switches to configure:
+
+* If you want to build libjpeg as a shared library, say
+	./configure --enable-shared
+To get both shared and static libraries, say
+	./configure --enable-shared --enable-static
+Note that these switches invoke GNU libtool to take care of system-dependent
+shared library building methods.  If things don't work this way, please try
+running configure without either switch; that should build a static library
+without using libtool.  If that works, your problem is probably with libtool
+not with the IJG code.  libtool is fairly new and doesn't support all flavors
+of Unix yet.  (You might be able to find a newer version of libtool than the
+one included with libjpeg; see ftp.gnu.org.  Report libtool problems to
[email protected].)
+
+* Configure will use gcc (GNU C compiler) if it's available, otherwise cc.
+To force a particular compiler to be selected, use the CC option, for example
+	./configure CC='cc'
+The same method can be used to include any unusual compiler switches.
+For example, on HP-UX you probably want to say
+	./configure CC='cc -Aa'
+to get HP's compiler to run in ANSI mode.
+
+* The default CFLAGS setting is "-O" for non-gcc compilers, "-O2" for gcc.
+You can override this by saying, for example,
+	./configure CFLAGS='-g'
+if you want to compile with debugging support.
+
+* Configure will set up the makefile so that "make install" will install files
+into /usr/local/bin, /usr/local/man, etc.  You can specify an installation
+prefix other than "/usr/local" by giving configure the option "--prefix=PATH".
+
+* If you don't have a lot of swap space, you may need to enable the IJG
+software's internal virtual memory mechanism.  To do this, give the option
+"--enable-maxmem=N" where N is the default maxmemory limit in megabytes.
+This is discussed in more detail under "Selecting a memory manager", below.
+You probably don't need to worry about this on reasonably-sized Unix machines,
+unless you plan to process very large images.
+
+Configure has some other features that are useful if you are cross-compiling
+or working in a network of multiple machine types; but if you need those
+features, you probably already know how to use them.
+
+
+Configuring the software using one of the supplied jconfig and makefile files
+-----------------------------------------------------------------------------
+
+If you have one of these systems, you can just use the provided configuration
+files:
+
+Makefile	jconfig file	System and/or compiler
+
+makefile.manx	jconfig.manx	Amiga, Manx Aztec C
+makefile.sas	jconfig.sas	Amiga, SAS C
+makeproj.mac	jconfig.mac	Apple Macintosh, Metrowerks CodeWarrior
+mak*jpeg.st	jconfig.st	Atari ST/STE/TT, Pure C or Turbo C
+makefile.bcc	jconfig.bcc	MS-DOS or OS/2, Borland C
+makefile.dj	jconfig.dj	MS-DOS, DJGPP (Delorie's port of GNU C)
+makefile.mc6	jconfig.mc6	MS-DOS, Microsoft C (16-bit only)
+makefile.wat	jconfig.wat	MS-DOS, OS/2, or Windows NT, Watcom C
+makefile.vc	jconfig.vc	Windows NT/95, MS Visual C++
+make*.ds	jconfig.vc	Windows NT/95, MS Developer Studio
+makefile.mms	jconfig.vms	Digital VMS, with MMS software
+makefile.vms	jconfig.vms	Digital VMS, without MMS software
+
+Copy the proper jconfig file to jconfig.h and the makefile to Makefile (or
+whatever your system uses as the standard makefile name).  For more info see
+the appropriate system-specific hints section near the end of this file.
+
+
+Configuring the software by hand
+--------------------------------
+
+First, generate a jconfig.h file.  If you are moderately familiar with C,
+the comments in jconfig.doc should be enough information to do this; just
+copy jconfig.doc to jconfig.h and edit it appropriately.  Otherwise, you may
+prefer to use the ckconfig.c program.  You will need to compile and execute
+ckconfig.c by hand --- we hope you know at least enough to do that.
+ckconfig.c may not compile the first try (in fact, the whole idea is for it
+to fail if anything is going to).  If you get compile errors, fix them by
+editing ckconfig.c according to the directions given in ckconfig.c.  Once
+you get it to run, it will write a suitable jconfig.h file, and will also
+print out some advice about which makefile to use.
+
+You may also want to look at the canned jconfig files, if there is one for a
+system similar to yours.
+
+Second, select a makefile and copy it to Makefile (or whatever your system
+uses as the standard makefile name).  The most generic makefiles we provide
+are
+	makefile.ansi:	if your C compiler supports function prototypes
+	makefile.unix:	if not.
+(You have function prototypes if ckconfig.c put "#define HAVE_PROTOTYPES"
+in jconfig.h.)  You may want to start from one of the other makefiles if
+there is one for a system similar to yours.
+
+Look over the selected Makefile and adjust options as needed.  In particular
+you may want to change the CC and CFLAGS definitions.  For instance, if you
+are using GCC, set CC=gcc.  If you had to use any compiler switches to get
+ckconfig.c to work, make sure the same switches are in CFLAGS.
+
+If you are on a system that doesn't use makefiles, you'll need to set up
+project files (or whatever you do use) to compile all the source files and
+link them into executable files cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom.
+See the file lists in any of the makefiles to find out which files go into
+each program.  Note that the provided makefiles all make a "library" file
+libjpeg first, but you don't have to do that if you don't want to; the file
+lists identify which source files are actually needed for compression,
+decompression, or both.  As a last resort, you can make a batch script that
+just compiles everything and links it all together; makefile.vms is an example
+of this (it's for VMS systems that have no make-like utility).
+
+Here are comments about some specific configuration decisions you'll
+need to make:
+
+Command line style
+------------------
+
+These programs can use a Unix-like command line style which supports
+redirection and piping, like this:
+	cjpeg inputfile >outputfile
+	cjpeg <inputfile >outputfile
+	source program | cjpeg >outputfile
+The simpler "two file" command line style is just
+	cjpeg inputfile outputfile
+You may prefer the two-file style, particularly if you don't have pipes.
+
+You MUST use two-file style on any system that doesn't cope well with binary
+data fed through stdin/stdout; this is true for some MS-DOS compilers, for
+example.  If you're not on a Unix system, it's safest to assume you need
+two-file style.  (But if your compiler provides either the Posix-standard
+fdopen() library routine or a Microsoft-compatible setmode() routine, you
+can safely use the Unix command line style, by defining USE_FDOPEN or
+USE_SETMODE respectively.)
+
+To use the two-file style, make jconfig.h say "#define TWO_FILE_COMMANDLINE".
+
+Selecting a memory manager
+--------------------------
+
+The IJG code is capable of working on images that are too big to fit in main
+memory; data is swapped out to temporary files as necessary.  However, the
+code to do this is rather system-dependent.  We provide five different
+memory managers:
+
+* jmemansi.c	This version uses the ANSI-standard library routine tmpfile(),
+		which not all non-ANSI systems have.  On some systems
+		tmpfile() may put the temporary file in a non-optimal
+		location; if you don't like what it does, use jmemname.c.
+
+* jmemname.c	This version creates named temporary files.  For anything
+		except a Unix machine, you'll need to configure the
+		select_file_name() routine appropriately; see the comments
+		near the head of jmemname.c.  If you use this version, define
+		NEED_SIGNAL_CATCHER in jconfig.h to make sure the temp files
+		are removed if the program is aborted.
+
+* jmemnobs.c	(That stands for No Backing Store :-).)  This will compile on
+		almost any system, but it assumes you have enough main memory
+		or virtual memory to hold the biggest images you work with.
+
+* jmemdos.c	This should be used with most 16-bit MS-DOS compilers.
+		See the system-specific notes about MS-DOS for more info.
+		IMPORTANT: if you use this, define USE_MSDOS_MEMMGR in
+		jconfig.h, and include the assembly file jmemdosa.asm in the
+		programs.  The supplied makefiles and jconfig files for
+		16-bit MS-DOS compilers already do both.
+
+* jmemmac.c	Custom version for Apple Macintosh; see the system-specific
+		notes for Macintosh for more info.
+
+To use a particular memory manager, change the SYSDEPMEM variable in your
+makefile to equal the corresponding object file name (for example, jmemansi.o
+or jmemansi.obj for jmemansi.c).
+
+If you have plenty of (real or virtual) main memory, just use jmemnobs.c.
+"Plenty" means about ten bytes for every pixel in the largest images
+you plan to process, so a lot of systems don't meet this criterion.
+If yours doesn't, try jmemansi.c first.  If that doesn't compile, you'll have
+to use jmemname.c; be sure to adjust select_file_name() for local conditions.
+You may also need to change unlink() to remove() in close_backing_store().
+
+Except with jmemnobs.c or jmemmac.c, you need to adjust the DEFAULT_MAX_MEM
+setting to a reasonable value for your system (either by adding a #define for
+DEFAULT_MAX_MEM to jconfig.h, or by adding a -D switch to the Makefile).
+This value limits the amount of data space the program will attempt to
+allocate.  Code and static data space isn't counted, so the actual memory
+needs for cjpeg or djpeg are typically 100 to 150Kb more than the max-memory
+setting.  Larger max-memory settings reduce the amount of I/O needed to
+process a large image, but too large a value can result in "insufficient
+memory" failures.  On most Unix machines (and other systems with virtual
+memory), just set DEFAULT_MAX_MEM to several million and forget it.  At the
+other end of the spectrum, for MS-DOS machines you probably can't go much
+above 300K to 400K.  (On MS-DOS the value refers to conventional memory only.
+Extended/expanded memory is handled separately by jmemdos.c.)
+
+
+BUILDING THE SOFTWARE
+=====================
+
+Now you should be able to compile the software.  Just say "make" (or
+whatever's necessary to start the compilation).  Have a cup of coffee.
+
+Here are some things that could go wrong:
+
+If your compiler complains about undefined structures, you should be able to
+shut it up by putting "#define INCOMPLETE_TYPES_BROKEN" in jconfig.h.
+
+If you have trouble with missing system include files or inclusion of the
+wrong ones, read jinclude.h.  This shouldn't happen if you used configure
+or ckconfig.c to set up jconfig.h.
+
+There are a fair number of routines that do not use all of their parameters;
+some compilers will issue warnings about this, which you can ignore.  There
+are also a few configuration checks that may give "unreachable code" warnings.
+Any other warning deserves investigation.
+
+If you don't have a getenv() library routine, define NO_GETENV.
+
+Also see the system-specific hints, below.
+
+
+TESTING THE SOFTWARE
+====================
+
+As a quick test of functionality we've included a small sample image in
+several forms:
+	testorig.jpg	Starting point for the djpeg tests.
+	testimg.ppm	The output of djpeg testorig.jpg
+	testimg.bmp	The output of djpeg -bmp -colors 256 testorig.jpg
+	testimg.jpg	The output of cjpeg testimg.ppm
+	testprog.jpg	Progressive-mode equivalent of testorig.jpg.
+	testimgp.jpg	The output of cjpeg -progressive -optimize testimg.ppm
+(The first- and second-generation .jpg files aren't identical since JPEG is
+lossy.)  If you can generate duplicates of the testimg* files then you
+probably have working programs.
+
+With most of the makefiles, "make test" will perform the necessary
+comparisons.
+
+If you're using a makefile that doesn't provide the test option, run djpeg
+and cjpeg by hand and compare the output files to testimg* with whatever
+binary file comparison tool you have.  The files should be bit-for-bit
+identical.
+
+If the programs complain "MAX_ALLOC_CHUNK is wrong, please fix", then you
+need to reduce MAX_ALLOC_CHUNK to a value that fits in type size_t.
+Try adding "#define MAX_ALLOC_CHUNK 65520L" to jconfig.h.  A less likely
+configuration error is "ALIGN_TYPE is wrong, please fix": defining ALIGN_TYPE
+as long should take care of that one.
+
+If the cjpeg test run fails with "Missing Huffman code table entry", it's a
+good bet that you needed to define RIGHT_SHIFT_IS_UNSIGNED.  Go back to the
+configuration step and run ckconfig.c.  (This is a good plan for any other
+test failure, too.)
+
+If you are using Unix (one-file) command line style on a non-Unix system,
+it's a good idea to check that binary I/O through stdin/stdout actually
+works.  You should get the same results from "djpeg <testorig.jpg >out.ppm"
+as from "djpeg -outfile out.ppm testorig.jpg".  Note that the makefiles all
+use the latter style and therefore do not exercise stdin/stdout!  If this
+check fails, try recompiling with USE_SETMODE or USE_FDOPEN defined.
+If it still doesn't work, better use two-file style.
+
+If you chose a memory manager other than jmemnobs.c, you should test that
+temporary-file usage works.  Try "djpeg -bmp -colors 256 -max 0 testorig.jpg"
+and make sure its output matches testimg.bmp.  If you have any really large
+images handy, try compressing them with -optimize and/or decompressing with
+-colors 256 to make sure your DEFAULT_MAX_MEM setting is not too large.
+
+NOTE: this is far from an exhaustive test of the JPEG software; some modules,
+such as 1-pass color quantization, are not exercised at all.  It's just a
+quick test to give you some confidence that you haven't missed something
+major.
+
+
+INSTALLING THE SOFTWARE
+=======================
+
+Once you're done with the above steps, you can install the software by
+copying the executable files (cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom)
+to wherever you normally install programs.  On Unix systems, you'll also want
+to put the man pages (cjpeg.1, djpeg.1, jpegtran.1, rdjpgcom.1, wrjpgcom.1)
+in the man-page directory.  The pre-fab makefiles don't support this step
+since there's such a wide variety of installation procedures on different
+systems.
+
+If you generated a Makefile with the "configure" script, you can just say
+	make install
+to install the programs and their man pages into the standard places.
+(You'll probably need to be root to do this.)  We recommend first saying
+	make -n install
+to see where configure thought the files should go.  You may need to edit
+the Makefile, particularly if your system's conventions for man page
+filenames don't match what configure expects.
+
+If you want to install the IJG library itself, for use in compiling other
+programs besides ours, then you need to put the four include files
+	jpeglib.h jerror.h jconfig.h jmorecfg.h
+into your include-file directory, and put the library file libjpeg.a
+(extension may vary depending on system) wherever library files go.
+If you generated a Makefile with "configure", it will do what it thinks
+is the right thing if you say
+	make install-lib
+
+
+OPTIONAL STUFF
+==============
+
+Progress monitor:
+
+If you like, you can #define PROGRESS_REPORT (in jconfig.h) to enable display
+of percent-done progress reports.  The routine provided in cdjpeg.c merely
+prints percentages to stderr, but you can customize it to do something
+fancier.
+
+Utah RLE file format support:
+
+We distribute the software with support for RLE image files (Utah Raster
+Toolkit format) disabled, because the RLE support won't compile without the
+Utah library.  If you have URT version 3.1 or later, you can enable RLE
+support as follows:
+	1.  #define RLE_SUPPORTED in jconfig.h.
+	2.  Add a -I option to CFLAGS in the Makefile for the directory
+	    containing the URT .h files (typically the "include"
+	    subdirectory of the URT distribution).
+	3.  Add -L... -lrle to LDLIBS in the Makefile, where ... specifies
+	    the directory containing the URT "librle.a" file (typically the
+	    "lib" subdirectory of the URT distribution).
+
+Support for 12-bit-deep pixel data:
+
+The JPEG standard allows either 8-bit or 12-bit data precision.  (For color,
+this means 8 or 12 bits per channel, of course.)  If you need to work with
+deeper than 8-bit data, you can compile the IJG code for 12-bit operation.
+To do so:
+  1. In jmorecfg.h, define BITS_IN_JSAMPLE as 12 rather than 8.
+  2. In jconfig.h, undefine BMP_SUPPORTED, RLE_SUPPORTED, and TARGA_SUPPORTED,
+     because the code for those formats doesn't handle 12-bit data and won't
+     even compile.  (The PPM code does work, as explained below.  The GIF
+     code works too; it scales 8-bit GIF data to and from 12-bit depth
+     automatically.)
+  3. Compile.  Don't expect "make test" to pass, since the supplied test
+     files are for 8-bit data.
+
+Currently, 12-bit support does not work on 16-bit-int machines.
+
+Note that a 12-bit version will not read 8-bit JPEG files, nor vice versa;
+so you'll want to keep around a regular 8-bit compilation as well.
+(Run-time selection of data depth, to allow a single copy that does both,
+is possible but would probably slow things down considerably; it's very low
+on our to-do list.)
+
+The PPM reader (rdppm.c) can read 12-bit data from either text-format or
+binary-format PPM and PGM files.  Binary-format PPM/PGM files which have a
+maxval greater than 255 are assumed to use 2 bytes per sample, LSB first
+(little-endian order).  As of early 1995, 2-byte binary format is not
+officially supported by the PBMPLUS library, but it is expected that a
+future release of PBMPLUS will support it.  Note that the PPM reader will
+read files of any maxval regardless of the BITS_IN_JSAMPLE setting; incoming
+data is automatically rescaled to either maxval=255 or maxval=4095 as
+appropriate for the cjpeg bit depth.
+
+The PPM writer (wrppm.c) will normally write 2-byte binary PPM or PGM
+format, maxval 4095, when compiled with BITS_IN_JSAMPLE=12.  Since this
+format is not yet widely supported, you can disable it by compiling wrppm.c
+with PPM_NORAWWORD defined; then the data is scaled down to 8 bits to make a
+standard 1-byte/sample PPM or PGM file.  (Yes, this means still another copy
+of djpeg to keep around.  But hopefully you won't need it for very long.
+Poskanzer's supposed to get that new PBMPLUS release out Real Soon Now.)
+
+Of course, if you are working with 12-bit data, you probably have it stored
+in some other, nonstandard format.  In that case you'll probably want to
+write your own I/O modules to read and write your format.
+
+Note that a 12-bit version of cjpeg always runs in "-optimize" mode, in
+order to generate valid Huffman tables.  This is necessary because our
+default Huffman tables only cover 8-bit data.
+
+Removing code:
+
+If you need to make a smaller version of the JPEG software, some optional
+functions can be removed at compile time.  See the xxx_SUPPORTED #defines in
+jconfig.h and jmorecfg.h.  If at all possible, we recommend that you leave in
+decoder support for all valid JPEG files, to ensure that you can read anyone's
+output.  Taking out support for image file formats that you don't use is the
+most painless way to make the programs smaller.  Another possibility is to
+remove some of the DCT methods: in particular, the "IFAST" method may not be
+enough faster than the others to be worth keeping on your machine.  (If you
+do remove ISLOW or IFAST, be sure to redefine JDCT_DEFAULT or JDCT_FASTEST
+to a supported method, by adding a #define in jconfig.h.)
+
+
+OPTIMIZATION
+============
+
+Unless you own a Cray, you'll probably be interested in making the JPEG
+software go as fast as possible.  This section covers some machine-dependent
+optimizations you may want to try.  We suggest that before trying any of
+this, you first get the basic installation to pass the self-test step.
+Repeat the self-test after any optimization to make sure that you haven't
+broken anything.
+
+The integer DCT routines perform a lot of multiplications.  These
+multiplications must yield 32-bit results, but none of their input values
+are more than 16 bits wide.  On many machines, notably the 680x0 and 80x86
+CPUs, a 16x16=>32 bit multiply instruction is faster than a full 32x32=>32
+bit multiply.  Unfortunately there is no portable way to specify such a
+multiplication in C, but some compilers can generate one when you use the
+right combination of casts.  See the MULTIPLYxxx macro definitions in
+jdct.h.  If your compiler makes "int" be 32 bits and "short" be 16 bits,
+defining SHORTxSHORT_32 is fairly likely to work.  When experimenting with
+alternate definitions, be sure to test not only whether the code still works
+(use the self-test), but also whether it is actually faster --- on some
+compilers, alternate definitions may compute the right answer, yet be slower
+than the default.  Timing cjpeg on a large PGM (grayscale) input file is the
+best way to check this, as the DCT will be the largest fraction of the runtime
+in that mode.  (Note: some of the distributed compiler-specific jconfig files
+already contain #define switches to select appropriate MULTIPLYxxx
+definitions.)
+
+If your machine has sufficiently fast floating point hardware, you may find
+that the float DCT method is faster than the integer DCT methods, even
+after tweaking the integer multiply macros.  In that case you may want to
+make the float DCT be the default method.  (The only objection to this is
+that float DCT results may vary slightly across machines.)  To do that, add
+"#define JDCT_DEFAULT JDCT_FLOAT" to jconfig.h.  Even if you don't change
+the default, you should redefine JDCT_FASTEST, which is the method selected
+by djpeg's -fast switch.  Don't forget to update the documentation files
+(usage.doc and/or cjpeg.1, djpeg.1) to agree with what you've done.
+
+If access to "short" arrays is slow on your machine, it may be a win to
+define type JCOEF as int rather than short.  This will cost a good deal of
+memory though, particularly in some multi-pass modes, so don't do it unless
+you have memory to burn and short is REALLY slow.
+
+If your compiler can compile function calls in-line, make sure the INLINE
+macro in jmorecfg.h is defined as the keyword that marks a function
+inline-able.  Some compilers have a switch that tells the compiler to inline
+any function it thinks is profitable (e.g., -finline-functions for gcc).
+Enabling such a switch is likely to make the compiled code bigger but faster.
+
+In general, it's worth trying the maximum optimization level of your compiler,
+and experimenting with any optional optimizations such as loop unrolling.
+(Unfortunately, far too many compilers have optimizer bugs ... be prepared to
+back off if the code fails self-test.)  If you do any experimentation along
+these lines, please report the optimal settings to [email protected] so
+we can mention them in future releases.  Be sure to specify your machine and
+compiler version.
+
+
+HINTS FOR SPECIFIC SYSTEMS
+==========================
+
+We welcome reports on changes needed for systems not mentioned here.  Submit
+'em to [email protected].  Also, if configure or ckconfig.c is wrong
+about how to configure the JPEG software for your system, please let us know.
+
+
+Acorn RISC OS:
+
+(Thanks to Simon Middleton for these hints on compiling with Desktop C.)
+After renaming the files according to Acorn conventions, take a copy of
+makefile.ansi, change all occurrences of 'libjpeg.a' to 'libjpeg.o' and
+change these definitions as indicated:
+
+CFLAGS= -throwback -IC: -Wn
+LDLIBS=C:o.Stubs
+SYSDEPMEM=jmemansi.o
+LN=Link
+AR=LibFile -c -o
+
+Also add a new line '.c.o:; $(cc) $< $(cflags) -c -o $@'.  Remove the
+lines '$(RM) libjpeg.o' and '$(AR2) libjpeg.o' and the 'jconfig.h'
+dependency section.
+
+Copy jconfig.doc to jconfig.h.  Edit jconfig.h to define TWO_FILE_COMMANDLINE
+and CHAR_IS_UNSIGNED.
+
+Run the makefile using !AMU not !Make.  If you want to use the 'clean' and
+'test' makefile entries then you will have to fiddle with the syntax a bit
+and rename the test files.
+
+
+Amiga:
+
+SAS C 6.50 reportedly is too buggy to compile the IJG code properly.
+A patch to update to 6.51 is available from SAS or AmiNet FTP sites.
+
+The supplied config files are set up to use jmemname.c as the memory
+manager, with temporary files being created on the device named by
+"JPEGTMP:".
+
+
+Atari ST/STE/TT:
+ 
+Copy the project files makcjpeg.st, makdjpeg.st, maktjpeg.st, and makljpeg.st
+to cjpeg.prj, djpeg.prj, jpegtran.prj, and libjpeg.prj respectively.  The
+project files should work as-is with Pure C.  For Turbo C, change library
+filenames "pc..." to "tc..." in each project file.  Note that libjpeg.prj
+selects jmemansi.c as the recommended memory manager.  You'll probably want to
+adjust the DEFAULT_MAX_MEM setting --- you want it to be a couple hundred K
+less than your normal free memory.  Put "#define DEFAULT_MAX_MEM nnnn" into
+jconfig.h to do this.
+
+To use the 68881/68882 coprocessor for the floating point DCT, add the
+compiler option "-8" to the project files and replace pcfltlib.lib with
+pc881lib.lib in cjpeg.prj and djpeg.prj.  Or if you don't have a
+coprocessor, you may prefer to remove the float DCT code by undefining
+DCT_FLOAT_SUPPORTED in jmorecfg.h (since without a coprocessor, the float
+code will be too slow to be useful).  In that case, you can delete
+pcfltlib.lib from the project files.
+
+Note that you must make libjpeg.lib before making cjpeg.ttp, djpeg.ttp,
+or jpegtran.ttp.  You'll have to perform the self-test by hand.
+
+We haven't bothered to include project files for rdjpgcom and wrjpgcom.
+Those source files should just be compiled by themselves; they don't
+depend on the JPEG library.
+
+There is a bug in some older versions of the Turbo C library which causes the
+space used by temporary files created with "tmpfile()" not to be freed after
+an abnormal program exit.  If you check your disk afterwards, you will find
+cluster chains that are allocated but not used by a file.  This should not
+happen in cjpeg/djpeg/jpegtran, since we enable a signal catcher to explicitly
+close temp files before exiting.  But if you use the JPEG library with your
+own code, be sure to supply a signal catcher, or else use a different
+system-dependent memory manager.
+
+
+Cray:
+
+Should you be so fortunate as to be running JPEG on a Cray YMP, there is a
+compiler bug in old versions of Cray's Standard C (prior to 3.1).  If you
+still have an old compiler, you'll need to insert a line reading
+"#pragma novector" just before the loop	
+    for (i = 1; i <= (int) htbl->bits[l]; i++)
+      huffsize[p++] = (char) l;
+in fix_huff_tbl (in V5beta1, line 204 of jchuff.c and line 176 of jdhuff.c).
+[This bug may or may not still occur with the current IJG code, but it's
+probably a dead issue anyway...]
+
+
+HP-UX:
+
+If you have HP-UX 7.05 or later with the "software development" C compiler,
+you should run the compiler in ANSI mode.  If using the configure script,
+say
+	./configure CC='cc -Aa'
+(or -Ae if you prefer).  If configuring by hand, use makefile.ansi and add
+"-Aa" to the CFLAGS line in the makefile.
+
+If you have a pre-7.05 system, or if you are using the non-ANSI C compiler
+delivered with a minimum HP-UX system, then you must use makefile.unix
+(and do NOT add -Aa); or just run configure without the CC option.
+
+On HP 9000 series 800 machines, the HP C compiler is buggy in revisions prior
+to A.08.07.  If you get complaints about "not a typedef name", you'll have to
+use makefile.unix, or run configure without the CC option.
+
+
+Macintosh, generic comments:
+
+The supplied user-interface files (cjpeg.c, djpeg.c, etc) are set up to
+provide a Unix-style command line interface.  You can use this interface on
+the Mac by means of the ccommand() library routine provided by Metrowerks
+CodeWarrior or Think C.  This is only appropriate for testing the library,
+however; to make a user-friendly equivalent of cjpeg/djpeg you'd really want
+to develop a Mac-style user interface.  There isn't a complete example
+available at the moment, but there are some helpful starting points:
+1. Sam Bushell's free "To JPEG" applet provides drag-and-drop conversion to
+JPEG under System 7 and later.  This only illustrates how to use the
+compression half of the library, but it does a very nice job of that part.
+The CodeWarrior source code is available from http://www.pobox.com/~jsam.
+2. Jim Brunner prepared a Mac-style user interface for both compression and
+decompression.  Unfortunately, it hasn't been updated since IJG v4, and
+the library's API has changed considerably since then.  Still it may be of
+some help, particularly as a guide to compiling the IJG code under Think C.
+Jim's code is available from the Info-Mac archives, at sumex-aim.stanford.edu
+or mirrors thereof; see file /info-mac/dev/src/jpeg-convert-c.hqx.
+
+jmemmac.c is the recommended memory manager back end for Macintosh.  It uses
+NewPtr/DisposePtr instead of malloc/free, and has a Mac-specific
+implementation of jpeg_mem_available().  It also creates temporary files that
+follow Mac conventions.  (That part of the code relies on System-7-or-later OS
+functions.  See the comments in jmemmac.c if you need to run it on System 6.)
+NOTE that USE_MAC_MEMMGR must be defined in jconfig.h to use jmemmac.c.
+
+You can also use jmemnobs.c, if you don't care about handling images larger
+than available memory.  If you use any memory manager back end other than
+jmemmac.c, we recommend replacing "malloc" and "free" by "NewPtr" and
+"DisposePtr", because Mac C libraries often have peculiar implementations of
+malloc/free.  (For instance, free() may not return the freed space to the
+Mac Memory Manager.  This is undesirable for the IJG code because jmemmgr.c
+already clumps space requests.)
+
+
+Macintosh, Metrowerks CodeWarrior:
+
+The Unix-command-line-style interface can be used by defining USE_CCOMMAND.
+You'll also need to define TWO_FILE_COMMANDLINE to avoid stdin/stdout.
+This means that when using the cjpeg/djpeg programs, you'll have to type the
+input and output file names in the "Arguments" text-edit box, rather than
+using the file radio buttons.  (Perhaps USE_FDOPEN or USE_SETMODE would
+eliminate the problem, but I haven't heard from anyone who's tried it.)
+
+On 680x0 Macs, Metrowerks defines type "double" as a 10-byte IEEE extended
+float.  jmemmgr.c won't like this: it wants sizeof(ALIGN_TYPE) to be a power
+of 2.  Add "#define ALIGN_TYPE long" to jconfig.h to eliminate the complaint.
+
+The supplied configuration file jconfig.mac can be used for your jconfig.h;
+it includes all the recommended symbol definitions.  If you have AppleScript
+installed, you can run the supplied script makeproj.mac to create CodeWarrior
+project files for the library and the testbed applications, then build the
+library and applications.  (Thanks to Dan Sears and Don Agro for this nifty
+hack, which saves us from trying to maintain CodeWarrior project files as part
+of the IJG distribution...)
+
+
+Macintosh, Think C:
+
+The documentation in Jim Brunner's "JPEG Convert" source code (see above)
+includes detailed build instructions for Think C; it's probably somewhat
+out of date for the current release, but may be helpful.
+
+If you want to build the minimal command line version, proceed as follows.
+You'll have to prepare project files for the programs; we don't include any
+in the distribution since they are not text files.  Use the file lists in
+any of the supplied makefiles as a guide.  Also add the ANSI and Unix C
+libraries in a separate segment.  You may need to divide the JPEG files into
+more than one segment; we recommend dividing compression and decompression
+modules.  Define USE_CCOMMAND in jconfig.h so that the ccommand() routine is
+called.  You must also define TWO_FILE_COMMANDLINE because stdin/stdout
+don't handle binary data correctly.
+
+On 680x0 Macs, Think C defines type "double" as a 12-byte IEEE extended float.
+jmemmgr.c won't like this: it wants sizeof(ALIGN_TYPE) to be a power of 2.
+Add "#define ALIGN_TYPE long" to jconfig.h to eliminate the complaint.
+
+jconfig.mac should work as a jconfig.h configuration file for Think C,
+but the makeproj.mac AppleScript script is specific to CodeWarrior.  Sorry.
+
+
+MIPS R3000:
+
+MIPS's cc version 1.31 has a rather nasty optimization bug.  Don't use -O
+if you have that compiler version.  (Use "cc -V" to check the version.)
+Note that the R3000 chip is found in workstations from DEC and others.
+
+
+MS-DOS, generic comments for 16-bit compilers:
+
+The IJG code is designed to work well in 80x86 "small" or "medium" memory
+models (i.e., data pointers are 16 bits unless explicitly declared "far";
+code pointers can be either size).  You may be able to use small model to
+compile cjpeg or djpeg by itself, but you will probably have to use medium
+model for any larger application.  This won't make much difference in
+performance.  You *will* take a noticeable performance hit if you use a
+large-data memory model, and you should avoid "huge" model if at all
+possible.  Be sure that NEED_FAR_POINTERS is defined in jconfig.h if you use
+a small-data memory model; be sure it is NOT defined if you use a large-data
+model.  (The supplied makefiles and jconfig files for Borland and Microsoft C
+compile in medium model and define NEED_FAR_POINTERS.)
+
+The DOS-specific memory manager, jmemdos.c, should be used if possible.
+It needs some assembly-code routines which are in jmemdosa.asm; make sure
+your makefile assembles that file and includes it in the library.  If you
+don't have a suitable assembler, you can get pre-assembled object files for
+jmemdosa by FTP from ftp.uu.net:/graphics/jpeg/jdosaobj.zip.  (DOS-oriented
+distributions of the IJG source code often include these object files.)
+
+When using jmemdos.c, jconfig.h must define USE_MSDOS_MEMMGR and must set
+MAX_ALLOC_CHUNK to less than 64K (65520L is a typical value).  If your
+C library's far-heap malloc() can't allocate blocks that large, reduce
+MAX_ALLOC_CHUNK to whatever it can handle.
+
+If you can't use jmemdos.c for some reason --- for example, because you
+don't have an assembler to assemble jmemdosa.asm --- you'll have to fall
+back to jmemansi.c or jmemname.c.  You'll probably still need to set
+MAX_ALLOC_CHUNK in jconfig.h, because most DOS C libraries won't malloc()
+more than 64K at a time.  IMPORTANT: if you use jmemansi.c or jmemname.c,
+you will have to compile in a large-data memory model in order to get the
+right stdio library.  Too bad.
+
+wrjpgcom needs to be compiled in large model, because it malloc()s a 64KB
+work area to hold the comment text.  If your C library's malloc can't
+handle that, reduce MAX_COM_LENGTH as necessary in wrjpgcom.c.
+
+Most MS-DOS compilers treat stdin/stdout as text files, so you must use
+two-file command line style.  But if your compiler has either fdopen() or
+setmode(), you can use one-file style if you like.  To do this, define
+USE_SETMODE or USE_FDOPEN so that stdin/stdout will be set to binary mode.
+(USE_SETMODE seems to work with more DOS compilers than USE_FDOPEN.)  You
+should test that I/O through stdin/stdout produces the same results as I/O
+to explicitly named files... the "make test" procedures in the supplied
+makefiles do NOT use stdin/stdout.
+
+
+MS-DOS, generic comments for 32-bit compilers:
+
+None of the above comments about memory models apply if you are using a
+32-bit flat-memory-space environment, such as DJGPP or Watcom C.  (And you
+should use one if you have it, as performance will be much better than
+8086-compatible code!)  For flat-memory-space compilers, do NOT define
+NEED_FAR_POINTERS, and do NOT use jmemdos.c.  Use jmemnobs.c if the
+environment supplies adequate virtual memory, otherwise use jmemansi.c or
+jmemname.c.
+
+You'll still need to be careful about binary I/O through stdin/stdout.
+See the last paragraph of the previous section.
+
+
+MS-DOS, Borland C:
+
+Be sure to convert all the source files to DOS text format (CR/LF newlines).
+Although Borland C will often work OK with unmodified Unix (LF newlines)
+source files, sometimes it will give bogus compile errors.
+"Illegal character '#'" is the most common such error.  (This is true with
+Borland C 3.1, but perhaps is fixed in newer releases.)
+
+If you want one-file command line style, just undefine TWO_FILE_COMMANDLINE.
+jconfig.bcc already includes #define USE_SETMODE to make this work.
+(fdopen does not work correctly.)
+
+
+MS-DOS, Microsoft C:
+
+makefile.mc6 works with Microsoft C, DOS Visual C++, etc.  It should only
+be used if you want to build a 16-bit (small or medium memory model) program.
+
+If you want one-file command line style, just undefine TWO_FILE_COMMANDLINE.
+jconfig.mc6 already includes #define USE_SETMODE to make this work.
+(fdopen does not work correctly.)
+
+Note that this makefile assumes that the working copy of itself is called
+"makefile".  If you want to call it something else, say "makefile.mak",
+be sure to adjust the dependency line that reads "$(RFILE) : makefile".
+Otherwise the make will fail because it doesn't know how to create "makefile".
+Worse, some releases of Microsoft's make utilities give an incorrect error
+message in this situation.
+
+Old versions of MS C fail with an "out of macro expansion space" error
+because they can't cope with the macro TRACEMS8 (defined in jerror.h).
+If this happens to you, the easiest solution is to change TRACEMS8 to
+expand to nothing.  You'll lose the ability to dump out JPEG coefficient
+tables with djpeg -debug -debug, but at least you can compile.
+
+Original MS C 6.0 is very buggy; it compiles incorrect code unless you turn
+off optimization entirely (remove -O from CFLAGS).  6.00A is better, but it
+still generates bad code if you enable loop optimizations (-Ol or -Ox).
+
+MS C 8.0 crashes when compiling jquant1.c with optimization switch /Oo ...
+which is on by default.  To work around this bug, compile that one file
+with /Oo-.
+
+
+Microsoft Windows (all versions), generic comments:
+
+Some Windows system include files define typedef boolean as "unsigned char".
+The IJG code also defines typedef boolean, but we make it "int" by default.
+This doesn't affect the IJG programs because we don't import those Windows
+include files.  But if you use the JPEG library in your own program, and some
+of your program's files import one definition of boolean while some import the
+other, you can get all sorts of mysterious problems.  A good preventive step
+is to make the IJG library use "unsigned char" for boolean.  To do that,
+add something like this to your jconfig.h file:
+	/* Define "boolean" as unsigned char, not int, per Windows custom */
+	#ifndef __RPCNDR_H__	/* don't conflict if rpcndr.h already read */
+	typedef unsigned char boolean;
+	#endif
+	#define HAVE_BOOLEAN	/* prevent jmorecfg.h from redefining it */
+(This is already in jconfig.vc, by the way.)
+
+windef.h contains the declarations
+	#define far
+	#define FAR far
+Since jmorecfg.h tries to define FAR as empty, you may get a compiler
+warning if you include both jpeglib.h and windef.h (which windows.h
+includes).  To suppress the warning, you can put "#ifndef FAR"/"#endif"
+around the line "#define FAR" in jmorecfg.h.
+
+When using the library in a Windows application, you will almost certainly
+want to modify or replace the error handler module jerror.c, since our
+default error handler does a couple of inappropriate things:
+  1. it tries to write error and warning messages on stderr;
+  2. in event of a fatal error, it exits by calling exit().
+
+A simple stopgap solution for problem 1 is to replace the line
+	fprintf(stderr, "%s\n", buffer);
+(in output_message in jerror.c) with
+	MessageBox(GetActiveWindow(),buffer,"JPEG Error",MB_OK|MB_ICONERROR);
+It's highly recommended that you at least do that much, since otherwise
+error messages will disappear into nowhere.  (Beginning with IJG v6b, this
+code is already present in jerror.c; just define USE_WINDOWS_MESSAGEBOX in
+jconfig.h to enable it.)
+
+The proper solution for problem 2 is to return control to your calling
+application after a library error.  This can be done with the setjmp/longjmp
+technique discussed in libjpeg.doc and illustrated in example.c.  (NOTE:
+some older Windows C compilers provide versions of setjmp/longjmp that
+don't actually work under Windows.  You may need to use the Windows system
+functions Catch and Throw instead.)
+
+The recommended memory manager under Windows is jmemnobs.c; in other words,
+let Windows do any virtual memory management needed.  You should NOT use
+jmemdos.c nor jmemdosa.asm under Windows.
+
+For Windows 3.1, we recommend compiling in medium or large memory model;
+for newer Windows versions, use a 32-bit flat memory model.  (See the MS-DOS
+sections above for more info about memory models.)  In the 16-bit memory
+models only, you'll need to put
+	#define MAX_ALLOC_CHUNK 65520L	/* Maximum request to malloc() */
+into jconfig.h to limit allocation chunks to 64Kb.  (Without that, you'd
+have to use huge memory model, which slows things down unnecessarily.)
+jmemnobs.c works without modification in large or flat memory models, but to
+use medium model, you need to modify its jpeg_get_large and jpeg_free_large
+routines to allocate far memory.  In any case, you might like to replace
+its calls to malloc and free with direct calls on Windows memory allocation
+functions.
+
+You may also want to modify jdatasrc.c and jdatadst.c to use Windows file
+operations rather than fread/fwrite.  This is only necessary if your C
+compiler doesn't provide a competent implementation of C stdio functions.
+
+You might want to tweak the RGB_xxx macros in jmorecfg.h so that the library
+will accept or deliver color pixels in BGR sample order, not RGB; BGR order
+is usually more convenient under Windows.  Note that this change will break
+the sample applications cjpeg/djpeg, but the library itself works fine.
+
+
+Many people want to convert the IJG library into a DLL.  This is reasonably
+straightforward, but watch out for the following:
+
+  1. Don't try to compile as a DLL in small or medium memory model; use
+large model, or even better, 32-bit flat model.  Many places in the IJG code
+assume the address of a local variable is an ordinary (not FAR) pointer;
+that isn't true in a medium-model DLL.
+
+  2. Microsoft C cannot pass file pointers between applications and DLLs.
+(See Microsoft Knowledge Base, PSS ID Number Q50336.)  So jdatasrc.c and
+jdatadst.c don't work if you open a file in your application and then pass
+the pointer to the DLL.  One workaround is to make jdatasrc.c/jdatadst.c
+part of your main application rather than part of the DLL.
+
+  3. You'll probably need to modify the macros GLOBAL() and EXTERN() to
+attach suitable linkage keywords to the exported routine names.  Similarly,
+you'll want to modify METHODDEF() and JMETHOD() to ensure function pointers
+are declared in a way that lets application routines be called back through
+the function pointers.  These macros are in jmorecfg.h.  Typical definitions
+for a 16-bit DLL are:
+	#define GLOBAL(type)		type _far _pascal _loadds _export
+	#define EXTERN(type)		extern type _far _pascal _loadds
+	#define METHODDEF(type)		static type _far _pascal
+	#define JMETHOD(type,methodname,arglist)  \
+		type (_far _pascal *methodname) arglist
+For a 32-bit DLL you may want something like
+	#define GLOBAL(type)		__declspec(dllexport) type
+	#define EXTERN(type)		extern __declspec(dllexport) type
+Although not all the GLOBAL routines are actually intended to be called by
+the application, the performance cost of making them all DLL entry points is
+negligible.
+
+The unmodified IJG library presents a very C-specific application interface,
+so the resulting DLL is only usable from C or C++ applications.  There has
+been some talk of writing wrapper code that would present a simpler interface
+usable from other languages, such as Visual Basic.  This is on our to-do list
+but hasn't been very high priority --- any volunteers out there?
+
+
+Microsoft Windows, Borland C:
+
+The provided jconfig.bcc should work OK in a 32-bit Windows environment,
+but you'll need to tweak it in a 16-bit environment (you'd need to define
+NEED_FAR_POINTERS and MAX_ALLOC_CHUNK).  Beware that makefile.bcc will need
+alteration if you want to use it for Windows --- in particular, you should
+use jmemnobs.c not jmemdos.c under Windows.
+
+Borland C++ 4.5 fails with an internal compiler error when trying to compile
+jdmerge.c in 32-bit mode.  If enough people complain, perhaps Borland will fix
+it.  In the meantime, the simplest known workaround is to add a redundant
+definition of the variable range_limit in h2v1_merged_upsample(), at the head
+of the block that handles odd image width (about line 268 in v6 jdmerge.c):
+  /* If image width is odd, do the last output column separately */
+  if (cinfo->output_width & 1) {
+    register JSAMPLE * range_limit = cinfo->sample_range_limit; /* ADD THIS */
+    cb = GETJSAMPLE(*inptr1);
+Pretty bizarre, especially since the very similar routine h2v2_merged_upsample
+doesn't trigger the bug.
+Recent reports suggest that this bug does not occur with "bcc32a" (the
+Pentium-optimized version of the compiler).
+
+Another report from a user of Borland C 4.5 was that incorrect code (leading
+to a color shift in processed images) was produced if any of the following
+optimization switch combinations were used: 
+	-Ot -Og
+	-Ot -Op
+	-Ot -Om
+So try backing off on optimization if you see such a problem.  (Are there
+several different releases all numbered "4.5"??)
+
+
+Microsoft Windows, Microsoft Visual C++:
+
+jconfig.vc should work OK with any Microsoft compiler for a 32-bit memory
+model.  makefile.vc is intended for command-line use.  (If you are using
+the Developer Studio environment, you may prefer the DevStudio project
+files; see below.)
+
+Some users feel that it's easier to call the library from C++ code if you
+force VC++ to treat the library as C++ code, which you can do by renaming
+all the *.c files to *.cpp (and adjusting the makefile to match).  This
+avoids the need to put extern "C" { ... } around #include "jpeglib.h" in
+your C++ application.
+
+
+Microsoft Windows, Microsoft Developer Studio:
+
+We include makefiles that should work as project files in DevStudio 4.2 or
+later.  There is a library makefile that builds the IJG library as a static
+Win32 library, and an application makefile that builds the sample applications
+as Win32 console applications.  (Even if you only want the library, we
+recommend building the applications so that you can run the self-test.)
+
+To use:
+1. Copy jconfig.vc to jconfig.h, makelib.ds to jpeg.mak, and
+   makeapps.ds to apps.mak.  (Note that the renaming is critical!)
+2. Click on the .mak files to construct project workspaces.
+   (If you are using DevStudio more recent than 4.2, you'll probably
+   get a message saying that the makefiles are being updated.)
+3. Build the library project, then the applications project.
+4. Move the application .exe files from `app`\Release to an
+   appropriate location on your path.
+5. To perform the self-test, execute the command line
+	NMAKE /f makefile.vc  test
+
+
+OS/2, Borland C++:
+
+Watch out for optimization bugs in older Borland compilers; you may need
+to back off the optimization switch settings.  See the comments in
+makefile.bcc.
+
+
+SGI:
+
+On some SGI systems, you may need to set "AR2= ar -ts" in the Makefile.
+If you are using configure, you can do this by saying
+	./configure RANLIB='ar -ts'
+This change is not needed on all SGIs.  Use it only if the make fails at the
+stage of linking the completed programs.
+
+On the MIPS R4000 architecture (Indy, etc.), the compiler option "-mips2"
+reportedly speeds up the float DCT method substantially, enough to make it
+faster than the default int method (but still slower than the fast int
+method).  If you use -mips2, you may want to alter the default DCT method to
+be float.  To do this, put "#define JDCT_DEFAULT JDCT_FLOAT" in jconfig.h.
+
+
+VMS:
+
+On an Alpha/VMS system with MMS, be sure to use the "/Marco=Alpha=1"
+qualifier with MMS when building the JPEG package.
+
+VAX/VMS v5.5-1 may have problems with the test step of the build procedure
+reporting differences when it compares the original and test images.  If the
+error points to the last block of the files, it is most likely bogus and may
+be safely ignored.  It seems to be because the files are Stream_LF and
+Backup/Compare has difficulty with the (presumably) null padded files.
+This problem was not observed on VAX/VMS v6.1 or AXP/VMS v6.1.

+ 48 - 0
engine/lib/ljpeg/extras/jconfig.bcc

@@ -0,0 +1,48 @@
+/* jconfig.bcc --- jconfig.h for Borland C (Turbo C) on MS-DOS or OS/2. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#ifdef __MSDOS__
+#define NEED_FAR_POINTERS	/* for small or medium memory model */
+#endif
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN	/* this assumes you have -w-stu in CFLAGS */
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#ifdef __MSDOS__
+#define USE_MSDOS_MEMMGR	/* Define this if you use jmemdos.c */
+#define MAX_ALLOC_CHUNK 65520L	/* Maximum request to malloc() */
+#define USE_FMEM		/* Borland has _fmemcpy() and _fmemset() */
+#endif
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE
+#define USE_SETMODE		/* Borland has setmode() */
+#ifdef __MSDOS__
+#define NEED_SIGNAL_CATCHER	/* Define this if you use jmemdos.c */
+#endif
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 44 - 0
engine/lib/ljpeg/extras/jconfig.cfg

@@ -0,0 +1,44 @@
+/* jconfig.cfg --- source file edited by configure script */
+/* see jconfig.doc for explanations */
+
+#undef HAVE_PROTOTYPES
+#undef HAVE_UNSIGNED_CHAR
+#undef HAVE_UNSIGNED_SHORT
+#undef void
+#undef const
+#undef CHAR_IS_UNSIGNED
+#undef HAVE_STDDEF_H
+#undef HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS
+#undef NEED_SHORT_EXTERNAL_NAMES
+/* Define this if you get warnings about undefined structures. */
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+#undef INLINE
+/* These are for configuring the JPEG memory manager. */
+#undef DEFAULT_MAX_MEM
+#undef NO_MKTEMP
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#undef TWO_FILE_COMMANDLINE
+#undef NEED_SIGNAL_CATCHER
+#undef DONT_USE_B_MODE
+
+/* Define this if you want percent-done progress reports from cjpeg/djpeg. */
+#undef PROGRESS_REPORT
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 38 - 0
engine/lib/ljpeg/extras/jconfig.dj

@@ -0,0 +1,38 @@
+/* jconfig.dj --- jconfig.h for DJGPP (Delorie's GNU C port) on MS-DOS. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS	/* DJGPP uses flat 32-bit addressing */
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#undef TWO_FILE_COMMANDLINE	/* optional */
+#define USE_SETMODE		/* Needed to make one-file style work in DJGPP */
+#undef NEED_SIGNAL_CATCHER	/* Define this if you use jmemname.c */
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 155 - 0
engine/lib/ljpeg/extras/jconfig.doc

@@ -0,0 +1,155 @@
+/*
+ * jconfig.doc
+ *
+ * Copyright (C) 1991-1994, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file documents the configuration options that are required to
+ * customize the JPEG software for a particular system.
+ *
+ * The actual configuration options for a particular installation are stored
+ * in jconfig.h.  On many machines, jconfig.h can be generated automatically
+ * or copied from one of the "canned" jconfig files that we supply.  But if
+ * you need to generate a jconfig.h file by hand, this file tells you how.
+ *
+ * DO NOT EDIT THIS FILE --- IT WON'T ACCOMPLISH ANYTHING.
+ * EDIT A COPY NAMED JCONFIG.H.
+ */
+
+
+/*
+ * These symbols indicate the properties of your machine or compiler.
+ * #define the symbol if yes, #undef it if no.
+ */
+
+/* Does your compiler support function prototypes?
+ * (If not, you also need to use ansi2knr, see install.doc)
+ */
+#define HAVE_PROTOTYPES
+
+/* Does your compiler support the declaration "unsigned char" ?
+ * How about "unsigned short" ?
+ */
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+
+/* Define "void" as "char" if your compiler doesn't know about type void.
+ * NOTE: be sure to define void such that "void *" represents the most general
+ * pointer type, e.g., that returned by malloc().
+ */
+/* #define void char */
+
+/* Define "const" as empty if your compiler doesn't know the "const" keyword.
+ */
+/* #define const */
+
+/* Define this if an ordinary "char" type is unsigned.
+ * If you're not sure, leaving it undefined will work at some cost in speed.
+ * If you defined HAVE_UNSIGNED_CHAR then the speed difference is minimal.
+ */
+#undef CHAR_IS_UNSIGNED
+
+/* Define this if your system has an ANSI-conforming <stddef.h> file.
+ */
+#define HAVE_STDDEF_H
+
+/* Define this if your system has an ANSI-conforming <stdlib.h> file.
+ */
+#define HAVE_STDLIB_H
+
+/* Define this if your system does not have an ANSI/SysV <string.h>,
+ * but does have a BSD-style <strings.h>.
+ */
+#undef NEED_BSD_STRINGS
+
+/* Define this if your system does not provide typedef size_t in any of the
+ * ANSI-standard places (stddef.h, stdlib.h, or stdio.h), but places it in
+ * <sys/types.h> instead.
+ */
+#undef NEED_SYS_TYPES_H
+
+/* For 80x86 machines, you need to define NEED_FAR_POINTERS,
+ * unless you are using a large-data memory model or 80386 flat-memory mode.
+ * On less brain-damaged CPUs this symbol must not be defined.
+ * (Defining this symbol causes large data structures to be referenced through
+ * "far" pointers and to be allocated with a special version of malloc.)
+ */
+#undef NEED_FAR_POINTERS
+
+/* Define this if your linker needs global names to be unique in less
+ * than the first 15 characters.
+ */
+#undef NEED_SHORT_EXTERNAL_NAMES
+
+/* Although a real ANSI C compiler can deal perfectly well with pointers to
+ * unspecified structures (see "incomplete types" in the spec), a few pre-ANSI
+ * and pseudo-ANSI compilers get confused.  To keep one of these bozos happy,
+ * define INCOMPLETE_TYPES_BROKEN.  This is not recommended unless you
+ * actually get "missing structure definition" warnings or errors while
+ * compiling the JPEG code.
+ */
+#undef INCOMPLETE_TYPES_BROKEN
+
+
+/*
+ * The following options affect code selection within the JPEG library,
+ * but they don't need to be visible to applications using the library.
+ * To minimize application namespace pollution, the symbols won't be
+ * defined unless JPEG_INTERNALS has been defined.
+ */
+
+#ifdef JPEG_INTERNALS
+
+/* Define this if your compiler implements ">>" on signed values as a logical
+ * (unsigned) shift; leave it undefined if ">>" is a signed (arithmetic) shift,
+ * which is the normal and rational definition.
+ */
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+
+#endif /* JPEG_INTERNALS */
+
+
+/*
+ * The remaining options do not affect the JPEG library proper,
+ * but only the sample applications cjpeg/djpeg (see cjpeg.c, djpeg.c).
+ * Other applications can ignore these.
+ */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+/* These defines indicate which image (non-JPEG) file formats are allowed. */
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+/* Define this if you want to name both input and output files on the command
+ * line, rather than using stdout and optionally stdin.  You MUST do this if
+ * your system can't cope with binary I/O to stdin/stdout.  See comments at
+ * head of cjpeg.c or djpeg.c.
+ */
+#undef TWO_FILE_COMMANDLINE
+
+/* Define this if your system needs explicit cleanup of temporary files.
+ * This is crucial under MS-DOS, where the temporary "files" may be areas
+ * of extended memory; on most other systems it's not as important.
+ */
+#undef NEED_SIGNAL_CATCHER
+
+/* By default, we open image files with fopen(...,"rb") or fopen(...,"wb").
+ * This is necessary on systems that distinguish text files from binary files,
+ * and is harmless on most systems that don't.  If you have one of the rare
+ * systems that complains about the "b" spec, define this symbol.
+ */
+#undef DONT_USE_B_MODE
+
+/* Define this if you want percent-done progress reports from cjpeg/djpeg.
+ */
+#undef PROGRESS_REPORT
+
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 43 - 0
engine/lib/ljpeg/extras/jconfig.mac

@@ -0,0 +1,43 @@
+/* jconfig.mac --- jconfig.h for CodeWarrior on Apple Macintosh */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#define USE_MAC_MEMMGR		/* Define this if you use jmemmac.c */
+
+#define ALIGN_TYPE long		/* Needed for 680x0 Macs */
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define USE_CCOMMAND		/* Command line reader for Macintosh */
+#define TWO_FILE_COMMANDLINE	/* Binary I/O thru stdin/stdout doesn't work */
+
+#undef NEED_SIGNAL_CATCHER
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 43 - 0
engine/lib/ljpeg/extras/jconfig.manx

@@ -0,0 +1,43 @@
+/* jconfig.manx --- jconfig.h for Amiga systems using Manx Aztec C ver 5.x. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#define TEMP_DIRECTORY "JPEGTMP:"	/* recommended setting for Amiga */
+
+#define SHORTxSHORT_32		/* produces better DCT code with Aztec C */
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE
+#define NEED_SIGNAL_CATCHER
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#define signal_catcher _abort	/* hack for Aztec C naming requirements */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 52 - 0
engine/lib/ljpeg/extras/jconfig.mc6

@@ -0,0 +1,52 @@
+/* jconfig.mc6 --- jconfig.h for Microsoft C on MS-DOS, version 6.00A & up. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#define NEED_FAR_POINTERS	/* for small or medium memory model */
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#define USE_MSDOS_MEMMGR	/* Define this if you use jmemdos.c */
+
+#define MAX_ALLOC_CHUNK 65520L	/* Maximum request to malloc() */
+
+#define USE_FMEM		/* Microsoft has _fmemcpy() and _fmemset() */
+
+#define NEED_FHEAPMIN		/* far heap management routines are broken */
+
+#define SHORTxLCONST_32		/* enable compiler-specific DCT optimization */
+/* Note: the above define is known to improve the code with Microsoft C 6.00A.
+ * I do not know whether it is good for later compiler versions.
+ * Please report any info on this point to [email protected].
+ */
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE
+#define USE_SETMODE		/* Microsoft has setmode() */
+#define NEED_SIGNAL_CATCHER	/* Define this if you use jmemdos.c */
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 43 - 0
engine/lib/ljpeg/extras/jconfig.sas

@@ -0,0 +1,43 @@
+/* jconfig.sas --- jconfig.h for Amiga systems using SAS C 6.0 and up. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#define TEMP_DIRECTORY "JPEGTMP:"	/* recommended setting for Amiga */
+
+#define NO_MKTEMP		/* SAS C doesn't have mktemp() */
+
+#define SHORTxSHORT_32		/* produces better DCT code with SAS C */
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE
+#define NEED_SIGNAL_CATCHER
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 42 - 0
engine/lib/ljpeg/extras/jconfig.st

@@ -0,0 +1,42 @@
+/* jconfig.st --- jconfig.h for Atari ST/STE/TT using Pure C or Turbo C. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS
+#undef NEED_SHORT_EXTERNAL_NAMES
+#define INCOMPLETE_TYPES_BROKEN	/* suppress undefined-structure warnings */
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#define ALIGN_TYPE  long	/* apparently double is a weird size? */
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE	/* optional -- undef if you like Unix style */
+/* Note: if you undef TWO_FILE_COMMANDLINE, you may need to define
+ * USE_SETMODE.  Some Atari compilers require it, some do not.
+ */
+#define NEED_SIGNAL_CATCHER	/* needed if you use jmemname.c */
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 45 - 0
engine/lib/ljpeg/extras/jconfig.vc

@@ -0,0 +1,45 @@
+/* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS	/* we presume a 32-bit flat memory model */
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+/* Define "boolean" as unsigned char, not int, per Windows custom */
+#ifndef __RPCNDR_H__		/* don't conflict if rpcndr.h already read */
+typedef unsigned char boolean;
+#endif
+#define HAVE_BOOLEAN		/* prevent jmorecfg.h from redefining it */
+
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE	/* optional */
+#define USE_SETMODE		/* Microsoft has setmode() */
+#undef NEED_SIGNAL_CATCHER
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 37 - 0
engine/lib/ljpeg/extras/jconfig.vms

@@ -0,0 +1,37 @@
+/* jconfig.vms --- jconfig.h for use on Digital VMS. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#undef CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#define TWO_FILE_COMMANDLINE	/* Needed on VMS */
+#undef NEED_SIGNAL_CATCHER
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 38 - 0
engine/lib/ljpeg/extras/jconfig.wat

@@ -0,0 +1,38 @@
+/* jconfig.wat --- jconfig.h for Watcom C/C++ on MS-DOS or OS/2. */
+/* see jconfig.doc for explanations */
+
+#define HAVE_PROTOTYPES
+#define HAVE_UNSIGNED_CHAR
+#define HAVE_UNSIGNED_SHORT
+/* #define void char */
+/* #define const */
+#define CHAR_IS_UNSIGNED
+#define HAVE_STDDEF_H
+#define HAVE_STDLIB_H
+#undef NEED_BSD_STRINGS
+#undef NEED_SYS_TYPES_H
+#undef NEED_FAR_POINTERS	/* Watcom uses flat 32-bit addressing */
+#undef NEED_SHORT_EXTERNAL_NAMES
+#undef INCOMPLETE_TYPES_BROKEN
+
+#ifdef JPEG_INTERNALS
+
+#undef RIGHT_SHIFT_IS_UNSIGNED
+
+#endif /* JPEG_INTERNALS */
+
+#ifdef JPEG_CJPEG_DJPEG
+
+#define BMP_SUPPORTED		/* BMP image file format */
+#define GIF_SUPPORTED		/* GIF image file format */
+#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
+#undef RLE_SUPPORTED		/* Utah RLE image file format */
+#define TARGA_SUPPORTED		/* Targa image file format */
+
+#undef TWO_FILE_COMMANDLINE	/* optional */
+#define USE_SETMODE		/* Needed to make one-file style work in Watcom */
+#undef NEED_SIGNAL_CATCHER	/* Define this if you use jmemname.c */
+#undef DONT_USE_B_MODE
+#undef PROGRESS_REPORT		/* optional */
+
+#endif /* JPEG_CJPEG_DJPEG */

+ 379 - 0
engine/lib/ljpeg/extras/jmemdosa.asm

@@ -0,0 +1,379 @@
+;
+; jmemdosa.asm
+;
+; Copyright (C) 1992, Thomas G. Lane.
+; This file is part of the Independent JPEG Group's software.
+; For conditions of distribution and use, see the accompanying README file.
+;
+; This file contains low-level interface routines to support the MS-DOS
+; backing store manager (jmemdos.c).  Routines are provided to access disk
+; files through direct DOS calls, and to access XMS and EMS drivers.
+;
+; This file should assemble with Microsoft's MASM or any compatible
+; assembler (including Borland's Turbo Assembler).  If you haven't got
+; a compatible assembler, better fall back to jmemansi.c or jmemname.c.
+;
+; To minimize dependence on the C compiler's register usage conventions,
+; we save and restore all 8086 registers, even though most compilers only
+; require SI,DI,DS to be preserved.  Also, we use only 16-bit-wide return
+; values, which everybody returns in AX.
+;
+; Based on code contributed by Ge' Weijers.
+;
+
+JMEMDOSA_TXT	segment byte public 'CODE'
+
+		assume	cs:JMEMDOSA_TXT
+
+		public	_jdos_open
+		public	_jdos_close
+		public	_jdos_seek
+		public	_jdos_read
+		public	_jdos_write
+		public	_jxms_getdriver
+		public	_jxms_calldriver
+		public	_jems_available
+		public	_jems_calldriver
+
+;
+; short far jdos_open (short far * handle, char far * filename)
+;
+; Create and open a temporary file
+;
+_jdos_open	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov	cx,0			; normal file attributes
+		lds	dx,dword ptr [bp+10]	; get filename pointer
+		mov	ah,3ch			; create file
+		int	21h
+		jc	open_err		; if failed, return error code
+		lds	bx,dword ptr [bp+6]	; get handle pointer
+		mov	word ptr [bx],ax	; save the handle
+		xor	ax,ax			; return zero for OK
+open_err:	pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jdos_open	endp
+
+
+;
+; short far jdos_close (short handle)
+;
+; Close the file handle
+;
+_jdos_close	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov	bx,word ptr [bp+6]	; file handle
+		mov	ah,3eh			; close file
+		int	21h
+		jc	close_err		; if failed, return error code
+		xor	ax,ax			; return zero for OK
+close_err:	pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jdos_close	endp
+
+
+;
+; short far jdos_seek (short handle, long offset)
+;
+; Set file position
+;
+_jdos_seek	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov	bx,word ptr [bp+6]	; file handle
+		mov	dx,word ptr [bp+8]	; LS offset
+		mov	cx,word ptr [bp+10]	; MS offset
+		mov	ax,4200h		; absolute seek
+		int	21h
+		jc	seek_err		; if failed, return error code
+		xor	ax,ax			; return zero for OK
+seek_err:	pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jdos_seek	endp
+
+
+;
+; short far jdos_read (short handle, void far * buffer, unsigned short count)
+;
+; Read from file
+;
+_jdos_read	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov	bx,word ptr [bp+6]	; file handle
+		lds	dx,dword ptr [bp+8]	; buffer address
+		mov	cx,word ptr [bp+12]	; number of bytes
+		mov	ah,3fh			; read file
+		int	21h
+		jc	read_err		; if failed, return error code
+		cmp	ax,word ptr [bp+12]	; make sure all bytes were read
+		je	read_ok
+		mov	ax,1			; else return 1 for not OK
+		jmp	short read_err
+read_ok:	xor	ax,ax			; return zero for OK
+read_err:	pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jdos_read	endp
+
+
+;
+; short far jdos_write (short handle, void far * buffer, unsigned short count)
+;
+; Write to file
+;
+_jdos_write	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov	bx,word ptr [bp+6]	; file handle
+		lds	dx,dword ptr [bp+8]	; buffer address
+		mov	cx,word ptr [bp+12]	; number of bytes
+		mov	ah,40h			; write file
+		int	21h
+		jc	write_err		; if failed, return error code
+		cmp	ax,word ptr [bp+12]	; make sure all bytes written
+		je	write_ok
+		mov	ax,1			; else return 1 for not OK
+		jmp	short write_err
+write_ok:	xor	ax,ax			; return zero for OK
+write_err:	pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jdos_write	endp
+
+
+;
+; void far jxms_getdriver (XMSDRIVER far *)
+;
+; Get the address of the XMS driver, or NULL if not available
+;
+_jxms_getdriver	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov 	ax,4300h		; call multiplex interrupt with
+		int	2fh			; a magic cookie, hex 4300
+		cmp 	al,80h			; AL should contain hex 80
+		je	xmsavail
+		xor 	dx,dx			; no XMS driver available
+		xor 	ax,ax			; return a nil pointer
+		jmp	short xmsavail_done
+xmsavail:	mov 	ax,4310h		; fetch driver address with
+		int	2fh			; another magic cookie
+		mov 	dx,es			; copy address to dx:ax
+		mov 	ax,bx
+xmsavail_done:	les 	bx,dword ptr [bp+6]	; get pointer to return value
+		mov	word ptr es:[bx],ax
+		mov	word ptr es:[bx+2],dx
+		pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop	bp
+		ret
+_jxms_getdriver	endp
+
+
+;
+; void far jxms_calldriver (XMSDRIVER, XMScontext far *)
+;
+; The XMScontext structure contains values for the AX,DX,BX,SI,DS registers.
+; These are loaded, the XMS call is performed, and the new values of the
+; AX,DX,BX registers are written back to the context structure.
+;
+_jxms_calldriver 	proc	far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		les 	bx,dword ptr [bp+10]	; get XMScontext pointer
+		mov 	ax,word ptr es:[bx]	; load registers
+		mov 	dx,word ptr es:[bx+2]
+		mov 	si,word ptr es:[bx+6]
+		mov 	ds,word ptr es:[bx+8]
+		mov 	bx,word ptr es:[bx+4]
+		call	dword ptr [bp+6]	; call the driver
+		mov	cx,bx			; save returned BX for a sec
+		les 	bx,dword ptr [bp+10]	; get XMScontext pointer
+		mov 	word ptr es:[bx],ax	; put back ax,dx,bx
+		mov 	word ptr es:[bx+2],dx
+		mov 	word ptr es:[bx+4],cx
+		pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jxms_calldriver 	endp
+
+
+;
+; short far jems_available (void)
+;
+; Have we got an EMS driver? (this comes straight from the EMS 4.0 specs)
+;
+_jems_available	proc	far
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		mov	ax,3567h		; get interrupt vector 67h
+		int	21h
+		push	cs
+		pop	ds
+		mov	di,000ah		; check offs 10 in returned seg
+		lea	si,ASCII_device_name	; against literal string
+		mov	cx,8
+		cld
+		repe cmpsb
+		jne	no_ems
+		mov	ax,1			; match, it's there
+		jmp	short avail_done
+no_ems:		xor	ax,ax			; it's not there
+avail_done:	pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		ret
+
+ASCII_device_name	db	"EMMXXXX0"
+
+_jems_available	endp
+
+
+;
+; void far jems_calldriver (EMScontext far *)
+;
+; The EMScontext structure contains values for the AX,DX,BX,SI,DS registers.
+; These are loaded, the EMS trap is performed, and the new values of the
+; AX,DX,BX registers are written back to the context structure.
+;
+_jems_calldriver	proc far
+		push	bp			; linkage
+		mov 	bp,sp
+		push	si			; save all registers for safety
+		push	di
+		push	bx
+		push	cx
+		push	dx
+		push	es
+		push	ds
+		les 	bx,dword ptr [bp+6]	; get EMScontext pointer
+		mov 	ax,word ptr es:[bx]	; load registers
+		mov 	dx,word ptr es:[bx+2]
+		mov 	si,word ptr es:[bx+6]
+		mov 	ds,word ptr es:[bx+8]
+		mov 	bx,word ptr es:[bx+4]
+		int	67h			; call the EMS driver
+		mov	cx,bx			; save returned BX for a sec
+		les 	bx,dword ptr [bp+6]	; get EMScontext pointer
+		mov 	word ptr es:[bx],ax	; put back ax,dx,bx
+		mov 	word ptr es:[bx+2],dx
+		mov 	word ptr es:[bx+4],cx
+		pop	ds			; restore registers and exit
+		pop	es
+		pop	dx
+		pop	cx
+		pop	bx
+		pop	di
+		pop	si
+		pop 	bp
+		ret
+_jems_calldriver	endp
+
+JMEMDOSA_TXT	ends
+
+		end

+ 238 - 0
engine/lib/ljpeg/extras/jpegtran.1

@@ -0,0 +1,238 @@
+.TH JPEGTRAN 1 "3 August 1997"
+.SH NAME
+jpegtran \- lossless transformation of JPEG files
+.SH SYNOPSIS
+.B jpegtran
+[
+.I options
+]
+[
+.I filename
+]
+.LP
+.SH DESCRIPTION
+.LP
+.B jpegtran
+performs various useful transformations of JPEG files.
+It can translate the coded representation from one variant of JPEG to another,
+for example from baseline JPEG to progressive JPEG or vice versa.  It can also
+perform some rearrangements of the image data, for example turning an image
+from landscape to portrait format by rotation.
+.PP
+.B jpegtran
+works by rearranging the compressed data (DCT coefficients), without
+ever fully decoding the image.  Therefore, its transformations are lossless:
+there is no image degradation at all, which would not be true if you used
+.B djpeg
+followed by
+.B cjpeg
+to accomplish the same conversion.  But by the same token,
+.B jpegtran
+cannot perform lossy operations such as changing the image quality.
+.PP
+.B jpegtran
+reads the named JPEG/JFIF file, or the standard input if no file is
+named, and produces a JPEG/JFIF file on the standard output.
+.SH OPTIONS
+All switch names may be abbreviated; for example,
+.B \-optimize
+may be written
+.B \-opt
+or
+.BR \-o .
+Upper and lower case are equivalent.
+British spellings are also accepted (e.g.,
+.BR \-optimise ),
+though for brevity these are not mentioned below.
+.PP
+To specify the coded JPEG representation used in the output file,
+.B jpegtran
+accepts a subset of the switches recognized by
+.BR cjpeg :
+.TP
+.B \-optimize
+Perform optimization of entropy encoding parameters.
+.TP
+.B \-progressive
+Create progressive JPEG file.
+.TP
+.BI \-restart " N"
+Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
+attached to the number.
+.TP
+.BI \-scans " file"
+Use the scan script given in the specified text file.
+.PP
+See
+.BR cjpeg (1)
+for more details about these switches.
+If you specify none of these switches, you get a plain baseline-JPEG output
+file.  The quality setting and so forth are determined by the input file.
+.PP
+The image can be losslessly transformed by giving one of these switches:
+.TP
+.B \-flip horizontal
+Mirror image horizontally (left-right).
+.TP
+.B \-flip vertical
+Mirror image vertically (top-bottom).
+.TP
+.B \-rotate 90
+Rotate image 90 degrees clockwise.
+.TP
+.B \-rotate 180
+Rotate image 180 degrees.
+.TP
+.B \-rotate 270
+Rotate image 270 degrees clockwise (or 90 ccw).
+.TP
+.B \-transpose
+Transpose image (across UL-to-LR axis).
+.TP
+.B \-transverse
+Transverse transpose (across UR-to-LL axis).
+.PP
+The transpose transformation has no restrictions regarding image dimensions.
+The other transformations operate rather oddly if the image dimensions are not
+a multiple of the iMCU size (usually 8 or 16 pixels), because they can only
+transform complete blocks of DCT coefficient data in the desired way.
+.PP
+.BR jpegtran 's
+default behavior when transforming an odd-size image is designed
+to preserve exact reversibility and mathematical consistency of the
+transformation set.  As stated, transpose is able to flip the entire image
+area.  Horizontal mirroring leaves any partial iMCU column at the right edge
+untouched, but is able to flip all rows of the image.  Similarly, vertical
+mirroring leaves any partial iMCU row at the bottom edge untouched, but is
+able to flip all columns.  The other transforms can be built up as sequences
+of transpose and flip operations; for consistency, their actions on edge
+pixels are defined to be the same as the end result of the corresponding
+transpose-and-flip sequence.
+.PP
+For practical use, you may prefer to discard any untransformable edge pixels
+rather than having a strange-looking strip along the right and/or bottom edges
+of a transformed image.  To do this, add the
+.B \-trim
+switch:
+.TP
+.B \-trim
+Drop non-transformable edge blocks.
+.PP
+Obviously, a transformation with
+.B \-trim
+is not reversible, so strictly speaking
+.B jpegtran
+with this switch is not lossless.  Also, the expected mathematical
+equivalences between the transformations no longer hold.  For example,
+.B \-rot 270 -trim
+trims only the bottom edge, but
+.B \-rot 90 -trim
+followed by
+.B \-rot 180 -trim
+trims both edges.
+.PP
+Another not-strictly-lossless transformation switch is:
+.TP
+.B \-grayscale
+Force grayscale output.
+.PP
+This option discards the chrominance channels if the input image is YCbCr
+(ie, a standard color JPEG), resulting in a grayscale JPEG file.  The
+luminance channel is preserved exactly, so this is a better method of reducing
+to grayscale than decompression, conversion, and recompression.  This switch
+is particularly handy for fixing a monochrome picture that was mistakenly
+encoded as a color JPEG.  (In such a case, the space savings from getting rid
+of the near-empty chroma channels won't be large; but the decoding time for
+a grayscale JPEG is substantially less than that for a color JPEG.)
+.PP
+.B jpegtran
+also recognizes these switches that control what to do with "extra" markers,
+such as comment blocks:
+.TP
+.B \-copy none
+Copy no extra markers from source file.  This setting suppresses all
+comments and other excess baggage present in the source file.
+.TP
+.B \-copy comments
+Copy only comment markers.  This setting copies comments from the source file,
+but discards any other inessential data.
+.TP
+.B \-copy all
+Copy all extra markers.  This setting preserves miscellaneous markers
+found in the source file, such as JFIF thumbnails and Photoshop settings.
+In some files these extra markers can be sizable.
+.PP
+The default behavior is
+.BR "\-copy comments" .
+(Note: in IJG releases v6 and v6a,
+.B jpegtran
+always did the equivalent of
+.BR "\-copy none" .)
+.PP
+Additional switches recognized by jpegtran are:
+.TP
+.BI \-maxmemory " N"
+Set limit for amount of memory to use in processing large images.  Value is
+in thousands of bytes, or millions of bytes if "M" is attached to the
+number.  For example,
+.B \-max 4m
+selects 4000000 bytes.  If more space is needed, temporary files will be used.
+.TP
+.BI \-outfile " name"
+Send output image to the named file, not to standard output.
+.TP
+.B \-verbose
+Enable debug printout.  More
+.BR \-v 's
+give more output.  Also, version information is printed at startup.
+.TP
+.B \-debug
+Same as
+.BR \-verbose .
+.SH EXAMPLES
+.LP
+This example converts a baseline JPEG file to progressive form:
+.IP
+.B jpegtran \-progressive
+.I foo.jpg
+.B >
+.I fooprog.jpg
+.PP
+This example rotates an image 90 degrees clockwise, discarding any
+unrotatable edge pixels:
+.IP
+.B jpegtran \-rot 90 -trim
+.I foo.jpg
+.B >
+.I foo90.jpg
+.SH ENVIRONMENT
+.TP
+.B JPEGMEM
+If this environment variable is set, its value is the default memory limit.
+The value is specified as described for the
+.B \-maxmemory
+switch.
+.B JPEGMEM
+overrides the default value specified when the program was compiled, and
+itself is overridden by an explicit
+.BR \-maxmemory .
+.SH SEE ALSO
+.BR cjpeg (1),
+.BR djpeg (1),
+.BR rdjpgcom (1),
+.BR wrjpgcom (1)
+.br
+Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
+Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
+.SH AUTHOR
+Independent JPEG Group
+.SH BUGS
+Arithmetic coding is not supported for legal reasons.
+.PP
+The transform options can't transform odd-size images perfectly.  Use
+.B \-trim
+if you don't like the results without it.
+.PP
+The entire image is read into memory and then written out again, even in
+cases where this isn't really necessary.  Expect swapping on large images,
+especially when using the more complex transform options.

+ 3006 - 0
engine/lib/ljpeg/extras/libjpeg.doc

@@ -0,0 +1,3006 @@
+USING THE IJG JPEG LIBRARY
+
+Copyright (C) 1994-1998, Thomas G. Lane.
+This file is part of the Independent JPEG Group's software.
+For conditions of distribution and use, see the accompanying README file.
+
+
+This file describes how to use the IJG JPEG library within an application
+program.  Read it if you want to write a program that uses the library.
+
+The file example.c provides heavily commented skeleton code for calling the
+JPEG library.  Also see jpeglib.h (the include file to be used by application
+programs) for full details about data structures and function parameter lists.
+The library source code, of course, is the ultimate reference.
+
+Note that there have been *major* changes from the application interface
+presented by IJG version 4 and earlier versions.  The old design had several
+inherent limitations, and it had accumulated a lot of cruft as we added
+features while trying to minimize application-interface changes.  We have
+sacrificed backward compatibility in the version 5 rewrite, but we think the
+improvements justify this.
+
+
+TABLE OF CONTENTS
+-----------------
+
+Overview:
+	Functions provided by the library
+	Outline of typical usage
+Basic library usage:
+	Data formats
+	Compression details
+	Decompression details
+	Mechanics of usage: include files, linking, etc
+Advanced features:
+	Compression parameter selection
+	Decompression parameter selection
+	Special color spaces
+	Error handling
+	Compressed data handling (source and destination managers)
+	I/O suspension
+	Progressive JPEG support
+	Buffered-image mode
+	Abbreviated datastreams and multiple images
+	Special markers
+	Raw (downsampled) image data
+	Really raw data: DCT coefficients
+	Progress monitoring
+	Memory management
+	Memory usage
+	Library compile-time options
+	Portability considerations
+	Notes for MS-DOS implementors
+
+You should read at least the overview and basic usage sections before trying
+to program with the library.  The sections on advanced features can be read
+if and when you need them.
+
+
+OVERVIEW
+========
+
+Functions provided by the library
+---------------------------------
+
+The IJG JPEG library provides C code to read and write JPEG-compressed image
+files.  The surrounding application program receives or supplies image data a
+scanline at a time, using a straightforward uncompressed image format.  All
+details of color conversion and other preprocessing/postprocessing can be
+handled by the library.
+
+The library includes a substantial amount of code that is not covered by the
+JPEG standard but is necessary for typical applications of JPEG.  These
+functions preprocess the image before JPEG compression or postprocess it after
+decompression.  They include colorspace conversion, downsampling/upsampling,
+and color quantization.  The application indirectly selects use of this code
+by specifying the format in which it wishes to supply or receive image data.
+For example, if colormapped output is requested, then the decompression
+library automatically invokes color quantization.
+
+A wide range of quality vs. speed tradeoffs are possible in JPEG processing,
+and even more so in decompression postprocessing.  The decompression library
+provides multiple implementations that cover most of the useful tradeoffs,
+ranging from very-high-quality down to fast-preview operation.  On the
+compression side we have generally not provided low-quality choices, since
+compression is normally less time-critical.  It should be understood that the
+low-quality modes may not meet the JPEG standard's accuracy requirements;
+nonetheless, they are useful for viewers.
+
+A word about functions *not* provided by the library.  We handle a subset of
+the ISO JPEG standard; most baseline, extended-sequential, and progressive
+JPEG processes are supported.  (Our subset includes all features now in common
+use.)  Unsupported ISO options include:
+	* Hierarchical storage
+	* Lossless JPEG
+	* Arithmetic entropy coding (unsupported for legal reasons)
+	* DNL marker
+	* Nonintegral subsampling ratios
+We support both 8- and 12-bit data precision, but this is a compile-time
+choice rather than a run-time choice; hence it is difficult to use both
+precisions in a single application.
+
+By itself, the library handles only interchange JPEG datastreams --- in
+particular the widely used JFIF file format.  The library can be used by
+surrounding code to process interchange or abbreviated JPEG datastreams that
+are embedded in more complex file formats.  (For example, this library is
+used by the free LIBTIFF library to support JPEG compression in TIFF.)
+
+
+Outline of typical usage
+------------------------
+
+The rough outline of a JPEG compression operation is:
+
+	Allocate and initialize a JPEG compression object
+	Specify the destination for the compressed data (eg, a file)
+	Set parameters for compression, including image size & colorspace
+	jpeg_start_compress(...);
+	while (scan lines remain to be written)
+		jpeg_write_scanlines(...);
+	jpeg_finish_compress(...);
+	Release the JPEG compression object
+
+A JPEG compression object holds parameters and working state for the JPEG
+library.  We make creation/destruction of the object separate from starting
+or finishing compression of an image; the same object can be re-used for a
+series of image compression operations.  This makes it easy to re-use the
+same parameter settings for a sequence of images.  Re-use of a JPEG object
+also has important implications for processing abbreviated JPEG datastreams,
+as discussed later.
+
+The image data to be compressed is supplied to jpeg_write_scanlines() from
+in-memory buffers.  If the application is doing file-to-file compression,
+reading image data from the source file is the application's responsibility.
+The library emits compressed data by calling a "data destination manager",
+which typically will write the data into a file; but the application can
+provide its own destination manager to do something else.
+
+Similarly, the rough outline of a JPEG decompression operation is:
+
+	Allocate and initialize a JPEG decompression object
+	Specify the source of the compressed data (eg, a file)
+	Call jpeg_read_header() to obtain image info
+	Set parameters for decompression
+	jpeg_start_decompress(...);
+	while (scan lines remain to be read)
+		jpeg_read_scanlines(...);
+	jpeg_finish_decompress(...);
+	Release the JPEG decompression object
+
+This is comparable to the compression outline except that reading the
+datastream header is a separate step.  This is helpful because information
+about the image's size, colorspace, etc is available when the application
+selects decompression parameters.  For example, the application can choose an
+output scaling ratio that will fit the image into the available screen size.
+
+The decompression library obtains compressed data by calling a data source
+manager, which typically will read the data from a file; but other behaviors
+can be obtained with a custom source manager.  Decompressed data is delivered
+into in-memory buffers passed to jpeg_read_scanlines().
+
+It is possible to abort an incomplete compression or decompression operation
+by calling jpeg_abort(); or, if you do not need to retain the JPEG object,
+simply release it by calling jpeg_destroy().
+
+JPEG compression and decompression objects are two separate struct types.
+However, they share some common fields, and certain routines such as
+jpeg_destroy() can work on either type of object.
+
+The JPEG library has no static variables: all state is in the compression
+or decompression object.  Therefore it is possible to process multiple
+compression and decompression operations concurrently, using multiple JPEG
+objects.
+
+Both compression and decompression can be done in an incremental memory-to-
+memory fashion, if suitable source/destination managers are used.  See the
+section on "I/O suspension" for more details.
+
+
+BASIC LIBRARY USAGE
+===================
+
+Data formats
+------------
+
+Before diving into procedural details, it is helpful to understand the
+image data format that the JPEG library expects or returns.
+
+The standard input image format is a rectangular array of pixels, with each
+pixel having the same number of "component" or "sample" values (color
+channels).  You must specify how many components there are and the colorspace
+interpretation of the components.  Most applications will use RGB data
+(three components per pixel) or grayscale data (one component per pixel).
+PLEASE NOTE THAT RGB DATA IS THREE SAMPLES PER PIXEL, GRAYSCALE ONLY ONE.
+A remarkable number of people manage to miss this, only to find that their
+programs don't work with grayscale JPEG files.
+
+There is no provision for colormapped input.  JPEG files are always full-color
+or full grayscale (or sometimes another colorspace such as CMYK).  You can
+feed in a colormapped image by expanding it to full-color format.  However
+JPEG often doesn't work very well with source data that has been colormapped,
+because of dithering noise.  This is discussed in more detail in the JPEG FAQ
+and the other references mentioned in the README file.
+
+Pixels are stored by scanlines, with each scanline running from left to
+right.  The component values for each pixel are adjacent in the row; for
+example, R,G,B,R,G,B,R,G,B,... for 24-bit RGB color.  Each scanline is an
+array of data type JSAMPLE --- which is typically "unsigned char", unless
+you've changed jmorecfg.h.  (You can also change the RGB pixel layout, say
+to B,G,R order, by modifying jmorecfg.h.  But see the restrictions listed in
+that file before doing so.)
+
+A 2-D array of pixels is formed by making a list of pointers to the starts of
+scanlines; so the scanlines need not be physically adjacent in memory.  Even
+if you process just one scanline at a time, you must make a one-element
+pointer array to conform to this structure.  Pointers to JSAMPLE rows are of
+type JSAMPROW, and the pointer to the pointer array is of type JSAMPARRAY.
+
+The library accepts or supplies one or more complete scanlines per call.
+It is not possible to process part of a row at a time.  Scanlines are always
+processed top-to-bottom.  You can process an entire image in one call if you
+have it all in memory, but usually it's simplest to process one scanline at
+a time.
+
+For best results, source data values should have the precision specified by
+BITS_IN_JSAMPLE (normally 8 bits).  For instance, if you choose to compress
+data that's only 6 bits/channel, you should left-justify each value in a
+byte before passing it to the compressor.  If you need to compress data
+that has more than 8 bits/channel, compile with BITS_IN_JSAMPLE = 12.
+(See "Library compile-time options", later.)
+
+
+The data format returned by the decompressor is the same in all details,
+except that colormapped output is supported.  (Again, a JPEG file is never
+colormapped.  But you can ask the decompressor to perform on-the-fly color
+quantization to deliver colormapped output.)  If you request colormapped
+output then the returned data array contains a single JSAMPLE per pixel;
+its value is an index into a color map.  The color map is represented as
+a 2-D JSAMPARRAY in which each row holds the values of one color component,
+that is, colormap[i][j] is the value of the i'th color component for pixel
+value (map index) j.  Note that since the colormap indexes are stored in
+JSAMPLEs, the maximum number of colors is limited by the size of JSAMPLE
+(ie, at most 256 colors for an 8-bit JPEG library).
+
+
+Compression details
+-------------------
+
+Here we revisit the JPEG compression outline given in the overview.
+
+1. Allocate and initialize a JPEG compression object.
+
+A JPEG compression object is a "struct jpeg_compress_struct".  (It also has
+a bunch of subsidiary structures which are allocated via malloc(), but the
+application doesn't control those directly.)  This struct can be just a local
+variable in the calling routine, if a single routine is going to execute the
+whole JPEG compression sequence.  Otherwise it can be static or allocated
+from malloc().
+
+You will also need a structure representing a JPEG error handler.  The part
+of this that the library cares about is a "struct jpeg_error_mgr".  If you
+are providing your own error handler, you'll typically want to embed the
+jpeg_error_mgr struct in a larger structure; this is discussed later under
+"Error handling".  For now we'll assume you are just using the default error
+handler.  The default error handler will print JPEG error/warning messages
+on stderr, and it will call exit() if a fatal error occurs.
+
+You must initialize the error handler structure, store a pointer to it into
+the JPEG object's "err" field, and then call jpeg_create_compress() to
+initialize the rest of the JPEG object.
+
+Typical code for this step, if you are using the default error handler, is
+
+	struct jpeg_compress_struct cinfo;
+	struct jpeg_error_mgr jerr;
+	...
+	cinfo.err = jpeg_std_error(&jerr);
+	jpeg_create_compress(&cinfo);
+
+jpeg_create_compress allocates a small amount of memory, so it could fail
+if you are out of memory.  In that case it will exit via the error handler;
+that's why the error handler must be initialized first.
+
+
+2. Specify the destination for the compressed data (eg, a file).
+
+As previously mentioned, the JPEG library delivers compressed data to a
+"data destination" module.  The library includes one data destination
+module which knows how to write to a stdio stream.  You can use your own
+destination module if you want to do something else, as discussed later.
+
+If you use the standard destination module, you must open the target stdio
+stream beforehand.  Typical code for this step looks like:
+
+	FILE * outfile;
+	...
+	if ((outfile = fopen(filename, "wb")) == NULL) {
+	    fprintf(stderr, "can't open %s\n", filename);
+	    exit(1);
+	}
+	jpeg_stdio_dest(&cinfo, outfile);
+
+where the last line invokes the standard destination module.
+
+WARNING: it is critical that the binary compressed data be delivered to the
+output file unchanged.  On non-Unix systems the stdio library may perform
+newline translation or otherwise corrupt binary data.  To suppress this
+behavior, you may need to use a "b" option to fopen (as shown above), or use
+setmode() or another routine to put the stdio stream in binary mode.  See
+cjpeg.c and djpeg.c for code that has been found to work on many systems.
+
+You can select the data destination after setting other parameters (step 3),
+if that's more convenient.  You may not change the destination between
+calling jpeg_start_compress() and jpeg_finish_compress().
+
+
+3. Set parameters for compression, including image size & colorspace.
+
+You must supply information about the source image by setting the following
+fields in the JPEG object (cinfo structure):
+
+	image_width		Width of image, in pixels
+	image_height		Height of image, in pixels
+	input_components	Number of color channels (samples per pixel)
+	in_color_space		Color space of source image
+
+The image dimensions are, hopefully, obvious.  JPEG supports image dimensions
+of 1 to 64K pixels in either direction.  The input color space is typically
+RGB or grayscale, and input_components is 3 or 1 accordingly.  (See "Special
+color spaces", later, for more info.)  The in_color_space field must be
+assigned one of the J_COLOR_SPACE enum constants, typically JCS_RGB or
+JCS_GRAYSCALE.
+
+JPEG has a large number of compression parameters that determine how the
+image is encoded.  Most applications don't need or want to know about all
+these parameters.  You can set all the parameters to reasonable defaults by
+calling jpeg_set_defaults(); then, if there are particular values you want
+to change, you can do so after that.  The "Compression parameter selection"
+section tells about all the parameters.
+
+You must set in_color_space correctly before calling jpeg_set_defaults(),
+because the defaults depend on the source image colorspace.  However the
+other three source image parameters need not be valid until you call
+jpeg_start_compress().  There's no harm in calling jpeg_set_defaults() more
+than once, if that happens to be convenient.
+
+Typical code for a 24-bit RGB source image is
+
+	cinfo.image_width = Width; 	/* image width and height, in pixels */
+	cinfo.image_height = Height;
+	cinfo.input_components = 3;	/* # of color components per pixel */
+	cinfo.in_color_space = JCS_RGB; /* colorspace of input image */
+
+	jpeg_set_defaults(&cinfo);
+	/* Make optional parameter settings here */
+
+
+4. jpeg_start_compress(...);
+
+After you have established the data destination and set all the necessary
+source image info and other parameters, call jpeg_start_compress() to begin
+a compression cycle.  This will initialize internal state, allocate working
+storage, and emit the first few bytes of the JPEG datastream header.
+
+Typical code:
+
+	jpeg_start_compress(&cinfo, TRUE);
+
+The "TRUE" parameter ensures that a complete JPEG interchange datastream
+will be written.  This is appropriate in most cases.  If you think you might
+want to use an abbreviated datastream, read the section on abbreviated
+datastreams, below.
+
+Once you have called jpeg_start_compress(), you may not alter any JPEG
+parameters or other fields of the JPEG object until you have completed
+the compression cycle.
+
+
+5. while (scan lines remain to be written)
+	jpeg_write_scanlines(...);
+
+Now write all the required image data by calling jpeg_write_scanlines()
+one or more times.  You can pass one or more scanlines in each call, up
+to the total image height.  In most applications it is convenient to pass
+just one or a few scanlines at a time.  The expected format for the passed
+data is discussed under "Data formats", above.
+
+Image data should be written in top-to-bottom scanline order.  The JPEG spec
+contains some weasel wording about how top and bottom are application-defined
+terms (a curious interpretation of the English language...) but if you want
+your files to be compatible with everyone else's, you WILL use top-to-bottom
+order.  If the source data must be read in bottom-to-top order, you can use
+the JPEG library's virtual array mechanism to invert the data efficiently.
+Examples of this can be found in the sample application cjpeg.
+
+The library maintains a count of the number of scanlines written so far
+in the next_scanline field of the JPEG object.  Usually you can just use
+this variable as the loop counter, so that the loop test looks like
+"while (cinfo.next_scanline < cinfo.image_height)".
+
+Code for this step depends heavily on the way that you store the source data.
+example.c shows the following code for the case of a full-size 2-D source
+array containing 3-byte RGB pixels:
+
+	JSAMPROW row_pointer[1];	/* pointer to a single row */
+	int row_stride;			/* physical row width in buffer */
+
+	row_stride = image_width * 3;	/* JSAMPLEs per row in image_buffer */
+
+	while (cinfo.next_scanline < cinfo.image_height) {
+	    row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];
+	    jpeg_write_scanlines(&cinfo, row_pointer, 1);
+	}
+
+jpeg_write_scanlines() returns the number of scanlines actually written.
+This will normally be equal to the number passed in, so you can usually
+ignore the return value.  It is different in just two cases:
+  * If you try to write more scanlines than the declared image height,
+    the additional scanlines are ignored.
+  * If you use a suspending data destination manager, output buffer overrun
+    will cause the compressor to return before accepting all the passed lines.
+    This feature is discussed under "I/O suspension", below.  The normal
+    stdio destination manager will NOT cause this to happen.
+In any case, the return value is the same as the change in the value of
+next_scanline.
+
+
+6. jpeg_finish_compress(...);
+
+After all the image data has been written, call jpeg_finish_compress() to
+complete the compression cycle.  This step is ESSENTIAL to ensure that the
+last bufferload of data is written to the data destination.
+jpeg_finish_compress() also releases working memory associated with the JPEG
+object.
+
+Typical code:
+
+	jpeg_finish_compress(&cinfo);
+
+If using the stdio destination manager, don't forget to close the output
+stdio stream (if necessary) afterwards.
+
+If you have requested a multi-pass operating mode, such as Huffman code
+optimization, jpeg_finish_compress() will perform the additional passes using
+data buffered by the first pass.  In this case jpeg_finish_compress() may take
+quite a while to complete.  With the default compression parameters, this will
+not happen.
+
+It is an error to call jpeg_finish_compress() before writing the necessary
+total number of scanlines.  If you wish to abort compression, call
+jpeg_abort() as discussed below.
+
+After completing a compression cycle, you may dispose of the JPEG object
+as discussed next, or you may use it to compress another image.  In that case
+return to step 2, 3, or 4 as appropriate.  If you do not change the
+destination manager, the new datastream will be written to the same target.
+If you do not change any JPEG parameters, the new datastream will be written
+with the same parameters as before.  Note that you can change the input image
+dimensions freely between cycles, but if you change the input colorspace, you
+should call jpeg_set_defaults() to adjust for the new colorspace; and then
+you'll need to repeat all of step 3.
+
+
+7. Release the JPEG compression object.
+
+When you are done with a JPEG compression object, destroy it by calling
+jpeg_destroy_compress().  This will free all subsidiary memory (regardless of
+the previous state of the object).  Or you can call jpeg_destroy(), which
+works for either compression or decompression objects --- this may be more
+convenient if you are sharing code between compression and decompression
+cases.  (Actually, these routines are equivalent except for the declared type
+of the passed pointer.  To avoid gripes from ANSI C compilers, jpeg_destroy()
+should be passed a j_common_ptr.)
+
+If you allocated the jpeg_compress_struct structure from malloc(), freeing
+it is your responsibility --- jpeg_destroy() won't.  Ditto for the error
+handler structure.
+
+Typical code:
+
+	jpeg_destroy_compress(&cinfo);
+
+
+8. Aborting.
+
+If you decide to abort a compression cycle before finishing, you can clean up
+in either of two ways:
+
+* If you don't need the JPEG object any more, just call
+  jpeg_destroy_compress() or jpeg_destroy() to release memory.  This is
+  legitimate at any point after calling jpeg_create_compress() --- in fact,
+  it's safe even if jpeg_create_compress() fails.
+
+* If you want to re-use the JPEG object, call jpeg_abort_compress(), or call
+  jpeg_abort() which works on both compression and decompression objects.
+  This will return the object to an idle state, releasing any working memory.
+  jpeg_abort() is allowed at any time after successful object creation.
+
+Note that cleaning up the data destination, if required, is your
+responsibility; neither of these routines will call term_destination().
+(See "Compressed data handling", below, for more about that.)
+
+jpeg_destroy() and jpeg_abort() are the only safe calls to make on a JPEG
+object that has reported an error by calling error_exit (see "Error handling"
+for more info).  The internal state of such an object is likely to be out of
+whack.  Either of these two routines will return the object to a known state.
+
+
+Decompression details
+---------------------
+
+Here we revisit the JPEG decompression outline given in the overview.
+
+1. Allocate and initialize a JPEG decompression object.
+
+This is just like initialization for compression, as discussed above,
+except that the object is a "struct jpeg_decompress_struct" and you
+call jpeg_create_decompress().  Error handling is exactly the same.
+
+Typical code:
+
+	struct jpeg_decompress_struct cinfo;
+	struct jpeg_error_mgr jerr;
+	...
+	cinfo.err = jpeg_std_error(&jerr);
+	jpeg_create_decompress(&cinfo);
+
+(Both here and in the IJG code, we usually use variable name "cinfo" for
+both compression and decompression objects.)
+
+
+2. Specify the source of the compressed data (eg, a file).
+
+As previously mentioned, the JPEG library reads compressed data from a "data
+source" module.  The library includes one data source module which knows how
+to read from a stdio stream.  You can use your own source module if you want
+to do something else, as discussed later.
+
+If you use the standard source module, you must open the source stdio stream
+beforehand.  Typical code for this step looks like:
+
+	FILE * infile;
+	...
+	if ((infile = fopen(filename, "rb")) == NULL) {
+	    fprintf(stderr, "can't open %s\n", filename);
+	    exit(1);
+	}
+	jpeg_stdio_src(&cinfo, infile);
+
+where the last line invokes the standard source module.
+
+WARNING: it is critical that the binary compressed data be read unchanged.
+On non-Unix systems the stdio library may perform newline translation or
+otherwise corrupt binary data.  To suppress this behavior, you may need to use
+a "b" option to fopen (as shown above), or use setmode() or another routine to
+put the stdio stream in binary mode.  See cjpeg.c and djpeg.c for code that
+has been found to work on many systems.
+
+You may not change the data source between calling jpeg_read_header() and
+jpeg_finish_decompress().  If you wish to read a series of JPEG images from
+a single source file, you should repeat the jpeg_read_header() to
+jpeg_finish_decompress() sequence without reinitializing either the JPEG
+object or the data source module; this prevents buffered input data from
+being discarded.
+
+
+3. Call jpeg_read_header() to obtain image info.
+
+Typical code for this step is just
+
+	jpeg_read_header(&cinfo, TRUE);
+
+This will read the source datastream header markers, up to the beginning
+of the compressed data proper.  On return, the image dimensions and other
+info have been stored in the JPEG object.  The application may wish to
+consult this information before selecting decompression parameters.
+
+More complex code is necessary if
+  * A suspending data source is used --- in that case jpeg_read_header()
+    may return before it has read all the header data.  See "I/O suspension",
+    below.  The normal stdio source manager will NOT cause this to happen.
+  * Abbreviated JPEG files are to be processed --- see the section on
+    abbreviated datastreams.  Standard applications that deal only in
+    interchange JPEG files need not be concerned with this case either.
+
+It is permissible to stop at this point if you just wanted to find out the
+image dimensions and other header info for a JPEG file.  In that case,
+call jpeg_destroy() when you are done with the JPEG object, or call
+jpeg_abort() to return it to an idle state before selecting a new data
+source and reading another header.
+
+
+4. Set parameters for decompression.
+
+jpeg_read_header() sets appropriate default decompression parameters based on
+the properties of the image (in particular, its colorspace).  However, you
+may well want to alter these defaults before beginning the decompression.
+For example, the default is to produce full color output from a color file.
+If you want colormapped output you must ask for it.  Other options allow the
+returned image to be scaled and allow various speed/quality tradeoffs to be
+selected.  "Decompression parameter selection", below, gives details.
+
+If the defaults are appropriate, nothing need be done at this step.
+
+Note that all default values are set by each call to jpeg_read_header().
+If you reuse a decompression object, you cannot expect your parameter
+settings to be preserved across cycles, as you can for compression.
+You must set desired parameter values each time.
+
+
+5. jpeg_start_decompress(...);
+
+Once the parameter values are satisfactory, call jpeg_start_decompress() to
+begin decompression.  This will initialize internal state, allocate working
+memory, and prepare for returning data.
+
+Typical code is just
+
+	jpeg_start_decompress(&cinfo);
+
+If you have requested a multi-pass operating mode, such as 2-pass color
+quantization, jpeg_start_decompress() will do everything needed before data
+output can begin.  In this case jpeg_start_decompress() may take quite a while
+to complete.  With a single-scan (non progressive) JPEG file and default
+decompression parameters, this will not happen; jpeg_start_decompress() will
+return quickly.
+
+After this call, the final output image dimensions, including any requested
+scaling, are available in the JPEG object; so is the selected colormap, if
+colormapped output has been requested.  Useful fields include
+
+	output_width		image width and height, as scaled
+	output_height
+	out_color_components	# of color components in out_color_space
+	output_components	# of color components returned per pixel
+	colormap		the selected colormap, if any
+	actual_number_of_colors		number of entries in colormap
+
+output_components is 1 (a colormap index) when quantizing colors; otherwise it
+equals out_color_components.  It is the number of JSAMPLE values that will be
+emitted per pixel in the output arrays.
+
+Typically you will need to allocate data buffers to hold the incoming image.
+You will need output_width * output_components JSAMPLEs per scanline in your
+output buffer, and a total of output_height scanlines will be returned.
+
+Note: if you are using the JPEG library's internal memory manager to allocate
+data buffers (as djpeg does), then the manager's protocol requires that you
+request large buffers *before* calling jpeg_start_decompress().  This is a
+little tricky since the output_XXX fields are not normally valid then.  You
+can make them valid by calling jpeg_calc_output_dimensions() after setting the
+relevant parameters (scaling, output color space, and quantization flag).
+
+
+6. while (scan lines remain to be read)
+	jpeg_read_scanlines(...);
+
+Now you can read the decompressed image data by calling jpeg_read_scanlines()
+one or more times.  At each call, you pass in the maximum number of scanlines
+to be read (ie, the height of your working buffer); jpeg_read_scanlines()
+will return up to that many lines.  The return value is the number of lines
+actually read.  The format of the returned data is discussed under "Data
+formats", above.  Don't forget that grayscale and color JPEGs will return
+different data formats!
+
+Image data is returned in top-to-bottom scanline order.  If you must write
+out the image in bottom-to-top order, you can use the JPEG library's virtual
+array mechanism to invert the data efficiently.  Examples of this can be
+found in the sample application djpeg.
+
+The library maintains a count of the number of scanlines returned so far
+in the output_scanline field of the JPEG object.  Usually you can just use
+this variable as the loop counter, so that the loop test looks like
+"while (cinfo.output_scanline < cinfo.output_height)".  (Note that the test
+should NOT be against image_height, unless you never use scaling.  The
+image_height field is the height of the original unscaled image.)
+The return value always equals the change in the value of output_scanline.
+
+If you don't use a suspending data source, it is safe to assume that
+jpeg_read_scanlines() reads at least one scanline per call, until the
+bottom of the image has been reached.
+
+If you use a buffer larger than one scanline, it is NOT safe to assume that
+jpeg_read_scanlines() fills it.  (The current implementation returns only a
+few scanlines per call, no matter how large a buffer you pass.)  So you must
+always provide a loop that calls jpeg_read_scanlines() repeatedly until the
+whole image has been read.
+
+
+7. jpeg_finish_decompress(...);
+
+After all the image data has been read, call jpeg_finish_decompress() to
+complete the decompression cycle.  This causes working memory associated
+with the JPEG object to be released.
+
+Typical code:
+
+	jpeg_finish_decompress(&cinfo);
+
+If using the stdio source manager, don't forget to close the source stdio
+stream if necessary.
+
+It is an error to call jpeg_finish_decompress() before reading the correct
+total number of scanlines.  If you wish to abort decompression, call
+jpeg_abort() as discussed below.
+
+After completing a decompression cycle, you may dispose of the JPEG object as
+discussed next, or you may use it to decompress another image.  In that case
+return to step 2 or 3 as appropriate.  If you do not change the source
+manager, the next image will be read from the same source.
+
+
+8. Release the JPEG decompression object.
+
+When you are done with a JPEG decompression object, destroy it by calling
+jpeg_destroy_decompress() or jpeg_destroy().  The previous discussion of
+destroying compression objects applies here too.
+
+Typical code:
+
+	jpeg_destroy_decompress(&cinfo);
+
+
+9. Aborting.
+
+You can abort a decompression cycle by calling jpeg_destroy_decompress() or
+jpeg_destroy() if you don't need the JPEG object any more, or
+jpeg_abort_decompress() or jpeg_abort() if you want to reuse the object.
+The previous discussion of aborting compression cycles applies here too.
+
+
+Mechanics of usage: include files, linking, etc
+-----------------------------------------------
+
+Applications using the JPEG library should include the header file jpeglib.h
+to obtain declarations of data types and routines.  Before including
+jpeglib.h, include system headers that define at least the typedefs FILE and
+size_t.  On ANSI-conforming systems, including <stdio.h> is sufficient; on
+older Unix systems, you may need <sys/types.h> to define size_t.
+
+If the application needs to refer to individual JPEG library error codes, also
+include jerror.h to define those symbols.
+
+jpeglib.h indirectly includes the files jconfig.h and jmorecfg.h.  If you are
+installing the JPEG header files in a system directory, you will want to
+install all four files: jpeglib.h, jerror.h, jconfig.h, jmorecfg.h.
+
+The most convenient way to include the JPEG code into your executable program
+is to prepare a library file ("libjpeg.a", or a corresponding name on non-Unix
+machines) and reference it at your link step.  If you use only half of the
+library (only compression or only decompression), only that much code will be
+included from the library, unless your linker is hopelessly brain-damaged.
+The supplied makefiles build libjpeg.a automatically (see install.doc).
+
+While you can build the JPEG library as a shared library if the whim strikes
+you, we don't really recommend it.  The trouble with shared libraries is that
+at some point you'll probably try to substitute a new version of the library
+without recompiling the calling applications.  That generally doesn't work
+because the parameter struct declarations usually change with each new
+version.  In other words, the library's API is *not* guaranteed binary
+compatible across versions; we only try to ensure source-code compatibility.
+(In hindsight, it might have been smarter to hide the parameter structs from
+applications and introduce a ton of access functions instead.  Too late now,
+however.)
+
+On some systems your application may need to set up a signal handler to ensure
+that temporary files are deleted if the program is interrupted.  This is most
+critical if you are on MS-DOS and use the jmemdos.c memory manager back end;
+it will try to grab extended memory for temp files, and that space will NOT be
+freed automatically.  See cjpeg.c or djpeg.c for an example signal handler.
+
+It may be worth pointing out that the core JPEG library does not actually
+require the stdio library: only the default source/destination managers and
+error handler need it.  You can use the library in a stdio-less environment
+if you replace those modules and use jmemnobs.c (or another memory manager of
+your own devising).  More info about the minimum system library requirements
+may be found in jinclude.h.
+
+
+ADVANCED FEATURES
+=================
+
+Compression parameter selection
+-------------------------------
+
+This section describes all the optional parameters you can set for JPEG
+compression, as well as the "helper" routines provided to assist in this
+task.  Proper setting of some parameters requires detailed understanding
+of the JPEG standard; if you don't know what a parameter is for, it's best
+not to mess with it!  See REFERENCES in the README file for pointers to
+more info about JPEG.
+
+It's a good idea to call jpeg_set_defaults() first, even if you plan to set
+all the parameters; that way your code is more likely to work with future JPEG
+libraries that have additional parameters.  For the same reason, we recommend
+you use a helper routine where one is provided, in preference to twiddling
+cinfo fields directly.
+
+The helper routines are:
+
+jpeg_set_defaults (j_compress_ptr cinfo)
+	This routine sets all JPEG parameters to reasonable defaults, using
+	only the input image's color space (field in_color_space, which must
+	already be set in cinfo).  Many applications will only need to use
+	this routine and perhaps jpeg_set_quality().
+
+jpeg_set_colorspace (j_compress_ptr cinfo, J_COLOR_SPACE colorspace)
+	Sets the JPEG file's colorspace (field jpeg_color_space) as specified,
+	and sets other color-space-dependent parameters appropriately.  See
+	"Special color spaces", below, before using this.  A large number of
+	parameters, including all per-component parameters, are set by this
+	routine; if you want to twiddle individual parameters you should call
+	jpeg_set_colorspace() before rather than after.
+
+jpeg_default_colorspace (j_compress_ptr cinfo)
+	Selects an appropriate JPEG colorspace based on cinfo->in_color_space,
+	and calls jpeg_set_colorspace().  This is actually a subroutine of
+	jpeg_set_defaults().  It's broken out in case you want to change
+	just the colorspace-dependent JPEG parameters.
+
+jpeg_set_quality (j_compress_ptr cinfo, int quality, boolean force_baseline)
+	Constructs JPEG quantization tables appropriate for the indicated
+	quality setting.  The quality value is expressed on the 0..100 scale
+	recommended by IJG (cjpeg's "-quality" switch uses this routine).
+	Note that the exact mapping from quality values to tables may change
+	in future IJG releases as more is learned about DCT quantization.
+	If the force_baseline parameter is TRUE, then the quantization table
+	entries are constrained to the range 1..255 for full JPEG baseline
+	compatibility.  In the current implementation, this only makes a
+	difference for quality settings below 25, and it effectively prevents
+	very small/low quality files from being generated.  The IJG decoder
+	is capable of reading the non-baseline files generated at low quality
+	settings when force_baseline is FALSE, but other decoders may not be.
+
+jpeg_set_linear_quality (j_compress_ptr cinfo, int scale_factor,
+			 boolean force_baseline)
+	Same as jpeg_set_quality() except that the generated tables are the
+	sample tables given in the JPEC spec section K.1, multiplied by the
+	specified scale factor (which is expressed as a percentage; thus
+	scale_factor = 100 reproduces the spec's tables).  Note that larger
+	scale factors give lower quality.  This entry point is useful for
+	conforming to the Adobe PostScript DCT conventions, but we do not
+	recommend linear scaling as a user-visible quality scale otherwise.
+	force_baseline again constrains the computed table entries to 1..255.
+
+int jpeg_quality_scaling (int quality)
+	Converts a value on the IJG-recommended quality scale to a linear
+	scaling percentage.  Note that this routine may change or go away
+	in future releases --- IJG may choose to adopt a scaling method that
+	can't be expressed as a simple scalar multiplier, in which case the
+	premise of this routine collapses.  Caveat user.
+
+jpeg_add_quant_table (j_compress_ptr cinfo, int which_tbl,
+		      const unsigned int *basic_table,
+		      int scale_factor, boolean force_baseline)
+	Allows an arbitrary quantization table to be created.  which_tbl
+	indicates which table slot to fill.  basic_table points to an array
+	of 64 unsigned ints given in normal array order.  These values are
+	multiplied by scale_factor/100 and then clamped to the range 1..65535
+	(or to 1..255 if force_baseline is TRUE).
+	CAUTION: prior to library version 6a, jpeg_add_quant_table expected
+	the basic table to be given in JPEG zigzag order.  If you need to
+	write code that works with either older or newer versions of this
+	routine, you must check the library version number.  Something like
+	"#if JPEG_LIB_VERSION >= 61" is the right test.
+
+jpeg_simple_progression (j_compress_ptr cinfo)
+	Generates a default scan script for writing a progressive-JPEG file.
+	This is the recommended method of creating a progressive file,
+	unless you want to make a custom scan sequence.  You must ensure that
+	the JPEG color space is set correctly before calling this routine.
+
+
+Compression parameters (cinfo fields) include:
+
+J_DCT_METHOD dct_method
+	Selects the algorithm used for the DCT step.  Choices are:
+		JDCT_ISLOW: slow but accurate integer algorithm
+		JDCT_IFAST: faster, less accurate integer method
+		JDCT_FLOAT: floating-point method
+		JDCT_DEFAULT: default method (normally JDCT_ISLOW)
+		JDCT_FASTEST: fastest method (normally JDCT_IFAST)
+	The FLOAT method is very slightly more accurate than the ISLOW method,
+	but may give different results on different machines due to varying
+	roundoff behavior.  The integer methods should give the same results
+	on all machines.  On machines with sufficiently fast FP hardware, the
+	floating-point method may also be the fastest.  The IFAST method is
+	considerably less accurate than the other two; its use is not
+	recommended if high quality is a concern.  JDCT_DEFAULT and
+	JDCT_FASTEST are macros configurable by each installation.
+
+J_COLOR_SPACE jpeg_color_space
+int num_components
+	The JPEG color space and corresponding number of components; see
+	"Special color spaces", below, for more info.  We recommend using
+	jpeg_set_color_space() if you want to change these.
+
+boolean optimize_coding
+	TRUE causes the compressor to compute optimal Huffman coding tables
+	for the image.  This requires an extra pass over the data and
+	therefore costs a good deal of space and time.  The default is
+	FALSE, which tells the compressor to use the supplied or default
+	Huffman tables.  In most cases optimal tables save only a few percent
+	of file size compared to the default tables.  Note that when this is
+	TRUE, you need not supply Huffman tables at all, and any you do
+	supply will be overwritten.
+
+unsigned int restart_interval
+int restart_in_rows
+	To emit restart markers in the JPEG file, set one of these nonzero.
+	Set restart_interval to specify the exact interval in MCU blocks.
+	Set restart_in_rows to specify the interval in MCU rows.  (If
+	restart_in_rows is not 0, then restart_interval is set after the
+	image width in MCUs is computed.)  Defaults are zero (no restarts).
+	One restart marker per MCU row is often a good choice.
+	NOTE: the overhead of restart markers is higher in grayscale JPEG
+	files than in color files, and MUCH higher in progressive JPEGs.
+	If you use restarts, you may want to use larger intervals in those
+	cases.
+
+const jpeg_scan_info * scan_info
+int num_scans
+	By default, scan_info is NULL; this causes the compressor to write a
+	single-scan sequential JPEG file.  If not NULL, scan_info points to
+	an array of scan definition records of length num_scans.  The
+	compressor will then write a JPEG file having one scan for each scan
+	definition record.  This is used to generate noninterleaved or
+	progressive JPEG files.  The library checks that the scan array
+	defines a valid JPEG scan sequence.  (jpeg_simple_progression creates
+	a suitable scan definition array for progressive JPEG.)  This is
+	discussed further under "Progressive JPEG support".
+
+int smoothing_factor
+	If non-zero, the input image is smoothed; the value should be 1 for
+	minimal smoothing to 100 for maximum smoothing.  Consult jcsample.c
+	for details of the smoothing algorithm.  The default is zero.
+
+boolean write_JFIF_header
+	If TRUE, a JFIF APP0 marker is emitted.  jpeg_set_defaults() and
+	jpeg_set_colorspace() set this TRUE if a JFIF-legal JPEG color space
+	(ie, YCbCr or grayscale) is selected, otherwise FALSE.
+
+UINT8 JFIF_major_version
+UINT8 JFIF_minor_version
+	The version number to be written into the JFIF marker.
+	jpeg_set_defaults() initializes the version to 1.01 (major=minor=1).
+	You should set it to 1.02 (major=1, minor=2) if you plan to write
+	any JFIF 1.02 extension markers.
+
+UINT8 density_unit
+UINT16 X_density
+UINT16 Y_density
+	The resolution information to be written into the JFIF marker;
+	not used otherwise.  density_unit may be 0 for unknown,
+	1 for dots/inch, or 2 for dots/cm.  The default values are 0,1,1
+	indicating square pixels of unknown size.
+
+boolean write_Adobe_marker
+	If TRUE, an Adobe APP14 marker is emitted.  jpeg_set_defaults() and
+	jpeg_set_colorspace() set this TRUE if JPEG color space RGB, CMYK,
+	or YCCK is selected, otherwise FALSE.  It is generally a bad idea
+	to set both write_JFIF_header and write_Adobe_marker.  In fact,
+	you probably shouldn't change the default settings at all --- the
+	default behavior ensures that the JPEG file's color space can be
+	recognized by the decoder.
+
+JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS]
+	Pointers to coefficient quantization tables, one per table slot,
+	or NULL if no table is defined for a slot.  Usually these should
+	be set via one of the above helper routines; jpeg_add_quant_table()
+	is general enough to define any quantization table.  The other
+	routines will set up table slot 0 for luminance quality and table
+	slot 1 for chrominance.
+
+JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS]
+JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS]
+	Pointers to Huffman coding tables, one per table slot, or NULL if
+	no table is defined for a slot.  Slots 0 and 1 are filled with the
+	JPEG sample tables by jpeg_set_defaults().  If you need to allocate
+	more table structures, jpeg_alloc_huff_table() may be used.
+	Note that optimal Huffman tables can be computed for an image
+	by setting optimize_coding, as discussed above; there's seldom
+	any need to mess with providing your own Huffman tables.
+
+There are some additional cinfo fields which are not documented here
+because you currently can't change them; for example, you can't set
+arith_code TRUE because arithmetic coding is unsupported.
+
+
+Per-component parameters are stored in the struct cinfo.comp_info[i] for
+component number i.  Note that components here refer to components of the
+JPEG color space, *not* the source image color space.  A suitably large
+comp_info[] array is allocated by jpeg_set_defaults(); if you choose not
+to use that routine, it's up to you to allocate the array.
+
+int component_id
+	The one-byte identifier code to be recorded in the JPEG file for
+	this component.  For the standard color spaces, we recommend you
+	leave the default values alone.
+
+int h_samp_factor
+int v_samp_factor
+	Horizontal and vertical sampling factors for the component; must
+	be 1..4 according to the JPEG standard.  Note that larger sampling
+	factors indicate a higher-resolution component; many people find
+	this behavior quite unintuitive.  The default values are 2,2 for
+	luminance components and 1,1 for chrominance components, except
+	for grayscale where 1,1 is used.
+
+int quant_tbl_no
+	Quantization table number for component.  The default value is
+	0 for luminance components and 1 for chrominance components.
+
+int dc_tbl_no
+int ac_tbl_no
+	DC and AC entropy coding table numbers.  The default values are
+	0 for luminance components and 1 for chrominance components.
+
+int component_index
+	Must equal the component's index in comp_info[].  (Beginning in
+	release v6, the compressor library will fill this in automatically;
+	you don't have to.)
+
+
+Decompression parameter selection
+---------------------------------
+
+Decompression parameter selection is somewhat simpler than compression
+parameter selection, since all of the JPEG internal parameters are
+recorded in the source file and need not be supplied by the application.
+(Unless you are working with abbreviated files, in which case see
+"Abbreviated datastreams", below.)  Decompression parameters control
+the postprocessing done on the image to deliver it in a format suitable
+for the application's use.  Many of the parameters control speed/quality
+tradeoffs, in which faster decompression may be obtained at the price of
+a poorer-quality image.  The defaults select the highest quality (slowest)
+processing.
+
+The following fields in the JPEG object are set by jpeg_read_header() and
+may be useful to the application in choosing decompression parameters:
+
+JDIMENSION image_width			Width and height of image
+JDIMENSION image_height
+int num_components			Number of color components
+J_COLOR_SPACE jpeg_color_space		Colorspace of image
+boolean saw_JFIF_marker			TRUE if a JFIF APP0 marker was seen
+  UINT8 JFIF_major_version		Version information from JFIF marker
+  UINT8 JFIF_minor_version
+  UINT8 density_unit			Resolution data from JFIF marker
+  UINT16 X_density
+  UINT16 Y_density
+boolean saw_Adobe_marker		TRUE if an Adobe APP14 marker was seen
+  UINT8 Adobe_transform			Color transform code from Adobe marker
+
+The JPEG color space, unfortunately, is something of a guess since the JPEG
+standard proper does not provide a way to record it.  In practice most files
+adhere to the JFIF or Adobe conventions, and the decoder will recognize these
+correctly.  See "Special color spaces", below, for more info.
+
+
+The decompression parameters that determine the basic properties of the
+returned image are:
+
+J_COLOR_SPACE out_color_space
+	Output color space.  jpeg_read_header() sets an appropriate default
+	based on jpeg_color_space; typically it will be RGB or grayscale.
+	The application can change this field to request output in a different
+	colorspace.  For example, set it to JCS_GRAYSCALE to get grayscale
+	output from a color file.  (This is useful for previewing: grayscale
+	output is faster than full color since the color components need not
+	be processed.)  Note that not all possible color space transforms are
+	currently implemented; you may need to extend jdcolor.c if you want an
+	unusual conversion.
+
+unsigned int scale_num, scale_denom
+	Scale the image by the fraction scale_num/scale_denom.  Default is
+	1/1, or no scaling.  Currently, the only supported scaling ratios
+	are 1/1, 1/2, 1/4, and 1/8.  (The library design allows for arbitrary
+	scaling ratios but this is not likely to be implemented any time soon.)
+	Smaller scaling ratios permit significantly faster decoding since
+	fewer pixels need be processed and a simpler IDCT method can be used.
+
+boolean quantize_colors
+	If set TRUE, colormapped output will be delivered.  Default is FALSE,
+	meaning that full-color output will be delivered.
+
+The next three parameters are relevant only if quantize_colors is TRUE.
+
+int desired_number_of_colors
+	Maximum number of colors to use in generating a library-supplied color
+	map (the actual number of colors is returned in a different field).
+	Default 256.  Ignored when the application supplies its own color map.
+
+boolean two_pass_quantize
+	If TRUE, an extra pass over the image is made to select a custom color
+	map for the image.  This usually looks a lot better than the one-size-
+	fits-all colormap that is used otherwise.  Default is TRUE.  Ignored
+	when the application supplies its own color map.
+
+J_DITHER_MODE dither_mode
+	Selects color dithering method.  Supported values are:
+		JDITHER_NONE	no dithering: fast, very low quality
+		JDITHER_ORDERED	ordered dither: moderate speed and quality
+		JDITHER_FS	Floyd-Steinberg dither: slow, high quality
+	Default is JDITHER_FS.  (At present, ordered dither is implemented
+	only in the single-pass, standard-colormap case.  If you ask for
+	ordered dither when two_pass_quantize is TRUE or when you supply
+	an external color map, you'll get F-S dithering.)
+
+When quantize_colors is TRUE, the target color map is described by the next
+two fields.  colormap is set to NULL by jpeg_read_header().  The application
+can supply a color map by setting colormap non-NULL and setting
+actual_number_of_colors to the map size.  Otherwise, jpeg_start_decompress()
+selects a suitable color map and sets these two fields itself.
+[Implementation restriction: at present, an externally supplied colormap is
+only accepted for 3-component output color spaces.]
+
+JSAMPARRAY colormap
+	The color map, represented as a 2-D pixel array of out_color_components
+	rows and actual_number_of_colors columns.  Ignored if not quantizing.
+	CAUTION: if the JPEG library creates its own colormap, the storage
+	pointed to by this field is released by jpeg_finish_decompress().
+	Copy the colormap somewhere else first, if you want to save it.
+
+int actual_number_of_colors
+	The number of colors in the color map.
+
+Additional decompression parameters that the application may set include:
+
+J_DCT_METHOD dct_method
+	Selects the algorithm used for the DCT step.  Choices are the same
+	as described above for compression.
+
+boolean do_fancy_upsampling
+	If TRUE, do careful upsampling of chroma components.  If FALSE,
+	a faster but sloppier method is used.  Default is TRUE.  The visual
+	impact of the sloppier method is often very small.
+
+boolean do_block_smoothing
+	If TRUE, interblock smoothing is applied in early stages of decoding
+	progressive JPEG files; if FALSE, not.  Default is TRUE.  Early
+	progression stages look "fuzzy" with smoothing, "blocky" without.
+	In any case, block smoothing ceases to be applied after the first few
+	AC coefficients are known to full accuracy, so it is relevant only
+	when using buffered-image mode for progressive images.
+
+boolean enable_1pass_quant
+boolean enable_external_quant
+boolean enable_2pass_quant
+	These are significant only in buffered-image mode, which is
+	described in its own section below.
+
+
+The output image dimensions are given by the following fields.  These are
+computed from the source image dimensions and the decompression parameters
+by jpeg_start_decompress().  You can also call jpeg_calc_output_dimensions()
+to obtain the values that will result from the current parameter settings.
+This can be useful if you are trying to pick a scaling ratio that will get
+close to a desired target size.  It's also important if you are using the
+JPEG library's memory manager to allocate output buffer space, because you
+are supposed to request such buffers *before* jpeg_start_decompress().
+
+JDIMENSION output_width		Actual dimensions of output image.
+JDIMENSION output_height
+int out_color_components	Number of color components in out_color_space.
+int output_components		Number of color components returned.
+int rec_outbuf_height		Recommended height of scanline buffer.
+
+When quantizing colors, output_components is 1, indicating a single color map
+index per pixel.  Otherwise it equals out_color_components.  The output arrays
+are required to be output_width * output_components JSAMPLEs wide.
+
+rec_outbuf_height is the recommended minimum height (in scanlines) of the
+buffer passed to jpeg_read_scanlines().  If the buffer is smaller, the
+library will still work, but time will be wasted due to unnecessary data
+copying.  In high-quality modes, rec_outbuf_height is always 1, but some
+faster, lower-quality modes set it to larger values (typically 2 to 4).
+If you are going to ask for a high-speed processing mode, you may as well
+go to the trouble of honoring rec_outbuf_height so as to avoid data copying.
+(An output buffer larger than rec_outbuf_height lines is OK, but won't
+provide any material speed improvement over that height.)
+
+
+Special color spaces
+--------------------
+
+The JPEG standard itself is "color blind" and doesn't specify any particular
+color space.  It is customary to convert color data to a luminance/chrominance
+color space before compressing, since this permits greater compression.  The
+existing de-facto JPEG file format standards specify YCbCr or grayscale data
+(JFIF), or grayscale, RGB, YCbCr, CMYK, or YCCK (Adobe).  For special
+applications such as multispectral images, other color spaces can be used,
+but it must be understood that such files will be unportable.
+
+The JPEG library can handle the most common colorspace conversions (namely
+RGB <=> YCbCr and CMYK <=> YCCK).  It can also deal with data of an unknown
+color space, passing it through without conversion.  If you deal extensively
+with an unusual color space, you can easily extend the library to understand
+additional color spaces and perform appropriate conversions.
+
+For compression, the source data's color space is specified by field
+in_color_space.  This is transformed to the JPEG file's color space given
+by jpeg_color_space.  jpeg_set_defaults() chooses a reasonable JPEG color
+space depending on in_color_space, but you can override this by calling
+jpeg_set_colorspace().  Of course you must select a supported transformation.
+jccolor.c currently supports the following transformations:
+	RGB => YCbCr
+	RGB => GRAYSCALE
+	YCbCr => GRAYSCALE
+	CMYK => YCCK
+plus the null transforms: GRAYSCALE => GRAYSCALE, RGB => RGB,
+YCbCr => YCbCr, CMYK => CMYK, YCCK => YCCK, and UNKNOWN => UNKNOWN.
+
+The de-facto file format standards (JFIF and Adobe) specify APPn markers that
+indicate the color space of the JPEG file.  It is important to ensure that
+these are written correctly, or omitted if the JPEG file's color space is not
+one of the ones supported by the de-facto standards.  jpeg_set_colorspace()
+will set the compression parameters to include or omit the APPn markers
+properly, so long as it is told the truth about the JPEG color space.
+For example, if you are writing some random 3-component color space without
+conversion, don't try to fake out the library by setting in_color_space and
+jpeg_color_space to JCS_YCbCr; use JCS_UNKNOWN.  You may want to write an
+APPn marker of your own devising to identify the colorspace --- see "Special
+markers", below.
+
+When told that the color space is UNKNOWN, the library will default to using
+luminance-quality compression parameters for all color components.  You may
+well want to change these parameters.  See the source code for
+jpeg_set_colorspace(), in jcparam.c, for details.
+
+For decompression, the JPEG file's color space is given in jpeg_color_space,
+and this is transformed to the output color space out_color_space.
+jpeg_read_header's setting of jpeg_color_space can be relied on if the file
+conforms to JFIF or Adobe conventions, but otherwise it is no better than a
+guess.  If you know the JPEG file's color space for certain, you can override
+jpeg_read_header's guess by setting jpeg_color_space.  jpeg_read_header also
+selects a default output color space based on (its guess of) jpeg_color_space;
+set out_color_space to override this.  Again, you must select a supported
+transformation.  jdcolor.c currently supports
+	YCbCr => GRAYSCALE
+	YCbCr => RGB
+	GRAYSCALE => RGB
+	YCCK => CMYK
+as well as the null transforms.  (Since GRAYSCALE=>RGB is provided, an
+application can force grayscale JPEGs to look like color JPEGs if it only
+wants to handle one case.)
+
+The two-pass color quantizer, jquant2.c, is specialized to handle RGB data
+(it weights distances appropriately for RGB colors).  You'll need to modify
+the code if you want to use it for non-RGB output color spaces.  Note that
+jquant2.c is used to map to an application-supplied colormap as well as for
+the normal two-pass colormap selection process.
+
+CAUTION: it appears that Adobe Photoshop writes inverted data in CMYK JPEG
+files: 0 represents 100% ink coverage, rather than 0% ink as you'd expect.
+This is arguably a bug in Photoshop, but if you need to work with Photoshop
+CMYK files, you will have to deal with it in your application.  We cannot
+"fix" this in the library by inverting the data during the CMYK<=>YCCK
+transform, because that would break other applications, notably Ghostscript.
+Photoshop versions prior to 3.0 write EPS files containing JPEG-encoded CMYK
+data in the same inverted-YCCK representation used in bare JPEG files, but
+the surrounding PostScript code performs an inversion using the PS image
+operator.  I am told that Photoshop 3.0 will write uninverted YCCK in
+EPS/JPEG files, and will omit the PS-level inversion.  (But the data
+polarity used in bare JPEG files will not change in 3.0.)  In either case,
+the JPEG library must not invert the data itself, or else Ghostscript would
+read these EPS files incorrectly.
+
+
+Error handling
+--------------
+
+When the default error handler is used, any error detected inside the JPEG
+routines will cause a message to be printed on stderr, followed by exit().
+You can supply your own error handling routines to override this behavior
+and to control the treatment of nonfatal warnings and trace/debug messages.
+The file example.c illustrates the most common case, which is to have the
+application regain control after an error rather than exiting.
+
+The JPEG library never writes any message directly; it always goes through
+the error handling routines.  Three classes of messages are recognized:
+  * Fatal errors: the library cannot continue.
+  * Warnings: the library can continue, but the data is corrupt, and a
+    damaged output image is likely to result.
+  * Trace/informational messages.  These come with a trace level indicating
+    the importance of the message; you can control the verbosity of the
+    program by adjusting the maximum trace level that will be displayed.
+
+You may, if you wish, simply replace the entire JPEG error handling module
+(jerror.c) with your own code.  However, you can avoid code duplication by
+only replacing some of the routines depending on the behavior you need.
+This is accomplished by calling jpeg_std_error() as usual, but then overriding
+some of the method pointers in the jpeg_error_mgr struct, as illustrated by
+example.c.
+
+All of the error handling routines will receive a pointer to the JPEG object
+(a j_common_ptr which points to either a jpeg_compress_struct or a
+jpeg_decompress_struct; if you need to tell which, test the is_decompressor
+field).  This struct includes a pointer to the error manager struct in its
+"err" field.  Frequently, custom error handler routines will need to access
+additional data which is not known to the JPEG library or the standard error
+handler.  The most convenient way to do this is to embed either the JPEG
+object or the jpeg_error_mgr struct in a larger structure that contains
+additional fields; then casting the passed pointer provides access to the
+additional fields.  Again, see example.c for one way to do it.  (Beginning
+with IJG version 6b, there is also a void pointer "client_data" in each
+JPEG object, which the application can also use to find related data.
+The library does not touch client_data at all.)
+
+The individual methods that you might wish to override are:
+
+error_exit (j_common_ptr cinfo)
+	Receives control for a fatal error.  Information sufficient to
+	generate the error message has been stored in cinfo->err; call
+	output_message to display it.  Control must NOT return to the caller;
+	generally this routine will exit() or longjmp() somewhere.
+	Typically you would override this routine to get rid of the exit()
+	default behavior.  Note that if you continue processing, you should
+	clean up the JPEG object with jpeg_abort() or jpeg_destroy().
+
+output_message (j_common_ptr cinfo)
+	Actual output of any JPEG message.  Override this to send messages
+	somewhere other than stderr.  Note that this method does not know
+	how to generate a message, only where to send it.
+
+format_message (j_common_ptr cinfo, char * buffer)
+	Constructs a readable error message string based on the error info
+	stored in cinfo->err.  This method is called by output_message.  Few
+	applications should need to override this method.  One possible
+	reason for doing so is to implement dynamic switching of error message
+	language.
+
+emit_message (j_common_ptr cinfo, int msg_level)
+	Decide whether or not to emit a warning or trace message; if so,
+	calls output_message.  The main reason for overriding this method
+	would be to abort on warnings.  msg_level is -1 for warnings,
+	0 and up for trace messages.
+
+Only error_exit() and emit_message() are called from the rest of the JPEG
+library; the other two are internal to the error handler.
+
+The actual message texts are stored in an array of strings which is pointed to
+by the field err->jpeg_message_table.  The messages are numbered from 0 to
+err->last_jpeg_message, and it is these code numbers that are used in the
+JPEG library code.  You could replace the message texts (for instance, with
+messages in French or German) by changing the message table pointer.  See
+jerror.h for the default texts.  CAUTION: this table will almost certainly
+change or grow from one library version to the next.
+
+It may be useful for an application to add its own message texts that are
+handled by the same mechanism.  The error handler supports a second "add-on"
+message table for this purpose.  To define an addon table, set the pointer
+err->addon_message_table and the message numbers err->first_addon_message and
+err->last_addon_message.  If you number the addon messages beginning at 1000
+or so, you won't have to worry about conflicts with the library's built-in
+messages.  See the sample applications cjpeg/djpeg for an example of using
+addon messages (the addon messages are defined in cderror.h).
+
+Actual invocation of the error handler is done via macros defined in jerror.h:
+	ERREXITn(...)	for fatal errors
+	WARNMSn(...)	for corrupt-data warnings
+	TRACEMSn(...)	for trace and informational messages.
+These macros store the message code and any additional parameters into the
+error handler struct, then invoke the error_exit() or emit_message() method.
+The variants of each macro are for varying numbers of additional parameters.
+The additional parameters are inserted into the generated message using
+standard printf() format codes.
+
+See jerror.h and jerror.c for further details.
+
+
+Compressed data handling (source and destination managers)
+----------------------------------------------------------
+
+The JPEG compression library sends its compressed data to a "destination
+manager" module.  The default destination manager just writes the data to a
+stdio stream, but you can provide your own manager to do something else.
+Similarly, the decompression library calls a "source manager" to obtain the
+compressed data; you can provide your own source manager if you want the data
+to come from somewhere other than a stdio stream.
+
+In both cases, compressed data is processed a bufferload at a time: the
+destination or source manager provides a work buffer, and the library invokes
+the manager only when the buffer is filled or emptied.  (You could define a
+one-character buffer to force the manager to be invoked for each byte, but
+that would be rather inefficient.)  The buffer's size and location are
+controlled by the manager, not by the library.  For example, if you desired to
+decompress a JPEG datastream that was all in memory, you could just make the
+buffer pointer and length point to the original data in memory.  Then the
+buffer-reload procedure would be invoked only if the decompressor ran off the
+end of the datastream, which would indicate an erroneous datastream.
+
+The work buffer is defined as an array of datatype JOCTET, which is generally
+"char" or "unsigned char".  On a machine where char is not exactly 8 bits
+wide, you must define JOCTET as a wider data type and then modify the data
+source and destination modules to transcribe the work arrays into 8-bit units
+on external storage.
+
+A data destination manager struct contains a pointer and count defining the
+next byte to write in the work buffer and the remaining free space:
+
+	JOCTET * next_output_byte;  /* => next byte to write in buffer */
+	size_t free_in_buffer;      /* # of byte spaces remaining in buffer */
+
+The library increments the pointer and decrements the count until the buffer
+is filled.  The manager's empty_output_buffer method must reset the pointer
+and count.  The manager is expected to remember the buffer's starting address
+and total size in private fields not visible to the library.
+
+A data destination manager provides three methods:
+
+init_destination (j_compress_ptr cinfo)
+	Initialize destination.  This is called by jpeg_start_compress()
+	before any data is actually written.  It must initialize
+	next_output_byte and free_in_buffer.  free_in_buffer must be
+	initialized to a positive value.
+
+empty_output_buffer (j_compress_ptr cinfo)
+	This is called whenever the buffer has filled (free_in_buffer
+	reaches zero).  In typical applications, it should write out the
+	*entire* buffer (use the saved start address and buffer length;
+	ignore the current state of next_output_byte and free_in_buffer).
+	Then reset the pointer & count to the start of the buffer, and
+	return TRUE indicating that the buffer has been dumped.
+	free_in_buffer must be set to a positive value when TRUE is
+	returned.  A FALSE return should only be used when I/O suspension is
+	desired (this operating mode is discussed in the next section).
+
+term_destination (j_compress_ptr cinfo)
+	Terminate destination --- called by jpeg_finish_compress() after all
+	data has been written.  In most applications, this must flush any
+	data remaining in the buffer.  Use either next_output_byte or
+	free_in_buffer to determine how much data is in the buffer.
+
+term_destination() is NOT called by jpeg_abort() or jpeg_destroy().  If you
+want the destination manager to be cleaned up during an abort, you must do it
+yourself.
+
+You will also need code to create a jpeg_destination_mgr struct, fill in its
+method pointers, and insert a pointer to the struct into the "dest" field of
+the JPEG compression object.  This can be done in-line in your setup code if
+you like, but it's probably cleaner to provide a separate routine similar to
+the jpeg_stdio_dest() routine of the supplied destination manager.
+
+Decompression source managers follow a parallel design, but with some
+additional frammishes.  The source manager struct contains a pointer and count
+defining the next byte to read from the work buffer and the number of bytes
+remaining:
+
+	const JOCTET * next_input_byte; /* => next byte to read from buffer */
+	size_t bytes_in_buffer;         /* # of bytes remaining in buffer */
+
+The library increments the pointer and decrements the count until the buffer
+is emptied.  The manager's fill_input_buffer method must reset the pointer and
+count.  In most applications, the manager must remember the buffer's starting
+address and total size in private fields not visible to the library.
+
+A data source manager provides five methods:
+
+init_source (j_decompress_ptr cinfo)
+	Initialize source.  This is called by jpeg_read_header() before any
+	data is actually read.  Unlike init_destination(), it may leave
+	bytes_in_buffer set to 0 (in which case a fill_input_buffer() call
+	will occur immediately).
+
+fill_input_buffer (j_decompress_ptr cinfo)
+	This is called whenever bytes_in_buffer has reached zero and more
+	data is wanted.  In typical applications, it should read fresh data
+	into the buffer (ignoring the current state of next_input_byte and
+	bytes_in_buffer), reset the pointer & count to the start of the
+	buffer, and return TRUE indicating that the buffer has been reloaded.
+	It is not necessary to fill the buffer entirely, only to obtain at
+	least one more byte.  bytes_in_buffer MUST be set to a positive value
+	if TRUE is returned.  A FALSE return should only be used when I/O
+	suspension is desired (this mode is discussed in the next section).
+
+skip_input_data (j_decompress_ptr cinfo, long num_bytes)
+	Skip num_bytes worth of data.  The buffer pointer and count should
+	be advanced over num_bytes input bytes, refilling the buffer as
+	needed.  This is used to skip over a potentially large amount of
+	uninteresting data (such as an APPn marker).  In some applications
+	it may be possible to optimize away the reading of the skipped data,
+	but it's not clear that being smart is worth much trouble; large
+	skips are uncommon.  bytes_in_buffer may be zero on return.
+	A zero or negative skip count should be treated as a no-op.
+
+resync_to_restart (j_decompress_ptr cinfo, int desired)
+	This routine is called only when the decompressor has failed to find
+	a restart (RSTn) marker where one is expected.  Its mission is to
+	find a suitable point for resuming decompression.  For most
+	applications, we recommend that you just use the default resync
+	procedure, jpeg_resync_to_restart().  However, if you are able to back
+	up in the input data stream, or if you have a-priori knowledge about
+	the likely location of restart markers, you may be able to do better.
+	Read the read_restart_marker() and jpeg_resync_to_restart() routines
+	in jdmarker.c if you think you'd like to implement your own resync
+	procedure.
+
+term_source (j_decompress_ptr cinfo)
+	Terminate source --- called by jpeg_finish_decompress() after all
+	data has been read.  Often a no-op.
+
+For both fill_input_buffer() and skip_input_data(), there is no such thing
+as an EOF return.  If the end of the file has been reached, the routine has
+a choice of exiting via ERREXIT() or inserting fake data into the buffer.
+In most cases, generating a warning message and inserting a fake EOI marker
+is the best course of action --- this will allow the decompressor to output
+however much of the image is there.  In pathological cases, the decompressor
+may swallow the EOI and again demand data ... just keep feeding it fake EOIs.
+jdatasrc.c illustrates the recommended error recovery behavior.
+
+term_source() is NOT called by jpeg_abort() or jpeg_destroy().  If you want
+the source manager to be cleaned up during an abort, you must do it yourself.
+
+You will also need code to create a jpeg_source_mgr struct, fill in its method
+pointers, and insert a pointer to the struct into the "src" field of the JPEG
+decompression object.  This can be done in-line in your setup code if you
+like, but it's probably cleaner to provide a separate routine similar to the
+jpeg_stdio_src() routine of the supplied source manager.
+
+For more information, consult the stdio source and destination managers
+in jdatasrc.c and jdatadst.c.
+
+
+I/O suspension
+--------------
+
+Some applications need to use the JPEG library as an incremental memory-to-
+memory filter: when the compressed data buffer is filled or emptied, they want
+control to return to the outer loop, rather than expecting that the buffer can
+be emptied or reloaded within the data source/destination manager subroutine.
+The library supports this need by providing an "I/O suspension" mode, which we
+describe in this section.
+
+The I/O suspension mode is not a panacea: nothing is guaranteed about the
+maximum amount of time spent in any one call to the library, so it will not
+eliminate response-time problems in single-threaded applications.  If you
+need guaranteed response time, we suggest you "bite the bullet" and implement
+a real multi-tasking capability.
+
+To use I/O suspension, cooperation is needed between the calling application
+and the data source or destination manager; you will always need a custom
+source/destination manager.  (Please read the previous section if you haven't
+already.)  The basic idea is that the empty_output_buffer() or
+fill_input_buffer() routine is a no-op, merely returning FALSE to indicate
+that it has done nothing.  Upon seeing this, the JPEG library suspends
+operation and returns to its caller.  The surrounding application is
+responsible for emptying or refilling the work buffer before calling the
+JPEG library again.
+
+Compression suspension:
+
+For compression suspension, use an empty_output_buffer() routine that returns
+FALSE; typically it will not do anything else.  This will cause the
+compressor to return to the caller of jpeg_write_scanlines(), with the return
+value indicating that not all the supplied scanlines have been accepted.
+The application must make more room in the output buffer, adjust the output
+buffer pointer/count appropriately, and then call jpeg_write_scanlines()
+again, pointing to the first unconsumed scanline.
+
+When forced to suspend, the compressor will backtrack to a convenient stopping
+point (usually the start of the current MCU); it will regenerate some output
+data when restarted.  Therefore, although empty_output_buffer() is only
+called when the buffer is filled, you should NOT write out the entire buffer
+after a suspension.  Write only the data up to the current position of
+next_output_byte/free_in_buffer.  The data beyond that point will be
+regenerated after resumption.
+
+Because of the backtracking behavior, a good-size output buffer is essential
+for efficiency; you don't want the compressor to suspend often.  (In fact, an
+overly small buffer could lead to infinite looping, if a single MCU required
+more data than would fit in the buffer.)  We recommend a buffer of at least
+several Kbytes.  You may want to insert explicit code to ensure that you don't
+call jpeg_write_scanlines() unless there is a reasonable amount of space in
+the output buffer; in other words, flush the buffer before trying to compress
+more data.
+
+The compressor does not allow suspension while it is trying to write JPEG
+markers at the beginning and end of the file.  This means that:
+  * At the beginning of a compression operation, there must be enough free
+    space in the output buffer to hold the header markers (typically 600 or
+    so bytes).  The recommended buffer size is bigger than this anyway, so
+    this is not a problem as long as you start with an empty buffer.  However,
+    this restriction might catch you if you insert large special markers, such
+    as a JFIF thumbnail image, without flushing the buffer afterwards.
+  * When you call jpeg_finish_compress(), there must be enough space in the
+    output buffer to emit any buffered data and the final EOI marker.  In the
+    current implementation, half a dozen bytes should suffice for this, but
+    for safety's sake we recommend ensuring that at least 100 bytes are free
+    before calling jpeg_finish_compress().
+
+A more significant restriction is that jpeg_finish_compress() cannot suspend.
+This means you cannot use suspension with multi-pass operating modes, namely
+Huffman code optimization and multiple-scan output.  Those modes write the
+whole file during jpeg_finish_compress(), which will certainly result in
+buffer overrun.  (Note that this restriction applies only to compression,
+not decompression.  The decompressor supports input suspension in all of its
+operating modes.)
+
+Decompression suspension:
+
+For decompression suspension, use a fill_input_buffer() routine that simply
+returns FALSE (except perhaps during error recovery, as discussed below).
+This will cause the decompressor to return to its caller with an indication
+that suspension has occurred.  This can happen at four places:
+  * jpeg_read_header(): will return JPEG_SUSPENDED.
+  * jpeg_start_decompress(): will return FALSE, rather than its usual TRUE.
+  * jpeg_read_scanlines(): will return the number of scanlines already
+	completed (possibly 0).
+  * jpeg_finish_decompress(): will return FALSE, rather than its usual TRUE.
+The surrounding application must recognize these cases, load more data into
+the input buffer, and repeat the call.  In the case of jpeg_read_scanlines(),
+increment the passed pointers past any scanlines successfully read.
+
+Just as with compression, the decompressor will typically backtrack to a
+convenient restart point before suspending.  When fill_input_buffer() is
+called, next_input_byte/bytes_in_buffer point to the current restart point,
+which is where the decompressor will backtrack to if FALSE is returned.
+The data beyond that position must NOT be discarded if you suspend; it needs
+to be re-read upon resumption.  In most implementations, you'll need to shift
+this data down to the start of your work buffer and then load more data after
+it.  Again, this behavior means that a several-Kbyte work buffer is essential
+for decent performance; furthermore, you should load a reasonable amount of
+new data before resuming decompression.  (If you loaded, say, only one new
+byte each time around, you could waste a LOT of cycles.)
+
+The skip_input_data() source manager routine requires special care in a
+suspension scenario.  This routine is NOT granted the ability to suspend the
+decompressor; it can decrement bytes_in_buffer to zero, but no more.  If the
+requested skip distance exceeds the amount of data currently in the input
+buffer, then skip_input_data() must set bytes_in_buffer to zero and record the
+additional skip distance somewhere else.  The decompressor will immediately
+call fill_input_buffer(), which should return FALSE, which will cause a
+suspension return.  The surrounding application must then arrange to discard
+the recorded number of bytes before it resumes loading the input buffer.
+(Yes, this design is rather baroque, but it avoids complexity in the far more
+common case where a non-suspending source manager is used.)
+
+If the input data has been exhausted, we recommend that you emit a warning
+and insert dummy EOI markers just as a non-suspending data source manager
+would do.  This can be handled either in the surrounding application logic or
+within fill_input_buffer(); the latter is probably more efficient.  If
+fill_input_buffer() knows that no more data is available, it can set the
+pointer/count to point to a dummy EOI marker and then return TRUE just as
+though it had read more data in a non-suspending situation.
+
+The decompressor does not attempt to suspend within standard JPEG markers;
+instead it will backtrack to the start of the marker and reprocess the whole
+marker next time.  Hence the input buffer must be large enough to hold the
+longest standard marker in the file.  Standard JPEG markers should normally
+not exceed a few hundred bytes each (DHT tables are typically the longest).
+We recommend at least a 2K buffer for performance reasons, which is much
+larger than any correct marker is likely to be.  For robustness against
+damaged marker length counts, you may wish to insert a test in your
+application for the case that the input buffer is completely full and yet
+the decoder has suspended without consuming any data --- otherwise, if this
+situation did occur, it would lead to an endless loop.  (The library can't
+provide this test since it has no idea whether "the buffer is full", or
+even whether there is a fixed-size input buffer.)
+
+The input buffer would need to be 64K to allow for arbitrary COM or APPn
+markers, but these are handled specially: they are either saved into allocated
+memory, or skipped over by calling skip_input_data().  In the former case,
+suspension is handled correctly, and in the latter case, the problem of
+buffer overrun is placed on skip_input_data's shoulders, as explained above.
+Note that if you provide your own marker handling routine for large markers,
+you should consider how to deal with buffer overflow.
+
+Multiple-buffer management:
+
+In some applications it is desirable to store the compressed data in a linked
+list of buffer areas, so as to avoid data copying.  This can be handled by
+having empty_output_buffer() or fill_input_buffer() set the pointer and count
+to reference the next available buffer; FALSE is returned only if no more
+buffers are available.  Although seemingly straightforward, there is a
+pitfall in this approach: the backtrack that occurs when FALSE is returned
+could back up into an earlier buffer.  For example, when fill_input_buffer()
+is called, the current pointer & count indicate the backtrack restart point.
+Since fill_input_buffer() will set the pointer and count to refer to a new
+buffer, the restart position must be saved somewhere else.  Suppose a second
+call to fill_input_buffer() occurs in the same library call, and no
+additional input data is available, so fill_input_buffer must return FALSE.
+If the JPEG library has not moved the pointer/count forward in the current
+buffer, then *the correct restart point is the saved position in the prior
+buffer*.  Prior buffers may be discarded only after the library establishes
+a restart point within a later buffer.  Similar remarks apply for output into
+a chain of buffers.
+
+The library will never attempt to backtrack over a skip_input_data() call,
+so any skipped data can be permanently discarded.  You still have to deal
+with the case of skipping not-yet-received data, however.
+
+It's much simpler to use only a single buffer; when fill_input_buffer() is
+called, move any unconsumed data (beyond the current pointer/count) down to
+the beginning of this buffer and then load new data into the remaining buffer
+space.  This approach requires a little more data copying but is far easier
+to get right.
+
+
+Progressive JPEG support
+------------------------
+
+Progressive JPEG rearranges the stored data into a series of scans of
+increasing quality.  In situations where a JPEG file is transmitted across a
+slow communications link, a decoder can generate a low-quality image very
+quickly from the first scan, then gradually improve the displayed quality as
+more scans are received.  The final image after all scans are complete is
+identical to that of a regular (sequential) JPEG file of the same quality
+setting.  Progressive JPEG files are often slightly smaller than equivalent
+sequential JPEG files, but the possibility of incremental display is the main
+reason for using progressive JPEG.
+
+The IJG encoder library generates progressive JPEG files when given a
+suitable "scan script" defining how to divide the data into scans.
+Creation of progressive JPEG files is otherwise transparent to the encoder.
+Progressive JPEG files can also be read transparently by the decoder library.
+If the decoding application simply uses the library as defined above, it
+will receive a final decoded image without any indication that the file was
+progressive.  Of course, this approach does not allow incremental display.
+To perform incremental display, an application needs to use the decoder
+library's "buffered-image" mode, in which it receives a decoded image
+multiple times.
+
+Each displayed scan requires about as much work to decode as a full JPEG
+image of the same size, so the decoder must be fairly fast in relation to the
+data transmission rate in order to make incremental display useful.  However,
+it is possible to skip displaying the image and simply add the incoming bits
+to the decoder's coefficient buffer.  This is fast because only Huffman
+decoding need be done, not IDCT, upsampling, colorspace conversion, etc.
+The IJG decoder library allows the application to switch dynamically between
+displaying the image and simply absorbing the incoming bits.  A properly
+coded application can automatically adapt the number of display passes to
+suit the time available as the image is received.  Also, a final
+higher-quality display cycle can be performed from the buffered data after
+the end of the file is reached.
+
+Progressive compression:
+
+To create a progressive JPEG file (or a multiple-scan sequential JPEG file),
+set the scan_info cinfo field to point to an array of scan descriptors, and
+perform compression as usual.  Instead of constructing your own scan list,
+you can call the jpeg_simple_progression() helper routine to create a
+recommended progression sequence; this method should be used by all
+applications that don't want to get involved in the nitty-gritty of
+progressive scan sequence design.  (If you want to provide user control of
+scan sequences, you may wish to borrow the scan script reading code found
+in rdswitch.c, so that you can read scan script files just like cjpeg's.)
+When scan_info is not NULL, the compression library will store DCT'd data
+into a buffer array as jpeg_write_scanlines() is called, and will emit all
+the requested scans during jpeg_finish_compress().  This implies that
+multiple-scan output cannot be created with a suspending data destination
+manager, since jpeg_finish_compress() does not support suspension.  We
+should also note that the compressor currently forces Huffman optimization
+mode when creating a progressive JPEG file, because the default Huffman
+tables are unsuitable for progressive files.
+
+Progressive decompression:
+
+When buffered-image mode is not used, the decoder library will read all of
+a multi-scan file during jpeg_start_decompress(), so that it can provide a
+final decoded image.  (Here "multi-scan" means either progressive or
+multi-scan sequential.)  This makes multi-scan files transparent to the
+decoding application.  However, existing applications that used suspending
+input with version 5 of the IJG library will need to be modified to check
+for a suspension return from jpeg_start_decompress().
+
+To perform incremental display, an application must use the library's
+buffered-image mode.  This is described in the next section.
+
+
+Buffered-image mode
+-------------------
+
+In buffered-image mode, the library stores the partially decoded image in a
+coefficient buffer, from which it can be read out as many times as desired.
+This mode is typically used for incremental display of progressive JPEG files,
+but it can be used with any JPEG file.  Each scan of a progressive JPEG file
+adds more data (more detail) to the buffered image.  The application can
+display in lockstep with the source file (one display pass per input scan),
+or it can allow input processing to outrun display processing.  By making
+input and display processing run independently, it is possible for the
+application to adapt progressive display to a wide range of data transmission
+rates.
+
+The basic control flow for buffered-image decoding is
+
+	jpeg_create_decompress()
+	set data source
+	jpeg_read_header()
+	set overall decompression parameters
+	cinfo.buffered_image = TRUE;	/* select buffered-image mode */
+	jpeg_start_decompress()
+	for (each output pass) {
+	    adjust output decompression parameters if required
+	    jpeg_start_output()		/* start a new output pass */
+	    for (all scanlines in image) {
+	        jpeg_read_scanlines()
+	        display scanlines
+	    }
+	    jpeg_finish_output()	/* terminate output pass */
+	}
+	jpeg_finish_decompress()
+	jpeg_destroy_decompress()
+
+This differs from ordinary unbuffered decoding in that there is an additional
+level of looping.  The application can choose how many output passes to make
+and how to display each pass.
+
+The simplest approach to displaying progressive images is to do one display
+pass for each scan appearing in the input file.  In this case the outer loop
+condition is typically
+	while (! jpeg_input_complete(&cinfo))
+and the start-output call should read
+	jpeg_start_output(&cinfo, cinfo.input_scan_number);
+The second parameter to jpeg_start_output() indicates which scan of the input
+file is to be displayed; the scans are numbered starting at 1 for this
+purpose.  (You can use a loop counter starting at 1 if you like, but using
+the library's input scan counter is easier.)  The library automatically reads
+data as necessary to complete each requested scan, and jpeg_finish_output()
+advances to the next scan or end-of-image marker (hence input_scan_number
+will be incremented by the time control arrives back at jpeg_start_output()).
+With this technique, data is read from the input file only as needed, and
+input and output processing run in lockstep.
+
+After reading the final scan and reaching the end of the input file, the
+buffered image remains available; it can be read additional times by
+repeating the jpeg_start_output()/jpeg_read_scanlines()/jpeg_finish_output()
+sequence.  For example, a useful technique is to use fast one-pass color
+quantization for display passes made while the image is arriving, followed by
+a final display pass using two-pass quantization for highest quality.  This
+is done by changing the library parameters before the final output pass.
+Changing parameters between passes is discussed in detail below.
+
+In general the last scan of a progressive file cannot be recognized as such
+until after it is read, so a post-input display pass is the best approach if
+you want special processing in the final pass.
+
+When done with the image, be sure to call jpeg_finish_decompress() to release
+the buffered image (or just use jpeg_destroy_decompress()).
+
+If input data arrives faster than it can be displayed, the application can
+cause the library to decode input data in advance of what's needed to produce
+output.  This is done by calling the routine jpeg_consume_input().
+The return value is one of the following:
+	JPEG_REACHED_SOS:    reached an SOS marker (the start of a new scan)
+	JPEG_REACHED_EOI:    reached the EOI marker (end of image)
+	JPEG_ROW_COMPLETED:  completed reading one MCU row of compressed data
+	JPEG_SCAN_COMPLETED: completed reading last MCU row of current scan
+	JPEG_SUSPENDED:      suspended before completing any of the above
+(JPEG_SUSPENDED can occur only if a suspending data source is used.)  This
+routine can be called at any time after initializing the JPEG object.  It
+reads some additional data and returns when one of the indicated significant
+events occurs.  (If called after the EOI marker is reached, it will
+immediately return JPEG_REACHED_EOI without attempting to read more data.)
+
+The library's output processing will automatically call jpeg_consume_input()
+whenever the output processing overtakes the input; thus, simple lockstep
+display requires no direct calls to jpeg_consume_input().  But by adding
+calls to jpeg_consume_input(), you can absorb data in advance of what is
+being displayed.  This has two benefits:
+  * You can limit buildup of unprocessed data in your input buffer.
+  * You can eliminate extra display passes by paying attention to the
+    state of the library's input processing.
+
+The first of these benefits only requires interspersing calls to
+jpeg_consume_input() with your display operations and any other processing
+you may be doing.  To avoid wasting cycles due to backtracking, it's best to
+call jpeg_consume_input() only after a hundred or so new bytes have arrived.
+This is discussed further under "I/O suspension", above.  (Note: the JPEG
+library currently is not thread-safe.  You must not call jpeg_consume_input()
+from one thread of control if a different library routine is working on the
+same JPEG object in another thread.)
+
+When input arrives fast enough that more than one new scan is available
+before you start a new output pass, you may as well skip the output pass
+corresponding to the completed scan.  This occurs for free if you pass
+cinfo.input_scan_number as the target scan number to jpeg_start_output().
+The input_scan_number field is simply the index of the scan currently being
+consumed by the input processor.  You can ensure that this is up-to-date by
+emptying the input buffer just before calling jpeg_start_output(): call
+jpeg_consume_input() repeatedly until it returns JPEG_SUSPENDED or
+JPEG_REACHED_EOI.
+
+The target scan number passed to jpeg_start_output() is saved in the
+cinfo.output_scan_number field.  The library's output processing calls
+jpeg_consume_input() whenever the current input scan number and row within
+that scan is less than or equal to the current output scan number and row.
+Thus, input processing can "get ahead" of the output processing but is not
+allowed to "fall behind".  You can achieve several different effects by
+manipulating this interlock rule.  For example, if you pass a target scan
+number greater than the current input scan number, the output processor will
+wait until that scan starts to arrive before producing any output.  (To avoid
+an infinite loop, the target scan number is automatically reset to the last
+scan number when the end of image is reached.  Thus, if you specify a large
+target scan number, the library will just absorb the entire input file and
+then perform an output pass.  This is effectively the same as what
+jpeg_start_decompress() does when you don't select buffered-image mode.)
+When you pass a target scan number equal to the current input scan number,
+the image is displayed no faster than the current input scan arrives.  The
+final possibility is to pass a target scan number less than the current input
+scan number; this disables the input/output interlock and causes the output
+processor to simply display whatever it finds in the image buffer, without
+waiting for input.  (However, the library will not accept a target scan
+number less than one, so you can't avoid waiting for the first scan.)
+
+When data is arriving faster than the output display processing can advance
+through the image, jpeg_consume_input() will store data into the buffered
+image beyond the point at which the output processing is reading data out
+again.  If the input arrives fast enough, it may "wrap around" the buffer to
+the point where the input is more than one whole scan ahead of the output.
+If the output processing simply proceeds through its display pass without
+paying attention to the input, the effect seen on-screen is that the lower
+part of the image is one or more scans better in quality than the upper part.
+Then, when the next output scan is started, you have a choice of what target
+scan number to use.  The recommended choice is to use the current input scan
+number at that time, which implies that you've skipped the output scans
+corresponding to the input scans that were completed while you processed the
+previous output scan.  In this way, the decoder automatically adapts its
+speed to the arriving data, by skipping output scans as necessary to keep up
+with the arriving data.
+
+When using this strategy, you'll want to be sure that you perform a final
+output pass after receiving all the data; otherwise your last display may not
+be full quality across the whole screen.  So the right outer loop logic is
+something like this:
+	do {
+	    absorb any waiting input by calling jpeg_consume_input()
+	    final_pass = jpeg_input_complete(&cinfo);
+	    adjust output decompression parameters if required
+	    jpeg_start_output(&cinfo, cinfo.input_scan_number);
+	    ...
+	    jpeg_finish_output()
+	} while (! final_pass);
+rather than quitting as soon as jpeg_input_complete() returns TRUE.  This
+arrangement makes it simple to use higher-quality decoding parameters
+for the final pass.  But if you don't want to use special parameters for
+the final pass, the right loop logic is like this:
+	for (;;) {
+	    absorb any waiting input by calling jpeg_consume_input()
+	    jpeg_start_output(&cinfo, cinfo.input_scan_number);
+	    ...
+	    jpeg_finish_output()
+	    if (jpeg_input_complete(&cinfo) &&
+	        cinfo.input_scan_number == cinfo.output_scan_number)
+	      break;
+	}
+In this case you don't need to know in advance whether an output pass is to
+be the last one, so it's not necessary to have reached EOF before starting
+the final output pass; rather, what you want to test is whether the output
+pass was performed in sync with the final input scan.  This form of the loop
+will avoid an extra output pass whenever the decoder is able (or nearly able)
+to keep up with the incoming data.
+
+When the data transmission speed is high, you might begin a display pass,
+then find that much or all of the file has arrived before you can complete
+the pass.  (You can detect this by noting the JPEG_REACHED_EOI return code
+from jpeg_consume_input(), or equivalently by testing jpeg_input_complete().)
+In this situation you may wish to abort the current display pass and start a
+new one using the newly arrived information.  To do so, just call
+jpeg_finish_output() and then start a new pass with jpeg_start_output().
+
+A variant strategy is to abort and restart display if more than one complete
+scan arrives during an output pass; this can be detected by noting
+JPEG_REACHED_SOS returns and/or examining cinfo.input_scan_number.  This
+idea should be employed with caution, however, since the display process
+might never get to the bottom of the image before being aborted, resulting
+in the lower part of the screen being several passes worse than the upper.
+In most cases it's probably best to abort an output pass only if the whole
+file has arrived and you want to begin the final output pass immediately.
+
+When receiving data across a communication link, we recommend always using
+the current input scan number for the output target scan number; if a
+higher-quality final pass is to be done, it should be started (aborting any
+incomplete output pass) as soon as the end of file is received.  However,
+many other strategies are possible.  For example, the application can examine
+the parameters of the current input scan and decide whether to display it or
+not.  If the scan contains only chroma data, one might choose not to use it
+as the target scan, expecting that the scan will be small and will arrive
+quickly.  To skip to the next scan, call jpeg_consume_input() until it
+returns JPEG_REACHED_SOS or JPEG_REACHED_EOI.  Or just use the next higher
+number as the target scan for jpeg_start_output(); but that method doesn't
+let you inspect the next scan's parameters before deciding to display it.
+
+
+In buffered-image mode, jpeg_start_decompress() never performs input and
+thus never suspends.  An application that uses input suspension with
+buffered-image mode must be prepared for suspension returns from these
+routines:
+* jpeg_start_output() performs input only if you request 2-pass quantization
+  and the target scan isn't fully read yet.  (This is discussed below.)
+* jpeg_read_scanlines(), as always, returns the number of scanlines that it
+  was able to produce before suspending.
+* jpeg_finish_output() will read any markers following the target scan,
+  up to the end of the file or the SOS marker that begins another scan.
+  (But it reads no input if jpeg_consume_input() has already reached the
+  end of the file or a SOS marker beyond the target output scan.)
+* jpeg_finish_decompress() will read until the end of file, and thus can
+  suspend if the end hasn't already been reached (as can be tested by
+  calling jpeg_input_complete()).
+jpeg_start_output(), jpeg_finish_output(), and jpeg_finish_decompress()
+all return TRUE if they completed their tasks, FALSE if they had to suspend.
+In the event of a FALSE return, the application must load more input data
+and repeat the call.  Applications that use non-suspending data sources need
+not check the return values of these three routines.
+
+
+It is possible to change decoding parameters between output passes in the
+buffered-image mode.  The decoder library currently supports only very
+limited changes of parameters.  ONLY THE FOLLOWING parameter changes are
+allowed after jpeg_start_decompress() is called:
+* dct_method can be changed before each call to jpeg_start_output().
+  For example, one could use a fast DCT method for early scans, changing
+  to a higher quality method for the final scan.
+* dither_mode can be changed before each call to jpeg_start_output();
+  of course this has no impact if not using color quantization.  Typically
+  one would use ordered dither for initial passes, then switch to
+  Floyd-Steinberg dither for the final pass.  Caution: changing dither mode
+  can cause more memory to be allocated by the library.  Although the amount
+  of memory involved is not large (a scanline or so), it may cause the
+  initial max_memory_to_use specification to be exceeded, which in the worst
+  case would result in an out-of-memory failure.
+* do_block_smoothing can be changed before each call to jpeg_start_output().
+  This setting is relevant only when decoding a progressive JPEG image.
+  During the first DC-only scan, block smoothing provides a very "fuzzy" look
+  instead of the very "blocky" look seen without it; which is better seems a
+  matter of personal taste.  But block smoothing is nearly always a win
+  during later stages, especially when decoding a successive-approximation
+  image: smoothing helps to hide the slight blockiness that otherwise shows
+  up on smooth gradients until the lowest coefficient bits are sent.
+* Color quantization mode can be changed under the rules described below.
+  You *cannot* change between full-color and quantized output (because that
+  would alter the required I/O buffer sizes), but you can change which
+  quantization method is used.
+
+When generating color-quantized output, changing quantization method is a
+very useful way of switching between high-speed and high-quality display.
+The library allows you to change among its three quantization methods:
+1. Single-pass quantization to a fixed color cube.
+   Selected by cinfo.two_pass_quantize = FALSE and cinfo.colormap = NULL.
+2. Single-pass quantization to an application-supplied colormap.
+   Selected by setting cinfo.colormap to point to the colormap (the value of
+   two_pass_quantize is ignored); also set cinfo.actual_number_of_colors.
+3. Two-pass quantization to a colormap chosen specifically for the image.
+   Selected by cinfo.two_pass_quantize = TRUE and cinfo.colormap = NULL.
+   (This is the default setting selected by jpeg_read_header, but it is
+   probably NOT what you want for the first pass of progressive display!)
+These methods offer successively better quality and lesser speed.  However,
+only the first method is available for quantizing in non-RGB color spaces.
+
+IMPORTANT: because the different quantizer methods have very different
+working-storage requirements, the library requires you to indicate which
+one(s) you intend to use before you call jpeg_start_decompress().  (If we did
+not require this, the max_memory_to_use setting would be a complete fiction.)
+You do this by setting one or more of these three cinfo fields to TRUE:
+	enable_1pass_quant		Fixed color cube colormap
+	enable_external_quant		Externally-supplied colormap
+	enable_2pass_quant		Two-pass custom colormap
+All three are initialized FALSE by jpeg_read_header().  But
+jpeg_start_decompress() automatically sets TRUE the one selected by the
+current two_pass_quantize and colormap settings, so you only need to set the
+enable flags for any other quantization methods you plan to change to later.
+
+After setting the enable flags correctly at jpeg_start_decompress() time, you
+can change to any enabled quantization method by setting two_pass_quantize
+and colormap properly just before calling jpeg_start_output().  The following
+special rules apply:
+1. You must explicitly set cinfo.colormap to NULL when switching to 1-pass
+   or 2-pass mode from a different mode, or when you want the 2-pass
+   quantizer to be re-run to generate a new colormap.
+2. To switch to an external colormap, or to change to a different external
+   colormap than was used on the prior pass, you must call
+   jpeg_new_colormap() after setting cinfo.colormap.
+NOTE: if you want to use the same colormap as was used in the prior pass,
+you should not do either of these things.  This will save some nontrivial
+switchover costs.
+(These requirements exist because cinfo.colormap will always be non-NULL
+after completing a prior output pass, since both the 1-pass and 2-pass
+quantizers set it to point to their output colormaps.  Thus you have to
+do one of these two things to notify the library that something has changed.
+Yup, it's a bit klugy, but it's necessary to do it this way for backwards
+compatibility.)
+
+Note that in buffered-image mode, the library generates any requested colormap
+during jpeg_start_output(), not during jpeg_start_decompress().
+
+When using two-pass quantization, jpeg_start_output() makes a pass over the
+buffered image to determine the optimum color map; it therefore may take a
+significant amount of time, whereas ordinarily it does little work.  The
+progress monitor hook is called during this pass, if defined.  It is also
+important to realize that if the specified target scan number is greater than
+or equal to the current input scan number, jpeg_start_output() will attempt
+to consume input as it makes this pass.  If you use a suspending data source,
+you need to check for a FALSE return from jpeg_start_output() under these
+conditions.  The combination of 2-pass quantization and a not-yet-fully-read
+target scan is the only case in which jpeg_start_output() will consume input.
+
+
+Application authors who support buffered-image mode may be tempted to use it
+for all JPEG images, even single-scan ones.  This will work, but it is
+inefficient: there is no need to create an image-sized coefficient buffer for
+single-scan images.  Requesting buffered-image mode for such an image wastes
+memory.  Worse, it can cost time on large images, since the buffered data has
+to be swapped out or written to a temporary file.  If you are concerned about
+maximum performance on baseline JPEG files, you should use buffered-image
+mode only when the incoming file actually has multiple scans.  This can be
+tested by calling jpeg_has_multiple_scans(), which will return a correct
+result at any time after jpeg_read_header() completes.
+
+It is also worth noting that when you use jpeg_consume_input() to let input
+processing get ahead of output processing, the resulting pattern of access to
+the coefficient buffer is quite nonsequential.  It's best to use the memory
+manager jmemnobs.c if you can (ie, if you have enough real or virtual main
+memory).  If not, at least make sure that max_memory_to_use is set as high as
+possible.  If the JPEG memory manager has to use a temporary file, you will
+probably see a lot of disk traffic and poor performance.  (This could be
+improved with additional work on the memory manager, but we haven't gotten
+around to it yet.)
+
+In some applications it may be convenient to use jpeg_consume_input() for all
+input processing, including reading the initial markers; that is, you may
+wish to call jpeg_consume_input() instead of jpeg_read_header() during
+startup.  This works, but note that you must check for JPEG_REACHED_SOS and
+JPEG_REACHED_EOI return codes as the equivalent of jpeg_read_header's codes.
+Once the first SOS marker has been reached, you must call
+jpeg_start_decompress() before jpeg_consume_input() will consume more input;
+it'll just keep returning JPEG_REACHED_SOS until you do.  If you read a
+tables-only file this way, jpeg_consume_input() will return JPEG_REACHED_EOI
+without ever returning JPEG_REACHED_SOS; be sure to check for this case.
+If this happens, the decompressor will not read any more input until you call
+jpeg_abort() to reset it.  It is OK to call jpeg_consume_input() even when not
+using buffered-image mode, but in that case it's basically a no-op after the
+initial markers have been read: it will just return JPEG_SUSPENDED.
+
+
+Abbreviated datastreams and multiple images
+-------------------------------------------
+
+A JPEG compression or decompression object can be reused to process multiple
+images.  This saves a small amount of time per image by eliminating the
+"create" and "destroy" operations, but that isn't the real purpose of the
+feature.  Rather, reuse of an object provides support for abbreviated JPEG
+datastreams.  Object reuse can also simplify processing a series of images in
+a single input or output file.  This section explains these features.
+
+A JPEG file normally contains several hundred bytes worth of quantization
+and Huffman tables.  In a situation where many images will be stored or
+transmitted with identical tables, this may represent an annoying overhead.
+The JPEG standard therefore permits tables to be omitted.  The standard
+defines three classes of JPEG datastreams:
+  * "Interchange" datastreams contain an image and all tables needed to decode
+     the image.  These are the usual kind of JPEG file.
+  * "Abbreviated image" datastreams contain an image, but are missing some or
+    all of the tables needed to decode that image.
+  * "Abbreviated table specification" (henceforth "tables-only") datastreams
+    contain only table specifications.
+To decode an abbreviated image, it is necessary to load the missing table(s)
+into the decoder beforehand.  This can be accomplished by reading a separate
+tables-only file.  A variant scheme uses a series of images in which the first
+image is an interchange (complete) datastream, while subsequent ones are
+abbreviated and rely on the tables loaded by the first image.  It is assumed
+that once the decoder has read a table, it will remember that table until a
+new definition for the same table number is encountered.
+
+It is the application designer's responsibility to figure out how to associate
+the correct tables with an abbreviated image.  While abbreviated datastreams
+can be useful in a closed environment, their use is strongly discouraged in
+any situation where data exchange with other applications might be needed.
+Caveat designer.
+
+The JPEG library provides support for reading and writing any combination of
+tables-only datastreams and abbreviated images.  In both compression and
+decompression objects, a quantization or Huffman table will be retained for
+the lifetime of the object, unless it is overwritten by a new table definition.
+
+
+To create abbreviated image datastreams, it is only necessary to tell the
+compressor not to emit some or all of the tables it is using.  Each
+quantization and Huffman table struct contains a boolean field "sent_table",
+which normally is initialized to FALSE.  For each table used by the image, the
+header-writing process emits the table and sets sent_table = TRUE unless it is
+already TRUE.  (In normal usage, this prevents outputting the same table
+definition multiple times, as would otherwise occur because the chroma
+components typically share tables.)  Thus, setting this field to TRUE before
+calling jpeg_start_compress() will prevent the table from being written at
+all.
+
+If you want to create a "pure" abbreviated image file containing no tables,
+just call "jpeg_suppress_tables(&cinfo, TRUE)" after constructing all the
+tables.  If you want to emit some but not all tables, you'll need to set the
+individual sent_table fields directly.
+
+To create an abbreviated image, you must also call jpeg_start_compress()
+with a second parameter of FALSE, not TRUE.  Otherwise jpeg_start_compress()
+will force all the sent_table fields to FALSE.  (This is a safety feature to
+prevent abbreviated images from being created accidentally.)
+
+To create a tables-only file, perform the same parameter setup that you
+normally would, but instead of calling jpeg_start_compress() and so on, call
+jpeg_write_tables(&cinfo).  This will write an abbreviated datastream
+containing only SOI, DQT and/or DHT markers, and EOI.  All the quantization
+and Huffman tables that are currently defined in the compression object will
+be emitted unless their sent_tables flag is already TRUE, and then all the
+sent_tables flags will be set TRUE.
+
+A sure-fire way to create matching tables-only and abbreviated image files
+is to proceed as follows:
+
+	create JPEG compression object
+	set JPEG parameters
+	set destination to tables-only file
+	jpeg_write_tables(&cinfo);
+	set destination to image file
+	jpeg_start_compress(&cinfo, FALSE);
+	write data...
+	jpeg_finish_compress(&cinfo);
+
+Since the JPEG parameters are not altered between writing the table file and
+the abbreviated image file, the same tables are sure to be used.  Of course,
+you can repeat the jpeg_start_compress() ... jpeg_finish_compress() sequence
+many times to produce many abbreviated image files matching the table file.
+
+You cannot suppress output of the computed Huffman tables when Huffman
+optimization is selected.  (If you could, there'd be no way to decode the
+image...)  Generally, you don't want to set optimize_coding = TRUE when
+you are trying to produce abbreviated files.
+
+In some cases you might want to compress an image using tables which are
+not stored in the application, but are defined in an interchange or
+tables-only file readable by the application.  This can be done by setting up
+a JPEG decompression object to read the specification file, then copying the
+tables into your compression object.  See jpeg_copy_critical_parameters()
+for an example of copying quantization tables.
+
+
+To read abbreviated image files, you simply need to load the proper tables
+into the decompression object before trying to read the abbreviated image.
+If the proper tables are stored in the application program, you can just
+allocate the table structs and fill in their contents directly.  For example,
+to load a fixed quantization table into table slot "n":
+
+    if (cinfo.quant_tbl_ptrs[n] == NULL)
+      cinfo.quant_tbl_ptrs[n] = jpeg_alloc_quant_table((j_common_ptr) &cinfo);
+    quant_ptr = cinfo.quant_tbl_ptrs[n];	/* quant_ptr is JQUANT_TBL* */
+    for (i = 0; i < 64; i++) {
+      /* Qtable[] is desired quantization table, in natural array order */
+      quant_ptr->quantval[i] = Qtable[i];
+    }
+
+Code to load a fixed Huffman table is typically (for AC table "n"):
+
+    if (cinfo.ac_huff_tbl_ptrs[n] == NULL)
+      cinfo.ac_huff_tbl_ptrs[n] = jpeg_alloc_huff_table((j_common_ptr) &cinfo);
+    huff_ptr = cinfo.ac_huff_tbl_ptrs[n];	/* huff_ptr is JHUFF_TBL* */
+    for (i = 1; i <= 16; i++) {
+      /* counts[i] is number of Huffman codes of length i bits, i=1..16 */
+      huff_ptr->bits[i] = counts[i];
+    }
+    for (i = 0; i < 256; i++) {
+      /* symbols[] is the list of Huffman symbols, in code-length order */
+      huff_ptr->huffval[i] = symbols[i];
+    }
+
+(Note that trying to set cinfo.quant_tbl_ptrs[n] to point directly at a
+constant JQUANT_TBL object is not safe.  If the incoming file happened to
+contain a quantization table definition, your master table would get
+overwritten!  Instead allocate a working table copy and copy the master table
+into it, as illustrated above.  Ditto for Huffman tables, of course.)
+
+You might want to read the tables from a tables-only file, rather than
+hard-wiring them into your application.  The jpeg_read_header() call is
+sufficient to read a tables-only file.  You must pass a second parameter of
+FALSE to indicate that you do not require an image to be present.  Thus, the
+typical scenario is
+
+	create JPEG decompression object
+	set source to tables-only file
+	jpeg_read_header(&cinfo, FALSE);
+	set source to abbreviated image file
+	jpeg_read_header(&cinfo, TRUE);
+	set decompression parameters
+	jpeg_start_decompress(&cinfo);
+	read data...
+	jpeg_finish_decompress(&cinfo);
+
+In some cases, you may want to read a file without knowing whether it contains
+an image or just tables.  In that case, pass FALSE and check the return value
+from jpeg_read_header(): it will be JPEG_HEADER_OK if an image was found,
+JPEG_HEADER_TABLES_ONLY if only tables were found.  (A third return value,
+JPEG_SUSPENDED, is possible when using a suspending data source manager.)
+Note that jpeg_read_header() will not complain if you read an abbreviated
+image for which you haven't loaded the missing tables; the missing-table check
+occurs later, in jpeg_start_decompress().
+
+
+It is possible to read a series of images from a single source file by
+repeating the jpeg_read_header() ... jpeg_finish_decompress() sequence,
+without releasing/recreating the JPEG object or the data source module.
+(If you did reinitialize, any partial bufferload left in the data source
+buffer at the end of one image would be discarded, causing you to lose the
+start of the next image.)  When you use this method, stored tables are
+automatically carried forward, so some of the images can be abbreviated images
+that depend on tables from earlier images.
+
+If you intend to write a series of images into a single destination file,
+you might want to make a specialized data destination module that doesn't
+flush the output buffer at term_destination() time.  This would speed things
+up by some trifling amount.  Of course, you'd need to remember to flush the
+buffer after the last image.  You can make the later images be abbreviated
+ones by passing FALSE to jpeg_start_compress().
+
+
+Special markers
+---------------
+
+Some applications may need to insert or extract special data in the JPEG
+datastream.  The JPEG standard provides marker types "COM" (comment) and
+"APP0" through "APP15" (application) to hold application-specific data.
+Unfortunately, the use of these markers is not specified by the standard.
+COM markers are fairly widely used to hold user-supplied text.  The JFIF file
+format spec uses APP0 markers with specified initial strings to hold certain
+data.  Adobe applications use APP14 markers beginning with the string "Adobe"
+for miscellaneous data.  Other APPn markers are rarely seen, but might
+contain almost anything.
+
+If you wish to store user-supplied text, we recommend you use COM markers
+and place readable 7-bit ASCII text in them.  Newline conventions are not
+standardized --- expect to find LF (Unix style), CR/LF (DOS style), or CR
+(Mac style).  A robust COM reader should be able to cope with random binary
+garbage, including nulls, since some applications generate COM markers
+containing non-ASCII junk.  (But yours should not be one of them.)
+
+For program-supplied data, use an APPn marker, and be sure to begin it with an
+identifying string so that you can tell whether the marker is actually yours.
+It's probably best to avoid using APP0 or APP14 for any private markers.
+(NOTE: the upcoming SPIFF standard will use APP8 markers; we recommend you
+not use APP8 markers for any private purposes, either.)
+
+Keep in mind that at most 65533 bytes can be put into one marker, but you
+can have as many markers as you like.
+
+By default, the IJG compression library will write a JFIF APP0 marker if the
+selected JPEG colorspace is grayscale or YCbCr, or an Adobe APP14 marker if
+the selected colorspace is RGB, CMYK, or YCCK.  You can disable this, but
+we don't recommend it.  The decompression library will recognize JFIF and
+Adobe markers and will set the JPEG colorspace properly when one is found.
+
+
+You can write special markers immediately following the datastream header by
+calling jpeg_write_marker() after jpeg_start_compress() and before the first
+call to jpeg_write_scanlines().  When you do this, the markers appear after
+the SOI and the JFIF APP0 and Adobe APP14 markers (if written), but before
+all else.  Specify the marker type parameter as "JPEG_COM" for COM or
+"JPEG_APP0 + n" for APPn.  (Actually, jpeg_write_marker will let you write
+any marker type, but we don't recommend writing any other kinds of marker.)
+For example, to write a user comment string pointed to by comment_text:
+	jpeg_write_marker(cinfo, JPEG_COM, comment_text, strlen(comment_text));
+
+If it's not convenient to store all the marker data in memory at once,
+you can instead call jpeg_write_m_header() followed by multiple calls to
+jpeg_write_m_byte().  If you do it this way, it's your responsibility to
+call jpeg_write_m_byte() exactly the number of times given in the length
+parameter to jpeg_write_m_header().  (This method lets you empty the
+output buffer partway through a marker, which might be important when
+using a suspending data destination module.  In any case, if you are using
+a suspending destination, you should flush its buffer after inserting
+any special markers.  See "I/O suspension".)
+
+Or, if you prefer to synthesize the marker byte sequence yourself,
+you can just cram it straight into the data destination module.
+
+If you are writing JFIF 1.02 extension markers (thumbnail images), don't
+forget to set cinfo.JFIF_minor_version = 2 so that the encoder will write the
+correct JFIF version number in the JFIF header marker.  The library's default
+is to write version 1.01, but that's wrong if you insert any 1.02 extension
+markers.  (We could probably get away with just defaulting to 1.02, but there
+used to be broken decoders that would complain about unknown minor version
+numbers.  To reduce compatibility risks it's safest not to write 1.02 unless
+you are actually using 1.02 extensions.)
+
+
+When reading, two methods of handling special markers are available:
+1. You can ask the library to save the contents of COM and/or APPn markers
+into memory, and then examine them at your leisure afterwards.
+2. You can supply your own routine to process COM and/or APPn markers
+on-the-fly as they are read.
+The first method is simpler to use, especially if you are using a suspending
+data source; writing a marker processor that copes with input suspension is
+not easy (consider what happens if the marker is longer than your available
+input buffer).  However, the second method conserves memory since the marker
+data need not be kept around after it's been processed.
+
+For either method, you'd normally set up marker handling after creating a
+decompression object and before calling jpeg_read_header(), because the
+markers of interest will typically be near the head of the file and so will
+be scanned by jpeg_read_header.  Once you've established a marker handling
+method, it will be used for the life of that decompression object
+(potentially many datastreams), unless you change it.  Marker handling is
+determined separately for COM markers and for each APPn marker code.
+
+
+To save the contents of special markers in memory, call
+	jpeg_save_markers(cinfo, marker_code, length_limit)
+where marker_code is the marker type to save, JPEG_COM or JPEG_APP0+n.
+(To arrange to save all the special marker types, you need to call this
+routine 17 times, for COM and APP0-APP15.)  If the incoming marker is longer
+than length_limit data bytes, only length_limit bytes will be saved; this
+parameter allows you to avoid chewing up memory when you only need to see the
+first few bytes of a potentially large marker.  If you want to save all the
+data, set length_limit to 0xFFFF; that is enough since marker lengths are only
+16 bits.  As a special case, setting length_limit to 0 prevents that marker
+type from being saved at all.  (That is the default behavior, in fact.)
+
+After jpeg_read_header() completes, you can examine the special markers by
+following the cinfo->marker_list pointer chain.  All the special markers in
+the file appear in this list, in order of their occurrence in the file (but
+omitting any markers of types you didn't ask for).  Both the original data
+length and the saved data length are recorded for each list entry; the latter
+will not exceed length_limit for the particular marker type.  Note that these
+lengths exclude the marker length word, whereas the stored representation
+within the JPEG file includes it.  (Hence the maximum data length is really
+only 65533.)
+
+It is possible that additional special markers appear in the file beyond the
+SOS marker at which jpeg_read_header stops; if so, the marker list will be
+extended during reading of the rest of the file.  This is not expected to be
+common, however.  If you are short on memory you may want to reset the length
+limit to zero for all marker types after finishing jpeg_read_header, to
+ensure that the max_memory_to_use setting cannot be exceeded due to addition
+of later markers.
+
+The marker list remains stored until you call jpeg_finish_decompress or
+jpeg_abort, at which point the memory is freed and the list is set to empty.
+(jpeg_destroy also releases the storage, of course.)
+
+Note that the library is internally interested in APP0 and APP14 markers;
+if you try to set a small nonzero length limit on these types, the library
+will silently force the length up to the minimum it wants.  (But you can set
+a zero length limit to prevent them from being saved at all.)  Also, in a
+16-bit environment, the maximum length limit may be constrained to less than
+65533 by malloc() limitations.  It is therefore best not to assume that the
+effective length limit is exactly what you set it to be.
+
+
+If you want to supply your own marker-reading routine, you do it by calling
+jpeg_set_marker_processor().  A marker processor routine must have the
+signature
+	boolean jpeg_marker_parser_method (j_decompress_ptr cinfo)
+Although the marker code is not explicitly passed, the routine can find it
+in cinfo->unread_marker.  At the time of call, the marker proper has been
+read from the data source module.  The processor routine is responsible for
+reading the marker length word and the remaining parameter bytes, if any.
+Return TRUE to indicate success.  (FALSE should be returned only if you are
+using a suspending data source and it tells you to suspend.  See the standard
+marker processors in jdmarker.c for appropriate coding methods if you need to
+use a suspending data source.)
+
+If you override the default APP0 or APP14 processors, it is up to you to
+recognize JFIF and Adobe markers if you want colorspace recognition to occur
+properly.  We recommend copying and extending the default processors if you
+want to do that.  (A better idea is to save these marker types for later
+examination by calling jpeg_save_markers(); that method doesn't interfere
+with the library's own processing of these markers.)
+
+jpeg_set_marker_processor() and jpeg_save_markers() are mutually exclusive
+--- if you call one it overrides any previous call to the other, for the
+particular marker type specified.
+
+A simple example of an external COM processor can be found in djpeg.c.
+Also, see jpegtran.c for an example of using jpeg_save_markers.
+
+
+Raw (downsampled) image data
+----------------------------
+
+Some applications need to supply already-downsampled image data to the JPEG
+compressor, or to receive raw downsampled data from the decompressor.  The
+library supports this requirement by allowing the application to write or
+read raw data, bypassing the normal preprocessing or postprocessing steps.
+The interface is different from the standard one and is somewhat harder to
+use.  If your interest is merely in bypassing color conversion, we recommend
+that you use the standard interface and simply set jpeg_color_space =
+in_color_space (or jpeg_color_space = out_color_space for decompression).
+The mechanism described in this section is necessary only to supply or
+receive downsampled image data, in which not all components have the same
+dimensions.
+
+
+To compress raw data, you must supply the data in the colorspace to be used
+in the JPEG file (please read the earlier section on Special color spaces)
+and downsampled to the sampling factors specified in the JPEG parameters.
+You must supply the data in the format used internally by the JPEG library,
+namely a JSAMPIMAGE array.  This is an array of pointers to two-dimensional
+arrays, each of type JSAMPARRAY.  Each 2-D array holds the values for one
+color component.  This structure is necessary since the components are of
+different sizes.  If the image dimensions are not a multiple of the MCU size,
+you must also pad the data correctly (usually, this is done by replicating
+the last column and/or row).  The data must be padded to a multiple of a DCT
+block in each component: that is, each downsampled row must contain a
+multiple of 8 valid samples, and there must be a multiple of 8 sample rows
+for each component.  (For applications such as conversion of digital TV
+images, the standard image size is usually a multiple of the DCT block size,
+so that no padding need actually be done.)
+
+The procedure for compression of raw data is basically the same as normal
+compression, except that you call jpeg_write_raw_data() in place of
+jpeg_write_scanlines().  Before calling jpeg_start_compress(), you must do
+the following:
+  * Set cinfo->raw_data_in to TRUE.  (It is set FALSE by jpeg_set_defaults().)
+    This notifies the library that you will be supplying raw data.
+  * Ensure jpeg_color_space is correct --- an explicit jpeg_set_colorspace()
+    call is a good idea.  Note that since color conversion is bypassed,
+    in_color_space is ignored, except that jpeg_set_defaults() uses it to
+    choose the default jpeg_color_space setting.
+  * Ensure the sampling factors, cinfo->comp_info[i].h_samp_factor and
+    cinfo->comp_info[i].v_samp_factor, are correct.  Since these indicate the
+    dimensions of the data you are supplying, it's wise to set them
+    explicitly, rather than assuming the library's defaults are what you want.
+
+To pass raw data to the library, call jpeg_write_raw_data() in place of
+jpeg_write_scanlines().  The two routines work similarly except that
+jpeg_write_raw_data takes a JSAMPIMAGE data array rather than JSAMPARRAY.
+The scanlines count passed to and returned from jpeg_write_raw_data is
+measured in terms of the component with the largest v_samp_factor.
+
+jpeg_write_raw_data() processes one MCU row per call, which is to say
+v_samp_factor*DCTSIZE sample rows of each component.  The passed num_lines
+value must be at least max_v_samp_factor*DCTSIZE, and the return value will
+be exactly that amount (or possibly some multiple of that amount, in future
+library versions).  This is true even on the last call at the bottom of the
+image; don't forget to pad your data as necessary.
+
+The required dimensions of the supplied data can be computed for each
+component as
+	cinfo->comp_info[i].width_in_blocks*DCTSIZE  samples per row
+	cinfo->comp_info[i].height_in_blocks*DCTSIZE rows in image
+after jpeg_start_compress() has initialized those fields.  If the valid data
+is smaller than this, it must be padded appropriately.  For some sampling
+factors and image sizes, additional dummy DCT blocks are inserted to make
+the image a multiple of the MCU dimensions.  The library creates such dummy
+blocks itself; it does not read them from your supplied data.  Therefore you
+need never pad by more than DCTSIZE samples.  An example may help here.
+Assume 2h2v downsampling of YCbCr data, that is
+	cinfo->comp_info[0].h_samp_factor = 2		for Y
+	cinfo->comp_info[0].v_samp_factor = 2
+	cinfo->comp_info[1].h_samp_factor = 1		for Cb
+	cinfo->comp_info[1].v_samp_factor = 1
+	cinfo->comp_info[2].h_samp_factor = 1		for Cr
+	cinfo->comp_info[2].v_samp_factor = 1
+and suppose that the nominal image dimensions (cinfo->image_width and
+cinfo->image_height) are 101x101 pixels.  Then jpeg_start_compress() will
+compute downsampled_width = 101 and width_in_blocks = 13 for Y,
+downsampled_width = 51 and width_in_blocks = 7 for Cb and Cr (and the same
+for the height fields).  You must pad the Y data to at least 13*8 = 104
+columns and rows, the Cb/Cr data to at least 7*8 = 56 columns and rows.  The
+MCU height is max_v_samp_factor = 2 DCT rows so you must pass at least 16
+scanlines on each call to jpeg_write_raw_data(), which is to say 16 actual
+sample rows of Y and 8 each of Cb and Cr.  A total of 7 MCU rows are needed,
+so you must pass a total of 7*16 = 112 "scanlines".  The last DCT block row
+of Y data is dummy, so it doesn't matter what you pass for it in the data
+arrays, but the scanlines count must total up to 112 so that all of the Cb
+and Cr data gets passed.
+
+Output suspension is supported with raw-data compression: if the data
+destination module suspends, jpeg_write_raw_data() will return 0.
+In this case the same data rows must be passed again on the next call.
+
+
+Decompression with raw data output implies bypassing all postprocessing:
+you cannot ask for rescaling or color quantization, for instance.  More
+seriously, you must deal with the color space and sampling factors present in
+the incoming file.  If your application only handles, say, 2h1v YCbCr data,
+you must check for and fail on other color spaces or other sampling factors.
+The library will not convert to a different color space for you.
+
+To obtain raw data output, set cinfo->raw_data_out = TRUE before
+jpeg_start_decompress() (it is set FALSE by jpeg_read_header()).  Be sure to
+verify that the color space and sampling factors are ones you can handle.
+Then call jpeg_read_raw_data() in place of jpeg_read_scanlines().  The
+decompression process is otherwise the same as usual.
+
+jpeg_read_raw_data() returns one MCU row per call, and thus you must pass a
+buffer of at least max_v_samp_factor*DCTSIZE scanlines (scanline counting is
+the same as for raw-data compression).  The buffer you pass must be large
+enough to hold the actual data plus padding to DCT-block boundaries.  As with
+compression, any entirely dummy DCT blocks are not processed so you need not
+allocate space for them, but the total scanline count includes them.  The
+above example of computing buffer dimensions for raw-data compression is
+equally valid for decompression.
+
+Input suspension is supported with raw-data decompression: if the data source
+module suspends, jpeg_read_raw_data() will return 0.  You can also use
+buffered-image mode to read raw data in multiple passes.
+
+
+Really raw data: DCT coefficients
+---------------------------------
+
+It is possible to read or write the contents of a JPEG file as raw DCT
+coefficients.  This facility is mainly intended for use in lossless
+transcoding between different JPEG file formats.  Other possible applications
+include lossless cropping of a JPEG image, lossless reassembly of a
+multi-strip or multi-tile TIFF/JPEG file into a single JPEG datastream, etc.
+
+To read the contents of a JPEG file as DCT coefficients, open the file and do
+jpeg_read_header() as usual.  But instead of calling jpeg_start_decompress()
+and jpeg_read_scanlines(), call jpeg_read_coefficients().  This will read the
+entire image into a set of virtual coefficient-block arrays, one array per
+component.  The return value is a pointer to an array of virtual-array
+descriptors.  Each virtual array can be accessed directly using the JPEG
+memory manager's access_virt_barray method (see Memory management, below,
+and also read structure.doc's discussion of virtual array handling).  Or,
+for simple transcoding to a different JPEG file format, the array list can
+just be handed directly to jpeg_write_coefficients().
+
+Each block in the block arrays contains quantized coefficient values in
+normal array order (not JPEG zigzag order).  The block arrays contain only
+DCT blocks containing real data; any entirely-dummy blocks added to fill out
+interleaved MCUs at the right or bottom edges of the image are discarded
+during reading and are not stored in the block arrays.  (The size of each
+block array can be determined from the width_in_blocks and height_in_blocks
+fields of the component's comp_info entry.)  This is also the data format
+expected by jpeg_write_coefficients().
+
+When you are done using the virtual arrays, call jpeg_finish_decompress()
+to release the array storage and return the decompression object to an idle
+state; or just call jpeg_destroy() if you don't need to reuse the object.
+
+If you use a suspending data source, jpeg_read_coefficients() will return
+NULL if it is forced to suspend; a non-NULL return value indicates successful
+completion.  You need not test for a NULL return value when using a
+non-suspending data source.
+
+It is also possible to call jpeg_read_coefficients() to obtain access to the
+decoder's coefficient arrays during a normal decode cycle in buffered-image
+mode.  This frammish might be useful for progressively displaying an incoming
+image and then re-encoding it without loss.  To do this, decode in buffered-
+image mode as discussed previously, then call jpeg_read_coefficients() after
+the last jpeg_finish_output() call.  The arrays will be available for your use
+until you call jpeg_finish_decompress().
+
+
+To write the contents of a JPEG file as DCT coefficients, you must provide
+the DCT coefficients stored in virtual block arrays.  You can either pass
+block arrays read from an input JPEG file by jpeg_read_coefficients(), or
+allocate virtual arrays from the JPEG compression object and fill them
+yourself.  In either case, jpeg_write_coefficients() is substituted for
+jpeg_start_compress() and jpeg_write_scanlines().  Thus the sequence is
+  * Create compression object
+  * Set all compression parameters as necessary
+  * Request virtual arrays if needed
+  * jpeg_write_coefficients()
+  * jpeg_finish_compress()
+  * Destroy or re-use compression object
+jpeg_write_coefficients() is passed a pointer to an array of virtual block
+array descriptors; the number of arrays is equal to cinfo.num_components.
+
+The virtual arrays need only have been requested, not realized, before
+jpeg_write_coefficients() is called.  A side-effect of
+jpeg_write_coefficients() is to realize any virtual arrays that have been
+requested from the compression object's memory manager.  Thus, when obtaining
+the virtual arrays from the compression object, you should fill the arrays
+after calling jpeg_write_coefficients().  The data is actually written out
+when you call jpeg_finish_compress(); jpeg_write_coefficients() only writes
+the file header.
+
+When writing raw DCT coefficients, it is crucial that the JPEG quantization
+tables and sampling factors match the way the data was encoded, or the
+resulting file will be invalid.  For transcoding from an existing JPEG file,
+we recommend using jpeg_copy_critical_parameters().  This routine initializes
+all the compression parameters to default values (like jpeg_set_defaults()),
+then copies the critical information from a source decompression object.
+The decompression object should have just been used to read the entire
+JPEG input file --- that is, it should be awaiting jpeg_finish_decompress().
+
+jpeg_write_coefficients() marks all tables stored in the compression object
+as needing to be written to the output file (thus, it acts like
+jpeg_start_compress(cinfo, TRUE)).  This is for safety's sake, to avoid
+emitting abbreviated JPEG files by accident.  If you really want to emit an
+abbreviated JPEG file, call jpeg_suppress_tables(), or set the tables'
+individual sent_table flags, between calling jpeg_write_coefficients() and
+jpeg_finish_compress().
+
+
+Progress monitoring
+-------------------
+
+Some applications may need to regain control from the JPEG library every so
+often.  The typical use of this feature is to produce a percent-done bar or
+other progress display.  (For a simple example, see cjpeg.c or djpeg.c.)
+Although you do get control back frequently during the data-transferring pass
+(the jpeg_read_scanlines or jpeg_write_scanlines loop), any additional passes
+will occur inside jpeg_finish_compress or jpeg_start_decompress; those
+routines may take a long time to execute, and you don't get control back
+until they are done.
+
+You can define a progress-monitor routine which will be called periodically
+by the library.  No guarantees are made about how often this call will occur,
+so we don't recommend you use it for mouse tracking or anything like that.
+At present, a call will occur once per MCU row, scanline, or sample row
+group, whichever unit is convenient for the current processing mode; so the
+wider the image, the longer the time between calls.  During the data
+transferring pass, only one call occurs per call of jpeg_read_scanlines or
+jpeg_write_scanlines, so don't pass a large number of scanlines at once if
+you want fine resolution in the progress count.  (If you really need to use
+the callback mechanism for time-critical tasks like mouse tracking, you could
+insert additional calls inside some of the library's inner loops.)
+
+To establish a progress-monitor callback, create a struct jpeg_progress_mgr,
+fill in its progress_monitor field with a pointer to your callback routine,
+and set cinfo->progress to point to the struct.  The callback will be called
+whenever cinfo->progress is non-NULL.  (This pointer is set to NULL by
+jpeg_create_compress or jpeg_create_decompress; the library will not change
+it thereafter.  So if you allocate dynamic storage for the progress struct,
+make sure it will live as long as the JPEG object does.  Allocating from the
+JPEG memory manager with lifetime JPOOL_PERMANENT will work nicely.)  You
+can use the same callback routine for both compression and decompression.
+
+The jpeg_progress_mgr struct contains four fields which are set by the library:
+	long pass_counter;	/* work units completed in this pass */
+	long pass_limit;	/* total number of work units in this pass */
+	int completed_passes;	/* passes completed so far */
+	int total_passes;	/* total number of passes expected */
+During any one pass, pass_counter increases from 0 up to (not including)
+pass_limit; the step size is usually but not necessarily 1.  The pass_limit
+value may change from one pass to another.  The expected total number of
+passes is in total_passes, and the number of passes already completed is in
+completed_passes.  Thus the fraction of work completed may be estimated as
+		completed_passes + (pass_counter/pass_limit)
+		--------------------------------------------
+				total_passes
+ignoring the fact that the passes may not be equal amounts of work.
+
+When decompressing, pass_limit can even change within a pass, because it
+depends on the number of scans in the JPEG file, which isn't always known in
+advance.  The computed fraction-of-work-done may jump suddenly (if the library
+discovers it has overestimated the number of scans) or even decrease (in the
+opposite case).  It is not wise to put great faith in the work estimate.
+
+When using the decompressor's buffered-image mode, the progress monitor work
+estimate is likely to be completely unhelpful, because the library has no way
+to know how many output passes will be demanded of it.  Currently, the library
+sets total_passes based on the assumption that there will be one more output
+pass if the input file end hasn't yet been read (jpeg_input_complete() isn't
+TRUE), but no more output passes if the file end has been reached when the
+output pass is started.  This means that total_passes will rise as additional
+output passes are requested.  If you have a way of determining the input file
+size, estimating progress based on the fraction of the file that's been read
+will probably be more useful than using the library's value.
+
+
+Memory management
+-----------------
+
+This section covers some key facts about the JPEG library's built-in memory
+manager.  For more info, please read structure.doc's section about the memory
+manager, and consult the source code if necessary.
+
+All memory and temporary file allocation within the library is done via the
+memory manager.  If necessary, you can replace the "back end" of the memory
+manager to control allocation yourself (for example, if you don't want the
+library to use malloc() and free() for some reason).
+
+Some data is allocated "permanently" and will not be freed until the JPEG
+object is destroyed.  Most data is allocated "per image" and is freed by
+jpeg_finish_compress, jpeg_finish_decompress, or jpeg_abort.  You can call the
+memory manager yourself to allocate structures that will automatically be
+freed at these times.  Typical code for this is
+  ptr = (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, size);
+Use JPOOL_PERMANENT to get storage that lasts as long as the JPEG object.
+Use alloc_large instead of alloc_small for anything bigger than a few Kbytes.
+There are also alloc_sarray and alloc_barray routines that automatically
+build 2-D sample or block arrays.
+
+The library's minimum space requirements to process an image depend on the
+image's width, but not on its height, because the library ordinarily works
+with "strip" buffers that are as wide as the image but just a few rows high.
+Some operating modes (eg, two-pass color quantization) require full-image
+buffers.  Such buffers are treated as "virtual arrays": only the current strip
+need be in memory, and the rest can be swapped out to a temporary file.
+
+If you use the simplest memory manager back end (jmemnobs.c), then no
+temporary files are used; virtual arrays are simply malloc()'d.  Images bigger
+than memory can be processed only if your system supports virtual memory.
+The other memory manager back ends support temporary files of various flavors
+and thus work in machines without virtual memory.  They may also be useful on
+Unix machines if you need to process images that exceed available swap space.
+
+When using temporary files, the library will make the in-memory buffers for
+its virtual arrays just big enough to stay within a "maximum memory" setting.
+Your application can set this limit by setting cinfo->mem->max_memory_to_use
+after creating the JPEG object.  (Of course, there is still a minimum size for
+the buffers, so the max-memory setting is effective only if it is bigger than
+the minimum space needed.)  If you allocate any large structures yourself, you
+must allocate them before jpeg_start_compress() or jpeg_start_decompress() in
+order to have them counted against the max memory limit.  Also keep in mind
+that space allocated with alloc_small() is ignored, on the assumption that
+it's too small to be worth worrying about; so a reasonable safety margin
+should be left when setting max_memory_to_use.
+
+If you use the jmemname.c or jmemdos.c memory manager back end, it is
+important to clean up the JPEG object properly to ensure that the temporary
+files get deleted.  (This is especially crucial with jmemdos.c, where the
+"temporary files" may be extended-memory segments; if they are not freed,
+DOS will require a reboot to recover the memory.)  Thus, with these memory
+managers, it's a good idea to provide a signal handler that will trap any
+early exit from your program.  The handler should call either jpeg_abort()
+or jpeg_destroy() for any active JPEG objects.  A handler is not needed with
+jmemnobs.c, and shouldn't be necessary with jmemansi.c or jmemmac.c either,
+since the C library is supposed to take care of deleting files made with
+tmpfile().
+
+
+Memory usage
+------------
+
+Working memory requirements while performing compression or decompression
+depend on image dimensions, image characteristics (such as colorspace and
+JPEG process), and operating mode (application-selected options).
+
+As of v6b, the decompressor requires:
+ 1. About 24K in more-or-less-fixed-size data.  This varies a bit depending
+    on operating mode and image characteristics (particularly color vs.
+    grayscale), but it doesn't depend on image dimensions.
+ 2. Strip buffers (of size proportional to the image width) for IDCT and
+    upsampling results.  The worst case for commonly used sampling factors
+    is about 34 bytes * width in pixels for a color image.  A grayscale image
+    only needs about 8 bytes per pixel column.
+ 3. A full-image DCT coefficient buffer is needed to decode a multi-scan JPEG
+    file (including progressive JPEGs), or whenever you select buffered-image
+    mode.  This takes 2 bytes/coefficient.  At typical 2x2 sampling, that's
+    3 bytes per pixel for a color image.  Worst case (1x1 sampling) requires
+    6 bytes/pixel.  For grayscale, figure 2 bytes/pixel.
+ 4. To perform 2-pass color quantization, the decompressor also needs a
+    128K color lookup table and a full-image pixel buffer (3 bytes/pixel).
+This does not count any memory allocated by the application, such as a
+buffer to hold the final output image.
+
+The above figures are valid for 8-bit JPEG data precision and a machine with
+32-bit ints.  For 12-bit JPEG data, double the size of the strip buffers and
+quantization pixel buffer.  The "fixed-size" data will be somewhat smaller
+with 16-bit ints, larger with 64-bit ints.  Also, CMYK or other unusual
+color spaces will require different amounts of space.
+
+The full-image coefficient and pixel buffers, if needed at all, do not
+have to be fully RAM resident; you can have the library use temporary
+files instead when the total memory usage would exceed a limit you set.
+(But if your OS supports virtual memory, it's probably better to just use
+jmemnobs and let the OS do the swapping.)
+
+The compressor's memory requirements are similar, except that it has no need
+for color quantization.  Also, it needs a full-image DCT coefficient buffer
+if Huffman-table optimization is asked for, even if progressive mode is not
+requested.
+
+If you need more detailed information about memory usage in a particular
+situation, you can enable the MEM_STATS code in jmemmgr.c.
+
+
+Library compile-time options
+----------------------------
+
+A number of compile-time options are available by modifying jmorecfg.h.
+
+The JPEG standard provides for both the baseline 8-bit DCT process and
+a 12-bit DCT process.  The IJG code supports 12-bit lossy JPEG if you define
+BITS_IN_JSAMPLE as 12 rather than 8.  Note that this causes JSAMPLE to be
+larger than a char, so it affects the surrounding application's image data.
+The sample applications cjpeg and djpeg can support 12-bit mode only for PPM
+and GIF file formats; you must disable the other file formats to compile a
+12-bit cjpeg or djpeg.  (install.doc has more information about that.)
+At present, a 12-bit library can handle *only* 12-bit images, not both
+precisions.  (If you need to include both 8- and 12-bit libraries in a single
+application, you could probably do it by defining NEED_SHORT_EXTERNAL_NAMES
+for just one of the copies.  You'd have to access the 8-bit and 12-bit copies
+from separate application source files.  This is untested ... if you try it,
+we'd like to hear whether it works!)
+
+Note that a 12-bit library always compresses in Huffman optimization mode,
+in order to generate valid Huffman tables.  This is necessary because our
+default Huffman tables only cover 8-bit data.  If you need to output 12-bit
+files in one pass, you'll have to supply suitable default Huffman tables.
+You may also want to supply your own DCT quantization tables; the existing
+quality-scaling code has been developed for 8-bit use, and probably doesn't
+generate especially good tables for 12-bit.
+
+The maximum number of components (color channels) in the image is determined
+by MAX_COMPONENTS.  The JPEG standard allows up to 255 components, but we
+expect that few applications will need more than four or so.
+
+On machines with unusual data type sizes, you may be able to improve
+performance or reduce memory space by tweaking the various typedefs in
+jmorecfg.h.  In particular, on some RISC CPUs, access to arrays of "short"s
+is quite slow; consider trading memory for speed by making JCOEF, INT16, and
+UINT16 be "int" or "unsigned int".  UINT8 is also a candidate to become int.
+You probably don't want to make JSAMPLE be int unless you have lots of memory
+to burn.
+
+You can reduce the size of the library by compiling out various optional
+functions.  To do this, undefine xxx_SUPPORTED symbols as necessary.
+
+You can also save a few K by not having text error messages in the library;
+the standard error message table occupies about 5Kb.  This is particularly
+reasonable for embedded applications where there's no good way to display 
+a message anyway.  To do this, remove the creation of the message table
+(jpeg_std_message_table[]) from jerror.c, and alter format_message to do
+something reasonable without it.  You could output the numeric value of the
+message code number, for example.  If you do this, you can also save a couple
+more K by modifying the TRACEMSn() macros in jerror.h to expand to nothing;
+you don't need trace capability anyway, right?
+
+
+Portability considerations
+--------------------------
+
+The JPEG library has been written to be extremely portable; the sample
+applications cjpeg and djpeg are slightly less so.  This section summarizes
+the design goals in this area.  (If you encounter any bugs that cause the
+library to be less portable than is claimed here, we'd appreciate hearing
+about them.)
+
+The code works fine on ANSI C, C++, and pre-ANSI C compilers, using any of
+the popular system include file setups, and some not-so-popular ones too.
+See install.doc for configuration procedures.
+
+The code is not dependent on the exact sizes of the C data types.  As
+distributed, we make the assumptions that
+	char	is at least 8 bits wide
+	short	is at least 16 bits wide
+	int	is at least 16 bits wide
+	long	is at least 32 bits wide
+(These are the minimum requirements of the ANSI C standard.)  Wider types will
+work fine, although memory may be used inefficiently if char is much larger
+than 8 bits or short is much bigger than 16 bits.  The code should work
+equally well with 16- or 32-bit ints.
+
+In a system where these assumptions are not met, you may be able to make the
+code work by modifying the typedefs in jmorecfg.h.  However, you will probably
+have difficulty if int is less than 16 bits wide, since references to plain
+int abound in the code.
+
+char can be either signed or unsigned, although the code runs faster if an
+unsigned char type is available.  If char is wider than 8 bits, you will need
+to redefine JOCTET and/or provide custom data source/destination managers so
+that JOCTET represents exactly 8 bits of data on external storage.
+
+The JPEG library proper does not assume ASCII representation of characters.
+But some of the image file I/O modules in cjpeg/djpeg do have ASCII
+dependencies in file-header manipulation; so does cjpeg's select_file_type()
+routine.
+
+The JPEG library does not rely heavily on the C library.  In particular, C
+stdio is used only by the data source/destination modules and the error
+handler, all of which are application-replaceable.  (cjpeg/djpeg are more
+heavily dependent on stdio.)  malloc and free are called only from the memory
+manager "back end" module, so you can use a different memory allocator by
+replacing that one file.
+
+The code generally assumes that C names must be unique in the first 15
+characters.  However, global function names can be made unique in the
+first 6 characters by defining NEED_SHORT_EXTERNAL_NAMES.
+
+More info about porting the code may be gleaned by reading jconfig.doc,
+jmorecfg.h, and jinclude.h.
+
+
+Notes for MS-DOS implementors
+-----------------------------
+
+The IJG code is designed to work efficiently in 80x86 "small" or "medium"
+memory models (i.e., data pointers are 16 bits unless explicitly declared
+"far"; code pointers can be either size).  You may be able to use small
+model to compile cjpeg or djpeg by itself, but you will probably have to use
+medium model for any larger application.  This won't make much difference in
+performance.  You *will* take a noticeable performance hit if you use a
+large-data memory model (perhaps 10%-25%), and you should avoid "huge" model
+if at all possible.
+
+The JPEG library typically needs 2Kb-3Kb of stack space.  It will also
+malloc about 20K-30K of near heap space while executing (and lots of far
+heap, but that doesn't count in this calculation).  This figure will vary
+depending on selected operating mode, and to a lesser extent on image size.
+There is also about 5Kb-6Kb of constant data which will be allocated in the
+near data segment (about 4Kb of this is the error message table).
+Thus you have perhaps 20K available for other modules' static data and near
+heap space before you need to go to a larger memory model.  The C library's
+static data will account for several K of this, but that still leaves a good
+deal for your needs.  (If you are tight on space, you could reduce the sizes
+of the I/O buffers allocated by jdatasrc.c and jdatadst.c, say from 4K to
+1K.  Another possibility is to move the error message table to far memory;
+this should be doable with only localized hacking on jerror.c.)
+
+About 2K of the near heap space is "permanent" memory that will not be
+released until you destroy the JPEG object.  This is only an issue if you
+save a JPEG object between compression or decompression operations.
+
+Far data space may also be a tight resource when you are dealing with large
+images.  The most memory-intensive case is decompression with two-pass color
+quantization, or single-pass quantization to an externally supplied color
+map.  This requires a 128Kb color lookup table plus strip buffers amounting
+to about 40 bytes per column for typical sampling ratios (eg, about 25600
+bytes for a 640-pixel-wide image).  You may not be able to process wide
+images if you have large data structures of your own.
+
+Of course, all of these concerns vanish if you use a 32-bit flat-memory-model
+compiler, such as DJGPP or Watcom C.  We highly recommend flat model if you
+can use it; the JPEG library is significantly faster in flat model.

+ 1512 - 0
engine/lib/ljpeg/extras/ltconfig

@@ -0,0 +1,1512 @@
+#! /bin/sh
+
+# ltconfig - Create a system-specific libtool.
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
+# Gordon Matzigkeit <[email protected]>, 1996
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A lot of this script is taken from autoconf-2.10.
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
+
+echo=echo
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
+else
+  # The Solaris and AIX default echo program unquotes backslashes.
+  # This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  # So, we emulate echo with printf '%s\n'
+  echo="printf %s\\n"
+  if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then :
+  else
+    # Oops.  We have no working printf.  Try to find a not-so-buggy echo.
+    echo=echo
+    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
+    for dir in $PATH /usr/ucb; do
+      if test -f $dir/echo && test "X`$dir/echo '\t'`" = 'X\t'; then
+        echo="$dir/echo"
+        break
+      fi
+    done
+    IFS="$save_ifs"
+  fi
+fi
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# The name of this program.
+progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
+
+# Constants:
+PROGRAM=ltconfig
+PACKAGE=libtool
+VERSION=1.2
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5'
+rm="rm -f"
+
+help="Try \`$progname --help' for more information."
+
+# Global variables:
+can_build_shared=yes
+enable_shared=yes
+# All known linkers require a `.a' archive for static linking.
+enable_static=yes
+ltmain=
+silent=
+srcdir=
+ac_config_guess=
+ac_config_sub=
+host=
+nonopt=
+verify_host=yes
+with_gcc=no
+with_gnu_ld=no
+
+old_AR="$AR"
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+old_CPPFLAGS="$CPPFLAGS"
+old_LD="$LD"
+old_LN_S="$LN_S"
+old_NM="$NM"
+old_RANLIB="$RANLIB"
+
+# Parse the command line options.
+args=
+prev=
+for option
+do
+  case "$option" in
+  -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    eval "$prev=\$option"
+    prev=
+    continue
+  fi
+
+  case "$option" in
+  --help) cat <<EOM
+Usage: $progname [OPTION]... LTMAIN [HOST]
+
+Generate a system-specific libtool script.
+
+    --disable-shared       do not build shared libraries
+    --disable-static       do not build static libraries
+    --help                 display this help and exit
+    --no-verify            do not verify that HOST is a valid host type
+    --quiet                same as \`--silent'
+    --silent               do not print informational messages
+    --srcdir=DIR           find \`config.guess' in DIR
+    --version              output version information and exit
+    --with-gcc             assume that the GNU C compiler will be used
+    --with-gnu-ld          assume that the C compiler uses the GNU linker
+
+LTMAIN is the \`ltmain.sh' shell script fragment that provides basic libtool
+functionality.
+
+HOST is the canonical host system name [default=guessed].
+EOM
+  exit 0
+  ;;
+
+  --disable-shared) enable_shared=no ;;
+
+  --disable-static) enable_static=no ;;
+
+  --quiet | --silent) silent=yes ;;
+
+  --srcdir) prev=srcdir ;;
+  --srcdir=*) srcdir="$optarg" ;;
+
+  --no-verify) verify_host=no ;;
+
+  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;;
+
+  --with-gcc) with_gcc=yes ;;
+  --with-gnu-ld) with_gnu_ld=yes ;;
+
+  -*)
+    echo "$progname: unrecognized option \`$option'" 1>&2
+    echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    if test -z "$ltmain"; then
+      ltmain="$option"
+    elif test -z "$host"; then
+# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
+#      if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
+#        echo "$progname: warning \`$option' is not a valid host type" 1>&2
+#      fi
+      host="$option"
+    else
+      echo "$progname: too many arguments" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+done
+
+if test -z "$ltmain"; then
+  echo "$progname: you must specify a LTMAIN file" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+if test -f "$ltmain"; then :
+else
+  echo "$progname: \`$ltmain' does not exist" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+# Quote any args containing shell metacharacters.
+ltconfig_args=
+for arg
+do
+  case "$arg" in
+  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ltconfig_args="$ltconfig_args '$arg'" ;;
+  *) ltconfig_args="$ltconfig_args $arg" ;;
+  esac
+done
+
+# A relevant subset of AC_INIT.
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 5 compiler messages saved in config.log
+# 6 checking for... messages and results
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>>./config.log
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says [email protected].
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='	'
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+if test -z "$srcdir"; then
+  # Assume the source directory is the same one as the path to ltmain.sh.
+  srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'`
+  test "$srcdir" = "$ltmain" && srcdir=.
+fi
+
+trap "$rm conftest*; exit 1" 1 2 15
+if test "$verify_host" = yes; then
+  # Check for config.guess and config.sub.
+  ac_aux_dir=
+  for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+    if test -f $ac_dir/config.guess; then
+      ac_aux_dir=$ac_dir
+      break
+    fi
+  done
+  if test -z "$ac_aux_dir"; then
+    echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+  ac_config_guess=$ac_aux_dir/config.guess
+  ac_config_sub=$ac_aux_dir/config.sub
+
+  # Make sure we can run config.sub.
+  if $ac_config_sub sun4 >/dev/null 2>&1; then :
+  else
+    echo "$progname: cannot run $ac_config_sub" 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+
+  host_alias=$host
+  case "$host_alias" in
+  "")
+    if host_alias=`$ac_config_guess`; then :
+    else
+      echo "$progname: cannot guess host type; you must specify one" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+  host=`$ac_config_sub $host_alias`
+  echo "$ac_t$host" 1>&6
+
+  # Make sure the host verified.
+  test -z "$host" && exit 1
+
+elif test -z "$host"; then
+  echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
+  echo "$help" 1>&2
+  exit 1
+else
+  host_alias=$host
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case "$host_os" in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+case "$host_os" in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "${COLLECT_NAMES+set}" != set; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR cru $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+# Set a sane default for `AR'.
+test -z "$AR" && AR=ar
+
+# If RANLIB is not set, then run the test.
+if test "${RANLIB+set}" != "set"; then
+  result=no
+
+  echo $ac_n "checking for ranlib... $ac_c" 1>&6
+  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/ranlib; then
+      RANLIB="ranlib"
+      result="ranlib"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  echo "$ac_t$result" 1>&6
+fi
+
+if test -n "$RANLIB"; then
+  old_archive_cmds="$old_archive_cmds;\$RANLIB \$oldlib"
+  old_postinstall_cmds="\$RANLIB \$oldlib;$old_postinstall_cmds"
+fi
+
+# Check to see if we are using GCC.
+if test "$with_gcc" != yes || test -z "$CC"; then
+  # If CC is not set, then try to find GCC or a usable CC.
+  if test -z "$CC"; then
+    echo $ac_n "checking for gcc... $ac_c" 1>&6
+    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
+    for dir in $PATH; do
+      IFS="$save_ifs"
+      test -z "$dir" && dir=.
+      if test -f $dir/gcc; then
+	CC="gcc"
+	break
+      fi
+    done
+    IFS="$save_ifs"
+
+    if test -n "$CC"; then
+      echo "$ac_t$CC" 1>&6
+    else
+      echo "$ac_t"no 1>&6
+    fi
+  fi
+
+  # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
+  if test -z "$CC"; then
+    echo $ac_n "checking for cc... $ac_c" 1>&6
+    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}:"
+    cc_rejected=no
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/cc; then
+	if test "$dir/cc" = "/usr/ucb/cc"; then
+	  cc_rejected=yes
+	  continue
+	fi
+	CC="cc"
+	break
+      fi
+    done
+    IFS="$save_ifs"
+    if test $cc_rejected = yes; then
+      # We found a bogon in the path, so make sure we never use it.
+      set dummy $CC
+      shift
+      if test $# -gt 0; then
+	# We chose a different compiler from the bogus one.
+	# However, it has the same name, so the bogon will be chosen
+	# first if we set CC to just the name; use the full file name.
+	shift
+	set dummy "$dir/cc" "$@"
+	shift
+	CC="$@"
+      fi
+    fi
+
+    if test -n "$CC"; then
+      echo "$ac_t$CC" 1>&6
+    else
+      echo "$ac_t"no 1>&6
+    fi
+
+    if test -z "$CC"; then
+      echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
+      exit 1
+    fi
+  fi
+
+  # Now see if the compiler is really GCC.
+  with_gcc=no
+  echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
+  echo "$progname:424: checking whether we are using GNU C" >&5
+
+  $rm conftest.c
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    with_gcc=yes
+  fi
+  $rm conftest.c
+  echo "$ac_t$with_gcc" 1>&6
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
+pic_flag=
+special_shlib_compile_flags=
+wl=
+link_static_flag=
+no_builtin_flag=
+
+if test "$with_gcc" = yes; then
+  wl='-Wl,'
+  link_static_flag='-static'
+  no_builtin_flag=' -fno-builtin'
+
+  case "$host_os" in
+  aix3* | aix4* | irix5* | irix6* | osf3* | osf4*)
+    # PIC is the default for these OSes.
+    ;;
+  os2*)
+    # We can build DLLs from non-PIC.
+    ;;
+  amigaos*)
+    # FIXME: we need at least 68020 code to build shared libraries, but
+    # adding the `-m68020' flag to GCC prevents building anything better,
+    # like `-m68040'.
+    pic_flag='-m68020 -resident32 -malways-restore-a4'
+    ;;
+  *)
+    pic_flag='-fPIC'
+    ;;
+  esac
+else
+  # PORTME Check for PIC flags for the system compiler.
+  case "$host_os" in
+  aix3* | aix4*)
+    # All AIX code is PIC.
+    link_static_flag='-bnso -bI:/lib/syscalls.exp'
+    ;;
+
+  hpux9* | hpux10*)
+    # Is there a better link_static_flag that works with the bundled CC?
+    wl='-Wl,'
+    link_static_flag="${wl}-a ${wl}archive"
+    pic_flag='+Z'
+    ;;
+
+  irix5* | irix6*)
+    wl='-Wl,'
+    link_static_flag='-non_shared'
+    # PIC (with -KPIC) is the default.
+    ;;
+
+  os2*)
+    # We can build DLLs from non-PIC.
+    ;;
+
+  osf3* | osf4*)
+    # All OSF/1 code is PIC.
+    wl='-Wl,'
+    link_static_flag='-non_shared'
+    ;;
+
+  sco3.2v5*)
+    pic_flag='-Kpic'
+    link_static_flag='-dn'
+    special_shlib_compile_flags='-belf'
+    ;;
+
+  solaris2*)
+    pic_flag='-KPIC'
+    link_static_flag='-Bstatic'
+    wl='-Wl,'
+    ;;
+
+  sunos4*)
+    pic_flag='-PIC'
+    link_static_flag='-Bstatic'
+    wl='-Qoption ld '
+    ;;
+
+  sysv4.2uw2*)
+    pic_flag='-KPIC'
+    link_static_flag='-Bstatic'
+    wl='-Wl,'
+    ;;
+
+  uts4*)
+    pic_flag='-pic'
+    link_static_flag='-Bstatic'
+    ;;
+
+  *)
+    can_build_shared=no
+    ;;
+  esac
+fi
+
+if test -n "$pic_flag"; then
+  echo "$ac_t$pic_flag" 1>&6
+
+  # Check to make sure the pic_flag actually works.
+  echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
+  $rm conftest*
+  echo > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $pic_flag -DPIC"
+  echo "$progname:547: checking if $compiler PIC flag $pic_flag works" >&5
+  if { (eval echo $progname:548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+    # Append any warnings to the config.log.
+    cat conftest.err 1>&5
+
+    # On HP-UX, both CC and GCC only warn that PIC is supported... then they
+    # create non-PIC objects.  So, if there were any warnings, we assume that
+    # PIC is not supported.
+    if test -s conftest.err; then
+      echo "$ac_t"no 1>&6
+      can_build_shared=no
+      pic_flag=
+    else
+      echo "$ac_t"yes 1>&6
+      pic_flag=" $pic_flag"
+    fi
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    can_build_shared=no
+    pic_flag=
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+else
+  echo "$ac_t"none 1>&6
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$special_shlib_compile_flags"; then
+  echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[ 	]$special_shlib_compile_flags[ 	]" >/dev/null; then :
+  else
+    echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
+    can_build_shared=no
+  fi
+fi
+
+echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
+$rm conftest*
+echo 'main(){return(0);}' > conftest.c
+save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $link_static_flag"
+echo "$progname:591: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  echo "$ac_t$link_static_flag" 1>&6
+else
+  echo "$ac_t"none 1>&6
+  link_static_flag=
+fi
+LDFLAGS="$save_LDFLAGS"
+$rm conftest*
+
+if test -z "$LN_S"; then
+  # Check to see if we can use ln -s, or we need hard links.
+  echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
+  $rm conftestdata
+  if ln -s X conftestdata 2>/dev/null; then
+    $rm conftestdata
+    LN_S="ln -s"
+  else
+    LN_S=ln
+  fi
+  if test "$LN_S" = "ln -s"; then
+    echo "$ac_t"yes 1>&6
+  else
+    echo "$ac_t"no 1>&6
+  fi
+fi
+
+# Make sure LD is an absolute path.
+if test -z "$LD"; then
+  ac_prog=ld
+  if test "$with_gcc" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
+    echo "$progname:624: checking for ld used by GCC" >&5
+    ac_prog=`($CC -print-prog-name=ld) 2>&5`
+    case "$ac_prog" in
+    # Accept absolute paths.
+    /* | [A-Za-z]:\\*)
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+    "")
+      # If it fails, then pretend we are not using GCC.
+      ac_prog=ld
+      ;;
+    *)
+      # If it is relative, then search for the first ld in PATH.
+      with_gnu_ld=unknown
+      ;;
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld... $ac_c" 1>&6
+    echo "$progname:642: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+    echo "$progname:645: checking for non-GNU ld" >&5
+  fi
+
+  if test -z "$LD"; then
+    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f "$ac_dir/$ac_prog"; then
+	LD="$ac_dir/$ac_prog"
+	# Check to see if the program is GNU ld.  I'd rather use --version,
+	# but apparently some GNU ld's only accept -v.
+	# Break only if it was the GNU/non-GNU ld that we prefer.
+	if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	  test "$with_gnu_ld" != no && break
+	else
+	  test "$with_gnu_ld" != yes && break
+	fi
+      fi
+    done
+    IFS="$ac_save_ifs"
+  fi
+
+  if test -n "$LD"; then
+    echo "$ac_t$LD" 1>&6
+  else
+    echo "$ac_t"no 1>&6
+  fi
+
+  if test -z "$LD"; then
+    echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
+    exit 1
+  fi
+fi
+
+# Check to see if it really is or is not GNU ld.
+echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
+# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+echo "$ac_t$with_gnu_ld" 1>&6
+
+# See if the linker supports building shared libraries.
+echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
+
+allow_undefined_flag=
+no_undefined_flag=
+archive_cmds=
+old_archive_from_new_cmds=
+export_dynamic_flag_spec=
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+
+case "$host_os" in
+amigaos* | sunos4*)
+  # On these operating systems, we should treat GNU ld like the system ld.
+  gnu_ld_acts_native=yes
+  ;;
+*)
+  gnu_ld_acts_native=no
+  ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then
+
+  # See if GNU ld supports shared libraries.
+  if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+    archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs'
+    runpath_var=LD_RUN_PATH
+    ld_shlibs=yes
+  else
+    ld_shlibs=no
+  fi
+
+  if test "$ld_shlibs" = yes; then
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case "$host_os" in
+  aix3*)
+    allow_undefined_flag=unsupported
+    archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE;$AR cru $lib $objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$with_gcc" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4*)
+    allow_undefined_flag=unsupported
+    archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry;$AR cru $lib $objdir/$soname'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $objdir/a2ixlibrary.data;$echo "#define NAME $libname" > $objdir/a2ixlibrary.data;$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data;$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data;$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data;$AR cru $lib$libobjs;$RANLIB $lib;(cd $objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib$libobjs /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib$libobjs'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3, at last, uses gcc -shared to do shared libraries.
+  freebsd3*)
+    archive_cmds='$CC -shared -o $lib$libobjs'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9*)
+    archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs;mv $objdir/$soname $lib'
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  hpux10*)
+    archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs'
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs'
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    ;;
+
+  netbsd*)
+    # Tested with NetBSD 1.2 ld
+    archive_cmds='$LD -Bshareable -o $lib$libobjs'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    archive_cmds='$LD -Bshareable -o $lib$libobjs'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;$echo DATA >> $objdir/$libname.def;$echo " SINGLE NONSHARED" >> $objdir/$libname.def;$echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
+    ;;
+
+  osf3* | osf4*)
+    allow_undefined_flag=' -expect_unresolved \*'
+    archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs'
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -o $lib$libobjs'
+    hardcode_direct=yes
+    ;;
+
+  solaris2*)
+    no_undefined_flag=' -z text'
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+
+    # Solaris 2 before 2.5 hardcodes -L paths.
+    case "$host_os" in
+    solaris2.[0-4]*)
+      hardcode_minus_L=yes
+      ;;
+    esac
+    ;;
+
+  sunos4*)
+    if test "$with_gcc" = yes; then
+      archive_cmds='$CC -shared -o $lib$libobjs'
+    else
+      archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs'
+    fi
+
+    if test "$with_gnu_ld" = yes; then
+      export_dynamic_flag_spec='${wl}-export-dynamic'
+    fi
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib$libobjs'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=no
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    can_build_shared=no
+    ;;
+  esac
+fi
+echo "$ac_t$ld_shlibs" 1>&6
+
+if test -z "$NM"; then
+  echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
+  case "$NM" in
+  /* | [A-Za-z]:\\*) ;; # Let the user override the test with a path.
+  *)
+    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+    for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/nm; then
+        # Check to see if the nm accepts a BSD-compat flag.
+        # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+        #   nm: unknown option "B" ignored
+        if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+          NM="$ac_dir/nm -B"
+        elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+          NM="$ac_dir/nm -p"
+	else
+          NM="$ac_dir/nm"
+	fi
+        break
+      fi
+    done
+    IFS="$ac_save_ifs"
+    test -z "$NM" && NM=nm
+    ;;
+  esac
+  echo "$ac_t$NM" 1>&6
+fi
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRSTU]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \1'
+
+# Define system-specific variables.
+case "$host_os" in
+aix*)
+  symcode='[BCDTU]'
+  ;;
+irix*)
+  # Cannot use undefined symbols on IRIX because inlined functions mess us up.
+  symcode='[BCDEGRST]'
+  ;;
+solaris2*)
+  symcode='[BDTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTUW]'
+fi
+
+# Write the raw and C identifiers.
+global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'"
+
+# Check to see that the pipe works correctly.
+pipe_works=no
+$rm conftest*
+cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+echo "$progname:971: checking if global_symbol_pipe works" >&5
+if { (eval echo $progname:972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then
+  # Now try to grab the symbols.
+  nlist=conftest.nm
+  if { echo "$progname:975: eval \"$NM conftest.o | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.o | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+
+    # Try sorting and uniquifying the output.
+    if sort "$nlist" | uniq > "$nlist"T; then
+      mv -f "$nlist"T "$nlist"
+      wcout=`wc "$nlist" 2>/dev/null`
+      count=`$echo "X$wcout" | $Xsed -e 's/^[ 	]*\([0-9][0-9]*\).*$/\1/'`
+      (test "$count" -ge 0) 2>/dev/null || count=-1
+    else
+      rm -f "$nlist"T
+      count=-1
+    fi
+
+    # Make sure that we snagged all the symbols we need.
+    if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+      if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+	cat <<EOF > conftest.c
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+        # Now generate the symbol file.
+        sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c
+
+	cat <<EOF >> conftest.c
+#if defined (__STDC__) && __STDC__
+# define __ptr_t void *
+#else
+# define __ptr_t char *
+#endif
+
+/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
+int dld_preloaded_symbol_count = $count;
+
+/* The mapping between symbol names and symbols. */
+struct {
+  char *name;
+  __ptr_t address;
+}
+dld_preloaded_symbols[] =
+{
+EOF
+        sed 's/^\(.*\) \(.*\)$/  {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c
+        cat <<\EOF >> conftest.c
+  {0, (__ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+        # Now try linking the two files.
+        mv conftest.o conftestm.o
+	save_LIBS="$LIBS"
+	save_CFLAGS="$CFLAGS"
+        LIBS='conftestm.o'
+	CFLAGS="$CFLAGS$no_builtin_flag"
+        if { (eval echo $progname:1033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+          pipe_works=yes
+        else
+          echo "$progname: failed program was:" >&5
+          cat conftest.c >&5
+        fi
+        LIBS="$save_LIBS"
+      else
+        echo "cannot find nm_test_func in $nlist" >&5
+      fi
+    else
+      echo "cannot find nm_test_var in $nlist" >&5
+    fi
+  else
+    echo "cannot run $global_symbol_pipe" >&5
+  fi
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.c >&5
+fi
+$rm conftest*
+
+# Do not use the global_symbol_pipe unless it works.
+echo "$ac_t$pipe_works" 1>&6
+test "$pipe_works" = yes || global_symbol_pipe=
+
+# Check hardcoding attributes.
+echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no && \
+     test "$hardcode_minus_L" != no && \
+     test "$hardcode_shlibpath_var" != no; then
+
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+elif test "$hardcode_direct" != yes && \
+     test "$hardcode_minus_L" != yes && \
+     test "$hardcode_shlibpath_var" != yes; then
+  # We cannot hardcode anything.
+  hardcode_action=unsupported
+else
+  # We can only hardcode existing directories.
+  hardcode_action=relink
+fi
+echo "$ac_t$hardcode_action" 1>&6
+test "$hardcode_action" = unsupported && can_build_shared=no
+
+
+reload_flag=
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
+# PORTME Some linker may need a different reload flag.
+reload_flag='-r'
+echo "$ac_t$reload_flag"
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+# PORTME Fill in your ld.so characteristics
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+version_type=none
+dynamic_linker="$host_os ld.so"
+
+echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
+case "$host_os" in
+aix3* | aix4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so.$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so.$major'
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+freebsd2* | freebsd3*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so.$versuffix $libname.so'
+  finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+gnu*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so.$versuffix'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+hpux9* | hpux10*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  shlibpath_var=SHLIB_PATH
+  library_names_spec='${libname}${release}.sl.$versuffix ${libname}${release}.sl.$major $libname.sl'
+  soname_spec='${libname}${release}.sl.$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6*)
+  version_type=osf
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so.$versuffix $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so'
+  soname_spec='${libname}${release}.so.$major'
+  finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+
+  if test -f /lib/ld.so.1; then
+    dynamic_linker='GNU ld.so'
+  else
+    # Only the GNU ld.so supports shared libraries on MkLinux.
+    case "$host_cpu" in
+    powerpc*) dynamic_linker=no ;;
+    *) dynamic_linker='Linux ld.so' ;;
+    esac
+  fi
+  ;;
+
+netbsd* | openbsd*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so.$versuffix'
+  finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4*)
+  version_type=osf
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so.$versuffix $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so.$major'
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris2*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so'
+  soname_spec='${libname}${release}.so.$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so.$versuffix'
+  finish_cmds='PATH="$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4.2uw2*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so'
+  soname_spec='${libname}${release}.so.$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so'
+  soname_spec='${libname}${release}.so.$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$ac_t$dynamic_linker"
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Report the final consequences.
+echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
+
+echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds;\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+esac
+
+echo "$ac_t$enable_shared" 1>&6
+
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+
+echo "checking whether to build static libraries... $enable_static" 1>&6
+
+echo $ac_n "checking for objdir... $ac_c" 1>&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$ac_t$objdir" 1>&6
+
+# Copy echo and quote the copy, instead of the original, because it is
+# used later.
+ltecho="$echo"
+
+# Now quote all the things that may contain metacharacters.
+for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \
+  old_LN_S AR CC LD LN_S NM reload_flag reload_cmds wl pic_flag \
+  link_static_flag no_builtin_flag export_dynamic_flag_spec \
+  libname_spec library_names_spec soname_spec RANLIB \
+  old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+  old_postuninstall_cmds archive_cmds postinstall_cmds postuninstall_cmds \
+  allow_undefined_flag no_undefined_flag \
+  finish_cmds finish_eval global_symbol_pipe \
+  hardcode_libdir_flag_spec hardcode_libdir_separator; do
+
+  case "$var" in
+  reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+  old_postinstall_cmds | old_postuninstall_cmds | archive_cmds | \
+  postinstall_cmds | postuninstall_cmds | finish_cmds)
+    # Double-quote double-evaled strings.
+    eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`"
+    ;;
+  *)
+    eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`"
+    ;;
+  esac
+done
+
+ofile=libtool
+trap "$rm $ofile; exit 1" 1 2 15
+echo creating $ofile
+$rm $ofile
+cat <<EOF > $ofile
+#! /bin/sh
+
+# libtool - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION
+# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
+#
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
+# Gordon Matzigkeit <[email protected]>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This program was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# CC="$old_CC" CFLAGS="$old_CFLAGS" CPPFLAGS="$old_CPPFLAGS" \\
+# LD="$old_LD" NM="$old_NM" RANLIB="$old_RANLIB" LN_S="$old_LN_S" \\
+#   $0$ltconfig_args
+#
+# Compiler and other test output produced by $progname, useful for
+# debugging $progname, is in ./config.log if it exists.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
+
+# An echo program that does not interpret backslashes.
+echo="$ltecho"
+
+# The version of $progname that generated this script.
+LTCONFIG_VERSION="$VERSION"
+
+# Shell to use when invoking shell scripts.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Whether or not to build libtool libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build old-style libraries.
+build_old_libs=$enable_static
+
+# The host system.
+host_alias="$host_alias"
+host="$host"
+
+# The archiver.
+AR="$AR"
+
+# The default C compiler.
+CC="$CC"
+
+# The linker used to build libraries.
+LD="$LD"
+
+# Whether we need hard or soft links.
+LN_S="$LN_S"
+
+# A BSD-compatible nm program.
+NM="$NM"
+
+# The name of the directory that contains temporary libtool files.
+objdir="$objdir"
+
+# How to create reloadable object files.
+reload_flag="$reload_flag"
+reload_cmds="$reload_cmds"
+
+# How to pass a linker flag through the compiler.
+wl="$wl"
+
+# Additional compiler flags for building library objects.
+pic_flag="$pic_flag"
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="$link_static_flag"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag="$no_builtin_flag"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="$export_dynamic_flag_spec"
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec="$libname_spec"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="$library_names_spec"
+
+# The coded name of the library, if different from the real name.
+soname_spec="$soname_spec"
+
+# Commands used to build and install an old-style archive.
+RANLIB="$RANLIB"
+old_archive_cmds="$old_archive_cmds"
+old_postinstall_cmds="$old_postinstall_cmds"
+old_postuninstall_cmds="$old_postuninstall_cmds"
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds="$old_archive_from_new_cmds"
+
+# Commands used to build and install a shared archive.
+archive_cmds="$archive_cmds"
+postinstall_cmds="$postinstall_cmds"
+postuninstall_cmds="$postuninstall_cmds"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag="$allow_undefined_flag"
+
+# Flag that forces no undefined symbols.
+no_undefined_flag="$no_undefined_flag"
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="$finish_cmds"
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval="$finish_eval"
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="$global_symbol_pipe"
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+EOF
+
+case "$host_os" in
+aix3*)
+  cat <<\EOF >> $ofile
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "${COLLECT_NAMES+set}" != set; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+
+EOF
+  ;;
+esac
+
+# Append the ltmain.sh script.
+cat "$ltmain" >> $ofile || (rm -f $ofile; exit 1)
+
+chmod +x $ofile
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

+ 2453 - 0
engine/lib/ljpeg/extras/ltmain.sh

@@ -0,0 +1,2453 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+#
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
+# Gordon Matzigkeit <[email protected]>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.2
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+
+if test "$LTCONFIG_VERSION" != "$VERSION"; then
+  echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+
+# Parse our command line options once, thoroughly.
+while test $# -gt 0
+do
+  arg="$1"
+  shift
+
+  case "$arg" in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case "$prev" in
+    execute_dlfiles)
+      eval "$prev=\"\$$prev \$arg\""
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case "$arg" in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION"
+    exit 0
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case "$nonopt" in
+    *cc | *++ | gcc* | *-gcc*)
+      mode=link
+      for arg
+      do
+        case "$arg" in
+        -c)
+           mode=compile
+           break
+           ;;
+        esac
+      done
+      ;;
+    *db | *dbx)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+        if test -n "$nonopt"; then
+          $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+        else
+          $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+        fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case "$mode" in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    for arg
+    do
+      # Accept any command-line options.
+      case "$arg" in
+      -o)
+	$echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+	;;
+
+      -static)
+	build_libtool_libs=no
+	build_old_libs=yes
+	continue
+	;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly in scan
+      # sets, so we specify it separately.
+      case "$lastarg" in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+	base_compile="$lastarg"
+      else
+	base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    # Get the name of the library object.
+    libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+
+    # Recognize several different file suffixes.
+    xform='[cCFSfms]'
+    case "$libobj" in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case "$libobj" in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      $run $rm $obj $libobj
+      trap "$run $rm $obj $libobj; exit 1" 1 2 15
+    else
+      $run $rm $libobj
+      trap "$run $rm $libobj; exit 1" 1 2 15
+    fi
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      # All platforms use -DPIC, to notify preprocessed assembler code.
+      $show "$base_compile$pic_flag -DPIC $srcfile"
+      if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
+      else
+        test -n "$obj" && $run $rm $obj
+        exit 1
+      fi
+
+      # If we have no pic_flag, then copy the object into place and finish.
+      if test -z "$pic_flag"; then
+        $show "$LN_S $obj $libobj"
+        $run $LN_S $obj $libobj
+        exit $?
+      fi
+
+      # Just move the object, then go on to compile the next one
+      $show "$mv $obj $libobj"
+      $run $mv $obj $libobj || exit 1
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      # Suppress compiler output if we already did a PIC compilation.
+      $show "$base_compile $srcfile$suppress_output"
+      if $run eval "$base_compile \$srcfile$suppress_output"; then :
+      else
+        $run $rm $obj $libobj
+        exit 1
+      fi
+    fi
+
+    # Create an invalid libtool object if no PIC, so that we do not
+    # accidentally link it into a program.
+    if test "$build_libtool_libs" != yes; then
+      $show "echo timestamp > $libobj"
+      $run eval "echo timestamp > \$libobj" || exit $?
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link)
+    modename="$modename: link"
+    CC="$nonopt"
+    allow_undefined=yes
+    compile_command="$CC"
+    finalize_command="$CC"
+
+    compile_shlibpath=
+    finalize_shlibpath=
+    deplibs=
+    dlfiles=
+    dlprefiles=
+    export_dynamic=no
+    hardcode_libdirs=
+    libobjs=
+    link_against_libtool_libs=
+    ltlibs=
+    objs=
+    prev=
+    prevarg=
+    release=
+    rpath=
+    perm_rpath=
+    temp_rpath=
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case "$arg" in
+      -all-static | -static)
+        if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+        fi
+        build_libtool_libs=no
+	build_old_libs=yes
+        break
+        ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    for arg
+    do
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+        case "$prev" in
+        output)
+          compile_command="$compile_command @OUTPUT@"
+          finalize_command="$finalize_command @OUTPUT@"
+          ;;
+        esac
+
+        case "$prev" in
+        dlfiles|dlprefiles)
+          case "$arg" in
+          *.la | *.lo) ;;  # We handle these cases below.
+          *)
+            dlprefiles="$dlprefiles $arg"
+            test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
+            prev=
+            ;;
+          esac
+          ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+        rpath)
+          rpath="$rpath $arg"
+	  prev=
+	  continue
+	  ;;
+        *)
+          eval "$prev=\"\$arg\""
+          prev=
+          continue
+          ;;
+        esac
+      fi
+
+      prevarg="$arg"
+
+      case "$arg" in
+      -all-static)
+	if test -n "$link_static_flag"; then
+          compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+        fi
+        continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -dlopen)
+        prev=dlfiles
+        continue
+        ;;
+
+      -dlpreopen)
+        prev=dlprefiles
+        continue
+        ;;
+
+      -export-dynamic)
+        if test "$export_dynamic" != yes; then
+          export_dynamic=yes
+	  if test -n "$export_dynamic_flag_spec"; then
+	    eval arg=\"$export_dynamic_flag_spec\"
+	  else
+	    arg=
+	  fi
+
+          # Add the symbol object into the linking commands.
+	  compile_command="$compile_command @SYMFILE@"
+	  finalize_command="$finalize_command @SYMFILE@"
+        fi
+        ;;
+
+      -L*)
+        dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
+        case "$dir" in
+        /* | [A-Za-z]:\\*)
+	  # Add the corresponding hardcode_libdir_flag, if it is not identical.
+          ;;
+        *)
+          $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
+          exit 1
+          ;;
+        esac
+        deplibs="$deplibs $arg"
+        ;;
+
+      -l*) deplibs="$deplibs $arg" ;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+        prev=rpath
+        continue
+        ;;
+
+      -static)
+	# If we have no pic_flag, then this is the same as -all-static.
+	if test -z "$pic_flag" && test -n "$link_static_flag"; then
+          compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+        fi
+	continue
+	;;
+
+      -version-info)
+        prev=vinfo
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case "$arg" in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	  arg="\"$arg\""
+	  ;;
+	esac
+        ;;
+
+      *.o | *.a)
+        # A standard object.
+        objs="$objs $arg"
+        ;;
+
+      *.lo)
+        # A library object.
+	if test "$prev" = dlfiles; then
+	  dlfiles="$dlfiles $arg"
+	  if test "$build_libtool_libs" = yes; then
+	    prev=
+	    continue
+	  else
+	    # If libtool objects are unsupported, then we need to preload.
+	    prev=dlprefiles
+	  fi
+	fi
+
+	if test "$prev" = dlprefiles; then
+	  # Preload the old-style object.
+	  dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
+	  prev=
+	fi
+	libobjs="$libobjs $arg"
+        ;;
+
+      *.la)
+        # A libtool-controlled library.
+
+        dlname=
+        libdir=
+        library_names=
+        old_library=
+
+        # Check to see that this really is a libtool archive.
+        if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
+        else
+          $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
+          exit 1
+        fi
+
+        # If there is no directory component, then add one.
+        case "$arg" in
+        */* | *\\*) . $arg ;;
+        *) . ./$arg ;;
+        esac
+
+        if test -z "$libdir"; then
+          $echo "$modename: \`$arg' contains no -rpath information" 1>&2
+          exit 1
+        fi
+
+        # Get the name of the library we link against.
+        linklib=
+        for l in $old_library $library_names; do
+          linklib="$l"
+        done
+
+        if test -z "$linklib"; then
+          $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
+          exit 1
+        fi
+
+        # Find the relevant object directory and library name.
+        name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
+        dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+        if test "X$dir" = "X$arg"; then
+          dir="$objdir"
+        else
+          dir="$dir/$objdir"
+        fi
+
+        # This library was specified with -dlopen.
+        if test "$prev" = dlfiles; then
+          dlfiles="$dlfiles $arg"
+          if test -z "$dlname"; then
+            # If there is no dlname, we need to preload.
+            prev=dlprefiles
+          else
+            # We should not create a dependency on this library, but we
+	    # may need any libraries it requires.
+	    compile_command="$compile_command$dependency_libs"
+	    finalize_command="$finalize_command$dependency_libs"
+            prev=
+            continue
+          fi
+        fi
+
+        # The library was specified with -dlpreopen.
+        if test "$prev" = dlprefiles; then
+          # Prefer using a static library (so that no silly _DYNAMIC symbols
+          # are required to link).
+          if test -n "$old_library"; then
+            dlprefiles="$dlprefiles $dir/$old_library"
+          else
+            dlprefiles="$dlprefiles $dir/$linklib"
+          fi
+          prev=
+        fi
+
+        if test "$build_libtool_libs" = yes && test -n "$library_names"; then
+          link_against_libtool_libs="$link_against_libtool_libs $arg"
+          if test -n "$shlibpath_var"; then
+            # Make sure the rpath contains only unique directories.
+            case "$temp_rpath " in
+            *" $dir "*) ;;
+            *) temp_rpath="$temp_rpath $dir" ;;
+            esac
+          fi
+
+	  # This is the magic to use -rpath.
+          if test -n "$hardcode_libdir_flag_spec"; then
+            if test -n "$hardcode_libdir_separator"; then
+              if test -z "$hardcode_libdirs"; then
+                # Put the magic libdir with the hardcode flag.
+                hardcode_libdirs="$libdir"
+                libdir="@HARDCODE_LIBDIRS@"
+              else
+                # Just accumulate the unique libdirs.
+		case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+		*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		  ;;
+		*)
+		  hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		  ;;
+		esac
+                libdir=
+              fi
+            fi
+
+            if test -n "$libdir"; then
+              eval flag=\"$hardcode_libdir_flag_spec\"
+
+              compile_command="$compile_command $flag"
+              finalize_command="$finalize_command $flag"
+            fi
+          elif test -n "$runpath_var"; then
+            # Do the same for the permanent run path.
+            case "$perm_rpath " in
+            *" $libdir "*) ;;
+            *) perm_rpath="$perm_rpath $libdir" ;;
+            esac
+          fi
+
+
+          case "$hardcode_action" in
+          immediate)
+            if test "$hardcode_direct" = no; then
+              compile_command="$compile_command $dir/$linklib"
+            elif test "$hardcode_minus_L" = no; then
+              compile_command="$compile_command -L$dir -l$name"
+            elif test "$hardcode_shlibpath_var" = no; then
+              compile_shlibpath="$compile_shlibpath$dir:"
+              compile_command="$compile_command -l$name"
+            fi
+            ;;
+
+          relink)
+            # We need an absolute path.
+            case "$dir" in
+            /* | [A-Za-z]:\\*) ;;
+            *)
+              absdir=`cd "$dir" && pwd`
+              if test -z "$absdir"; then
+                $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+                exit 1
+              fi
+              dir="$absdir"
+              ;;
+            esac
+
+            if test "$hardcode_direct" = yes; then
+              compile_command="$compile_command $dir/$linklib"
+            elif test "$hardcode_minus_L" = yes; then
+              compile_command="$compile_command -L$dir -l$name"
+            elif test "$hardcode_shlibpath_var" = yes; then
+              compile_shlibpath="$compile_shlibpath$dir:"
+              compile_command="$compile_command -l$name"
+            fi
+            ;;
+
+          *)
+            $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
+            exit 1
+            ;;
+          esac
+
+          # Finalize command for both is simple: just hardcode it.
+          if test "$hardcode_direct" = yes; then
+            finalize_command="$finalize_command $libdir/$linklib"
+          elif test "$hardcode_minus_L" = yes; then
+            finalize_command="$finalize_command -L$libdir -l$name"
+          elif test "$hardcode_shlibpath_var" = yes; then
+            finalize_shlibpath="$finalize_shlibpath$libdir:"
+            finalize_command="$finalize_command -l$name"
+          else
+            # We cannot seem to hardcode it, guess we'll fake it.
+            finalize_command="$finalize_command -L$libdir -l$name"
+          fi
+        else
+          # Transform directly to old archives if we don't build new libraries.
+          if test -n "$pic_flag" && test -z "$old_library"; then
+            $echo "$modename: cannot find static library for \`$arg'" 1>&2
+            exit 1
+          fi
+
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_command="$compile_command $dir/$linklib"
+	    finalize_command="$finalize_command $dir/$linklib"
+	  else
+	    compile_command="$compile_command -L$dir -l$name"
+	    finalize_command="$finalize_command -L$dir -l$name"
+	  fi
+        fi
+
+	# Add in any libraries that this one depends upon.
+	compile_command="$compile_command$dependency_libs"
+	finalize_command="$finalize_command$dependency_libs"
+	continue
+        ;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case "$arg" in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	  arg="\"$arg\""
+	  ;;
+	esac
+        ;;
+      esac
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$vinfo" && test -n "$release"; then
+      $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    oldlib=
+    oldobjs=
+    case "$output" in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+
+    */* | *\\*)
+      $echo "$modename: output file \`$output' must have no directory components" 1>&2
+      exit 1
+      ;;
+
+    *.a)
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      build_old_libs=yes
+      oldlib="$output"
+      $show "$rm $oldlib"
+      $run $rm $oldlib
+      ;;
+
+    *.la)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case "$output" in
+      lib*) ;;
+      *)
+	$echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+	;;
+      esac
+
+      name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+      eval libname=\"$libname_spec\"
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+      current=0
+      revision=0
+      age=0
+
+      if test -n "$objs"; then
+        $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
+        exit 1
+      fi
+
+      # How the heck are we supposed to write a wrapper for a shared library?
+      if test -n "$link_against_libtool_libs"; then
+        $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
+        exit 1
+      fi
+
+      if test -n "$dlfiles$dlprefiles"; then
+        $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
+        # Nullify the symbol file.
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test -z "$rpath"; then
+        $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2
+	$echo "$help" 1>&2
+        exit 1
+      fi
+
+      set dummy $rpath
+      if test $# -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      # Parse the version information argument.
+      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=':'
+      set dummy $vinfo
+      IFS="$save_ifs"
+
+      if test -n "$5"; then
+        $echo "$modename: too many parameters to \`-version-info'" 1>&2
+        $echo "$help" 1>&2
+        exit 1
+      fi
+
+      test -n "$2" && current="$2"
+      test -n "$3" && revision="$3"
+      test -n "$4" && age="$4"
+
+      # Check that each of the things are valid numbers.
+      case "$current" in
+      0 | [1-9] | [1-9][0-9]*) ;;
+      *)
+        $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+        exit 1
+        ;;
+      esac
+
+      case "$revision" in
+      0 | [1-9] | [1-9][0-9]*) ;;
+      *)
+        $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+        exit 1
+        ;;
+      esac
+
+      case "$age" in
+      0 | [1-9] | [1-9][0-9]*) ;;
+      *)
+        $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+        exit 1
+        ;;
+      esac
+
+      if test $age -gt $current; then
+        $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+        $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+        exit 1
+      fi
+
+      # Calculate the version variables.
+      version_vars="version_type current age revision"
+      case "$version_type" in
+      none) ;;
+
+      linux)
+        version_vars="$version_vars major versuffix"
+        major=`expr $current - $age`
+        versuffix="$major.$age.$revision"
+        ;;
+
+      osf)
+        version_vars="$version_vars versuffix verstring"
+        major=`expr $current - $age`
+        versuffix="$current.$age.$revision"
+        verstring="$versuffix"
+
+        # Add in all the interfaces that we are compatible with.
+        loop=$age
+        while test $loop != 0; do
+          iface=`expr $current - $loop`
+          loop=`expr $loop - 1`
+          verstring="$verstring:${iface}.0"
+        done
+
+        # Make executables depend on our current version.
+        verstring="$verstring:${current}.0"
+        ;;
+
+      sunos)
+        version_vars="$version_vars major versuffix"
+        major="$current"
+        versuffix="$current.$revision"
+        ;;
+
+      *)
+        $echo "$modename: unknown library version type \`$version_type'" 1>&2
+        echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+        exit 1
+        ;;
+      esac
+
+      # Create the output directory, or remove our outputs if we need to.
+      if test -d $objdir; then
+        $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
+        $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*
+      else
+        $show "$mkdir $objdir"
+        $run $mkdir $objdir
+	status=$?
+	if test $status -eq 0 || test -d $objdir; then :
+	else
+	  exit $status
+	fi
+      fi
+
+      # Check to see if the archive will have undefined symbols.
+      if test "$allow_undefined" = yes; then
+        if test "$allow_undefined_flag" = unsupported; then
+          $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+          build_libtool_libs=no
+	  build_old_libs=yes
+        fi
+      else
+        # Don't allow undefined symbols.
+        allow_undefined_flag="$no_undefined_flag"
+      fi
+
+      # Add libc to deplibs on all systems.
+      dependency_libs="$deplibs"
+      deplibs="$deplibs -lc"
+
+      if test "$build_libtool_libs" = yes; then
+        # Get the real and link names of the library.
+        eval library_names=\"$library_names_spec\"
+        set dummy $library_names
+        realname="$2"
+        shift; shift
+
+        if test -n "$soname_spec"; then
+          eval soname=\"$soname_spec\"
+        else
+          soname="$realname"
+        fi
+
+        lib="$objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+        # Use standard objects if they are PIC.
+        test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'`
+
+        # Do each of the archive commands.
+        eval cmds=\"$archive_cmds\"
+        IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+        for cmd in $cmds; do
+          IFS="$save_ifs"
+          $show "$cmd"
+          $run eval "$cmd" || exit $?
+        done
+        IFS="$save_ifs"
+
+        # Create links to the real library.
+        for linkname in $linknames; do
+          $show "(cd $objdir && $LN_S $realname $linkname)"
+          $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
+        done
+
+        # If -export-dynamic was specified, set the dlname.
+        if test "$export_dynamic" = yes; then
+          # On all known operating systems, these are identical.
+          dlname="$soname"
+        fi
+      fi
+
+      # Now set the variables for building old libraries.
+      oldlib="$objdir/$libname.a"
+      ;;
+
+    *.lo | *.o)
+      if test -n "$link_against_libtool_libs"; then
+        $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
+        exit 1
+      fi
+
+      if test -n "$deplibs"; then
+        $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles"; then
+        $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
+        # Nullify the symbol file.
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test -n "$rpath"; then
+        $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+        $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+        $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
+      fi
+
+      case "$output" in
+      *.lo)
+        if test -n "$objs"; then
+          $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+          exit 1
+        fi
+        libobj="$output"
+        obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'`
+        ;;
+      *)
+        libobj=
+        obj="$output"
+        ;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Create the old-style object.
+      reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^       ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+      for cmd in $cmds; do
+        IFS="$save_ifs"
+        $show "$cmd"
+        $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      test -z "$libobj" && exit 0
+
+      if test "$build_libtool_libs" != yes; then
+        # Create an invalid libtool object if no PIC, so that we don't
+        # accidentally link it into a program.
+        $show "echo timestamp > $libobj"
+        $run eval "echo timestamp > $libobj" || exit $?
+        exit 0
+      fi
+
+      if test -n "$pic_flag"; then
+        # Only do commands if we really have different PIC objects.
+        reload_objs="$libobjs"
+        output="$libobj"
+        eval cmds=\"$reload_cmds\"
+        IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+        for cmd in $cmds; do
+          IFS="$save_ifs"
+          $show "$cmd"
+          $run eval "$cmd" || exit $?
+        done
+        IFS="$save_ifs"
+      else
+        # Just create a symlink.
+        $show "$LN_S $obj $libobj"
+        $run $LN_S $obj $libobj || exit 1
+      fi
+
+      exit 0
+      ;;
+
+    *)
+      if test -n "$vinfo"; then
+        $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+        $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath; do
+          if test -n "$hardcode_libdir_flag_spec"; then
+            if test -n "$hardcode_libdir_separator"; then
+              if test -z "$hardcode_libdirs"; then
+                # Put the magic libdir with the hardcode flag.
+                hardcode_libdirs="$libdir"
+                libdir="@HARDCODE_LIBDIRS@"
+              else
+                # Just accumulate the unique libdirs.
+		case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+		*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		  ;;
+		*)
+		  hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		  ;;
+		esac
+                libdir=
+              fi
+            fi
+
+            if test -n "$libdir"; then
+              eval flag=\"$hardcode_libdir_flag_spec\"
+
+              compile_command="$compile_command $flag"
+              finalize_command="$finalize_command $flag"
+            fi
+          elif test -n "$runpath_var"; then
+            case "$perm_rpath " in
+            *" $libdir "*) ;;
+            *) perm_rpath="$perm_rpath $libdir" ;;
+            esac
+          fi
+	done
+      fi
+
+      # Substitute the hardcoded libdirs into the compile commands.
+      if test -n "$hardcode_libdir_separator"; then
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
+      fi
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+        # Transform all the library objects into standard objects.
+        compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
+        finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
+      fi
+
+      if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
+        dlsyms="${output}S.c"
+      else
+        dlsyms=
+      fi
+
+      if test -n "$dlsyms"; then
+        # Add our own program objects to the preloaded list.
+        dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
+
+	# Discover the nlist of each of the dlfiles.
+        nlist="$objdir/${output}.nm"
+
+	if test -d $objdir; then
+	  $show "$rm $nlist ${nlist}T"
+	  $run $rm "$nlist" "${nlist}T"
+	else
+	  $show "$mkdir $objdir"
+	  $run $mkdir $objdir
+	  status=$?
+	  if test $status -eq 0 || test -d $objdir; then :
+	  else
+	    exit $status
+	  fi
+	fi
+
+        for arg in $dlprefiles; do
+	  $show "extracting global C symbols from \`$arg'"
+	  $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+        done
+
+        # Parse the name list into a source file.
+        $show "creating $objdir/$dlsyms"
+        if test -z "$run"; then
+	  # Make sure we at least have an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  # Try sorting and uniquifying the output.
+	  if sort "$nlist" | uniq > "$nlist"T; then
+	    mv -f "$nlist"T "$nlist"
+	    wcout=`wc "$nlist" 2>/dev/null`
+	    count=`echo "X$wcout" | $Xsed -e 's/^[ 	]*\([0-9][0-9]*\).*$/\1/'`
+	    (test "$count" -ge 0) 2>/dev/null || count=-1
+	  else
+	    $rm "$nlist"T
+	    count=-1
+	  fi
+
+	  case "$dlsyms" in
+	  "") ;;
+	  *.c)
+	    $echo > "$objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define dld_preloaded_symbol_count some_other_symbol
+#define dld_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	    if test -f "$nlist"; then
+	      sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
+	    else
+	      echo '/* NONE */' >> "$objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$objdir/$dlsyms" "\
+
+#undef dld_preloaded_symbol_count
+#undef dld_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define __ptr_t void *
+#else
+# define __ptr_t char *
+#endif
+
+/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
+int dld_preloaded_symbol_count = $count;
+
+/* The mapping between symbol names and symbols. */
+struct {
+  char *name;
+  __ptr_t address;
+}
+dld_preloaded_symbols[] =
+{\
+"
+
+	    if test -f "$nlist"; then
+	      sed 's/^\(.*\) \(.*\)$/  {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$objdir/$dlsyms" "\
+  {0, (__ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	    ;;
+
+	  *)
+	    $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	    exit 1
+	    ;;
+	  esac
+        fi
+
+        # Now compile the dynamic symbol file.
+        $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
+        $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
+
+        # Transform the symbol file into the correct name.
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
+      elif test "$export_dynamic" != yes; then
+        test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
+      else
+        # We keep going just in case the user didn't refer to
+        # dld_preloaded_symbols.  The linker will fail if global_symbol_pipe
+        # really was required.
+        $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+
+        # Nullify the symbol file.
+        compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
+        # Replace the output file specification.
+        compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+        finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+
+        # We have no uninstalled library dependencies, so finalize right now.
+        $show "$compile_command"
+        $run eval "$compile_command"
+        exit $?
+      fi
+
+      # Replace the output file specification.
+      compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
+      finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
+
+      # Create the binary in the object directory, then wrap it.
+      if test -d $objdir; then :
+      else
+        $show "$mkdir $objdir"
+	$run $mkdir $objdir
+	status=$?
+	if test $status -eq 0 || test -d $objdir; then :
+	else
+	  exit $status
+	fi
+      fi
+
+      if test -n "$shlibpath_var"; then
+        # We should set the shlibpath_var
+        rpath=
+        for dir in $temp_rpath; do
+          case "$dir" in
+          /* | [A-Za-z]:\\*)
+            # Absolute path.
+            rpath="$rpath$dir:"
+            ;;
+          *)
+            # Relative path: add a thisdir entry.
+            rpath="$rpath\$thisdir/$dir:"
+            ;;
+          esac
+        done
+        temp_rpath="$rpath"
+      fi
+
+      # Delete the old output file.
+      $run $rm $output
+
+      if test -n "$compile_shlibpath"; then
+        compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+        finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      if test -n "$runpath_var" && test -n "$perm_rpath"; then
+        # We should set the runpath_var.
+        rpath=
+        for dir in $perm_rpath; do
+          rpath="$rpath$dir:"
+        done
+        compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
+        finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
+      fi
+
+      case "$hardcode_action" in
+      relink)
+        # AGH! Flame the AIX and HP-UX people for me, will ya?
+        $echo "$modename: warning: using a buggy system linker" 1>&2
+        $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
+        ;;
+      esac
+
+      $show "$compile_command"
+      $run eval "$compile_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the finalize command for shipping.
+      finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Quote $echo for shipping.
+      qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+        $rm $output
+        trap "$rm $output; exit 1" 1 2 15
+
+        $echo > $output "\
+#! /bin/sh
+
+# $output - temporary wrapper script for $objdir/$output
+# Generated by ltmain.sh - GNU $PACKAGE $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of \``pwd`'.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  link_against_libtool_libs='$link_against_libtool_libs'
+  finalize_command=\"$finalize_command\"
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" = \"$magic\"; then :
+  else
+    echo=\"$qecho\"
+    file=\"\$0\"
+  fi\
+"
+        $echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+
+  progdir=\"\$thisdir/$objdir\"
+  program='$output'
+
+  if test -f \"\$progdir/\$program\"; then"
+
+        # Export our shlibpath_var if we have one.
+        if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+          $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
+
+    export $shlibpath_var
+"
+        fi
+
+        $echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+        chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    if test "$build_old_libs" = "yes"; then
+      # Transform .lo files to .o files.
+      oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^   ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	eval cmds=\"$old_archive_from_new_cmds\"
+      else
+	eval cmds=\"$old_archive_cmds\"
+      fi
+      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+      for cmd in $cmds; do
+        IFS="$save_ifs"
+        $show "$cmd"
+        $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    fi
+
+    # Now create the libtool archive.
+    case "$output" in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.a"
+
+      $show "creating $output"
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+        $echo > $output "\
+# $output - a libtool library file
+# Generated by ltmain.sh - GNU $PACKAGE $VERSION
+
+# The name that we can dlopen(3).
+dlname='$dlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'\
+"
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $objdir && $LN_S ../$output $output)"
+      $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional /bin/sh argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL"; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case "$arg" in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case "$arg" in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+        files="$files $dest"
+        dest="$arg"
+        continue
+      fi
+
+      case "$arg" in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+        stripme=" -s"
+        continue
+        ;;
+      -*) ;;
+
+      *)
+        # If the previous option needed an argument, then skip it.
+        if test -n "$prev"; then
+          prev=
+        else
+          dest="$arg"
+          continue
+        fi
+        ;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case "$arg" in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+        $echo "$modename: no file or destination specified" 1>&2
+      else
+        $echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test -n "$isdir"; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test $# -gt 2; then
+        $echo "$modename: \`$dest' is not a directory" 1>&2
+        $echo "$help" 1>&2
+        exit 1
+      fi
+    fi
+    case "$destdir" in
+    /* | [A-Za-z]:\\*) ;;
+    *)
+      for file in $files; do
+        case "$file" in
+        *.lo) ;;
+        *)
+          $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+          $echo "$help" 1>&2
+          exit 1
+          ;;
+        esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case "$file" in
+      *.a)
+        # Do the static libraries later.
+        staticlibs="$staticlibs $file"
+        ;;
+
+      *.la)
+        # Check to see that this really is a libtool archive.
+        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
+        else
+          $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+          $echo "$help" 1>&2
+          exit 1
+        fi
+
+        library_names=
+        old_library=
+        # If there is no directory component, then add one.
+        case "$file" in
+        */* | *\\*) . $file ;;
+        *) . ./$file ;;
+        esac
+
+        # Add the libdir to current_libdirs if it is the destination.
+        if test "X$destdir" = "X$libdir"; then
+          case "$current_libdirs " in
+          *" $libdir "*) ;;
+          *) current_libdirs="$current_libdirs $libdir" ;;
+          esac
+        else
+          # Note the libdir as a future libdir.
+          case "$future_libdirs " in
+          *" $libdir "*) ;;
+          *) future_libdirs="$future_libdirs $libdir" ;;
+          esac
+        fi
+
+        dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
+        test "X$dir" = "X$file/" && dir=
+        dir="$dir$objdir"
+
+        # See the names of the shared library.
+        set dummy $library_names
+        if test -n "$2"; then
+          realname="$2"
+          shift
+          shift
+
+          # Install the shared library and build the symlinks.
+          $show "$install_prog $dir/$realname $destdir/$realname"
+          $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
+          test "X$dlname" = "X$realname" && dlname=
+
+          if test $# -gt 0; then
+            # Delete the old symlinks.
+            rmcmd="$rm"
+            for linkname
+            do
+              rmcmd="$rmcmd $destdir/$linkname"
+            done
+            $show "$rmcmd"
+            $run $rmcmd
+
+            # ... and create new ones.
+            for linkname
+            do
+              test "X$dlname" = "X$linkname" && dlname=
+              $show "(cd $destdir && $LN_S $realname $linkname)"
+              $run eval "(cd $destdir && $LN_S $realname $linkname)"
+            done
+          fi
+
+          if test -n "$dlname"; then
+            # Install the dynamically-loadable library.
+            $show "$install_prog $dir/$dlname $destdir/$dlname"
+            $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
+          fi
+
+          # Do each command in the postinstall commands.
+          lib="$destdir/$realname"
+          eval cmds=\"$postinstall_cmds\"
+          IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+          for cmd in $cmds; do
+            IFS="$save_ifs"
+            $show "$cmd"
+            $run eval "$cmd" || exit $?
+          done
+          IFS="$save_ifs"
+        fi
+
+        # Install the pseudo-library for information purposes.
+        name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+        $show "$install_prog $file $destdir/$name"
+        $run eval "$install_prog $file $destdir/$name" || exit $?
+
+        # Maybe install the static library, too.
+        test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+        ;;
+
+      *.lo)
+        # Install (i.e. copy) a libtool object.
+
+        # Figure out destination file name, if it wasn't already specified.
+        if test -n "$destname"; then
+          destfile="$destdir/$destname"
+        else
+          destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+          destfile="$destdir/$destfile"
+        fi
+
+        # Deduce the name of the destination old-style object file.
+        case "$destfile" in
+        *.lo)
+          staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'`
+          ;;
+        *.o)
+          staticdest="$destfile"
+          destfile=
+          ;;
+        *)
+          $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+          $echo "$help" 1>&2
+          exit 1
+          ;;
+        esac
+
+        # Install the libtool object if requested.
+        if test -n "$destfile"; then
+          $show "$install_prog $file $destfile"
+          $run eval "$install_prog $file $destfile" || exit $?
+        fi
+
+        # Install the old object if enabled.
+        if test "$build_old_libs" = yes; then
+          # Deduce the name of the old-style object file.
+          staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'`
+
+          $show "$install_prog $staticobj $staticdest"
+          $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+        fi
+        exit 0
+        ;;
+
+      *)
+        # Do a test to see if this is really a libtool program.
+        if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
+          link_against_libtool_libs=
+          finalize_command=
+
+          # If there is no directory component, then add one.
+          case "$file" in
+          */* | *\\*) . $file ;;
+          *) . ./$file ;;
+          esac
+
+          # Check the variables that should have been set.
+          if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
+            $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+            exit 1
+          fi
+
+          finalize=yes
+          for lib in $link_against_libtool_libs; do
+            # Check to see that each library is installed.
+            libdir=
+            if test -f "$lib"; then
+              # If there is no directory component, then add one.
+              case "$lib" in
+              */* | *\\*) . $lib ;;
+              *) . ./$lib ;;
+              esac
+            fi
+            libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
+            if test -z "$libdir"; then
+              $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
+            elif test -f "$libfile"; then :
+            else
+              $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+              finalize=no
+            fi
+          done
+
+          if test "$hardcode_action" = relink; then
+            if test "$finalize" = yes; then
+              $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
+              $show "$finalize_command"
+              if $run eval "$finalize_command"; then :
+              else
+                $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+                continue
+              fi
+              file="$objdir/$file"T
+            else
+              $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
+            fi
+          else
+            # Install the binary that we compiled earlier.
+	    file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+          fi
+        fi
+
+        $show "$install_prog$stripme $file $dest"
+        $run eval "$install_prog\$stripme \$file \$dest" || exit $?
+        ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+      for cmd in $cmds; do
+        IFS="$save_ifs"
+        $show "$cmd"
+        $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec $SHELL $0 --finish$current_libdirs
+      exit 1
+    fi
+
+    exit 0
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+        libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  eval cmds=\"$finish_cmds\"
+          IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+          for cmd in $cmds; do
+            IFS="$save_ifs"
+            $show "$cmd"
+            $run eval "$cmd"
+          done
+          IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds"
+	fi
+      done
+    fi
+
+    echo "------------------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    echo "To link against installed libraries in a given directory, LIBDIR,"
+    echo "you must use the \`-LLIBDIR' flag during linking."
+    echo
+    echo " You will also need to do one of the following:"
+    if test -n "$shlibpath_var"; then
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    fi
+    if test -f /etc/ld.so.conf; then
+      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    echo
+    echo "See any operating system documentation about shared libraries for"
+    echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    echo "------------------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test -f "$file"; then :
+      else
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit 1
+      fi
+
+      dir=
+      case "$file" in
+      *.la)
+        # Check to see that this really is a libtool archive.
+        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
+        else
+          $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+          $echo "$help" 1>&2
+          exit 1
+        fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+        # If there is no directory component, then add one.
+	case "$file" in
+	*/* | *\\*) . $file ;;
+        *) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit 1
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+        continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case "$file" in
+      -*) ;;
+      *)
+        # Do a test to see if this is really a libtool program.
+        if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case "$file" in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+        ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      # Export the shlibpath_var.
+      eval "export $shlibpath_var"
+
+      # Now actually exec the command.
+      eval "exec \$cmd$args"
+
+      $echo "$modename: cannot exec \$cmd$args"
+      exit 1
+    else
+      # Display what would be done.
+      eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+      $echo "export $shlibpath_var"
+      $echo "$cmd$args"
+      exit 0
+    fi
+    ;;
+
+  # libtool uninstall mode
+  uninstall)
+    modename="$modename: uninstall"
+    rm="$nonopt"
+    files=
+
+    for arg
+    do
+      case "$arg" in
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$dir" = "X$file" && dir=.
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      rmfiles="$file"
+
+      case "$name" in
+      *.la)
+        # Possibly a libtool archive, so verify it.
+        if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
+          . $dir/$name
+
+          # Delete the libtool libraries and symlinks.
+          for n in $library_names; do
+            rmfiles="$rmfiles $dir/$n"
+            test "X$n" = "X$dlname" && dlname=
+          done
+          test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
+          test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
+
+	  $show "$rm $rmfiles"
+	  $run $rm $rmfiles
+
+	  if test -n "$library_names"; then
+	    # Do each command in the postuninstall commands.
+	    eval cmds=\"$postuninstall_cmds\"
+	    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      $show "$cmd"
+	      $run eval "$cmd"
+	    done
+	    IFS="$save_ifs"
+	  fi
+
+          if test -n "$old_library"; then
+	    # Do each command in the old_postuninstall commands.
+	    eval cmds=\"$old_postuninstall_cmds\"
+	    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS=';'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      $show "$cmd"
+	      $run eval "$cmd"
+	    done
+	    IFS="$save_ifs"
+	  fi
+
+          # FIXME: should reinstall the best remaining shared library.
+        fi
+        ;;
+
+      *.lo)
+        if test "$build_old_libs" = yes; then
+          oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'`
+          rmfiles="$rmfiles $dir/$oldobj"
+        fi
+	$show "$rm $rmfiles"
+	$run $rm $rmfiles
+        ;;
+
+      *)
+      	$show "$rm $rmfiles"
+	$run $rm $rmfiles
+	;;
+      esac
+    done
+    exit 0
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$generic_help" 1>&2
+  exit 1
+fi # test -z "$show_help"
+
+# We need to display help for each of the modes.
+case "$mode" in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+-n, --dry-run         display commands without modifying any files
+    --features        display configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --version         print version information
+
+MODE must be one of the following:
+
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to dld_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
+library objects (\`.lo' files) may be specified, and \`-rpath' is required.
+
+If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar'
+and \`ranlib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is
+created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

+ 38 - 0
engine/lib/ljpeg/extras/makcjpeg.st

@@ -0,0 +1,38 @@
+; Project file for Independent JPEG Group's software
+;
+; This project file is for Atari ST/STE/TT systems using Pure C or Turbo C.
+; Thanks to Frank Moehle ([email protected]),
+; Dr. B. Setzepfandt ([email protected]),
+; and Guido Vollbeding ([email protected]).
+;
+; To use this file, rename it to cjpeg.prj.
+; If you are using Turbo C, change filenames beginning with "pc..." to "tc..."
+; Read installation instructions before trying to make the program!
+;
+;
+;      * * * Output file * * *
+cjpeg.ttp
+;
+; * * * COMPILER OPTIONS * * *  
+.C[-P]        ; absolute calls
+.C[-M]        ; and no string merging, folks
+.C[-w-cln]    ; no "constant is long" warnings
+.C[-w-par]    ; no "parameter xxxx unused"
+.C[-w-rch]    ; no "unreachable code"
+.C[-wsig]     ; warn if significant digits may be lost
+=
+; * * * * List of modules * * * * 
+pcstart.o
+cjpeg.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h,jversion.h)
+cdjpeg.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdswitch.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdppm.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdgif.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdtarga.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdbmp.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdrle.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+libjpeg.lib        ; built by libjpeg.prj
+pcfltlib.lib       ; floating point library
+; the float library can be omitted if you've turned off DCT_FLOAT_SUPPORTED
+pcstdlib.lib       ; standard library
+pcextlib.lib       ; extended library

+ 38 - 0
engine/lib/ljpeg/extras/makdjpeg.st

@@ -0,0 +1,38 @@
+; Project file for Independent JPEG Group's software
+;
+; This project file is for Atari ST/STE/TT systems using Pure C or Turbo C.
+; Thanks to Frank Moehle ([email protected]),
+; Dr. B. Setzepfandt ([email protected]),
+; and Guido Vollbeding ([email protected]).
+;
+; To use this file, rename it to djpeg.prj.
+; If you are using Turbo C, change filenames beginning with "pc..." to "tc..."
+; Read installation instructions before trying to make the program!
+;
+;
+;      * * * Output file * * *
+djpeg.ttp
+;
+; * * * COMPILER OPTIONS * * *  
+.C[-P]        ; absolute calls
+.C[-M]        ; and no string merging, folks
+.C[-w-cln]    ; no "constant is long" warnings
+.C[-w-par]    ; no "parameter xxxx unused"
+.C[-w-rch]    ; no "unreachable code"
+.C[-wsig]     ; warn if significant digits may be lost
+=
+; * * * * List of modules * * * * 
+pcstart.o
+djpeg.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h,jversion.h)
+cdjpeg.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdcolmap.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+wrppm.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+wrgif.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+wrtarga.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+wrbmp.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+wrrle.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+libjpeg.lib        ; built by libjpeg.prj
+pcfltlib.lib       ; floating point library
+; the float library can be omitted if you've turned off DCT_FLOAT_SUPPORTED
+pcstdlib.lib       ; standard library
+pcextlib.lib       ; extended library

+ 828 - 0
engine/lib/ljpeg/extras/makeapps.ds

@@ -0,0 +1,828 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+!IF "$(CFG)" == ""
+CFG=cjpeg - Win32
+!MESSAGE No configuration specified.  Defaulting to cjpeg - Win32.
+!ENDIF 
+
+!IF "$(CFG)" != "cjpeg - Win32" && "$(CFG)" != "djpeg - Win32" &&\
+ "$(CFG)" != "jpegtran - Win32" && "$(CFG)" != "rdjpgcom - Win32" &&\
+ "$(CFG)" != "wrjpgcom - Win32"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line.  For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "apps.mak" CFG="cjpeg - Win32"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "cjpeg - Win32" (based on "Win32 (x86) Console Application")
+!MESSAGE "djpeg - Win32" (based on "Win32 (x86) Console Application")
+!MESSAGE "jpegtran - Win32" (based on "Win32 (x86) Console Application")
+!MESSAGE "rdjpgcom - Win32" (based on "Win32 (x86) Console Application")
+!MESSAGE "wrjpgcom - Win32" (based on "Win32 (x86) Console Application")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "cjpeg - Win32"
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "cjpeg - Win32"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "cjpeg\Release"
+# PROP BASE Intermediate_Dir "cjpeg\Release"
+# PROP BASE Target_Dir "cjpeg"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "cjpeg\Release"
+# PROP Intermediate_Dir "cjpeg\Release"
+# PROP Target_Dir "cjpeg"
+OUTDIR=.\cjpeg\Release
+INTDIR=.\cjpeg\Release
+
+ALL : "$(OUTDIR)\cjpeg.exe"
+
+CLEAN : 
+	-@erase "$(INTDIR)\cjpeg.obj"
+	-@erase "$(INTDIR)\rdppm.obj"
+	-@erase "$(INTDIR)\rdgif.obj"
+	-@erase "$(INTDIR)\rdtarga.obj"
+	-@erase "$(INTDIR)\rdrle.obj"
+	-@erase "$(INTDIR)\rdbmp.obj"
+	-@erase "$(INTDIR)\rdswitch.obj"
+	-@erase "$(INTDIR)\cdjpeg.obj"
+	-@erase "$(OUTDIR)\cjpeg.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/cjpeg.pch" /YX /Fo"$(INTDIR)/" /c 
+CPP_OBJS=.\cjpeg\Release/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/cjpeg.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)/cjpeg.pdb" /machine:I386 /out:"$(OUTDIR)/cjpeg.exe" 
+LINK32_OBJS= \
+	"$(INTDIR)\cjpeg.obj" \
+	"$(INTDIR)\rdppm.obj" \
+	"$(INTDIR)\rdgif.obj" \
+	"$(INTDIR)\rdtarga.obj" \
+	"$(INTDIR)\rdrle.obj" \
+	"$(INTDIR)\rdbmp.obj" \
+	"$(INTDIR)\rdswitch.obj" \
+	"$(INTDIR)\cdjpeg.obj" \
+
+
+"$(OUTDIR)\cjpeg.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "djpeg - Win32"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "djpeg\Release"
+# PROP BASE Intermediate_Dir "djpeg\Release"
+# PROP BASE Target_Dir "djpeg"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "djpeg\Release"
+# PROP Intermediate_Dir "djpeg\Release"
+# PROP Target_Dir "djpeg"
+OUTDIR=.\djpeg\Release
+INTDIR=.\djpeg\Release
+
+ALL : "$(OUTDIR)\djpeg.exe"
+
+CLEAN : 
+	-@erase "$(INTDIR)\djpeg.obj"
+	-@erase "$(INTDIR)\wrppm.obj"
+	-@erase "$(INTDIR)\wrgif.obj"
+	-@erase "$(INTDIR)\wrtarga.obj"
+	-@erase "$(INTDIR)\wrrle.obj"
+	-@erase "$(INTDIR)\wrbmp.obj"
+	-@erase "$(INTDIR)\rdcolmap.obj"
+	-@erase "$(INTDIR)\cdjpeg.obj"
+	-@erase "$(OUTDIR)\djpeg.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/djpeg.pch" /YX /Fo"$(INTDIR)/" /c 
+CPP_OBJS=.\djpeg\Release/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/djpeg.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)/djpeg.pdb" /machine:I386 /out:"$(OUTDIR)/djpeg.exe" 
+LINK32_OBJS= \
+	"$(INTDIR)\djpeg.obj" \
+	"$(INTDIR)\wrppm.obj" \
+	"$(INTDIR)\wrgif.obj" \
+	"$(INTDIR)\wrtarga.obj" \
+	"$(INTDIR)\wrrle.obj" \
+	"$(INTDIR)\wrbmp.obj" \
+	"$(INTDIR)\rdcolmap.obj" \
+	"$(INTDIR)\cdjpeg.obj" \
+
+
+"$(OUTDIR)\djpeg.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "jpegtran - Win32"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "jpegtran\Release"
+# PROP BASE Intermediate_Dir "jpegtran\Release"
+# PROP BASE Target_Dir "jpegtran"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "jpegtran\Release"
+# PROP Intermediate_Dir "jpegtran\Release"
+# PROP Target_Dir "jpegtran"
+OUTDIR=.\jpegtran\Release
+INTDIR=.\jpegtran\Release
+
+ALL : "$(OUTDIR)\jpegtran.exe"
+
+CLEAN : 
+	-@erase "$(INTDIR)\jpegtran.obj"
+	-@erase "$(INTDIR)\rdswitch.obj"
+	-@erase "$(INTDIR)\cdjpeg.obj"
+	-@erase "$(INTDIR)\transupp.obj"
+	-@erase "$(OUTDIR)\jpegtran.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/jpegtran.pch" /YX /Fo"$(INTDIR)/" /c 
+CPP_OBJS=.\jpegtran\Release/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/jpegtran.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)/jpegtran.pdb" /machine:I386 /out:"$(OUTDIR)/jpegtran.exe" 
+LINK32_OBJS= \
+	"$(INTDIR)\jpegtran.obj" \
+	"$(INTDIR)\rdswitch.obj" \
+	"$(INTDIR)\cdjpeg.obj" \
+	"$(INTDIR)\transupp.obj" \
+
+
+"$(OUTDIR)\jpegtran.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "rdjpgcom - Win32"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "rdjpgcom\Release"
+# PROP BASE Intermediate_Dir "rdjpgcom\Release"
+# PROP BASE Target_Dir "rdjpgcom"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "rdjpgcom\Release"
+# PROP Intermediate_Dir "rdjpgcom\Release"
+# PROP Target_Dir "rdjpgcom"
+OUTDIR=.\rdjpgcom\Release
+INTDIR=.\rdjpgcom\Release
+
+ALL : "$(OUTDIR)\rdjpgcom.exe"
+
+CLEAN : 
+	-@erase "$(INTDIR)\rdjpgcom.obj"
+	-@erase "$(OUTDIR)\rdjpgcom.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/rdjpgcom.pch" /YX /Fo"$(INTDIR)/" /c 
+CPP_OBJS=.\rdjpgcom\Release/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/rdjpgcom.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)/rdjpgcom.pdb" /machine:I386 /out:"$(OUTDIR)/rdjpgcom.exe" 
+LINK32_OBJS= \
+	"$(INTDIR)\rdjpgcom.obj"
+
+"$(OUTDIR)\rdjpgcom.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF  "$(CFG)" == "wrjpgcom - Win32"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "wrjpgcom\Release"
+# PROP BASE Intermediate_Dir "wrjpgcom\Release"
+# PROP BASE Target_Dir "wrjpgcom"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "wrjpgcom\Release"
+# PROP Intermediate_Dir "wrjpgcom\Release"
+# PROP Target_Dir "wrjpgcom"
+OUTDIR=.\wrjpgcom\Release
+INTDIR=.\wrjpgcom\Release
+
+ALL : "$(OUTDIR)\wrjpgcom.exe"
+
+CLEAN : 
+	-@erase "$(INTDIR)\wrjpgcom.obj"
+	-@erase "$(OUTDIR)\wrjpgcom.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/wrjpgcom.pch" /YX /Fo"$(INTDIR)/" /c 
+CPP_OBJS=.\wrjpgcom\Release/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/wrjpgcom.bsc" 
+BSC32_SBRS= \
+	
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=Release\jpeg.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)/wrjpgcom.pdb" /machine:I386 /out:"$(OUTDIR)/wrjpgcom.exe" 
+LINK32_OBJS= \
+	"$(INTDIR)\wrjpgcom.obj"
+
+"$(OUTDIR)\wrjpgcom.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+    $(LINK32) @<<
+  $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF 
+
+.c{$(CPP_OBJS)}.obj:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cpp{$(CPP_OBJS)}.obj:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cxx{$(CPP_OBJS)}.obj:
+   $(CPP) $(CPP_PROJ) $<  
+
+.c{$(CPP_SBRS)}.sbr:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cpp{$(CPP_SBRS)}.sbr:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cxx{$(CPP_SBRS)}.sbr:
+   $(CPP) $(CPP_PROJ) $<  
+
+################################################################################
+# Begin Target
+
+# Name "cjpeg - Win32"
+
+!IF  "$(CFG)" == "cjpeg - Win32"
+
+!ENDIF 
+
+################################################################################
+# Begin Source File
+
+SOURCE="cjpeg.c"
+DEP_CPP_CJPEG=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	"jversion.h"\
+	
+
+"$(INTDIR)\cjpeg.obj" : $(SOURCE) $(DEP_CPP_CJPEG) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="cdjpeg.c"
+DEP_CPP_CDJPE=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\cdjpeg.obj" : $(SOURCE) $(DEP_CPP_CDJPE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdswitch.c"
+DEP_CPP_RDSWI=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdswitch.obj" : $(SOURCE) $(DEP_CPP_RDSWI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdppm.c"
+DEP_CPP_RDPPM=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdppm.obj" : $(SOURCE) $(DEP_CPP_RDPPM) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdgif.c"
+DEP_CPP_RDGIF=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdgif.obj" : $(SOURCE) $(DEP_CPP_RDGIF) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdtarga.c"
+DEP_CPP_RDTAR=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdtarga.obj" : $(SOURCE) $(DEP_CPP_RDTAR) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdbmp.c"
+DEP_CPP_RDBMP=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdbmp.obj" : $(SOURCE) $(DEP_CPP_RDBMP) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdrle.c"
+DEP_CPP_RDRLE=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdrle.obj" : $(SOURCE) $(DEP_CPP_RDRLE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+# End Target
+################################################################################
+# Begin Target
+
+# Name "djpeg - Win32"
+
+!IF  "$(CFG)" == "djpeg - Win32"
+
+!ENDIF 
+
+################################################################################
+# Begin Source File
+
+SOURCE="djpeg.c"
+DEP_CPP_DJPEG=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	"jversion.h"\
+	
+
+"$(INTDIR)\djpeg.obj" : $(SOURCE) $(DEP_CPP_DJPEG) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="cdjpeg.c"
+DEP_CPP_CDJPE=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\cdjpeg.obj" : $(SOURCE) $(DEP_CPP_CDJPE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdcolmap.c"
+DEP_CPP_RDCOL=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdcolmap.obj" : $(SOURCE) $(DEP_CPP_RDCOL) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="wrppm.c"
+DEP_CPP_WRPPM=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\wrppm.obj" : $(SOURCE) $(DEP_CPP_WRPPM) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="wrgif.c"
+DEP_CPP_WRGIF=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\wrgif.obj" : $(SOURCE) $(DEP_CPP_WRGIF) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="wrtarga.c"
+DEP_CPP_WRTAR=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\wrtarga.obj" : $(SOURCE) $(DEP_CPP_WRTAR) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="wrbmp.c"
+DEP_CPP_WRBMP=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\wrbmp.obj" : $(SOURCE) $(DEP_CPP_WRBMP) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="wrrle.c"
+DEP_CPP_WRRLE=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\wrrle.obj" : $(SOURCE) $(DEP_CPP_WRRLE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+# End Target
+################################################################################
+# Begin Target
+
+# Name "jpegtran - Win32"
+
+!IF  "$(CFG)" == "jpegtran - Win32"
+
+!ENDIF 
+
+################################################################################
+# Begin Source File
+
+SOURCE="jpegtran.c"
+DEP_CPP_JPEGT=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	"transupp.h"\
+	"jversion.h"\
+	
+
+"$(INTDIR)\jpegtran.obj" : $(SOURCE) $(DEP_CPP_JPEGT) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="cdjpeg.c"
+DEP_CPP_CDJPE=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\cdjpeg.obj" : $(SOURCE) $(DEP_CPP_CDJPE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="rdswitch.c"
+DEP_CPP_RDSWI=\
+	"cdjpeg.h"\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	"cderror.h"\
+	
+
+"$(INTDIR)\rdswitch.obj" : $(SOURCE) $(DEP_CPP_RDSWI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="transupp.c"
+DEP_CPP_TRANS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"transupp.h"\
+	
+
+"$(INTDIR)\transupp.obj" : $(SOURCE) $(DEP_CPP_TRANS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+# End Target
+################################################################################
+# Begin Target
+
+# Name "rdjpgcom - Win32"
+
+!IF  "$(CFG)" == "rdjpgcom - Win32"
+
+!ENDIF 
+
+################################################################################
+# Begin Source File
+
+SOURCE="rdjpgcom.c"
+DEP_CPP_RDJPG=\
+	"jinclude.h"\
+	"jconfig.h"\
+	
+
+"$(INTDIR)\rdjpgcom.obj" : $(SOURCE) $(DEP_CPP_RDJPG) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+# End Target
+################################################################################
+# Begin Target
+
+# Name "wrjpgcom - Win32"
+
+!IF  "$(CFG)" == "wrjpgcom - Win32"
+
+!ENDIF 
+
+################################################################################
+# Begin Source File
+
+SOURCE="wrjpgcom.c"
+DEP_CPP_WRJPG=\
+	"jinclude.h"\
+	"jconfig.h"\
+	
+
+"$(INTDIR)\wrjpgcom.obj" : $(SOURCE) $(DEP_CPP_WRJPG) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+# End Target
+# End Project
+################################################################################
+

+ 214 - 0
engine/lib/ljpeg/extras/makefile.ansi

@@ -0,0 +1,214 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is suitable for Unix-like systems with ANSI-capable compilers.
+# If you have a non-ANSI compiler, makefile.unix is a better starting point.
+
+# Read installation instructions before saying "make" !!
+
+# The name of your C compiler:
+CC= cc
+
+# You may need to adjust these cc options:
+CFLAGS= -O
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+
+# Link-time cc options:
+LDFLAGS= 
+
+# To link any special libraries, add the necessary -l commands here.
+LDLIBS= 
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For Unix this is usually jmemnobs.o, but you may want
+# to use jmemansi.o or jmemname.o if you have limited swap space.
+SYSDEPMEM= jmemnobs.o
+
+# miscellaneous OS-dependent stuff
+# linker
+LN= $(CC)
+# file deletion command
+RM= rm -f
+# library (.a) file creation command
+AR= ar rc
+# second step in .a creation (use "touch" if not needed)
+AR2= ranlib
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.o jutils.o jerror.o jmemmgr.o $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.o jcapistd.o jctrans.o jcparam.o jdatadst.o jcinit.o \
+        jcmaster.o jcmarker.o jcmainct.o jcprepct.o jccoefct.o jccolor.o \
+        jcsample.o jchuff.o jcphuff.o jcdctmgr.o jfdctfst.o jfdctflt.o \
+        jfdctint.o
+# decompression library object files
+DLIBOBJECTS= jdapimin.o jdapistd.o jdtrans.o jdatasrc.o jdmaster.o \
+        jdinput.o jdmarker.o jdhuff.o jdphuff.o jdmainct.o jdcoefct.o \
+        jdpostct.o jddctmgr.o jidctfst.o jidctflt.o jidctint.o jidctred.o \
+        jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o
+# These objectfiles are included in libjpeg.a
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o \
+        cdjpeg.o
+DOBJECTS= djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o \
+        cdjpeg.o
+TROBJECTS= jpegtran.o rdswitch.o cdjpeg.o transupp.o
+
+
+all: libjpeg.a cjpeg djpeg jpegtran rdjpgcom wrjpgcom
+
+libjpeg.a: $(LIBOBJECTS)
+	$(RM) libjpeg.a
+	$(AR) libjpeg.a  $(LIBOBJECTS)
+	$(AR2) libjpeg.a
+
+cjpeg: $(COBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o cjpeg $(COBJECTS) libjpeg.a $(LDLIBS)
+
+djpeg: $(DOBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o djpeg $(DOBJECTS) libjpeg.a $(LDLIBS)
+
+jpegtran: $(TROBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o jpegtran $(TROBJECTS) libjpeg.a $(LDLIBS)
+
+rdjpgcom: rdjpgcom.o
+	$(LN) $(LDFLAGS) -o rdjpgcom rdjpgcom.o $(LDLIBS)
+
+wrjpgcom: wrjpgcom.o
+	$(LN) $(LDFLAGS) -o wrjpgcom wrjpgcom.o $(LDLIBS)
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	$(RM) *.o cjpeg djpeg jpegtran libjpeg.a rdjpgcom wrjpgcom
+	$(RM) core testout*
+
+test: cjpeg djpeg jpegtran
+	$(RM) testout*
+	./djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	./djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	./cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	./djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	./cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	./jpegtran -outfile testoutt.jpg testprog.jpg
+	cmp testimg.ppm testout.ppm
+	cmp testimg.bmp testout.bmp
+	cmp testimg.jpg testout.jpg
+	cmp testimg.ppm testoutp.ppm
+	cmp testimgp.jpg testoutp.jpg
+	cmp testorig.jpg testoutt.jpg
+
+
+jcapimin.o: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.o: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.o: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.o: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.o: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.o: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.o: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.o: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.o: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.o: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.o: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.o: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.o: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.o: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.o: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.o: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.o: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.o: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.o: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.o: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.o: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.o: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.o: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.o: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.o: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.o: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.o: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.o: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.o: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.o: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.o: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.o: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.o: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.o: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.o: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.o: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.o: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.o: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.o: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.o: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.o: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.o: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.o: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.o: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.o: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.o: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.o: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.o: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.o: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.o: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.o: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.o: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.o: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.o: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.o: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.o: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.o: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.o: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.o: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.o: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.o: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.o: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.o: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.o: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.o: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.o: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.o: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.o: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.o: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 285 - 0
engine/lib/ljpeg/extras/makefile.bcc

@@ -0,0 +1,285 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is suitable for Borland C on MS-DOS or OS/2.
+# It works with Borland C++ for DOS, revision 3.0 or later,
+# and has been tested with Borland C++ for OS/2.
+# Watch out for optimization bugs in the OS/2 compilers --- see notes below!
+# Thanks to Tom Wright and Ge' Weijers (original DOS) and
+# Ken Porter (OS/2) for this file.
+
+# Read installation instructions before saying "make" !!
+
+# Are we under DOS or OS/2?
+!if !$d(DOS) && !$d(OS2)
+!if $d(__OS2__)
+OS2=1
+!else
+DOS=1
+!endif
+!endif
+
+# The name of your C compiler:
+CC= bcc
+
+# You may need to adjust these cc options:
+!if $d(DOS)
+CFLAGS= -O2 -mm -w-par -w-stu -w-ccc -w-rch
+!else
+CFLAGS= -O1 -w-par -w-stu -w-ccc -w-rch
+!endif
+# -O2 enables full code optimization (for pre-3.0 Borland C++, use -O -G -Z).
+# -O2 is buggy in Borland OS/2 C++ revision 2.0, so use -O1 there for now.
+# If you have Borland OS/2 C++ revision 1.0, use -O or no optimization at all.
+# -mm selects medium memory model (near data, far code pointers; DOS only!)
+# -w-par suppresses warnings about unused function parameters
+# -w-stu suppresses warnings about incomplete structures
+# -w-ccc suppresses warnings about compile-time-constant conditions
+# -w-rch suppresses warnings about unreachable code
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+
+# Link-time cc options:
+!if $d(DOS)
+LDFLAGS= -mm
+# memory model option here must match CFLAGS!
+!else
+LDFLAGS=
+# -lai full-screen app
+# -lc case-significant link
+!endif
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.
+# For DOS, we recommend jmemdos.c and jmemdosa.asm.
+# For OS/2, we recommend jmemnobs.c (flat memory!)
+# SYSDEPMEMLIB must list the same files with "+" signs for the librarian.
+!if $d(DOS)
+SYSDEPMEM= jmemdos.obj jmemdosa.obj
+SYSDEPMEMLIB= +jmemdos.obj +jmemdosa.obj
+!else
+SYSDEPMEM= jmemnobs.obj
+SYSDEPMEMLIB= +jmemnobs.obj
+!endif
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.obj jcapistd.obj jctrans.obj jcparam.obj jdatadst.obj \
+        jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj jcprepct.obj \
+        jccoefct.obj jccolor.obj jcsample.obj jchuff.obj jcphuff.obj \
+        jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj
+# decompression library object files
+DLIBOBJECTS= jdapimin.obj jdapistd.obj jdtrans.obj jdatasrc.obj \
+        jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdphuff.obj \
+        jdmainct.obj jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj \
+        jidctflt.obj jidctint.obj jidctred.obj jdsample.obj jdcolor.obj \
+        jquant1.obj jquant2.obj jdmerge.obj
+# These objectfiles are included in libjpeg.lib
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj \
+        rdswitch.obj cdjpeg.obj
+DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj \
+        rdcolmap.obj cdjpeg.obj
+TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj
+
+
+all: libjpeg.lib cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
+
+libjpeg.lib: $(LIBOBJECTS)
+	- del libjpeg.lib
+	tlib libjpeg.lib /E /C @&&|
++jcapimin.obj +jcapistd.obj +jctrans.obj +jcparam.obj +jdatadst.obj &
++jcinit.obj +jcmaster.obj +jcmarker.obj +jcmainct.obj +jcprepct.obj &
++jccoefct.obj +jccolor.obj +jcsample.obj +jchuff.obj +jcphuff.obj &
++jcdctmgr.obj +jfdctfst.obj +jfdctflt.obj +jfdctint.obj +jdapimin.obj &
++jdapistd.obj +jdtrans.obj +jdatasrc.obj +jdmaster.obj +jdinput.obj &
++jdmarker.obj +jdhuff.obj +jdphuff.obj +jdmainct.obj +jdcoefct.obj &
++jdpostct.obj +jddctmgr.obj +jidctfst.obj +jidctflt.obj +jidctint.obj &
++jidctred.obj +jdsample.obj +jdcolor.obj +jquant1.obj +jquant2.obj &
++jdmerge.obj +jcomapi.obj +jutils.obj +jerror.obj +jmemmgr.obj &
+$(SYSDEPMEMLIB)
+|
+
+cjpeg.exe: $(COBJECTS) libjpeg.lib
+	$(CC) $(LDFLAGS) -ecjpeg.exe $(COBJECTS) libjpeg.lib
+
+djpeg.exe: $(DOBJECTS) libjpeg.lib
+	$(CC) $(LDFLAGS) -edjpeg.exe $(DOBJECTS) libjpeg.lib
+
+jpegtran.exe: $(TROBJECTS) libjpeg.lib
+	$(CC) $(LDFLAGS) -ejpegtran.exe $(TROBJECTS) libjpeg.lib
+
+rdjpgcom.exe: rdjpgcom.c
+!if $d(DOS)
+	$(CC) -ms -O rdjpgcom.c
+!else
+	$(CC) $(CFLAGS) rdjpgcom.c
+!endif
+
+# On DOS, wrjpgcom needs large model so it can malloc a 64K chunk
+wrjpgcom.exe: wrjpgcom.c
+!if $d(DOS)
+	$(CC) -ml -O wrjpgcom.c
+!else
+	$(CC) $(CFLAGS) wrjpgcom.c
+!endif
+
+# This "{}" syntax allows Borland Make to "batch" source files.
+# In this way, each run of the compiler can build many modules.
+.c.obj:
+	$(CC) $(CFLAGS) -c{ $<}
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	- del *.obj
+	- del libjpeg.lib
+	- del cjpeg.exe
+	- del djpeg.exe
+	- del jpegtran.exe
+	- del rdjpgcom.exe
+	- del wrjpgcom.exe
+	- del testout*.*
+
+test: cjpeg.exe djpeg.exe jpegtran.exe
+	- del testout*.*
+	djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	jpegtran -outfile testoutt.jpg testprog.jpg
+!if $d(DOS)
+	fc /b testimg.ppm testout.ppm
+	fc /b testimg.bmp testout.bmp
+	fc /b testimg.jpg testout.jpg
+	fc /b testimg.ppm testoutp.ppm
+	fc /b testimgp.jpg testoutp.jpg
+	fc /b testorig.jpg testoutt.jpg
+!else
+	echo n > n.tmp
+	comp testimg.ppm testout.ppm < n.tmp
+	comp testimg.bmp testout.bmp < n.tmp
+	comp testimg.jpg testout.jpg < n.tmp
+	comp testimg.ppm testoutp.ppm < n.tmp
+	comp testimgp.jpg testoutp.jpg < n.tmp
+	comp testorig.jpg testoutt.jpg < n.tmp
+	del n.tmp
+!endif
+
+
+jcapimin.obj: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.obj: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.obj: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.obj: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.obj: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.obj: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.obj: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.obj: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.obj: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.obj: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.obj: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.obj: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.obj: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.obj: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.obj: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.obj: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.obj: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.obj: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.obj: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.obj: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.obj: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.obj: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.obj: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.obj: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.obj: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.obj: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.obj: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.obj: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.obj: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.obj: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.obj: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.obj: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.obj: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.obj: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.obj: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.obj: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.obj: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.obj: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.obj: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.obj: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.obj: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.obj: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.obj: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.obj: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.obj: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.obj: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.obj: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.obj: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.obj: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.obj: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.obj: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.obj: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.obj: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.obj: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.obj: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.obj: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.obj: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.obj: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.obj: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.obj: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.obj: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.obj: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.obj: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.obj: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.obj: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.obj: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.obj: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.obj: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.obj: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+jmemdosa.obj: jmemdosa.asm
+	tasm /mx jmemdosa.asm

+ 319 - 0
engine/lib/ljpeg/extras/makefile.cfg

@@ -0,0 +1,319 @@
+# Makefile for Independent JPEG Group's software
+
+# makefile.cfg is edited by configure to produce a custom Makefile.
+
+# Read installation instructions before saying "make" !!
+
+# For compiling with source and object files in different directories.
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+# Where to install the programs and man pages.
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = $(exec_prefix)/bin
+libdir = $(exec_prefix)/lib
+includedir = $(prefix)/include
+binprefix =
+manprefix =
+manext = 1
+mandir = $(prefix)/man/man$(manext)
+
+# The name of your C compiler:
+CC= @CC@
+
+# You may need to adjust these cc options:
+CFLAGS= @CFLAGS@ @CPPFLAGS@ @INCLUDEFLAGS@
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+# However, any special defines for ansi2knr.c may be included here:
+ANSI2KNRFLAGS= @ANSI2KNRFLAGS@
+
+# Link-time cc options:
+LDFLAGS= @LDFLAGS@
+
+# To link any special libraries, add the necessary -l commands here.
+LDLIBS= @LIBS@
+
+# If using GNU libtool, LIBTOOL references it; if not, LIBTOOL is empty.
+LIBTOOL = @LIBTOOL@
+# $(O) expands to "lo" if using libtool, plain "o" if not.
+# Similarly, $(A) expands to "la" or "a".
+O = @O@
+A = @A@
+
+# Library version ID; libtool uses this for the shared library version number.
+# Note: we suggest this match the macro of the same name in jpeglib.h.
+JPEG_LIB_VERSION = @JPEG_LIB_VERSION@
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For Unix this is usually jmemnobs.o, but you may want
+# to use jmemansi.o or jmemname.o if you have limited swap space.
+SYSDEPMEM= @MEMORYMGR@
+
+# miscellaneous OS-dependent stuff
+SHELL= /bin/sh
+# linker
+LN= @LN@
+# file deletion command
+RM= rm -f
+# directory creation command
+MKDIR= mkdir
+# library (.a) file creation command
+AR= ar rc
+# second step in .a creation (use "touch" if not needed)
+AR2= @RANLIB@
+# installation program
+INSTALL= @INSTALL@
+INSTALL_PROGRAM= @INSTALL_PROGRAM@
+INSTALL_LIB= @INSTALL_LIB@
+INSTALL_DATA= @INSTALL_DATA@
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.$(O) jutils.$(O) jerror.$(O) jmemmgr.$(O) $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.$(O) jcapistd.$(O) jctrans.$(O) jcparam.$(O) \
+        jdatadst.$(O) jcinit.$(O) jcmaster.$(O) jcmarker.$(O) jcmainct.$(O) \
+        jcprepct.$(O) jccoefct.$(O) jccolor.$(O) jcsample.$(O) jchuff.$(O) \
+        jcphuff.$(O) jcdctmgr.$(O) jfdctfst.$(O) jfdctflt.$(O) \
+        jfdctint.$(O)
+# decompression library object files
+DLIBOBJECTS= jdapimin.$(O) jdapistd.$(O) jdtrans.$(O) jdatasrc.$(O) \
+        jdmaster.$(O) jdinput.$(O) jdmarker.$(O) jdhuff.$(O) jdphuff.$(O) \
+        jdmainct.$(O) jdcoefct.$(O) jdpostct.$(O) jddctmgr.$(O) \
+        jidctfst.$(O) jidctflt.$(O) jidctint.$(O) jidctred.$(O) \
+        jdsample.$(O) jdcolor.$(O) jquant1.$(O) jquant2.$(O) jdmerge.$(O)
+# These objectfiles are included in libjpeg.a
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.$(O) rdppm.$(O) rdgif.$(O) rdtarga.$(O) rdrle.$(O) \
+        rdbmp.$(O) rdswitch.$(O) cdjpeg.$(O)
+DOBJECTS= djpeg.$(O) wrppm.$(O) wrgif.$(O) wrtarga.$(O) wrrle.$(O) \
+        wrbmp.$(O) rdcolmap.$(O) cdjpeg.$(O)
+TROBJECTS= jpegtran.$(O) rdswitch.$(O) cdjpeg.$(O) transupp.$(O)
+
+
+all: @A2K_DEPS@ libjpeg.$(A) cjpeg djpeg jpegtran rdjpgcom wrjpgcom
+
+# Special compilation rules to support ansi2knr and libtool.
+.SUFFIXES: .lo .la
+
+# How to compile with libtool.
+@[email protected]:
+@COM_LT@	$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $(srcdir)/$*.c
+
+# How to use ansi2knr, when not using libtool.
+@[email protected]:
+@COM_A2K@	./ansi2knr $(srcdir)/$*.c knr/$*.c
+@COM_A2K@	$(CC) $(CFLAGS) -c knr/$*.c
+@COM_A2K@	$(RM) knr/$*.c
+
+# How to use ansi2knr AND libtool.
+@[email protected]:
+@COM_A2K@	./ansi2knr $(srcdir)/$*.c knr/$*.c
+@COM_A2K@	$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c knr/$*.c
+@COM_A2K@	$(RM) knr/$*.c
+
+ansi2knr: ansi2knr.c
+	$(CC) $(CFLAGS) $(ANSI2KNRFLAGS) -o ansi2knr $(srcdir)/ansi2knr.c
+	$(MKDIR) knr
+
+# the library:
+
+# without libtool:
+libjpeg.a: @A2K_DEPS@ $(LIBOBJECTS)
+	$(RM) libjpeg.a
+	$(AR) libjpeg.a  $(LIBOBJECTS)
+	$(AR2) libjpeg.a
+
+# with libtool:
+libjpeg.la: @A2K_DEPS@ $(LIBOBJECTS)
+	$(LIBTOOL) --mode=link $(CC) -o libjpeg.la $(LIBOBJECTS) \
+		-rpath $(libdir) -version-info $(JPEG_LIB_VERSION)
+
+# sample programs:
+
+cjpeg: $(COBJECTS) libjpeg.$(A)
+	$(LN) $(LDFLAGS) -o cjpeg $(COBJECTS) libjpeg.$(A) $(LDLIBS)
+
+djpeg: $(DOBJECTS) libjpeg.$(A)
+	$(LN) $(LDFLAGS) -o djpeg $(DOBJECTS) libjpeg.$(A) $(LDLIBS)
+
+jpegtran: $(TROBJECTS) libjpeg.$(A)
+	$(LN) $(LDFLAGS) -o jpegtran $(TROBJECTS) libjpeg.$(A) $(LDLIBS)
+
+rdjpgcom: rdjpgcom.$(O)
+	$(LN) $(LDFLAGS) -o rdjpgcom rdjpgcom.$(O) $(LDLIBS)
+
+wrjpgcom: wrjpgcom.$(O)
+	$(LN) $(LDFLAGS) -o wrjpgcom wrjpgcom.$(O) $(LDLIBS)
+
+# Installation rules:
+
+install: cjpeg djpeg jpegtran rdjpgcom wrjpgcom @FORCE_INSTALL_LIB@
+	$(INSTALL_PROGRAM) cjpeg $(bindir)/$(binprefix)cjpeg
+	$(INSTALL_PROGRAM) djpeg $(bindir)/$(binprefix)djpeg
+	$(INSTALL_PROGRAM) jpegtran $(bindir)/$(binprefix)jpegtran
+	$(INSTALL_PROGRAM) rdjpgcom $(bindir)/$(binprefix)rdjpgcom
+	$(INSTALL_PROGRAM) wrjpgcom $(bindir)/$(binprefix)wrjpgcom
+	$(INSTALL_DATA) $(srcdir)/cjpeg.1 $(mandir)/$(manprefix)cjpeg.$(manext)
+	$(INSTALL_DATA) $(srcdir)/djpeg.1 $(mandir)/$(manprefix)djpeg.$(manext)
+	$(INSTALL_DATA) $(srcdir)/jpegtran.1 $(mandir)/$(manprefix)jpegtran.$(manext)
+	$(INSTALL_DATA) $(srcdir)/rdjpgcom.1 $(mandir)/$(manprefix)rdjpgcom.$(manext)
+	$(INSTALL_DATA) $(srcdir)/wrjpgcom.1 $(mandir)/$(manprefix)wrjpgcom.$(manext)
+
+install-lib: libjpeg.$(A) install-headers
+	$(INSTALL_LIB) libjpeg.$(A) $(libdir)/$(binprefix)libjpeg.$(A)
+
+install-headers: jconfig.h
+	$(INSTALL_DATA) jconfig.h $(includedir)/jconfig.h
+	$(INSTALL_DATA) $(srcdir)/jpeglib.h $(includedir)/jpeglib.h
+	$(INSTALL_DATA) $(srcdir)/jmorecfg.h $(includedir)/jmorecfg.h
+	$(INSTALL_DATA) $(srcdir)/jerror.h $(includedir)/jerror.h
+
+clean:
+	$(RM) *.o *.lo libjpeg.a libjpeg.la
+	$(RM) cjpeg djpeg jpegtran rdjpgcom wrjpgcom
+	$(RM) ansi2knr core testout* config.log config.status
+	$(RM) -r knr .libs _libs
+
+distclean: clean
+	$(RM) Makefile jconfig.h libtool config.cache
+
+test: cjpeg djpeg jpegtran
+	$(RM) testout*
+	./djpeg -dct int -ppm -outfile testout.ppm  $(srcdir)/testorig.jpg
+	./djpeg -dct int -bmp -colors 256 -outfile testout.bmp  $(srcdir)/testorig.jpg
+	./cjpeg -dct int -outfile testout.jpg  $(srcdir)/testimg.ppm
+	./djpeg -dct int -ppm -outfile testoutp.ppm $(srcdir)/testprog.jpg
+	./cjpeg -dct int -progressive -opt -outfile testoutp.jpg $(srcdir)/testimg.ppm
+	./jpegtran -outfile testoutt.jpg $(srcdir)/testprog.jpg
+	cmp $(srcdir)/testimg.ppm testout.ppm
+	cmp $(srcdir)/testimg.bmp testout.bmp
+	cmp $(srcdir)/testimg.jpg testout.jpg
+	cmp $(srcdir)/testimg.ppm testoutp.ppm
+	cmp $(srcdir)/testimgp.jpg testoutp.jpg
+	cmp $(srcdir)/testorig.jpg testoutt.jpg
+
+check: test
+
+# Mistake catcher:
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+# GNU Make likes to know which target names are not really files to be made:
+.PHONY: all install install-lib install-headers clean distclean test check
+
+
+jcapimin.$(O): jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.$(O): jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.$(O): jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.$(O): jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.$(O): jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.$(O): jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.$(O): jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.$(O): jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.$(O): jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.$(O): jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.$(O): jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.$(O): jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.$(O): jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.$(O): jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.$(O): jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.$(O): jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.$(O): jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.$(O): jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.$(O): jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.$(O): jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.$(O): jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.$(O): jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.$(O): jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.$(O): jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.$(O): jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.$(O): jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.$(O): jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.$(O): jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.$(O): jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.$(O): jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.$(O): jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.$(O): jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.$(O): jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.$(O): jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.$(O): jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.$(O): jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.$(O): jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.$(O): jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.$(O): jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.$(O): jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.$(O): jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.$(O): jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.$(O): jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.$(O): jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.$(O): jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.$(O): jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.$(O): jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.$(O): jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.$(O): jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.$(O): jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.$(O): cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.$(O): djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.$(O): jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.$(O): rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.$(O): wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.$(O): cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.$(O): rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.$(O): rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.$(O): transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.$(O): rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.$(O): wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.$(O): rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.$(O): wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.$(O): rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.$(O): wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.$(O): rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.$(O): wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.$(O): rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.$(O): wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 220 - 0
engine/lib/ljpeg/extras/makefile.dj

@@ -0,0 +1,220 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is for DJGPP (Delorie's GNU C port on MS-DOS), v2.0 or later.
+# Thanks to Frank J. Donahoe for this version.
+
+# Read installation instructions before saying "make" !!
+
+# The name of your C compiler:
+CC= gcc
+
+# You may need to adjust these cc options:
+CFLAGS= -O2 -Wall -I.
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+
+# Link-time cc options:
+LDFLAGS= -s
+
+# To link any special libraries, add the necessary -l commands here.
+LDLIBS= 
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For DJGPP this is usually jmemnobs.o, but you could
+# use jmemname.o if you want to use named temp files instead of swap space.
+SYSDEPMEM= jmemnobs.o
+
+# miscellaneous OS-dependent stuff
+# linker
+LN= $(CC)
+# file deletion command
+RM= del
+# library (.a) file creation command
+AR= ar rc
+# second step in .a creation (use "touch" if not needed)
+AR2= ranlib
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.o jutils.o jerror.o jmemmgr.o $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.o jcapistd.o jctrans.o jcparam.o jdatadst.o jcinit.o \
+        jcmaster.o jcmarker.o jcmainct.o jcprepct.o jccoefct.o jccolor.o \
+        jcsample.o jchuff.o jcphuff.o jcdctmgr.o jfdctfst.o jfdctflt.o \
+        jfdctint.o
+# decompression library object files
+DLIBOBJECTS= jdapimin.o jdapistd.o jdtrans.o jdatasrc.o jdmaster.o \
+        jdinput.o jdmarker.o jdhuff.o jdphuff.o jdmainct.o jdcoefct.o \
+        jdpostct.o jddctmgr.o jidctfst.o jidctflt.o jidctint.o jidctred.o \
+        jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o
+# These objectfiles are included in libjpeg.a
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o \
+        cdjpeg.o
+DOBJECTS= djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o \
+        cdjpeg.o
+TROBJECTS= jpegtran.o rdswitch.o cdjpeg.o transupp.o
+
+
+all: libjpeg.a cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
+
+libjpeg.a: $(LIBOBJECTS)
+	$(RM) libjpeg.a
+	$(AR) libjpeg.a  $(LIBOBJECTS)
+	$(AR2) libjpeg.a
+
+cjpeg.exe: $(COBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o cjpeg.exe $(COBJECTS) libjpeg.a $(LDLIBS)
+
+djpeg.exe: $(DOBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o djpeg.exe $(DOBJECTS) libjpeg.a $(LDLIBS)
+
+jpegtran.exe: $(TROBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o jpegtran.exe $(TROBJECTS) libjpeg.a $(LDLIBS)
+
+rdjpgcom.exe: rdjpgcom.o
+	$(LN) $(LDFLAGS) -o rdjpgcom.exe rdjpgcom.o $(LDLIBS)
+
+wrjpgcom.exe: wrjpgcom.o
+	$(LN) $(LDFLAGS) -o wrjpgcom.exe wrjpgcom.o $(LDLIBS)
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	$(RM) *.o
+	$(RM) cjpeg.exe
+	$(RM) djpeg.exe
+	$(RM) jpegtran.exe
+	$(RM) rdjpgcom.exe
+	$(RM) wrjpgcom.exe
+	$(RM) libjpeg.a
+	$(RM) testout*.*
+
+test: cjpeg.exe djpeg.exe jpegtran.exe
+	$(RM) testout*.*
+	./djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	./djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	./cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	./djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	./cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	./jpegtran -outfile testoutt.jpg testprog.jpg
+	fc /b testimg.ppm testout.ppm
+	fc /b testimg.bmp testout.bmp
+	fc /b testimg.jpg testout.jpg
+	fc /b testimg.ppm testoutp.ppm
+	fc /b testimgp.jpg testoutp.jpg
+	fc /b testorig.jpg testoutt.jpg
+
+
+jcapimin.o: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.o: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.o: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.o: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.o: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.o: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.o: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.o: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.o: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.o: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.o: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.o: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.o: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.o: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.o: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.o: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.o: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.o: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.o: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.o: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.o: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.o: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.o: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.o: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.o: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.o: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.o: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.o: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.o: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.o: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.o: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.o: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.o: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.o: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.o: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.o: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.o: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.o: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.o: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.o: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.o: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.o: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.o: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.o: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.o: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.o: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.o: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.o: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.o: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.o: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.o: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.o: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.o: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.o: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.o: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.o: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.o: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.o: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.o: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.o: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.o: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.o: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.o: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.o: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.o: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.o: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.o: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.o: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.o: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 214 - 0
engine/lib/ljpeg/extras/makefile.manx

@@ -0,0 +1,214 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is for Amiga systems using Manx Aztec C ver 5.x.
+# Thanks to D.J. James ([email protected]) for this version.
+
+# Read installation instructions before saying "make" !!
+
+# The name of your C compiler:
+CC= cc
+
+# You may need to adjust these cc options:
+# Uncomment for generic 68000 code (will work on any Amiga)
+ARCHFLAGS= -sn
+
+# Uncomment for 68020/68030 code (faster, but won't run on 68000 CPU)
+#ARCHFLAGS= -c2
+
+CFLAGS= -MC -MD $(ARCHFLAGS) -spfam -r4
+
+# Link-time cc options:
+LDFLAGS= -g
+
+# To link any special libraries, add the necessary -l commands here.
+LDLIBS= -lml -lcl
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For Amiga we recommend jmemname.o.
+SYSDEPMEM= jmemname.o
+
+# miscellaneous OS-dependent stuff
+# linker
+LN= ln
+# file deletion command
+RM= delete quiet
+# library (.lib) file creation command
+AR= lb
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.o jutils.o jerror.o jmemmgr.o $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.o jcapistd.o jctrans.o jcparam.o jdatadst.o jcinit.o \
+        jcmaster.o jcmarker.o jcmainct.o jcprepct.o jccoefct.o jccolor.o \
+        jcsample.o jchuff.o jcphuff.o jcdctmgr.o jfdctfst.o jfdctflt.o \
+        jfdctint.o
+# decompression library object files
+DLIBOBJECTS= jdapimin.o jdapistd.o jdtrans.o jdatasrc.o jdmaster.o \
+        jdinput.o jdmarker.o jdhuff.o jdphuff.o jdmainct.o jdcoefct.o \
+        jdpostct.o jddctmgr.o jidctfst.o jidctflt.o jidctint.o jidctred.o \
+        jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o
+# These objectfiles are included in libjpeg.lib
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o \
+        cdjpeg.o
+DOBJECTS= djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o \
+        cdjpeg.o
+TROBJECTS= jpegtran.o rdswitch.o cdjpeg.o transupp.o
+
+
+all: libjpeg.lib cjpeg djpeg jpegtran rdjpgcom wrjpgcom
+
+libjpeg.lib: $(LIBOBJECTS)
+	-$(RM) libjpeg.lib
+	$(AR) libjpeg.lib  $(LIBOBJECTS)
+
+cjpeg: $(COBJECTS) libjpeg.lib
+	$(LN) $(LDFLAGS) -o cjpeg $(COBJECTS) libjpeg.lib $(LDLIBS)
+
+djpeg: $(DOBJECTS) libjpeg.lib
+	$(LN) $(LDFLAGS) -o djpeg $(DOBJECTS) libjpeg.lib $(LDLIBS)
+
+jpegtran: $(TROBJECTS) libjpeg.lib
+	$(LN) $(LDFLAGS) -o jpegtran $(TROBJECTS) libjpeg.lib $(LDLIBS)
+
+rdjpgcom: rdjpgcom.o
+	$(LN) $(LDFLAGS) -o rdjpgcom rdjpgcom.o $(LDLIBS)
+
+wrjpgcom: wrjpgcom.o
+	$(LN) $(LDFLAGS) -o wrjpgcom wrjpgcom.o $(LDLIBS)
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	-$(RM) *.o cjpeg djpeg jpegtran libjpeg.lib rdjpgcom wrjpgcom
+	-$(RM) core testout*.*
+
+test: cjpeg djpeg jpegtran
+	-$(RM) testout*.*
+	djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	jpegtran -outfile testoutt.jpg testprog.jpg
+	cmp testimg.ppm testout.ppm
+	cmp testimg.bmp testout.bmp
+	cmp testimg.jpg testout.jpg
+	cmp testimg.ppm testoutp.ppm
+	cmp testimgp.jpg testoutp.jpg
+	cmp testorig.jpg testoutt.jpg
+
+
+jcapimin.o: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.o: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.o: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.o: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.o: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.o: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.o: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.o: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.o: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.o: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.o: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.o: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.o: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.o: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.o: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.o: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.o: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.o: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.o: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.o: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.o: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.o: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.o: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.o: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.o: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.o: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.o: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.o: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.o: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.o: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.o: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.o: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.o: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.o: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.o: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.o: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.o: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.o: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.o: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.o: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.o: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.o: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.o: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.o: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.o: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.o: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.o: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.o: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.o: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.o: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.o: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.o: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.o: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.o: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.o: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.o: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.o: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.o: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.o: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.o: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.o: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.o: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.o: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.o: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.o: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.o: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.o: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.o: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.o: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 249 - 0
engine/lib/ljpeg/extras/makefile.mc6

@@ -0,0 +1,249 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is for Microsoft C for MS-DOS, version 6.00A and up.
+# Use NMAKE, not Microsoft's brain-damaged MAKE.
+# Thanks to Alan Wright and Chris Turner of Olivetti Research Ltd.
+
+# Read installation instructions before saying "nmake" !!
+
+# You may need to adjust these compiler options:
+CFLAGS = -AM -Oecigt -Gs -W3
+# -AM medium memory model (or use -AS for small model, if you remove features)
+# -Oecigt -Gs  maximum safe optimisation (-Ol has bugs in MSC 6.00A)
+# -W3 warning level 3
+# You might also want to add -G2 if you have an 80286, etc.
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+
+# Jan-Herman Buining suggests the following switches for MS C 8.0 and a 486:
+# CFLAGS = /AM /f- /FPi87 /G3 /Gs /Gy /Ob1 /Oc /Oe /Og /Oi /Ol /On /Oo /Ot \
+#          /OV4 /W3
+# except for jquant1.c, which must be compiled with /Oo- to avoid a compiler
+# crash.
+
+# Ingar Steinsland suggests the following switches when building
+# a 16-bit Windows DLL:
+# CFLAGS = -ALw -Gsw -Zpe -W3 -O2 -Zi -Zd
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For DOS, we recommend jmemdos.c and jmemdosa.asm.
+# (But not for Windows; see install.doc if you use this makefile for Windows.)
+SYSDEPMEM= jmemdos.obj jmemdosa.obj
+# SYSDEPMEMLIB must list the same files with "+" signs for the librarian.
+SYSDEPMEMLIB= +jmemdos.obj +jmemdosa.obj
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.obj jcapistd.obj jctrans.obj jcparam.obj jdatadst.obj \
+        jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj jcprepct.obj \
+        jccoefct.obj jccolor.obj jcsample.obj jchuff.obj jcphuff.obj \
+        jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj
+# decompression library object files
+DLIBOBJECTS= jdapimin.obj jdapistd.obj jdtrans.obj jdatasrc.obj \
+        jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdphuff.obj \
+        jdmainct.obj jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj \
+        jidctflt.obj jidctint.obj jidctred.obj jdsample.obj jdcolor.obj \
+        jquant1.obj jquant2.obj jdmerge.obj
+# These objectfiles are included in libjpeg.lib
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj \
+        rdswitch.obj cdjpeg.obj
+DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj \
+        rdcolmap.obj cdjpeg.obj
+TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj
+
+# need linker response file because file list > 128 chars
+RFILE = libjpeg.ans
+
+
+all: libjpeg.lib cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
+
+libjpeg.lib: $(LIBOBJECTS) $(RFILE)
+	del libjpeg.lib
+	lib @$(RFILE)
+
+# linker response file for building libjpeg.lib
+$(RFILE) : makefile
+	del $(RFILE)
+	echo libjpeg.lib >$(RFILE)
+# silly want-to-create-it prompt:
+	echo y >>$(RFILE)
+	echo +jcapimin.obj +jcapistd.obj +jctrans.obj +jcparam.obj & >>$(RFILE)
+	echo +jdatadst.obj +jcinit.obj +jcmaster.obj +jcmarker.obj & >>$(RFILE)
+	echo +jcmainct.obj +jcprepct.obj +jccoefct.obj & >>$(RFILE)
+	echo +jccolor.obj +jcsample.obj +jchuff.obj +jcphuff.obj & >>$(RFILE)
+	echo +jcdctmgr.obj +jfdctfst.obj +jfdctflt.obj & >>$(RFILE)
+	echo +jfdctint.obj +jdapimin.obj +jdapistd.obj & >>$(RFILE)
+	echo +jdtrans.obj +jdatasrc.obj +jdmaster.obj +jdinput.obj & >>$(RFILE)
+	echo +jdmarker.obj +jdhuff.obj +jdphuff.obj +jdmainct.obj & >>$(RFILE)
+	echo +jdcoefct.obj +jdpostct.obj +jddctmgr.obj & >>$(RFILE)
+	echo +jidctfst.obj +jidctflt.obj +jidctint.obj & >>$(RFILE)
+	echo +jidctred.obj +jdsample.obj +jdcolor.obj +jquant1.obj & >>$(RFILE)
+	echo +jquant2.obj +jdmerge.obj +jcomapi.obj +jutils.obj & >>$(RFILE)
+	echo +jerror.obj +jmemmgr.obj & >>$(RFILE)
+	echo $(SYSDEPMEMLIB) ; >>$(RFILE)
+
+cjpeg.exe: $(COBJECTS) libjpeg.lib
+	echo $(COBJECTS) >cjpeg.lst
+	link /STACK:4096 /EXEPACK @cjpeg.lst, cjpeg.exe, , libjpeg.lib, ;
+	del cjpeg.lst
+
+djpeg.exe: $(DOBJECTS) libjpeg.lib
+	echo $(DOBJECTS) >djpeg.lst
+	link /STACK:4096 /EXEPACK @djpeg.lst, djpeg.exe, , libjpeg.lib, ;
+	del djpeg.lst
+
+jpegtran.exe: $(TROBJECTS) libjpeg.lib
+	link /STACK:4096 /EXEPACK $(TROBJECTS), jpegtran.exe, , libjpeg.lib, ;
+
+rdjpgcom.exe: rdjpgcom.c
+	$(CC) -AS -O -W3 rdjpgcom.c
+
+# wrjpgcom needs large model so it can malloc a 64K chunk
+wrjpgcom.exe: wrjpgcom.c
+	$(CC) -AL -O -W3 wrjpgcom.c
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	del *.obj
+	del libjpeg.lib
+	del cjpeg.exe
+	del djpeg.exe
+	del jpegtran.exe
+	del rdjpgcom.exe
+	del wrjpgcom.exe
+	del testout*.*
+
+test: cjpeg.exe djpeg.exe jpegtran.exe
+	del testout*.*
+	djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	jpegtran -outfile testoutt.jpg testprog.jpg
+	fc /b testimg.ppm testout.ppm
+	fc /b testimg.bmp testout.bmp
+	fc /b testimg.jpg testout.jpg
+	fc /b testimg.ppm testoutp.ppm
+	fc /b testimgp.jpg testoutp.jpg
+	fc /b testorig.jpg testoutt.jpg
+
+
+jcapimin.obj: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.obj: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.obj: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.obj: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.obj: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.obj: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.obj: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.obj: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.obj: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.obj: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.obj: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.obj: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.obj: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.obj: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.obj: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.obj: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.obj: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.obj: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.obj: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.obj: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.obj: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.obj: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.obj: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.obj: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.obj: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.obj: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.obj: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.obj: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.obj: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.obj: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.obj: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.obj: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.obj: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.obj: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.obj: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.obj: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.obj: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.obj: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.obj: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.obj: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.obj: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.obj: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.obj: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.obj: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.obj: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.obj: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.obj: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.obj: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.obj: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.obj: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.obj: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.obj: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.obj: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.obj: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.obj: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.obj: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.obj: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.obj: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.obj: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.obj: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.obj: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.obj: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.obj: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.obj: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.obj: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.obj: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.obj: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.obj: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.obj: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+jmemdosa.obj : jmemdosa.asm
+	masm /mx $*;

+ 218 - 0
engine/lib/ljpeg/extras/makefile.mms

@@ -0,0 +1,218 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is for use with MMS on Digital VMS systems.
+# Thanks to Rick Dyson ([email protected])
+# and Tim Bell ([email protected]) for their help.
+
+# Read installation instructions before saying "MMS" !!
+
+# You may need to adjust these cc options:
+CFLAGS= $(CFLAGS) /NoDebug /Optimize
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via /Define switches here.
+.ifdef ALPHA
+OPT=
+.else
+OPT= ,Sys$Disk:[]MAKVMS.OPT/Option
+.endif
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For Unix this is usually jmemnobs.o, but you may want
+# to use jmemansi.o or jmemname.o if you have limited swap space.
+SYSDEPMEM= jmemnobs.obj
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.obj jcapistd.obj jctrans.obj jcparam.obj jdatadst.obj \
+        jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj jcprepct.obj \
+        jccoefct.obj jccolor.obj jcsample.obj jchuff.obj jcphuff.obj \
+        jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj
+# decompression library object files
+DLIBOBJECTS= jdapimin.obj jdapistd.obj jdtrans.obj jdatasrc.obj \
+        jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdphuff.obj \
+        jdmainct.obj jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj \
+        jidctflt.obj jidctint.obj jidctred.obj jdsample.obj jdcolor.obj \
+        jquant1.obj jquant2.obj jdmerge.obj
+# These objectfiles are included in libjpeg.olb
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj \
+        rdswitch.obj cdjpeg.obj
+DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj \
+        rdcolmap.obj cdjpeg.obj
+TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj
+# objectfile lists with commas --- what a crock
+COBJLIST= cjpeg.obj,rdppm.obj,rdgif.obj,rdtarga.obj,rdrle.obj,rdbmp.obj,\
+          rdswitch.obj,cdjpeg.obj
+DOBJLIST= djpeg.obj,wrppm.obj,wrgif.obj,wrtarga.obj,wrrle.obj,wrbmp.obj,\
+          rdcolmap.obj,cdjpeg.obj
+TROBJLIST= jpegtran.obj,rdswitch.obj,cdjpeg.obj,transupp.obj
+LIBOBJLIST= jcapimin.obj,jcapistd.obj,jctrans.obj,jcparam.obj,jdatadst.obj,\
+          jcinit.obj,jcmaster.obj,jcmarker.obj,jcmainct.obj,jcprepct.obj,\
+          jccoefct.obj,jccolor.obj,jcsample.obj,jchuff.obj,jcphuff.obj,\
+          jcdctmgr.obj,jfdctfst.obj,jfdctflt.obj,jfdctint.obj,jdapimin.obj,\
+          jdapistd.obj,jdtrans.obj,jdatasrc.obj,jdmaster.obj,jdinput.obj,\
+          jdmarker.obj,jdhuff.obj,jdphuff.obj,jdmainct.obj,jdcoefct.obj,\
+          jdpostct.obj,jddctmgr.obj,jidctfst.obj,jidctflt.obj,jidctint.obj,\
+          jidctred.obj,jdsample.obj,jdcolor.obj,jquant1.obj,jquant2.obj,\
+          jdmerge.obj,jcomapi.obj,jutils.obj,jerror.obj,jmemmgr.obj,$(SYSDEPMEM)
+
+
+.first
+	@- Define /NoLog Sys Sys$Library
+
+ALL : libjpeg.olb cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
+	@ Continue
+
+libjpeg.olb : $(LIBOBJECTS)
+	Library /Create libjpeg.olb $(LIBOBJLIST)
+
+cjpeg.exe : $(COBJECTS) libjpeg.olb
+	$(LINK) $(LFLAGS) /Executable = cjpeg.exe $(COBJLIST),libjpeg.olb/Library$(OPT)
+
+djpeg.exe : $(DOBJECTS) libjpeg.olb
+	$(LINK) $(LFLAGS) /Executable = djpeg.exe $(DOBJLIST),libjpeg.olb/Library$(OPT)
+
+jpegtran.exe : $(TROBJECTS) libjpeg.olb
+	$(LINK) $(LFLAGS) /Executable = jpegtran.exe $(TROBJLIST),libjpeg.olb/Library$(OPT)
+
+rdjpgcom.exe : rdjpgcom.obj
+	$(LINK) $(LFLAGS) /Executable = rdjpgcom.exe rdjpgcom.obj$(OPT)
+
+wrjpgcom.exe : wrjpgcom.obj
+	$(LINK) $(LFLAGS) /Executable = wrjpgcom.exe wrjpgcom.obj$(OPT)
+
+jconfig.h : jconfig.vms
+	@- Copy jconfig.vms jconfig.h
+
+clean :
+	@- Set Protection = Owner:RWED *.*;-1
+	@- Set Protection = Owner:RWED *.OBJ
+	- Purge /NoLog /NoConfirm *.*
+	- Delete /NoLog /NoConfirm *.OBJ;
+
+test : cjpeg.exe djpeg.exe jpegtran.exe
+	mcr sys$disk:[]djpeg -dct int -ppm -outfile testout.ppm testorig.jpg
+	mcr sys$disk:[]djpeg -dct int -bmp -colors 256 -outfile testout.bmp testorig.jpg
+	mcr sys$disk:[]cjpeg -dct int      -outfile testout.jpg testimg.ppm
+	mcr sys$disk:[]djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	mcr sys$disk:[]cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	mcr sys$disk:[]jpegtran -outfile testoutt.jpg testprog.jpg
+	- Backup /Compare/Log	  testimg.ppm testout.ppm
+	- Backup /Compare/Log	  testimg.bmp testout.bmp
+	- Backup /Compare/Log	  testimg.jpg testout.jpg
+	- Backup /Compare/Log	  testimg.ppm testoutp.ppm
+	- Backup /Compare/Log	  testimgp.jpg testoutp.jpg
+	- Backup /Compare/Log	  testorig.jpg testoutt.jpg
+
+
+jcapimin.obj : jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.obj : jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.obj : jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.obj : jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.obj : jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.obj : jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.obj : jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.obj : jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.obj : jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.obj : jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.obj : jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.obj : jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.obj : jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.obj : jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.obj : jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.obj : jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.obj : jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.obj : jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.obj : jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.obj : jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.obj : jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.obj : jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.obj : jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.obj : jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.obj : jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.obj : jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.obj : jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.obj : jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.obj : jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.obj : jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.obj : jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.obj : jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.obj : jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.obj : jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.obj : jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.obj : jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.obj : jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.obj : jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.obj : jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.obj : jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.obj : jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.obj : jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.obj : jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.obj : jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.obj : jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.obj : jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.obj : jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.obj : jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.obj : jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.obj : jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.obj : cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.obj : djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.obj : jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.obj : rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.obj : wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.obj : cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.obj : rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.obj : rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.obj : transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.obj : rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.obj : wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.obj : rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.obj : wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.obj : rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.obj : wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.obj : rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.obj : wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.obj : rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.obj : wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 252 - 0
engine/lib/ljpeg/extras/makefile.sas

@@ -0,0 +1,252 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is for Amiga systems using SAS C 6.0 and up.
+# Thanks to Ed Hanway, Mark Rinfret, and Jim Zepeda.
+
+# Read installation instructions before saying "make" !!
+
+# The name of your C compiler:
+CC= sc
+
+# You may need to adjust these cc options:
+# Uncomment the following lines for generic 680x0 version
+ARCHFLAGS= cpu=any
+SUFFIX=
+
+# Uncomment the following lines for 68030-only version
+#ARCHFLAGS= cpu=68030
+#SUFFIX=.030
+
+CFLAGS= nostackcheck data=near parms=register optimize $(ARCHFLAGS) \
+	ignore=104 ignore=304 ignore=306
+# ignore=104 disables warnings for mismatched const qualifiers
+# ignore=304 disables warnings for variables being optimized out
+# ignore=306 disables warnings for the inlining of functions
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via define switches here.
+
+# Link-time cc options:
+LDFLAGS= SC SD ND BATCH
+
+# To link any special libraries, add the necessary commands here.
+LDLIBS= LIB:scm.lib LIB:sc.lib
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For Amiga we recommend jmemname.o.
+SYSDEPMEM= jmemname.o
+
+# miscellaneous OS-dependent stuff
+# linker
+LN= slink
+# file deletion command
+RM= delete quiet
+# library (.lib) file creation command
+AR= oml
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.o jutils.o jerror.o jmemmgr.o $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.o jcapistd.o jctrans.o jcparam.o jdatadst.o jcinit.o \
+        jcmaster.o jcmarker.o jcmainct.o jcprepct.o jccoefct.o jccolor.o \
+        jcsample.o jchuff.o jcphuff.o jcdctmgr.o jfdctfst.o jfdctflt.o \
+        jfdctint.o
+# decompression library object files
+DLIBOBJECTS= jdapimin.o jdapistd.o jdtrans.o jdatasrc.o jdmaster.o \
+        jdinput.o jdmarker.o jdhuff.o jdphuff.o jdmainct.o jdcoefct.o \
+        jdpostct.o jddctmgr.o jidctfst.o jidctflt.o jidctint.o jidctred.o \
+        jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o
+# These objectfiles are included in libjpeg.lib
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o \
+        cdjpeg.o
+DOBJECTS= djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o \
+        cdjpeg.o
+TROBJECTS= jpegtran.o rdswitch.o cdjpeg.o transupp.o
+
+
+all: libjpeg.lib cjpeg$(SUFFIX) djpeg$(SUFFIX) jpegtran$(SUFFIX) rdjpgcom$(SUFFIX) wrjpgcom$(SUFFIX)
+
+# note: do several AR steps to avoid command line length limitations
+
+libjpeg.lib: $(LIBOBJECTS)
+	-$(RM) libjpeg.lib
+	$(AR) libjpeg.lib r $(CLIBOBJECTS)
+	$(AR) libjpeg.lib r $(DLIBOBJECTS)
+	$(AR) libjpeg.lib r $(COMOBJECTS)
+
+cjpeg$(SUFFIX): $(COBJECTS) libjpeg.lib
+	$(LN) <WITH <
+$(LDFLAGS)
+TO cjpeg$(SUFFIX)
+FROM LIB:c.o $(COBJECTS)
+LIB libjpeg.lib $(LDLIBS)
+<
+
+djpeg$(SUFFIX): $(DOBJECTS) libjpeg.lib
+	$(LN) <WITH <
+$(LDFLAGS)
+TO djpeg$(SUFFIX)
+FROM LIB:c.o $(DOBJECTS)
+LIB libjpeg.lib $(LDLIBS)
+<
+
+jpegtran$(SUFFIX): $(TROBJECTS) libjpeg.lib
+	$(LN) <WITH <
+$(LDFLAGS)
+TO jpegtran$(SUFFIX)
+FROM LIB:c.o $(TROBJECTS)
+LIB libjpeg.lib $(LDLIBS)
+<
+
+rdjpgcom$(SUFFIX): rdjpgcom.o
+	$(LN) <WITH <
+$(LDFLAGS)
+TO rdjpgcom$(SUFFIX)
+FROM LIB:c.o rdjpgcom.o
+LIB $(LDLIBS)
+<
+
+wrjpgcom$(SUFFIX): wrjpgcom.o
+	$(LN) <WITH <
+$(LDFLAGS)
+TO wrjpgcom$(SUFFIX)
+FROM LIB:c.o wrjpgcom.o
+LIB $(LDLIBS)
+<
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	-$(RM) *.o cjpeg djpeg jpegtran cjpeg.030 djpeg.030 jpegtran.030
+	-$(RM) rdjpgcom wrjpgcom rdjpgcom.030 wrjpgcom.030
+	-$(RM) libjpeg.lib core testout*.*
+
+test: cjpeg djpeg jpegtran
+	-$(RM) testout*.*
+	djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	jpegtran -outfile testoutt.jpg testprog.jpg
+	cmp testimg.ppm testout.ppm
+	cmp testimg.bmp testout.bmp
+	cmp testimg.jpg testout.jpg
+	cmp testimg.ppm testoutp.ppm
+	cmp testimgp.jpg testoutp.jpg
+	cmp testorig.jpg testoutt.jpg
+
+
+jcapimin.o: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.o: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.o: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.o: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.o: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.o: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.o: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.o: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.o: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.o: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.o: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.o: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.o: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.o: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.o: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.o: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.o: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.o: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.o: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.o: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.o: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.o: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.o: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.o: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.o: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.o: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.o: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.o: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.o: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.o: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.o: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.o: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.o: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.o: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.o: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.o: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.o: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.o: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.o: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.o: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.o: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.o: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.o: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.o: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.o: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.o: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.o: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.o: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.o: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.o: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.o: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.o: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.o: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.o: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.o: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.o: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.o: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.o: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.o: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.o: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.o: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.o: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.o: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.o: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.o: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.o: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.o: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.o: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.o: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 228 - 0
engine/lib/ljpeg/extras/makefile.unix

@@ -0,0 +1,228 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is suitable for Unix-like systems with non-ANSI compilers.
+# If you have an ANSI compiler, makefile.ansi is a better starting point.
+
+# Read installation instructions before saying "make" !!
+
+# The name of your C compiler:
+CC= cc
+
+# You may need to adjust these cc options:
+CFLAGS= -O
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+# However, any special defines for ansi2knr.c may be included here:
+ANSI2KNRFLAGS= 
+
+# Link-time cc options:
+LDFLAGS= 
+
+# To link any special libraries, add the necessary -l commands here.
+LDLIBS= 
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For Unix this is usually jmemnobs.o, but you may want
+# to use jmemansi.o or jmemname.o if you have limited swap space.
+SYSDEPMEM= jmemnobs.o
+
+# miscellaneous OS-dependent stuff
+# linker
+LN= $(CC)
+# file deletion command
+RM= rm -f
+# file rename command
+MV= mv
+# library (.a) file creation command
+AR= ar rc
+# second step in .a creation (use "touch" if not needed)
+AR2= ranlib
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.o jutils.o jerror.o jmemmgr.o $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.o jcapistd.o jctrans.o jcparam.o jdatadst.o jcinit.o \
+        jcmaster.o jcmarker.o jcmainct.o jcprepct.o jccoefct.o jccolor.o \
+        jcsample.o jchuff.o jcphuff.o jcdctmgr.o jfdctfst.o jfdctflt.o \
+        jfdctint.o
+# decompression library object files
+DLIBOBJECTS= jdapimin.o jdapistd.o jdtrans.o jdatasrc.o jdmaster.o \
+        jdinput.o jdmarker.o jdhuff.o jdphuff.o jdmainct.o jdcoefct.o \
+        jdpostct.o jddctmgr.o jidctfst.o jidctflt.o jidctint.o jidctred.o \
+        jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o
+# These objectfiles are included in libjpeg.a
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o \
+        cdjpeg.o
+DOBJECTS= djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o \
+        cdjpeg.o
+TROBJECTS= jpegtran.o rdswitch.o cdjpeg.o transupp.o
+
+
+all: ansi2knr libjpeg.a cjpeg djpeg jpegtran rdjpgcom wrjpgcom
+
+# This rule causes ansi2knr to be invoked.
+.c.o:
+	./ansi2knr $*.c T$*.c
+	$(CC) $(CFLAGS) -c T$*.c
+	$(RM) T$*.c $*.o
+	$(MV) T$*.o $*.o
+
+ansi2knr: ansi2knr.c
+	$(CC) $(CFLAGS) $(ANSI2KNRFLAGS) -o ansi2knr ansi2knr.c
+
+libjpeg.a: ansi2knr $(LIBOBJECTS)
+	$(RM) libjpeg.a
+	$(AR) libjpeg.a  $(LIBOBJECTS)
+	$(AR2) libjpeg.a
+
+cjpeg: ansi2knr $(COBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o cjpeg $(COBJECTS) libjpeg.a $(LDLIBS)
+
+djpeg: ansi2knr $(DOBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o djpeg $(DOBJECTS) libjpeg.a $(LDLIBS)
+
+jpegtran: ansi2knr $(TROBJECTS) libjpeg.a
+	$(LN) $(LDFLAGS) -o jpegtran $(TROBJECTS) libjpeg.a $(LDLIBS)
+
+rdjpgcom: rdjpgcom.o
+	$(LN) $(LDFLAGS) -o rdjpgcom rdjpgcom.o $(LDLIBS)
+
+wrjpgcom: wrjpgcom.o
+	$(LN) $(LDFLAGS) -o wrjpgcom wrjpgcom.o $(LDLIBS)
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean:
+	$(RM) *.o cjpeg djpeg jpegtran libjpeg.a rdjpgcom wrjpgcom
+	$(RM) ansi2knr core testout*
+
+test: cjpeg djpeg jpegtran
+	$(RM) testout*
+	./djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	./djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	./cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	./djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	./cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	./jpegtran -outfile testoutt.jpg testprog.jpg
+	cmp testimg.ppm testout.ppm
+	cmp testimg.bmp testout.bmp
+	cmp testimg.jpg testout.jpg
+	cmp testimg.ppm testoutp.ppm
+	cmp testimgp.jpg testoutp.jpg
+	cmp testorig.jpg testoutt.jpg
+
+
+jcapimin.o: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.o: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.o: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.o: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.o: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.o: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.o: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.o: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.o: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.o: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.o: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.o: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.o: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.o: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.o: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.o: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.o: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.o: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.o: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.o: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.o: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.o: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.o: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.o: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.o: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.o: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.o: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.o: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.o: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.o: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.o: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.o: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.o: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.o: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.o: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.o: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.o: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.o: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.o: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.o: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.o: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.o: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.o: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.o: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.o: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.o: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.o: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.o: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.o: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.o: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.o: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.o: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.o: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.o: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.o: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.o: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.o: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.o: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.o: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.o: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.o: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.o: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.o: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.o: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.o: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.o: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.o: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.o: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.o: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 211 - 0
engine/lib/ljpeg/extras/makefile.vc

@@ -0,0 +1,211 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is for Microsoft Visual C++ on Windows NT (and 95?).
+# It builds the IJG library as a statically linkable library (.LIB),
+# and builds the sample applications as console-mode apps.
+# Thanks to Xingong Chang, Raymond Everly and others.
+
+# Read installation instructions before saying "nmake" !!
+# To build an optimized library without debug info, say "nmake nodebug=1".
+
+# Pull in standard variable definitions
+!include <win32.mak>
+
+# You may want to adjust these compiler options:
+CFLAGS= $(cflags) $(cdebug) $(cvars) -I.
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+
+# Link-time options:
+LDFLAGS= $(ldebug) $(conlflags)
+
+# To link any special libraries, add the necessary commands here.
+LDLIBS= $(conlibs)
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  For NT we suggest jmemnobs.obj, which expects the OS to
+# provide adequate virtual memory.
+SYSDEPMEM= jmemnobs.obj
+
+# miscellaneous OS-dependent stuff
+# file deletion command
+RM= del
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c \
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c \
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c \
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h \
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 \
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc \
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc \
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds \
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st \
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms \
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat \
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas \
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg \
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.obj jcapistd.obj jctrans.obj jcparam.obj jdatadst.obj \
+        jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj jcprepct.obj \
+        jccoefct.obj jccolor.obj jcsample.obj jchuff.obj jcphuff.obj \
+        jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj
+# decompression library object files
+DLIBOBJECTS= jdapimin.obj jdapistd.obj jdtrans.obj jdatasrc.obj \
+        jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdphuff.obj \
+        jdmainct.obj jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj \
+        jidctflt.obj jidctint.obj jidctred.obj jdsample.obj jdcolor.obj \
+        jquant1.obj jquant2.obj jdmerge.obj
+# These objectfiles are included in libjpeg.lib
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj \
+        rdswitch.obj cdjpeg.obj
+DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj \
+        rdcolmap.obj cdjpeg.obj
+TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj
+
+# Template command for compiling .c to .obj
+.c.obj:
+	$(cc) $(CFLAGS) $*.c
+
+
+all: libjpeg.lib cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
+
+libjpeg.lib: $(LIBOBJECTS)
+	$(RM) libjpeg.lib
+	lib -out:libjpeg.lib  $(LIBOBJECTS)
+
+cjpeg.exe: $(COBJECTS) libjpeg.lib
+	$(link) $(LDFLAGS) -out:cjpeg.exe $(COBJECTS) libjpeg.lib $(LDLIBS)
+
+djpeg.exe: $(DOBJECTS) libjpeg.lib
+	$(link) $(LDFLAGS) -out:djpeg.exe $(DOBJECTS) libjpeg.lib $(LDLIBS)
+
+jpegtran.exe: $(TROBJECTS) libjpeg.lib
+	$(link) $(LDFLAGS) -out:jpegtran.exe $(TROBJECTS) libjpeg.lib $(LDLIBS)
+
+rdjpgcom.exe: rdjpgcom.obj
+	$(link) $(LDFLAGS) -out:rdjpgcom.exe rdjpgcom.obj $(LDLIBS)
+
+wrjpgcom.exe: wrjpgcom.obj
+	$(link) $(LDFLAGS) -out:wrjpgcom.exe wrjpgcom.obj $(LDLIBS)
+
+
+clean:
+	$(RM) *.obj *.exe libjpeg.lib
+	$(RM) testout*
+
+test: cjpeg.exe djpeg.exe jpegtran.exe
+	$(RM) testout*
+	.\djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	.\djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	.\cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	.\djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	.\cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	.\jpegtran -outfile testoutt.jpg testprog.jpg
+	fc /b testimg.ppm testout.ppm
+	fc /b testimg.bmp testout.bmp
+	fc /b testimg.jpg testout.jpg
+	fc /b testimg.ppm testoutp.ppm
+	fc /b testimgp.jpg testoutp.jpg
+	fc /b testorig.jpg testoutt.jpg
+
+
+jcapimin.obj: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.obj: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.obj: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.obj: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.obj: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.obj: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.obj: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.obj: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.obj: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.obj: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.obj: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.obj: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.obj: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.obj: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.obj: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.obj: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.obj: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.obj: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.obj: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.obj: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.obj: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.obj: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.obj: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.obj: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.obj: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.obj: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.obj: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.obj: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.obj: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.obj: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.obj: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.obj: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.obj: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.obj: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.obj: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.obj: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.obj: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.obj: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.obj: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.obj: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.obj: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.obj: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.obj: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.obj: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.obj: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.obj: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.obj: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.obj: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.obj: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.obj: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.obj: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.obj: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.obj: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.obj: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.obj: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.obj: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.obj: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.obj: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.obj: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.obj: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.obj: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.obj: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.obj: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.obj: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.obj: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.obj: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.obj: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.obj: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.obj: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 142 - 0
engine/lib/ljpeg/extras/makefile.vms

@@ -0,0 +1,142 @@
+$! Makefile for Independent JPEG Group's software
+$!
+$! This is a command procedure for Digital VMS systems that do not have MMS.
+$! It builds the JPEG software by brute force, recompiling everything whether
+$! or not it is necessary.  It then runs the basic self-test.
+$! Thanks to Rick Dyson ([email protected])
+$! and Tim Bell ([email protected]) for their help.
+$!
+$! Read installation instructions before running this!!
+$!
+$ If F$Mode () .eqs. "INTERACTIVE"
+$   Then
+$       VERIFY = F$Verify (0)
+$   Else
+$       VERIFY = F$Verify (1)
+$ EndIf
+$ On Control_Y Then GoTo End
+$ On Error     Then GoTo End
+$
+$ If F$GetSyi ("HW_MODEL") .gt. 1023 
+$   Then
+$       OPT = ""
+$   Else
+$       OPT = ",Sys$Disk:[]makvms.opt/Option"
+$ EndIf
+$ 
+$ DoCompile := CC /NoDebug /Optimize /NoList
+$!
+$ DoCompile jcapimin.c
+$ DoCompile jcapistd.c
+$ DoCompile jctrans.c
+$ DoCompile jcparam.c
+$ DoCompile jdatadst.c
+$ DoCompile jcinit.c
+$ DoCompile jcmaster.c
+$ DoCompile jcmarker.c
+$ DoCompile jcmainct.c
+$ DoCompile jcprepct.c
+$ DoCompile jccoefct.c
+$ DoCompile jccolor.c
+$ DoCompile jcsample.c
+$ DoCompile jchuff.c
+$ DoCompile jcphuff.c
+$ DoCompile jcdctmgr.c
+$ DoCompile jfdctfst.c
+$ DoCompile jfdctflt.c
+$ DoCompile jfdctint.c
+$ DoCompile jdapimin.c
+$ DoCompile jdapistd.c
+$ DoCompile jdtrans.c
+$ DoCompile jdatasrc.c
+$ DoCompile jdmaster.c
+$ DoCompile jdinput.c
+$ DoCompile jdmarker.c
+$ DoCompile jdhuff.c
+$ DoCompile jdphuff.c
+$ DoCompile jdmainct.c
+$ DoCompile jdcoefct.c
+$ DoCompile jdpostct.c
+$ DoCompile jddctmgr.c
+$ DoCompile jidctfst.c
+$ DoCompile jidctflt.c
+$ DoCompile jidctint.c
+$ DoCompile jidctred.c
+$ DoCompile jdsample.c
+$ DoCompile jdcolor.c
+$ DoCompile jquant1.c
+$ DoCompile jquant2.c
+$ DoCompile jdmerge.c
+$ DoCompile jcomapi.c
+$ DoCompile jutils.c
+$ DoCompile jerror.c
+$ DoCompile jmemmgr.c
+$ DoCompile jmemnobs.c
+$!
+$ Library /Create libjpeg.olb  jcapimin.obj,jcapistd.obj,jctrans.obj, -
+          jcparam.obj,jdatadst.obj,jcinit.obj,jcmaster.obj,jcmarker.obj, -
+          jcmainct.obj,jcprepct.obj,jccoefct.obj,jccolor.obj,jcsample.obj, -
+          jchuff.obj,jcphuff.obj,jcdctmgr.obj,jfdctfst.obj,jfdctflt.obj, -
+          jfdctint.obj,jdapimin.obj,jdapistd.obj,jdtrans.obj,jdatasrc.obj, -
+          jdmaster.obj,jdinput.obj,jdmarker.obj,jdhuff.obj,jdphuff.obj, -
+          jdmainct.obj,jdcoefct.obj,jdpostct.obj,jddctmgr.obj,jidctfst.obj, -
+          jidctflt.obj,jidctint.obj,jidctred.obj,jdsample.obj,jdcolor.obj, -
+          jquant1.obj,jquant2.obj,jdmerge.obj,jcomapi.obj,jutils.obj, -
+          jerror.obj,jmemmgr.obj,jmemnobs.obj
+$!
+$ DoCompile cjpeg.c
+$ DoCompile rdppm.c
+$ DoCompile rdgif.c
+$ DoCompile rdtarga.c
+$ DoCompile rdrle.c
+$ DoCompile rdbmp.c
+$ DoCompile rdswitch.c
+$ DoCompile cdjpeg.c
+$!
+$ Link /NoMap /Executable = cjpeg.exe  cjpeg.obj,rdppm.obj,rdgif.obj, -
+          rdtarga.obj,rdrle.obj,rdbmp.obj,rdswitch.obj,cdjpeg.obj,libjpeg.olb/Library'OPT'
+$!
+$ DoCompile djpeg.c
+$ DoCompile wrppm.c
+$ DoCompile wrgif.c
+$ DoCompile wrtarga.c
+$ DoCompile wrrle.c
+$ DoCompile wrbmp.c
+$ DoCompile rdcolmap.c
+$ DoCompile cdjpeg.c
+$!
+$ Link /NoMap /Executable = djpeg.exe  djpeg.obj,wrppm.obj,wrgif.obj, -
+          wrtarga.obj,wrrle.obj,wrbmp.obj,rdcolmap.obj,cdjpeg.obj,libjpeg.olb/Library'OPT'
+$!
+$ DoCompile jpegtran.c
+$ DoCompile rdswitch.c
+$ DoCompile cdjpeg.c
+$ DoCompile transupp.c
+$!
+$ Link /NoMap /Executable = jpegtran.exe  jpegtran.obj,rdswitch.obj, -
+          cdjpeg.obj,transupp.obj,libjpeg.olb/Library'OPT'
+$!
+$ DoCompile rdjpgcom.c
+$ Link /NoMap /Executable = rdjpgcom.exe  rdjpgcom.obj'OPT'
+$!
+$ DoCompile wrjpgcom.c
+$ Link /NoMap /Executable = wrjpgcom.exe  wrjpgcom.obj'OPT'
+$!
+$! Run the self-test
+$!
+$ mcr sys$disk:[]djpeg -dct int -ppm -outfile testout.ppm testorig.jpg
+$ mcr sys$disk:[]djpeg -dct int -bmp -colors 256 -outfile testout.bmp testorig.jpg
+$ mcr sys$disk:[]cjpeg -dct int      -outfile testout.jpg testimg.ppm
+$ mcr sys$disk:[]djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+$ mcr sys$disk:[]cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+$ mcr sys$disk:[]jpegtran -outfile testoutt.jpg testprog.jpg
+$ Backup /Compare/Log testimg.ppm testout.ppm
+$ Backup /Compare/Log testimg.bmp testout.bmp
+$ Backup /Compare/Log testimg.jpg testout.jpg
+$ Backup /Compare/Log testimg.ppm testoutp.ppm
+$ Backup /Compare/Log testimgp.jpg testoutp.jpg
+$ Backup /Compare/Log testorig.jpg testoutt.jpg
+$!
+$End:
+$   If Verify Then Set Verify
+$ Exit

+ 233 - 0
engine/lib/ljpeg/extras/makefile.wat

@@ -0,0 +1,233 @@
+# Makefile for Independent JPEG Group's software
+
+# This makefile is suitable for Watcom C/C++ 10.0 on MS-DOS (using
+# dos4g extender), OS/2, and Windows NT console mode.
+# Thanks to Janos Haide, [email protected].
+
+# Read installation instructions before saying "wmake" !!
+
+# Uncomment line for desired system
+SYSTEM=DOS
+#SYSTEM=OS2
+#SYSTEM=NT
+
+# The name of your C compiler:
+CC= wcl386
+
+# You may need to adjust these cc options:
+CFLAGS= -4r -ort -wx -zq -bt=$(SYSTEM)
+# Caution: avoid -ol or -ox; these generate bad code with 10.0 or 10.0a.
+# Generally, we recommend defining any configuration symbols in jconfig.h,
+# NOT via -D switches here.
+
+# Link-time cc options:
+!ifeq SYSTEM DOS
+LDFLAGS= -zq -l=dos4g
+!else ifeq SYSTEM OS2
+LDFLAGS= -zq -l=os2v2
+!else ifeq SYSTEM NT
+LDFLAGS= -zq -l=nt
+!endif
+
+# Put here the object file name for the correct system-dependent memory
+# manager file.  jmemnobs should work fine for dos4g or OS/2 environment.
+SYSDEPMEM= jmemnobs.obj
+
+# End of configurable options.
+
+
+# source files: JPEG library proper
+LIBSOURCES= jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c &
+        jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c &
+        jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c &
+        jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c &
+        jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c &
+        jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c &
+        jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c &
+        jquant2.c jutils.c jmemmgr.c
+# memmgr back ends: compile only one of these into a working library
+SYSDEPSOURCES= jmemansi.c jmemname.c jmemnobs.c jmemdos.c jmemmac.c
+# source files: cjpeg/djpeg/jpegtran applications, also rdjpgcom/wrjpgcom
+APPSOURCES= cjpeg.c djpeg.c jpegtran.c rdjpgcom.c wrjpgcom.c cdjpeg.c &
+        rdcolmap.c rdswitch.c transupp.c rdppm.c wrppm.c rdgif.c wrgif.c &
+        rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c
+SOURCES= $(LIBSOURCES) $(SYSDEPSOURCES) $(APPSOURCES)
+# files included by source files
+INCLUDES= jchuff.h jdhuff.h jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h &
+        jpegint.h jpeglib.h jversion.h cdjpeg.h cderror.h transupp.h
+# documentation, test, and support files
+DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 &
+        wrjpgcom.1 wizard.doc example.c libjpeg.doc structure.doc &
+        coderules.doc filelist.doc change.log
+MKFILES= configure makefile.cfg makefile.ansi makefile.unix makefile.bcc &
+        makefile.mc6 makefile.dj makefile.wat makefile.vc makelib.ds &
+        makeapps.ds makeproj.mac makcjpeg.st makdjpeg.st makljpeg.st &
+        maktjpeg.st makefile.manx makefile.sas makefile.mms makefile.vms &
+        makvms.opt
+CONFIGFILES= jconfig.cfg jconfig.bcc jconfig.mc6 jconfig.dj jconfig.wat &
+        jconfig.vc jconfig.mac jconfig.st jconfig.manx jconfig.sas &
+        jconfig.vms
+CONFIGUREFILES= config.guess config.sub install-sh ltconfig ltmain.sh
+OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm
+TESTFILES= testorig.jpg testimg.ppm testimg.bmp testimg.jpg testprog.jpg &
+        testimgp.jpg
+DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) &
+        $(CONFIGUREFILES) $(OTHERFILES) $(TESTFILES)
+# library object files common to compression and decompression
+COMOBJECTS= jcomapi.obj jutils.obj jerror.obj jmemmgr.obj $(SYSDEPMEM)
+# compression library object files
+CLIBOBJECTS= jcapimin.obj jcapistd.obj jctrans.obj jcparam.obj jdatadst.obj &
+        jcinit.obj jcmaster.obj jcmarker.obj jcmainct.obj jcprepct.obj &
+        jccoefct.obj jccolor.obj jcsample.obj jchuff.obj jcphuff.obj &
+        jcdctmgr.obj jfdctfst.obj jfdctflt.obj jfdctint.obj
+# decompression library object files
+DLIBOBJECTS= jdapimin.obj jdapistd.obj jdtrans.obj jdatasrc.obj &
+        jdmaster.obj jdinput.obj jdmarker.obj jdhuff.obj jdphuff.obj &
+        jdmainct.obj jdcoefct.obj jdpostct.obj jddctmgr.obj jidctfst.obj &
+        jidctflt.obj jidctint.obj jidctred.obj jdsample.obj jdcolor.obj &
+        jquant1.obj jquant2.obj jdmerge.obj
+# These objectfiles are included in libjpeg.lib
+LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS)
+# object files for sample applications (excluding library files)
+COBJECTS= cjpeg.obj rdppm.obj rdgif.obj rdtarga.obj rdrle.obj rdbmp.obj &
+        rdswitch.obj cdjpeg.obj
+DOBJECTS= djpeg.obj wrppm.obj wrgif.obj wrtarga.obj wrrle.obj wrbmp.obj &
+        rdcolmap.obj cdjpeg.obj
+TROBJECTS= jpegtran.obj rdswitch.obj cdjpeg.obj transupp.obj
+
+
+all: libjpeg.lib cjpeg.exe djpeg.exe jpegtran.exe rdjpgcom.exe wrjpgcom.exe
+
+libjpeg.lib: $(LIBOBJECTS)
+	- del libjpeg.lib
+	* wlib -n libjpeg.lib $(LIBOBJECTS)
+
+cjpeg.exe: $(COBJECTS) libjpeg.lib
+	$(CC) $(LDFLAGS) $(COBJECTS) libjpeg.lib
+
+djpeg.exe: $(DOBJECTS) libjpeg.lib
+	$(CC) $(LDFLAGS) $(DOBJECTS) libjpeg.lib
+
+jpegtran.exe: $(TROBJECTS) libjpeg.lib
+	$(CC) $(LDFLAGS) $(TROBJECTS) libjpeg.lib
+
+rdjpgcom.exe: rdjpgcom.c
+	$(CC) $(CFLAGS) $(LDFLAGS) rdjpgcom.c
+
+wrjpgcom.exe: wrjpgcom.c
+	$(CC) $(CFLAGS) $(LDFLAGS) wrjpgcom.c
+
+.c.obj:
+	$(CC) $(CFLAGS) -c $<
+
+jconfig.h: jconfig.doc
+	echo You must prepare a system-dependent jconfig.h file.
+	echo Please read the installation directions in install.doc.
+	exit 1
+
+clean: .SYMBOLIC
+	- del *.obj
+	- del libjpeg.lib
+	- del cjpeg.exe
+	- del djpeg.exe
+	- del jpegtran.exe
+	- del rdjpgcom.exe
+	- del wrjpgcom.exe
+	- del testout*.*
+
+test: cjpeg.exe djpeg.exe jpegtran.exe  .SYMBOLIC
+	- del testout*.*
+	djpeg -dct int -ppm -outfile testout.ppm  testorig.jpg
+	djpeg -dct int -bmp -colors 256 -outfile testout.bmp  testorig.jpg
+	cjpeg -dct int -outfile testout.jpg  testimg.ppm
+	djpeg -dct int -ppm -outfile testoutp.ppm testprog.jpg
+	cjpeg -dct int -progressive -opt -outfile testoutp.jpg testimg.ppm
+	jpegtran -outfile testoutt.jpg testprog.jpg
+!ifeq SYSTEM DOS
+	fc /b testimg.ppm testout.ppm
+	fc /b testimg.bmp testout.bmp
+	fc /b testimg.jpg testout.jpg
+	fc /b testimg.ppm testoutp.ppm
+	fc /b testimgp.jpg testoutp.jpg
+	fc /b testorig.jpg testoutt.jpg
+!else
+	echo n > n.tmp
+	comp testimg.ppm testout.ppm < n.tmp
+	comp testimg.bmp testout.bmp < n.tmp
+	comp testimg.jpg testout.jpg < n.tmp
+	comp testimg.ppm testoutp.ppm < n.tmp
+	comp testimgp.jpg testoutp.jpg < n.tmp
+	comp testorig.jpg testoutt.jpg < n.tmp
+	del n.tmp
+!endif
+
+
+jcapimin.obj: jcapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcapistd.obj: jcapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccoefct.obj: jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jccolor.obj: jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcdctmgr.obj: jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jchuff.obj: jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcinit.obj: jcinit.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmainct.obj: jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmarker.obj: jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcmaster.obj: jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcomapi.obj: jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcparam.obj: jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcphuff.obj: jcphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jchuff.h
+jcprepct.obj: jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jcsample.obj: jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jctrans.obj: jctrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapimin.obj: jdapimin.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdapistd.obj: jdapistd.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdatadst.obj: jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdatasrc.obj: jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h
+jdcoefct.obj: jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdcolor.obj: jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jddctmgr.obj: jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jdhuff.obj: jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdinput.obj: jdinput.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmainct.obj: jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmarker.obj: jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmaster.obj: jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdmerge.obj: jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdphuff.obj: jdphuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdhuff.h
+jdpostct.obj: jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdsample.obj: jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jdtrans.obj: jdtrans.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jerror.obj: jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h
+jfdctflt.obj: jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctfst.obj: jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jfdctint.obj: jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctflt.obj: jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctfst.obj: jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctint.obj: jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jidctred.obj: jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h
+jquant1.obj: jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jquant2.obj: jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jutils.obj: jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h
+jmemmgr.obj: jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemansi.obj: jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemname.obj: jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemnobs.obj: jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemdos.obj: jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+jmemmac.obj: jmemmac.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h
+cjpeg.obj: cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+djpeg.obj: djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h
+jpegtran.obj: jpegtran.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h transupp.h jversion.h
+rdjpgcom.obj: rdjpgcom.c jinclude.h jconfig.h
+wrjpgcom.obj: wrjpgcom.c jinclude.h jconfig.h
+cdjpeg.obj: cdjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdcolmap.obj: rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdswitch.obj: rdswitch.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+transupp.obj: transupp.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h transupp.h
+rdppm.obj: rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrppm.obj: wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdgif.obj: rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrgif.obj: wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdtarga.obj: rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrtarga.obj: wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdbmp.obj: rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrbmp.obj: wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+rdrle.obj: rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h
+wrrle.obj: wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h

+ 1046 - 0
engine/lib/ljpeg/extras/makelib.ds

@@ -0,0 +1,1046 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+!IF "$(CFG)" == ""
+CFG=jpeg - Win32
+!MESSAGE No configuration specified.  Defaulting to jpeg - Win32.
+!ENDIF 
+
+!IF "$(CFG)" != "jpeg - Win32"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line.  For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "jpeg.mak" CFG="jpeg - Win32"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "jpeg - Win32" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+!ERROR An invalid configuration is specified.
+!ENDIF 
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "jpeg - Win32"
+CPP=cl.exe
+
+!IF  "$(CFG)" == "jpeg - Win32"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\jpeg.lib"
+
+CLEAN : 
+	-@erase "$(INTDIR)\jcapimin.obj"
+	-@erase "$(INTDIR)\jcapistd.obj"
+	-@erase "$(INTDIR)\jctrans.obj"
+	-@erase "$(INTDIR)\jcparam.obj"
+	-@erase "$(INTDIR)\jdatadst.obj"
+	-@erase "$(INTDIR)\jcinit.obj"
+	-@erase "$(INTDIR)\jcmaster.obj"
+	-@erase "$(INTDIR)\jcmarker.obj"
+	-@erase "$(INTDIR)\jcmainct.obj"
+	-@erase "$(INTDIR)\jcprepct.obj"
+	-@erase "$(INTDIR)\jccoefct.obj"
+	-@erase "$(INTDIR)\jccolor.obj"
+	-@erase "$(INTDIR)\jcsample.obj"
+	-@erase "$(INTDIR)\jchuff.obj"
+	-@erase "$(INTDIR)\jcphuff.obj"
+	-@erase "$(INTDIR)\jcdctmgr.obj"
+	-@erase "$(INTDIR)\jfdctfst.obj"
+	-@erase "$(INTDIR)\jfdctflt.obj"
+	-@erase "$(INTDIR)\jfdctint.obj"
+	-@erase "$(INTDIR)\jdapimin.obj"
+	-@erase "$(INTDIR)\jdapistd.obj"
+	-@erase "$(INTDIR)\jdtrans.obj"
+	-@erase "$(INTDIR)\jdatasrc.obj"
+	-@erase "$(INTDIR)\jdmaster.obj"
+	-@erase "$(INTDIR)\jdinput.obj"
+	-@erase "$(INTDIR)\jdmarker.obj"
+	-@erase "$(INTDIR)\jdhuff.obj"
+	-@erase "$(INTDIR)\jdphuff.obj"
+	-@erase "$(INTDIR)\jdmainct.obj"
+	-@erase "$(INTDIR)\jdcoefct.obj"
+	-@erase "$(INTDIR)\jdpostct.obj"
+	-@erase "$(INTDIR)\jddctmgr.obj"
+	-@erase "$(INTDIR)\jidctfst.obj"
+	-@erase "$(INTDIR)\jidctflt.obj"
+	-@erase "$(INTDIR)\jidctint.obj"
+	-@erase "$(INTDIR)\jidctred.obj"
+	-@erase "$(INTDIR)\jdsample.obj"
+	-@erase "$(INTDIR)\jdcolor.obj"
+	-@erase "$(INTDIR)\jquant1.obj"
+	-@erase "$(INTDIR)\jquant2.obj"
+	-@erase "$(INTDIR)\jdmerge.obj"
+	-@erase "$(INTDIR)\jcomapi.obj"
+	-@erase "$(INTDIR)\jutils.obj"
+	-@erase "$(INTDIR)\jerror.obj"
+	-@erase "$(INTDIR)\jmemmgr.obj"
+	-@erase "$(INTDIR)\jmemnobs.obj"
+	-@erase "$(OUTDIR)\jpeg.lib"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
+ /Fp"$(INTDIR)/jpeg.pch" /YX /Fo"$(INTDIR)/" /c 
+CPP_OBJS=.\Release/
+CPP_SBRS=.\.
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/jpeg.bsc" 
+BSC32_SBRS= \
+	
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)/jpeg.lib" 
+LIB32_OBJS= \
+	"$(INTDIR)\jcapimin.obj" \
+	"$(INTDIR)\jcapistd.obj" \
+	"$(INTDIR)\jctrans.obj" \
+	"$(INTDIR)\jcparam.obj" \
+	"$(INTDIR)\jdatadst.obj" \
+	"$(INTDIR)\jcinit.obj" \
+	"$(INTDIR)\jcmaster.obj" \
+	"$(INTDIR)\jcmarker.obj" \
+	"$(INTDIR)\jcmainct.obj" \
+	"$(INTDIR)\jcprepct.obj" \
+	"$(INTDIR)\jccoefct.obj" \
+	"$(INTDIR)\jccolor.obj" \
+	"$(INTDIR)\jcsample.obj" \
+	"$(INTDIR)\jchuff.obj" \
+	"$(INTDIR)\jcphuff.obj" \
+	"$(INTDIR)\jcdctmgr.obj" \
+	"$(INTDIR)\jfdctfst.obj" \
+	"$(INTDIR)\jfdctflt.obj" \
+	"$(INTDIR)\jfdctint.obj" \
+	"$(INTDIR)\jdapimin.obj" \
+	"$(INTDIR)\jdapistd.obj" \
+	"$(INTDIR)\jdtrans.obj" \
+	"$(INTDIR)\jdatasrc.obj" \
+	"$(INTDIR)\jdmaster.obj" \
+	"$(INTDIR)\jdinput.obj" \
+	"$(INTDIR)\jdmarker.obj" \
+	"$(INTDIR)\jdhuff.obj" \
+	"$(INTDIR)\jdphuff.obj" \
+	"$(INTDIR)\jdmainct.obj" \
+	"$(INTDIR)\jdcoefct.obj" \
+	"$(INTDIR)\jdpostct.obj" \
+	"$(INTDIR)\jddctmgr.obj" \
+	"$(INTDIR)\jidctfst.obj" \
+	"$(INTDIR)\jidctflt.obj" \
+	"$(INTDIR)\jidctint.obj" \
+	"$(INTDIR)\jidctred.obj" \
+	"$(INTDIR)\jdsample.obj" \
+	"$(INTDIR)\jdcolor.obj" \
+	"$(INTDIR)\jquant1.obj" \
+	"$(INTDIR)\jquant2.obj" \
+	"$(INTDIR)\jdmerge.obj" \
+	"$(INTDIR)\jcomapi.obj" \
+	"$(INTDIR)\jutils.obj" \
+	"$(INTDIR)\jerror.obj" \
+	"$(INTDIR)\jmemmgr.obj" \
+	"$(INTDIR)\jmemnobs.obj"
+
+"$(OUTDIR)\jpeg.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+    $(LIB32) @<<
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF 
+
+.c{$(CPP_OBJS)}.obj:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cpp{$(CPP_OBJS)}.obj:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cxx{$(CPP_OBJS)}.obj:
+   $(CPP) $(CPP_PROJ) $<  
+
+.c{$(CPP_SBRS)}.sbr:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cpp{$(CPP_SBRS)}.sbr:
+   $(CPP) $(CPP_PROJ) $<  
+
+.cxx{$(CPP_SBRS)}.sbr:
+   $(CPP) $(CPP_PROJ) $<  
+
+################################################################################
+# Begin Target
+
+# Name "jpeg - Win32"
+
+!IF  "$(CFG)" == "jpeg - Win32"
+
+!ENDIF 
+
+################################################################################
+# Begin Source File
+
+SOURCE="jcapimin.c"
+DEP_CPP_JCAPI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcapimin.obj" : $(SOURCE) $(DEP_CPP_JCAPI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcapistd.c"
+DEP_CPP_JCAPIS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcapistd.obj" : $(SOURCE) $(DEP_CPP_JCAPIS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jccoefct.c"
+DEP_CPP_JCCOE=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jccoefct.obj" : $(SOURCE) $(DEP_CPP_JCCOE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jccolor.c"
+DEP_CPP_JCCOL=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jccolor.obj" : $(SOURCE) $(DEP_CPP_JCCOL) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcdctmgr.c"
+DEP_CPP_JCDCT=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jcdctmgr.obj" : $(SOURCE) $(DEP_CPP_JCDCT) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jchuff.c"
+DEP_CPP_JCHUF=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jchuff.h"\
+	
+
+"$(INTDIR)\jchuff.obj" : $(SOURCE) $(DEP_CPP_JCHUF) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcinit.c"
+DEP_CPP_JCINI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcinit.obj" : $(SOURCE) $(DEP_CPP_JCINI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcmainct.c"
+DEP_CPP_JCMAI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcmainct.obj" : $(SOURCE) $(DEP_CPP_JCMAI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcmarker.c"
+DEP_CPP_JCMAR=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcmarker.obj" : $(SOURCE) $(DEP_CPP_JCMAR) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcmaster.c"
+DEP_CPP_JCMAS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcmaster.obj" : $(SOURCE) $(DEP_CPP_JCMAS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcomapi.c"
+DEP_CPP_JCOMA=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcomapi.obj" : $(SOURCE) $(DEP_CPP_JCOMA) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcparam.c"
+DEP_CPP_JCPAR=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcparam.obj" : $(SOURCE) $(DEP_CPP_JCPAR) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcphuff.c"
+DEP_CPP_JCPHU=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jchuff.h"\
+	
+
+"$(INTDIR)\jcphuff.obj" : $(SOURCE) $(DEP_CPP_JCPHU) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcprepct.c"
+DEP_CPP_JCPRE=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcprepct.obj" : $(SOURCE) $(DEP_CPP_JCPRE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jcsample.c"
+DEP_CPP_JCSAM=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jcsample.obj" : $(SOURCE) $(DEP_CPP_JCSAM) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jctrans.c"
+DEP_CPP_JCTRA=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jctrans.obj" : $(SOURCE) $(DEP_CPP_JCTRA) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdapimin.c"
+DEP_CPP_JDAPI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdapimin.obj" : $(SOURCE) $(DEP_CPP_JDAPI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdapistd.c"
+DEP_CPP_JDAPIS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdapistd.obj" : $(SOURCE) $(DEP_CPP_JDAPIS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdatadst.c"
+DEP_CPP_JDATA=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdatadst.obj" : $(SOURCE) $(DEP_CPP_JDATA) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdatasrc.c"
+DEP_CPP_JDATAS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdatasrc.obj" : $(SOURCE) $(DEP_CPP_JDATAS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdcoefct.c"
+DEP_CPP_JDCOE=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdcoefct.obj" : $(SOURCE) $(DEP_CPP_JDCOE) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdcolor.c"
+DEP_CPP_JDCOL=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdcolor.obj" : $(SOURCE) $(DEP_CPP_JDCOL) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jddctmgr.c"
+DEP_CPP_JDDCT=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jddctmgr.obj" : $(SOURCE) $(DEP_CPP_JDDCT) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdhuff.c"
+DEP_CPP_JDHUF=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdhuff.h"\
+	
+
+"$(INTDIR)\jdhuff.obj" : $(SOURCE) $(DEP_CPP_JDHUF) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdinput.c"
+DEP_CPP_JDINP=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdinput.obj" : $(SOURCE) $(DEP_CPP_JDINP) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdmainct.c"
+DEP_CPP_JDMAI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdmainct.obj" : $(SOURCE) $(DEP_CPP_JDMAI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdmarker.c"
+DEP_CPP_JDMAR=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdmarker.obj" : $(SOURCE) $(DEP_CPP_JDMAR) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdmaster.c"
+DEP_CPP_JDMAS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdmaster.obj" : $(SOURCE) $(DEP_CPP_JDMAS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdmerge.c"
+DEP_CPP_JDMER=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdmerge.obj" : $(SOURCE) $(DEP_CPP_JDMER) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdphuff.c"
+DEP_CPP_JDPHU=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdhuff.h"\
+	
+
+"$(INTDIR)\jdphuff.obj" : $(SOURCE) $(DEP_CPP_JDPHU) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdpostct.c"
+DEP_CPP_JDPOS=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdpostct.obj" : $(SOURCE) $(DEP_CPP_JDPOS) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdsample.c"
+DEP_CPP_JDSAM=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdsample.obj" : $(SOURCE) $(DEP_CPP_JDSAM) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jdtrans.c"
+DEP_CPP_JDTRA=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jdtrans.obj" : $(SOURCE) $(DEP_CPP_JDTRA) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jerror.c"
+DEP_CPP_JERRO=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jversion.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jerror.obj" : $(SOURCE) $(DEP_CPP_JERRO) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jfdctflt.c"
+DEP_CPP_JFDCT=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jfdctflt.obj" : $(SOURCE) $(DEP_CPP_JFDCT) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jfdctfst.c"
+DEP_CPP_JFDCTF=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jfdctfst.obj" : $(SOURCE) $(DEP_CPP_JFDCTF) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jfdctint.c"
+DEP_CPP_JFDCTI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jfdctint.obj" : $(SOURCE) $(DEP_CPP_JFDCTI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jidctflt.c"
+DEP_CPP_JIDCT=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jidctflt.obj" : $(SOURCE) $(DEP_CPP_JIDCT) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jidctfst.c"
+DEP_CPP_JIDCTF=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jidctfst.obj" : $(SOURCE) $(DEP_CPP_JIDCTF) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jidctint.c"
+DEP_CPP_JIDCTI=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jidctint.obj" : $(SOURCE) $(DEP_CPP_JIDCTI) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jidctred.c"
+DEP_CPP_JIDCTR=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jdct.h"\
+	
+
+"$(INTDIR)\jidctred.obj" : $(SOURCE) $(DEP_CPP_JIDCTR) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jquant1.c"
+DEP_CPP_JQUAN=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jquant1.obj" : $(SOURCE) $(DEP_CPP_JQUAN) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jquant2.c"
+DEP_CPP_JQUANT=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jquant2.obj" : $(SOURCE) $(DEP_CPP_JQUANT) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jutils.c"
+DEP_CPP_JUTIL=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	
+
+"$(INTDIR)\jutils.obj" : $(SOURCE) $(DEP_CPP_JUTIL) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jmemmgr.c"
+DEP_CPP_JMEMM=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jmemsys.h"\
+	
+
+"$(INTDIR)\jmemmgr.obj" : $(SOURCE) $(DEP_CPP_JMEMM) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE="jmemnobs.c"
+DEP_CPP_JMEMN=\
+	"jinclude.h"\
+	"jconfig.h"\
+	"jpeglib.h"\
+	"jmorecfg.h"\
+	"jpegint.h"\
+	"jerror.h"\
+	"jmemsys.h"\
+	
+
+"$(INTDIR)\jmemnobs.obj" : $(SOURCE) $(DEP_CPP_JMEMN) "$(INTDIR)"
+   $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+# End Source File
+# End Target
+# End Project
+################################################################################
+

+ 213 - 0
engine/lib/ljpeg/extras/makeproj.mac

@@ -0,0 +1,213 @@
+--
+-- makeproj.mac
+--
+-- This AppleScript builds Code Warrior PRO Release 2 project files for the
+-- libjpeg library as well as the test programs 'cjpeg', 'djpeg', 'jpegtran'.
+-- (We'd distribute real project files, except they're not text
+-- and would create maintenance headaches.)
+--
+-- The script then compiles and links the library and the test programs.
+-- NOTE: if you haven't already created a 'jconfig.h' file, the script
+-- automatically copies 'jconfig.mac' to 'jconfig.h'.
+--
+-- To use this script, you must have AppleScript 1.1 or later installed
+-- and a suitable AppleScript editor like Script Editor or Script Debugger
+-- (http://www.latenightsw.com). Open this file with your AppleScript
+-- editor and execute the "run" command to build the projects.
+--
+-- Thanks to Dan Sears and Don Agro for this script.
+-- Questions about this script can be addressed to [email protected]
+--
+
+on run
+
+	choose folder with prompt ">>> Select IJG source folder <<<"
+	set ijg_folder to result
+
+	choose folder with prompt ">>> Select MetroWerks folder <<<"
+	set cw_folder to result
+
+	-- if jconfig.h doesn't already exist, copy jconfig.mac
+
+	tell application "Finder"
+		if not (exists file "jconfig.h" of ijg_folder) then
+			duplicate {file "jconfig.mac" of folder ijg_folder}
+			select file "jconfig.mac copy" of folder ijg_folder
+			set name of selection to "jconfig.h"
+		end if
+	end tell
+
+	tell application "CodeWarrior IDE 2.1"
+	  with timeout of 10000 seconds
+
+		-- create libjpeg project
+
+		activate
+		Create Project (ijg_folder as string) & "libjpeg.proj"
+		Set Preferences of panel "Target Settings" to {Target Name:"libjpeg"}
+		Set Preferences of panel "PPC Project" to {File Name:"libjpeg"}
+		Set Preferences of panel "Target Settings" to {Linker:"MacOS PPC Linker"}
+		Set Preferences of panel "PPC Project" to {Project Type:library}
+		Set Preferences of panel "C/C++ Compiler" to {ANSI Strict:true}
+		Set Preferences of panel "C/C++ Compiler" to {Enums Always Ints:true}
+		Set Preferences of panel "PPC Codegen" to {Struct Alignment:PowerPC}
+		Set Preferences of panel "PPC Linker" to {Generate SYM File:false}
+
+		Add Files (ijg_folder as string) & "jcapimin.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcapistd.c" To Segment 1
+		Add Files (ijg_folder as string) & "jctrans.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcparam.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdatadst.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcinit.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcmaster.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcmarker.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcmainct.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcprepct.c" To Segment 1
+		Add Files (ijg_folder as string) & "jccoefct.c" To Segment 1
+		Add Files (ijg_folder as string) & "jccolor.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcsample.c" To Segment 1
+		Add Files (ijg_folder as string) & "jchuff.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcphuff.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcdctmgr.c" To Segment 1
+		Add Files (ijg_folder as string) & "jfdctfst.c" To Segment 1
+		Add Files (ijg_folder as string) & "jfdctflt.c" To Segment 1
+		Add Files (ijg_folder as string) & "jfdctint.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdapimin.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdapistd.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdtrans.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdatasrc.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdmaster.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdinput.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdmarker.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdhuff.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdphuff.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdmainct.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdcoefct.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdpostct.c" To Segment 1
+		Add Files (ijg_folder as string) & "jddctmgr.c" To Segment 1
+		Add Files (ijg_folder as string) & "jidctfst.c" To Segment 1
+		Add Files (ijg_folder as string) & "jidctflt.c" To Segment 1
+		Add Files (ijg_folder as string) & "jidctint.c" To Segment 1
+		Add Files (ijg_folder as string) & "jidctred.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdsample.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdcolor.c" To Segment 1
+		Add Files (ijg_folder as string) & "jquant1.c" To Segment 1
+		Add Files (ijg_folder as string) & "jquant2.c" To Segment 1
+		Add Files (ijg_folder as string) & "jdmerge.c" To Segment 1
+		Add Files (ijg_folder as string) & "jcomapi.c" To Segment 1
+		Add Files (ijg_folder as string) & "jutils.c" To Segment 1
+		Add Files (ijg_folder as string) & "jerror.c" To Segment 1
+		Add Files (ijg_folder as string) & "jmemmgr.c" To Segment 1
+		Add Files (ijg_folder as string) & "jmemmac.c" To Segment 1
+
+		-- compile and link the library
+
+		Make Project
+		Close Project
+
+		-- create cjpeg project
+
+		activate
+		Create Project (ijg_folder as string) & "cjpeg.proj"
+		Set Preferences of panel "Target Settings" to {Target Name:"cjpeg"}
+		Set Preferences of panel "PPC Project" to {File Name:"cjpeg"}
+		Set Preferences of panel "Target Settings" to {Linker:"MacOS PPC Linker"}
+		Set Preferences of panel "C/C++ Compiler" to {ANSI Strict:true}
+		Set Preferences of panel "C/C++ Compiler" to {Enums Always Ints:true}
+		Set Preferences of panel "PPC Codegen" to {Struct Alignment:PowerPC}
+		Set Preferences of panel "PPC Linker" to {Generate SYM File:false}
+
+		Add Files (ijg_folder as string) & "cjpeg.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdppm.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdgif.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdtarga.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdrle.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdbmp.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdswitch.c" To Segment 1
+		Add Files (ijg_folder as string) & "cdjpeg.c" To Segment 1
+
+		Add Files (ijg_folder as string) & "libjpeg" To Segment 2
+
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:Bin:MSL C.PPC.Lib" To Segment 3
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:Bin:MSL SIOUX.PPC.Lib" To Segment 3
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.Lib" To Segment 3
+
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:MacOS Common:InterfaceLib" To Segment 4
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:MacOS Common:MathLib" To Segment 4
+
+		-- compile and link cjpeg
+
+		Make Project
+		Close Project
+
+		-- create djpeg project
+
+		activate
+		Create Project (ijg_folder as string) & "djpeg.proj"
+		Set Preferences of panel "Target Settings" to {Target Name:"djpeg"}
+		Set Preferences of panel "PPC Project" to {File Name:"djpeg"}
+		Set Preferences of panel "Target Settings" to {Linker:"MacOS PPC Linker"}
+		Set Preferences of panel "C/C++ Compiler" to {ANSI Strict:true}
+		Set Preferences of panel "C/C++ Compiler" to {Enums Always Ints:true}
+		Set Preferences of panel "PPC Codegen" to {Struct Alignment:PowerPC}
+		Set Preferences of panel "PPC Linker" to {Generate SYM File:false}
+
+		Add Files (ijg_folder as string) & "djpeg.c" To Segment 1
+		Add Files (ijg_folder as string) & "wrppm.c" To Segment 1
+		Add Files (ijg_folder as string) & "wrgif.c" To Segment 1
+		Add Files (ijg_folder as string) & "wrtarga.c" To Segment 1
+		Add Files (ijg_folder as string) & "wrrle.c" To Segment 1
+		Add Files (ijg_folder as string) & "wrbmp.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdcolmap.c" To Segment 1
+		Add Files (ijg_folder as string) & "cdjpeg.c" To Segment 1
+
+		Add Files (ijg_folder as string) & "libjpeg" To Segment 2
+
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:Bin:MSL C.PPC.Lib" To Segment 3
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:Bin:MSL SIOUX.PPC.Lib" To Segment 3
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.Lib" To Segment 3
+
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:MacOS Common:InterfaceLib" To Segment 4
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:MacOS Common:MathLib" To Segment 4
+
+		-- compile and link djpeg
+
+		Make Project
+		Close Project
+
+		-- create jpegtran project
+
+		activate
+		Create Project (ijg_folder as string) & "jpegtran.proj"
+		Set Preferences of panel "Target Settings" to {Target Name:"jpegtran"}
+		Set Preferences of panel "PPC Project" to {File Name:"jpegtran"}
+		Set Preferences of panel "Target Settings" to {Linker:"MacOS PPC Linker"}
+		Set Preferences of panel "C/C++ Compiler" to {ANSI Strict:true}
+		Set Preferences of panel "C/C++ Compiler" to {Enums Always Ints:true}
+		Set Preferences of panel "PPC Codegen" to {Struct Alignment:PowerPC}
+		Set Preferences of panel "PPC Linker" to {Generate SYM File:false}
+
+		Add Files (ijg_folder as string) & "jpegtran.c" To Segment 1
+		Add Files (ijg_folder as string) & "rdswitch.c" To Segment 1
+		Add Files (ijg_folder as string) & "cdjpeg.c" To Segment 1
+		Add Files (ijg_folder as string) & "transupp.c" To Segment 1
+
+		Add Files (ijg_folder as string) & "libjpeg" To Segment 2
+
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:Bin:MSL C.PPC.Lib" To Segment 3
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:Bin:MSL SIOUX.PPC.Lib" To Segment 3
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.Lib" To Segment 3
+
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:MacOS Common:InterfaceLib" To Segment 4
+		Add Files (cw_folder as string) & "Metrowerks CodeWarrior:MacOS Support:Libraries:MacOS Common:MathLib" To Segment 4
+
+		-- compile and link jpegtran
+
+		Make Project
+		Close Project
+
+		quit
+
+	  end timeout
+	end tell
+end run

+ 70 - 0
engine/lib/ljpeg/extras/makljpeg.st

@@ -0,0 +1,70 @@
+; Project file for Independent JPEG Group's software
+;
+; This project file is for Atari ST/STE/TT systems using Pure C or Turbo C.
+; Thanks to Frank Moehle ([email protected]),
+; Dr. B. Setzepfandt ([email protected]),
+; and Guido Vollbeding ([email protected]).
+;
+; To use this file, rename it to libjpeg.prj.
+; Read installation instructions before trying to make the program!
+;
+;
+;      * * * Output file * * *
+libjpeg.lib
+;
+; * * * COMPILER OPTIONS * * *  
+.C[-P]        ; absolute calls
+.C[-M]        ; and no string merging, folks
+.C[-w-cln]    ; no "constant is long" warnings
+.C[-w-par]    ; no "parameter xxxx unused"
+.C[-w-rch]    ; no "unreachable code"
+.C[-wsig]     ; warn if significant digits may be lost
+.L[-J]        ; link new Obj-format (so we get a library)
+=
+; * * * * List of modules * * * * 
+jcapimin.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcapistd.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jccoefct.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jccolor.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcdctmgr.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jchuff.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jchuff.h)
+jcinit.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcmainct.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcmarker.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcmaster.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcomapi.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcparam.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcphuff.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jchuff.h)
+jcprepct.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jcsample.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jctrans.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdapimin.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdapistd.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdatadst.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h)
+jdatasrc.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h)
+jdcoefct.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdcolor.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jddctmgr.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jdhuff.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdhuff.h)
+jdinput.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdmainct.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdmarker.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdmaster.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdmerge.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdphuff.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdhuff.h)
+jdpostct.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdsample.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jdtrans.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jerror.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jversion.h,jerror.h)
+jfdctflt.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jfdctfst.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jfdctint.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jidctflt.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jidctfst.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jidctint.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jidctred.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jdct.h)
+jquant1.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jquant2.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jutils.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h)
+jmemmgr.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jmemsys.h)
+jmemansi.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,jmemsys.h)

+ 32 - 0
engine/lib/ljpeg/extras/maktjpeg.st

@@ -0,0 +1,32 @@
+; Project file for Independent JPEG Group's software
+;
+; This project file is for Atari ST/STE/TT systems using Pure C or Turbo C.
+; Thanks to Frank Moehle ([email protected]),
+; Dr. B. Setzepfandt ([email protected]),
+; and Guido Vollbeding ([email protected]).
+;
+; To use this file, rename it to jpegtran.prj.
+; If you are using Turbo C, change filenames beginning with "pc..." to "tc..."
+; Read installation instructions before trying to make the program!
+;
+;
+;      * * * Output file * * *
+jpegtran.ttp
+;
+; * * * COMPILER OPTIONS * * *  
+.C[-P]        ; absolute calls
+.C[-M]        ; and no string merging, folks
+.C[-w-cln]    ; no "constant is long" warnings
+.C[-w-par]    ; no "parameter xxxx unused"
+.C[-w-rch]    ; no "unreachable code"
+.C[-wsig]     ; warn if significant digits may be lost
+=
+; * * * * List of modules * * * * 
+pcstart.o
+jpegtran.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h,transupp.h,jversion.h)
+cdjpeg.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+rdswitch.c	(cdjpeg.h,jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jerror.h,cderror.h)
+transupp.c	(jinclude.h,jconfig.h,jpeglib.h,jmorecfg.h,jpegint.h,jerror.h,transupp.h)
+libjpeg.lib        ; built by libjpeg.prj
+pcstdlib.lib       ; standard library
+pcextlib.lib       ; extended library

+ 439 - 0
engine/lib/ljpeg/extras/rdbmp.c

@@ -0,0 +1,439 @@
+/*
+ * rdbmp.c
+ *
+ * Copyright (C) 1994-1996, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains routines to read input images in Microsoft "BMP"
+ * format (MS Windows 3.x, OS/2 1.x, and OS/2 2.x flavors).
+ * Currently, only 8-bit and 24-bit images are supported, not 1-bit or
+ * 4-bit (feeding such low-depth images into JPEG would be silly anyway).
+ * Also, we don't support RLE-compressed files.
+ *
+ * These routines may need modification for non-Unix environments or
+ * specialized applications.  As they stand, they assume input from
+ * an ordinary stdio stream.  They further assume that reading begins
+ * at the start of the file; start_input may need work if the
+ * user interface has already read some data (e.g., to determine that
+ * the file is indeed BMP format).
+ *
+ * This code contributed by James Arthur Boucher.
+ */
+
+#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
+
+#ifdef BMP_SUPPORTED
+
+
+/* Macros to deal with unsigned chars as efficiently as compiler allows */
+
+#ifdef HAVE_UNSIGNED_CHAR
+typedef unsigned char U_CHAR;
+#define UCH(x)	((int) (x))
+#else /* !HAVE_UNSIGNED_CHAR */
+#ifdef CHAR_IS_UNSIGNED
+typedef char U_CHAR;
+#define UCH(x)	((int) (x))
+#else
+typedef char U_CHAR;
+#define UCH(x)	((int) (x) & 0xFF)
+#endif
+#endif /* HAVE_UNSIGNED_CHAR */
+
+
+#define	ReadOK(file,buffer,len)	(JFREAD(file,buffer,len) == ((size_t) (len)))
+
+
+/* Private version of data source object */
+
+typedef struct _bmp_source_struct * bmp_source_ptr;
+
+typedef struct _bmp_source_struct {
+  struct cjpeg_source_struct pub; /* public fields */
+
+  j_compress_ptr cinfo;		/* back link saves passing separate parm */
+
+  JSAMPARRAY colormap;		/* BMP colormap (converted to my format) */
+
+  jvirt_sarray_ptr whole_image;	/* Needed to reverse row order */
+  JDIMENSION source_row;	/* Current source row number */
+  JDIMENSION row_width;		/* Physical width of scanlines in file */
+
+  int bits_per_pixel;		/* remembers 8- or 24-bit format */
+} bmp_source_struct;
+
+
+LOCAL(int)
+read_byte (bmp_source_ptr sinfo)
+/* Read next byte from BMP file */
+{
+  register FILE *infile = sinfo->pub.input_file;
+  register int c;
+
+  if ((c = getc(infile)) == EOF)
+    ERREXIT(sinfo->cinfo, JERR_INPUT_EOF);
+  return c;
+}
+
+
+LOCAL(void)
+read_colormap (bmp_source_ptr sinfo, int cmaplen, int mapentrysize)
+/* Read the colormap from a BMP file */
+{
+  int i;
+
+  switch (mapentrysize) {
+  case 3:
+    /* BGR format (occurs in OS/2 files) */
+    for (i = 0; i < cmaplen; i++) {
+      sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
+      sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
+      sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
+    }
+    break;
+  case 4:
+    /* BGR0 format (occurs in MS Windows files) */
+    for (i = 0; i < cmaplen; i++) {
+      sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
+      sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
+      sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
+      (void) read_byte(sinfo);
+    }
+    break;
+  default:
+    ERREXIT(sinfo->cinfo, JERR_BMP_BADCMAP);
+    break;
+  }
+}
+
+
+/*
+ * Read one row of pixels.
+ * The image has been read into the whole_image array, but is otherwise
+ * unprocessed.  We must read it out in top-to-bottom row order, and if
+ * it is an 8-bit image, we must expand colormapped pixels to 24bit format.
+ */
+
+METHODDEF(JDIMENSION)
+get_8bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
+/* This version is for reading 8-bit colormap indexes */
+{
+  bmp_source_ptr source = (bmp_source_ptr) sinfo;
+  register JSAMPARRAY colormap = source->colormap;
+  JSAMPARRAY image_ptr;
+  register int t;
+  register JSAMPROW inptr, outptr;
+  register JDIMENSION col;
+
+  /* Fetch next row from virtual array */
+  source->source_row--;
+  image_ptr = (*cinfo->mem->access_virt_sarray)
+    ((j_common_ptr) cinfo, source->whole_image,
+     source->source_row, (JDIMENSION) 1, FALSE);
+
+  /* Expand the colormap indexes to real data */
+  inptr = image_ptr[0];
+  outptr = source->pub.buffer[0];
+  for (col = cinfo->image_width; col > 0; col--) {
+    t = GETJSAMPLE(*inptr++);
+    *outptr++ = colormap[0][t];	/* can omit GETJSAMPLE() safely */
+    *outptr++ = colormap[1][t];
+    *outptr++ = colormap[2][t];
+  }
+
+  return 1;
+}
+
+
+METHODDEF(JDIMENSION)
+get_24bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
+/* This version is for reading 24-bit pixels */
+{
+  bmp_source_ptr source = (bmp_source_ptr) sinfo;
+  JSAMPARRAY image_ptr;
+  register JSAMPROW inptr, outptr;
+  register JDIMENSION col;
+
+  /* Fetch next row from virtual array */
+  source->source_row--;
+  image_ptr = (*cinfo->mem->access_virt_sarray)
+    ((j_common_ptr) cinfo, source->whole_image,
+     source->source_row, (JDIMENSION) 1, FALSE);
+
+  /* Transfer data.  Note source values are in BGR order
+   * (even though Microsoft's own documents say the opposite).
+   */
+  inptr = image_ptr[0];
+  outptr = source->pub.buffer[0];
+  for (col = cinfo->image_width; col > 0; col--) {
+    outptr[2] = *inptr++;	/* can omit GETJSAMPLE() safely */
+    outptr[1] = *inptr++;
+    outptr[0] = *inptr++;
+    outptr += 3;
+  }
+
+  return 1;
+}
+
+
+/*
+ * This method loads the image into whole_image during the first call on
+ * get_pixel_rows.  The get_pixel_rows pointer is then adjusted to call
+ * get_8bit_row or get_24bit_row on subsequent calls.
+ */
+
+METHODDEF(JDIMENSION)
+preload_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
+{
+  bmp_source_ptr source = (bmp_source_ptr) sinfo;
+  register FILE *infile = source->pub.input_file;
+  register int c;
+  register JSAMPROW out_ptr;
+  JSAMPARRAY image_ptr;
+  JDIMENSION row, col;
+  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
+
+  /* Read the data into a virtual array in input-file row order. */
+  for (row = 0; row < cinfo->image_height; row++) {
+    if (progress != NULL) {
+      progress->pub.pass_counter = (long) row;
+      progress->pub.pass_limit = (long) cinfo->image_height;
+      (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
+    }
+    image_ptr = (*cinfo->mem->access_virt_sarray)
+      ((j_common_ptr) cinfo, source->whole_image,
+       row, (JDIMENSION) 1, TRUE);
+    out_ptr = image_ptr[0];
+    for (col = source->row_width; col > 0; col--) {
+      /* inline copy of read_byte() for speed */
+      if ((c = getc(infile)) == EOF)
+	ERREXIT(cinfo, JERR_INPUT_EOF);
+      *out_ptr++ = (JSAMPLE) c;
+    }
+  }
+  if (progress != NULL)
+    progress->completed_extra_passes++;
+
+  /* Set up to read from the virtual array in top-to-bottom order */
+  switch (source->bits_per_pixel) {
+  case 8:
+    source->pub.get_pixel_rows = get_8bit_row;
+    break;
+  case 24:
+    source->pub.get_pixel_rows = get_24bit_row;
+    break;
+  default:
+    ERREXIT(cinfo, JERR_BMP_BADDEPTH);
+  }
+  source->source_row = cinfo->image_height;
+
+  /* And read the first row */
+  return (*source->pub.get_pixel_rows) (cinfo, sinfo);
+}
+
+
+/*
+ * Read the file header; return image size and component count.
+ */
+
+METHODDEF(void)
+start_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
+{
+  bmp_source_ptr source = (bmp_source_ptr) sinfo;
+  U_CHAR bmpfileheader[14];
+  U_CHAR bmpinfoheader[64];
+#define GET_2B(array,offset)  ((unsigned int) UCH(array[offset]) + \
+			       (((unsigned int) UCH(array[offset+1])) << 8))
+#define GET_4B(array,offset)  ((INT32) UCH(array[offset]) + \
+			       (((INT32) UCH(array[offset+1])) << 8) + \
+			       (((INT32) UCH(array[offset+2])) << 16) + \
+			       (((INT32) UCH(array[offset+3])) << 24))
+  INT32 bfOffBits;
+  INT32 headerSize;
+  INT32 biWidth = 0;		/* initialize to avoid compiler warning */
+  INT32 biHeight = 0;
+  unsigned int biPlanes;
+  INT32 biCompression;
+  INT32 biXPelsPerMeter,biYPelsPerMeter;
+  INT32 biClrUsed = 0;
+  int mapentrysize = 0;		/* 0 indicates no colormap */
+  INT32 bPad;
+  JDIMENSION row_width;
+
+  /* Read and verify the bitmap file header */
+  if (! ReadOK(source->pub.input_file, bmpfileheader, 14))
+    ERREXIT(cinfo, JERR_INPUT_EOF);
+  if (GET_2B(bmpfileheader,0) != 0x4D42) /* 'BM' */
+    ERREXIT(cinfo, JERR_BMP_NOT);
+  bfOffBits = (INT32) GET_4B(bmpfileheader,10);
+  /* We ignore the remaining fileheader fields */
+
+  /* The infoheader might be 12 bytes (OS/2 1.x), 40 bytes (Windows),
+   * or 64 bytes (OS/2 2.x).  Check the first 4 bytes to find out which.
+   */
+  if (! ReadOK(source->pub.input_file, bmpinfoheader, 4))
+    ERREXIT(cinfo, JERR_INPUT_EOF);
+  headerSize = (INT32) GET_4B(bmpinfoheader,0);
+  if (headerSize < 12 || headerSize > 64)
+    ERREXIT(cinfo, JERR_BMP_BADHEADER);
+  if (! ReadOK(source->pub.input_file, bmpinfoheader+4, headerSize-4))
+    ERREXIT(cinfo, JERR_INPUT_EOF);
+
+  switch ((int) headerSize) {
+  case 12:
+    /* Decode OS/2 1.x header (Microsoft calls this a BITMAPCOREHEADER) */
+    biWidth = (INT32) GET_2B(bmpinfoheader,4);
+    biHeight = (INT32) GET_2B(bmpinfoheader,6);
+    biPlanes = GET_2B(bmpinfoheader,8);
+    source->bits_per_pixel = (int) GET_2B(bmpinfoheader,10);
+
+    switch (source->bits_per_pixel) {
+    case 8:			/* colormapped image */
+      mapentrysize = 3;		/* OS/2 uses RGBTRIPLE colormap */
+      TRACEMS2(cinfo, 1, JTRC_BMP_OS2_MAPPED, (int) biWidth, (int) biHeight);
+      break;
+    case 24:			/* RGB image */
+      TRACEMS2(cinfo, 1, JTRC_BMP_OS2, (int) biWidth, (int) biHeight);
+      break;
+    default:
+      ERREXIT(cinfo, JERR_BMP_BADDEPTH);
+      break;
+    }
+    if (biPlanes != 1)
+      ERREXIT(cinfo, JERR_BMP_BADPLANES);
+    break;
+  case 40:
+  case 64:
+    /* Decode Windows 3.x header (Microsoft calls this a BITMAPINFOHEADER) */
+    /* or OS/2 2.x header, which has additional fields that we ignore */
+    biWidth = GET_4B(bmpinfoheader,4);
+    biHeight = GET_4B(bmpinfoheader,8);
+    biPlanes = GET_2B(bmpinfoheader,12);
+    source->bits_per_pixel = (int) GET_2B(bmpinfoheader,14);
+    biCompression = GET_4B(bmpinfoheader,16);
+    biXPelsPerMeter = GET_4B(bmpinfoheader,24);
+    biYPelsPerMeter = GET_4B(bmpinfoheader,28);
+    biClrUsed = GET_4B(bmpinfoheader,32);
+    /* biSizeImage, biClrImportant fields are ignored */
+
+    switch (source->bits_per_pixel) {
+    case 8:			/* colormapped image */
+      mapentrysize = 4;		/* Windows uses RGBQUAD colormap */
+      TRACEMS2(cinfo, 1, JTRC_BMP_MAPPED, (int) biWidth, (int) biHeight);
+      break;
+    case 24:			/* RGB image */
+      TRACEMS2(cinfo, 1, JTRC_BMP, (int) biWidth, (int) biHeight);
+      break;
+    default:
+      ERREXIT(cinfo, JERR_BMP_BADDEPTH);
+      break;
+    }
+    if (biPlanes != 1)
+      ERREXIT(cinfo, JERR_BMP_BADPLANES);
+    if (biCompression != 0)
+      ERREXIT(cinfo, JERR_BMP_COMPRESSED);
+
+    if (biXPelsPerMeter > 0 && biYPelsPerMeter > 0) {
+      /* Set JFIF density parameters from the BMP data */
+      cinfo->X_density = (UINT16) (biXPelsPerMeter/100); /* 100 cm per meter */
+      cinfo->Y_density = (UINT16) (biYPelsPerMeter/100);
+      cinfo->density_unit = 2;	/* dots/cm */
+    }
+    break;
+  default:
+    ERREXIT(cinfo, JERR_BMP_BADHEADER);
+    break;
+  }
+
+  /* Compute distance to bitmap data --- will adjust for colormap below */
+  bPad = bfOffBits - (headerSize + 14);
+
+  /* Read the colormap, if any */
+  if (mapentrysize > 0) {
+    if (biClrUsed <= 0)
+      biClrUsed = 256;		/* assume it's 256 */
+    else if (biClrUsed > 256)
+      ERREXIT(cinfo, JERR_BMP_BADCMAP);
+    /* Allocate space to store the colormap */
+    source->colormap = (*cinfo->mem->alloc_sarray)
+      ((j_common_ptr) cinfo, JPOOL_IMAGE,
+       (JDIMENSION) biClrUsed, (JDIMENSION) 3);
+    /* and read it from the file */
+    read_colormap(source, (int) biClrUsed, mapentrysize);
+    /* account for size of colormap */
+    bPad -= biClrUsed * mapentrysize;
+  }
+
+  /* Skip any remaining pad bytes */
+  if (bPad < 0)			/* incorrect bfOffBits value? */
+    ERREXIT(cinfo, JERR_BMP_BADHEADER);
+  while (--bPad >= 0) {
+    (void) read_byte(source);
+  }
+
+  /* Compute row width in file, including padding to 4-byte boundary */
+  if (source->bits_per_pixel == 24)
+    row_width = (JDIMENSION) (biWidth * 3);
+  else
+    row_width = (JDIMENSION) biWidth;
+  while ((row_width & 3) != 0) row_width++;
+  source->row_width = row_width;
+
+  /* Allocate space for inversion array, prepare for preload pass */
+  source->whole_image = (*cinfo->mem->request_virt_sarray)
+    ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
+     row_width, (JDIMENSION) biHeight, (JDIMENSION) 1);
+  source->pub.get_pixel_rows = preload_image;
+  if (cinfo->progress != NULL) {
+    cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
+    progress->total_extra_passes++; /* count file input as separate pass */
+  }
+
+  /* Allocate one-row buffer for returned data */
+  source->pub.buffer = (*cinfo->mem->alloc_sarray)
+    ((j_common_ptr) cinfo, JPOOL_IMAGE,
+     (JDIMENSION) (biWidth * 3), (JDIMENSION) 1);
+  source->pub.buffer_height = 1;
+
+  cinfo->in_color_space = JCS_RGB;
+  cinfo->input_components = 3;
+  cinfo->data_precision = 8;
+  cinfo->image_width = (JDIMENSION) biWidth;
+  cinfo->image_height = (JDIMENSION) biHeight;
+}
+
+
+/*
+ * Finish up at the end of the file.
+ */
+
+METHODDEF(void)
+finish_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
+{
+  /* no work */
+}
+
+
+/*
+ * The module selection routine for BMP format input.
+ */
+
+GLOBAL(cjpeg_source_ptr)
+jinit_read_bmp (j_compress_ptr cinfo)
+{
+  bmp_source_ptr source;
+
+  /* Create module interface object */
+  source = (bmp_source_ptr)
+      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
+				  SIZEOF(bmp_source_struct));
+  source->cinfo = cinfo;	/* make back link for subroutines */
+  /* Fill in method ptrs, except get_pixel_rows which start_input sets */
+  source->pub.start_input = start_input_bmp;
+  source->pub.finish_input = finish_input_bmp;
+
+  return (cjpeg_source_ptr) source;
+}
+
+#endif /* BMP_SUPPORTED */

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików