<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hunting+Hare</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hunting+Hare"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Hunting_Hare"/>
	<updated>2026-05-10T20:08:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Capabilities&amp;diff=44674</id>
		<title>Talk:Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Capabilities&amp;diff=44674"/>
		<updated>2007-12-13T14:56:18Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Request more info re: capabilities and what operations rely on them&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There isn&#039;t enough documentation here.&lt;br /&gt;
&lt;br /&gt;
What capabilities exist?  What capabilities can be requested?  What operations depend on a capability being requested/active?  [[User:Hunting Hare|Hunting Hare]] 06:56, 13 December 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User_talk:Tedd_Maa/stand-alone_script_engine&amp;diff=40051</id>
		<title>User talk:Tedd Maa/stand-alone script engine</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User_talk:Tedd_Maa/stand-alone_script_engine&amp;diff=40051"/>
		<updated>2007-11-11T02:55:33Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Reminding of the need to apply the same rigorous forms of validation to server-remote ScriptEngine connections as to scripts running server-local.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Although this is interesting Tedd, it doesn&#039;t seem to keep in mind one very fundamental issue:  computations at the server end have limited scalability, relative to any of the pressure points on scaling, which all derive from population pressure in one way or another.  No matter how we partition computing resources server-side, there will always be a key computational workload there for physics etc, so in general there is only limited power left over for ambitious scripting.  While we&#039;d all like high-powered in-world scripting, that&#039;s just not going to happen as long as the only available computing horsepower for scripting is server-side.&lt;br /&gt;
&lt;br /&gt;
* Although it&#039;s not going to happen for a long time, relatively unlimited scripting power is ultimately going to have to come by harnessing the clients, through server-side orchestration of partitioned tasks distributed very dynamically across all connected participants.  This is the &#039;&#039;&#039;only&#039;&#039;&#039; source of computing power that both scales with population and offers massive resource per leaf node.  What&#039;s more, with multicore CPUs everywhere (and with very little work for them to do because desktop apps tend not to be structured for parallelism), this is one resource that has a very bright future.&lt;br /&gt;
&lt;br /&gt;
* So, while you offer some interesting things to think about here, if you want to look ahead to a future of high-powered server-side scripting, you really need to think about workload offloading too.  (That&#039;s still &amp;quot;server-side scripting&amp;quot;, even though the computations are distributed and run client-side, because such computations can never under any circumstances affect the client state;  &amp;quot;client-side scripting&amp;quot; is a different matter altogether.) --[[User:Morgaine Dinova|Morgaine Dinova]] 04:18, 15 October 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[User:Tedd Maa|Tedd Maa]]: In reply to the points by Morgaine.&lt;br /&gt;
&lt;br /&gt;
* There are limitations on the server side, yes. But this does not mean we should purposely design the scripting system in a bad way. It is up to the server itself to scale physics well. But the script engine is not limited to controlling physical objects. It can be clouds, smoke or even gameplay rules that don&#039;t even exist as an object in the world.&lt;br /&gt;
&lt;br /&gt;
* The whole point of this design is to be able to run scripts from anywhere. For example from the client. But running it from the client breaks persistency in the world. When user logs off, objects disappear. So I imagine people who want to run their own script engine having a shell somewhere like we did back in the 90&#039;s with good old bots and bouncers on IRC. But your script can very well be bound to a script engine embedded in your SL viewer for example, no problem. The region server doesn&#039;t need to discriminate on who is running the script server if server admin doesn&#039;t want it to.&lt;br /&gt;
&lt;br /&gt;
* It is still &#039;&#039;called&#039;&#039; server-side scripting. But one single script (or multiple scripts) can be any program in any programming language running on any number of computers on any number of different operating systems and CPUs anywhere in the world. As long as the region has only ONE endpoint to speak to it does not discriminate on implementation, operating system, number of computers involved in computation, etc. This is the whole essence of my plan. I will look through the document and see if maybe I didn&#039;t communicate that clearly enough. Its still just a first draft.&lt;br /&gt;
&lt;br /&gt;
[[User:Tedd Maa|Tedd Maa]] 20071015 16:40 UTC/GMT+1&lt;br /&gt;
&lt;br /&gt;
== Object Orientated Program Environment ==&lt;br /&gt;
&lt;br /&gt;
Most traditional OOP languages fall short of the object orientated design. That is they call themselves a object-oriented program language, but they are not much of a object orientated approach outside of the language itself. Notice how I use &amp;quot;oriented&amp;quot; and &amp;quot;orientated.&amp;quot; One leans towards the paradigm from the outside and the other is centered in the entire paradigm and works outward. At first glance of the your plan I heard a familiar tune, and it matches with the object-oriented program languages. Such languages have been quite a step in the industry, but they have been pushed out to market before their maturity.&lt;br /&gt;
&lt;br /&gt;
As you can see from my post about &amp;quot;[[User:Dzonatas Sol|Client Script &amp;amp; Persistent Data Object]],&amp;quot; one of the ideas here is similar. In fact, the entire concept you have presented so far can be summed up underneath paravirtual machines. On that point, to call this &amp;quot;Tedds stand-alone script engine&amp;quot; may do some injustice to those who might want to contribute to the development of this project.&lt;br /&gt;
&lt;br /&gt;
Another point, the security has to go much deeper than what I see talked about in the article. To offset the execute state to a different physical area is not enough, for example. We need to be able to run arbitrary code in arbitrary locations.&lt;br /&gt;
&lt;br /&gt;
I stay focused on the object-orientated environments, and I hope you follow if you continue such motives to rewrite the engine. [[User:Dzonatas Sol|Dzonatas Sol]] 12:31, 15 October 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
good point on the &amp;quot;Tedds stand-alone script engine&amp;quot; - wasn&#039;t meant to name it at all, was meant as &amp;quot;Tedds proposal on ...&amp;quot; or &amp;quot;Tedds discussion on ...&amp;quot;. I will fix that in next revision (hopefully coming in a couple of days).&lt;br /&gt;
&lt;br /&gt;
Security is something I&#039;m still thinking about. I&#039;ll try to get something more about that into next revision.&lt;br /&gt;
(security always comes first, so it will probably dictate some of the details in the design)&lt;br /&gt;
&lt;br /&gt;
[[User:Tedd Maa|Tedd Maa]] 20071016 21:50 UTC/GMT+1&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I&#039;ve got a few things to say, as someone who&#039;s implemented and dealt with scripting under MUDs.  What I&#039;m going to say may fly in the face of what you recognize is true, but it&#039;s important to recognize some of what has been dealt with.&lt;br /&gt;
&lt;br /&gt;
First, there is literally no difference between the effect of running a script on the server itself and the effect of running it somewhere else.  They are functionally and from a security context identical -- which means that you can&#039;t state that simply running it on a different server, or in a different process, or anything is going to improve security.  The reason why is because the server must trust the script-RPC input enough to allow the state changes that the script requests to occur within its (authoritative) view of the world.&lt;br /&gt;
&lt;br /&gt;
This means that the effects that the ScriptEngine is requesting must be granted privilege if the Script running in the ScriptEngine is to effect any changes in the persistent world.&lt;br /&gt;
&lt;br /&gt;
The only effective difference between running the ScriptEngine on the server and running it on the client (or somewhere else referenced by the client) is that the ScriptEngine running on the server can be vetted as to its possible impact by the server operator.  It&#039;s MUCH harder to verify a new protocol that submits requested changes than to verify source that implements the protocol.  (If the sim is running on a low-powered machine, the external scripting engine could conceivably overwhelm it with events unless it&#039;s carefully throttled.)&lt;br /&gt;
&lt;br /&gt;
A local ScriptEngine can enforce requirements, can enforce how quickly a script is allowed to execute its next instructions, and can much more easily manage things.  As well, a local ScriptEngine can enforce its own security boundary by preventing access to P/Invoke or any of a number of other dangerous functions and objects.  It can also verify the code the same way that the CLR does to ensure that it doesn&#039;t call anything that isn&#039;t acceptable.  A local ScriptEngine could accept CLR bytecode (though it doesn&#039;t have to).  It could accept things written in LSL1 or anything, compile them to MSIL, and run them.&lt;br /&gt;
&lt;br /&gt;
Technically, a server operator doesn&#039;t need to allow any external ScriptEngines -- and I would argue that not allowing it is the most secure option (to minimize attack surface).  Thus, I&#039;m going to make a new proposal...&lt;br /&gt;
&lt;br /&gt;
Every grid&#039;s operation staff (even if it&#039;s a staff of one) is god, within that grid.  They rather have to be (by definition, they&#039;re the operations staff that implements the grid policy).  That means that they must be able to grant or restrict access to any function of the grid&#039;s implementing servers, including server scripting, server-remote scripting, and each and every function that could be called.  They need to be able to limit the number of instructions that a script can run, they need to be able to implement their own concepts of &amp;quot;ownership&amp;quot; and &amp;quot;permissions&amp;quot;... and as such, they need to be able to have a death-grip on the code that they allow to run.  (This means that they must be able to have more granularity than simply saying &#039;llPushObject not allowed in this parcel&#039;.)&lt;br /&gt;
&lt;br /&gt;
So, I propose a privilege-based and privilege-mandated system.  Allowing users to run scripts on the server is fine -- as long as you don&#039;t try to retrofit a security policy onto a code base that doesn&#039;t support it.  The initial design must include the means to grant or deny permissions on an individual function level -- and must also include the means to create &amp;quot;groups&amp;quot; of permissions that can be granted in toto to a user.  Another important design requirement is that a single function can belong to more than one group -- so that (for example) functions which are string handling utilities can be assigned to both the &#039;stringhandling&#039; and the &#039;remoteHTTP&#039; groups.&lt;br /&gt;
&lt;br /&gt;
All decision on whether to grant the privilege needs to be made before the function does any processing -- which means that every function must, before anything else, check its authority to run that command.  (This is the same thing that would be necessary for any implementation of server-remote ScriptEngines, on each and every message.)  There are ways to optimize this, of course -- keeping a hash of functions that have been verified as having been given permission to run so the security manager doesn&#039;t need to do much more time-consuming privilege lookups on every function call is a good way of doing it -- but it still must be done.&lt;br /&gt;
&lt;br /&gt;
This is not to say that the idea of a remote ScriptServer is bad -- it would be very useful, for those who would otherwise run afoul of (say) XMLRPC connection throttling, they can just do it from their own system and not worry about it.  It just has to be done very carefully, and the incoming request validator needs to operate with the same level of rigorous input validation that would otherwise be applied to user scripts running on the server.&lt;br /&gt;
&lt;br /&gt;
(And as for &#039;persistence&#039; in the world... the only time you can have persistence is if the grid operator agrees to do everything it can to make the world actually persistent, including accept uploads to its asset server and require no state to be saved on the client.  I&#039;m a very big fan of allowing (or, in some contexts, requiring) the user to &#039;pay his own way&#039; in terms of asset storage -- if the user stops participating in a world, eventually the data expires from the grid&#039;s asset cache and stops showing up in the world until the next time the user logs in and retransfers the assets from local to gridcache.  Because it wouldn&#039;t take up assetserver space indefinitely, it would also reduce the need to charge L$ for texture and animation uploads.  Unless that&#039;s a very large part of LL&#039;s reduction of L$ in the economy, it&#039;s not necessary and it only provides a barrier to entry.  Play for free, but if you want to create?  You gotta pay.)&lt;br /&gt;
&lt;br /&gt;
[[User:Hunting Hare|Hunting Hare]] 18:55, 10 November 2007 (PST)&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Compiling_the_viewer_(Mac_OS_X)&amp;diff=17072</id>
		<title>Talk:Compiling the viewer (Mac OS X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Compiling_the_viewer_(Mac_OS_X)&amp;diff=17072"/>
		<updated>2007-04-09T19:06:03Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: /* PLEASE NOTE */ Added info about GCC 3.3 not working for Intel-based Macs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Open Source Talk Page}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PLEASE NOTE==&lt;br /&gt;
&lt;br /&gt;
When you report any problem, PLEASE post your OS version and version of Xcode.  This will help identify the environments that have issues, and allow the creation of workarounds specific to those environments.  Thank you!  [[User:Hunting Hare|Hunting Hare]] 01:36, 15 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
In addition, please post the name and version number of what you&#039;re compiling.  This helps us figure out if there are problems introduced from an older version to a newer version.&lt;br /&gt;
&lt;br /&gt;
GCC 3.3 DOES NOT TARGET INTEL-BASED MACS.  If you are targeting an Intel-based Mac, you MUST use GCC 4.0.  There are known incompatibilities between gcc 3.3 and gcc 4.0 (some code that compiles on 3.3 won&#039;t compile under 4.0).  Apple recommends that all projects migrate to gcc 4.0 as soon as practical, for PPC as well as Intel architectures.&lt;br /&gt;
&lt;br /&gt;
At this time, if you use the precompiled libraries package, the macview source can compile and be linked using gcc 4.0.  I have not verified the build processes for all of the dependent libraries yet.&lt;br /&gt;
&lt;br /&gt;
Thank you for your attention!  [[User:Hunting Hare|Hunting Hare]] 12:06, 9 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
==Ordering of main and proprietary material installs ==&lt;br /&gt;
I suggest the section &amp;quot;Installing Proprietary Libraries&amp;quot; should come after the sections &amp;quot;Installing Libraries&amp;quot; and &amp;quot;Installing Libraries From Scratch&amp;quot;, as the instructions on fmod installation require that the main directory structure has been established.  I&#039;m just looking at the material for the first time, so I won&#039;t do the move myself in case I&#039;m missing something.  --[[User:Bram Nogah|Bram Nogah]] 15:59, 17 February 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
I thought the same thing also, I left the &amp;quot;Installing Proprietary Libraries&amp;quot; before &amp;quot;Installing Libraries as like an intro, then I moved the &amp;quot;Fmod&amp;quot; section after the section &amp;quot;Installing Libraries From Scratch&amp;quot; and before the &amp;quot;Boost&amp;quot; section --[[User:Mokelembembe Mokeev|Mokelembembe Mokeev]] 04:53, 7 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
==Mozilla==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a bit confused about the Mozilla lib dependency--perhaps if someone knew what was actually required to be compiled (even if it would be somewhat difficult) we could at least try. :-) Thanks. [[User:David Frantisek|David Frantisek]] 19:55, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
In the third step i&#039;m getting a &amp;quot;checking for C compiler default output file name... configure: error: C compiler cannot create executables&amp;quot;. I found out that is because i&#039;m using an intel mac. Switching to GCC 4.0.1 does the trick [[User:Eelke Forder | Eelke Folmer]]&lt;br /&gt;
&lt;br /&gt;
==Problems with directions==&lt;br /&gt;
&lt;br /&gt;
It seems like there are a couple places here where problems are created because of the use of &amp;quot;../..&amp;quot; I&#039;m not all that familiar with use of the terminal, but I think this puts you in your home directory, which is okay as long as that&#039;s the top-level of your project, but not if the top-level is ~/Desktop or somewhere else entirely. [[User:David Frantisek|David Frantisek]] 19:55, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;../.. refers to the parent of the parent folder -- from /Users/yourusername/ , ../.. would refer to the root directory that contains the Users folder.  Remember, Mac OS X has the technological underpinning of BSD UNIX.  If you&#039;re not familiar with the use of the Terminal, then you will likely find a book on using UNIX very helpful.  For reference, the single character ~ refers to your home directory but only if it&#039;s used as the first element of a path specification -- ~/Desktop refers to your Desktop folder.  ~username/ refers to the home directory of username.  [[User:Hunting Hare|Hunting Hare]] 01:36, 15 January 2007 (PST)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XMLRPC==&lt;br /&gt;
- Applied patches as prescribed but after doing the final make I get: &amp;quot;configure: error: libexpat not found make: *** [config.status] Error 1&amp;quot; I can&#039;t compile using GCC 3.3 [[User:Eelke Forder|Eelke Folmer]] GCC 4.0.0 / OSX 10.4.9&lt;br /&gt;
- When I apply patch 3 i get: Hunk #1 succeeded at 120 (offset -1 lines).&lt;br /&gt;
&lt;br /&gt;
- I get same error using gcc 3.3, OS X 10.4.9 PowerPC using the beta-1.14.1.1 code:&lt;br /&gt;
 configure: error: libexpat not found&lt;br /&gt;
 make: *** [config.status] Error 1&lt;br /&gt;
&lt;br /&gt;
Looks like the libexpat* in /tmp/expat/lib need to be copied somewhere but not sure where. I tried copying /tmp/expat/lib/* into /usr/local/lib which seems to get pass the missing libexpat error, but the comes up with error:&lt;br /&gt;
&lt;br /&gt;
 src/Makefile.am: required file `./depcomp&#039; not found&lt;br /&gt;
 make[1]: *** [Makefile.in] Error 1&lt;br /&gt;
 make: *** [all-recursive] Error 1&lt;br /&gt;
&lt;br /&gt;
Open for suggestion, I&#039;m not a C++ person, but want to learn with SL Viewer --[[User:Mokelembembe Mokeev|Mokelembembe Mokeev]] 22:03, 7 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- After typing make, a Warning shows up but keeps compiling, not sure if causing the libexpat not found. PPC 10.4.9, Xcode 2.44.1  using the beta-1.14.1.1 code --[[User:Mokelembembe Mokeev|Mokelembembe Mokeev]] 11:45, 7 April 2007 (PDT)&lt;br /&gt;
 $make&lt;br /&gt;
 cd . &amp;amp;&amp;amp; aclocal&lt;br /&gt;
 cd . &amp;amp;&amp;amp; automake --gnu Makefile&lt;br /&gt;
 cd . &amp;amp;&amp;amp; autoconf&lt;br /&gt;
 /bin/sh ./config.status --recheck&lt;br /&gt;
 running /bin/sh ./configure  --disable-shared --prefix=/tmp/xmlrpc-epi  --no-create --no-recursion&lt;br /&gt;
 checking for a BSD-compatible install... /usr/bin/install -c&lt;br /&gt;
 checking whether build environment is sane... yes&lt;br /&gt;
 /Users/mokele/documents/second_life/Viewer_Code/lindenlib/xmlrpc-epi-0.51/missing: Unknown `--run&#039; option&lt;br /&gt;
 Try `/Users/mokele/documents/second_life/Viewer_Code/lindenlib/xmlrpc-epi-0.51/missing --help&#039; for more information&lt;br /&gt;
 configure: WARNING: `missing&#039; script is too old or missing&lt;br /&gt;
&lt;br /&gt;
== Curl ==&lt;br /&gt;
&lt;br /&gt;
In the download of the SL libs, header files for Curl are included. Is this something that should is also required for a succesful build? Thanks. [[User:David Frantisek|David Frantisek]] 19:57, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
Can&#039;t get CURL to compile, code below of what happens, gcc 3.3, OS X 10.4.9, PPC --[[User:Mokelembembe Mokeev|Mokelembembe Mokeev]] 23:56, 7 April 2007 (PDT) &lt;br /&gt;
&lt;br /&gt;
 checking whether to enable maintainer-specific portions of Makefiles... no&lt;br /&gt;
 checking for a BSD-compatible install... /usr/bin/install -c&lt;br /&gt;
 checking whether build environment is sane... yes&lt;br /&gt;
 checking for gawk... no&lt;br /&gt;
 checking for mawk... no&lt;br /&gt;
 checking for nawk... no&lt;br /&gt;
 checking for awk... awk&lt;br /&gt;
 checking whether make sets $(MAKE)... yes&lt;br /&gt;
 checking for gcc... gcc&lt;br /&gt;
 checking for C compiler default output file name... &lt;br /&gt;
 configure: error: C compiler cannot create executables&lt;br /&gt;
 See `config.log&#039; for more details.&lt;br /&gt;
 make: *** No rule to make target `clean&#039;.  Stop. &lt;br /&gt;
 make: *** No targets specified and no makefile found.  Stop.&lt;br /&gt;
 make: *** No rule to make target `install&#039;.  Stop.&lt;br /&gt;
 checking whether to enable maintainer-specific portions of Makefiles... no&lt;br /&gt;
 checking for sed... /usr/bin/sed&lt;br /&gt;
 checking for ar... ar&lt;br /&gt;
 checking for a BSD-compatible install... /usr/bin/install -c&lt;br /&gt;
 checking whether build environment is sane... yes&lt;br /&gt;
 checking for gawk... no&lt;br /&gt;
 checking for mawk... no&lt;br /&gt;
 checking for nawk... no&lt;br /&gt;
 checking for awk... awk&lt;br /&gt;
 checking whether make sets $(MAKE)... yes&lt;br /&gt;
 checking curl version... 7.16.1&lt;br /&gt;
 checking build system type... powerpc-apple-darwin8.9.0&lt;br /&gt;
 checking host system type... powerpc-apple-darwin8.9.0&lt;br /&gt;
 checking for style of include used by make... GNU&lt;br /&gt;
 checking for gcc... gcc&lt;br /&gt;
 checking for C compiler default output file name... &lt;br /&gt;
 configure: error: C compiler cannot create executables&lt;br /&gt;
 See `config.log&#039; for more details.&lt;br /&gt;
 make: *** No rule to make target `clean&#039;.  Stop.&lt;br /&gt;
 ./configure&lt;br /&gt;
 checking whether to enable maintainer-specific portions of Makefiles... no&lt;br /&gt;
 checking for sed... /usr/bin/sed&lt;br /&gt;
 checking for ar... ar&lt;br /&gt;
 checking for a BSD-compatible install... /usr/bin/install -c&lt;br /&gt;
 checking whether build environment is sane... yes&lt;br /&gt;
 checking for gawk... no&lt;br /&gt;
 checking for mawk... no&lt;br /&gt;
 checking for nawk... no&lt;br /&gt;
 checking for awk... awk&lt;br /&gt;
 checking whether make sets $(MAKE)... yes&lt;br /&gt;
 checking curl version... 7.16.1&lt;br /&gt;
 checking build system type... powerpc-apple-darwin8.9.0&lt;br /&gt;
 checking host system type... powerpc-apple-darwin8.9.0&lt;br /&gt;
 checking for style of include used by make... GNU&lt;br /&gt;
 checking for gcc... gcc&lt;br /&gt;
 checking for C compiler default output file name... &lt;br /&gt;
 configure: error: C compiler cannot create executables&lt;br /&gt;
 See `config.log&#039; for more details. &lt;br /&gt;
 make: *** [all] Error 77 &lt;br /&gt;
 make: *** No rule to make target `install&#039;.&lt;br /&gt;
 cp: /Users/mokele/documents/second_life/viewer_code/lindenlib/curl/build-c-ares/lib/libcares.a: No such file or directory&lt;br /&gt;
 cp: /Users/mokele/documents/second_life/viewer_code/lindenlib/curl/build-curl/lib/libcurl.a: No such file or directory&lt;br /&gt;
 tar: libcares.a: Cannot stat: No such file or directory&lt;br /&gt;
 tar: libllcurl.a: Cannot stat: No such file or directory&lt;br /&gt;
 tar: Error exit delayed from previous errors&lt;br /&gt;
&lt;br /&gt;
== OpenJPEG ==&lt;br /&gt;
&lt;br /&gt;
At least on my Macbook Pro, the latest (1.1) version of OpenJPEG would not compile, giving the error &amp;quot;make: *** No rule to make target `libopenjpeg/fix.o&#039;, needed by `libopenjpeg.a&#039;.  Stop.&amp;quot;. Downloading the 1.0 version and following the instructions worked fine. [[User:Phineas Pegler|Phineas Pegler]] 22:48, 8 January 2007 (EST)&lt;br /&gt;
:I had the same experience, although I didn&#039;t try the 1.0 version - thanks for the suggestion :-) [[User:David Frantisek|David Frantisek]] 00:21, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
- Can&#039;t get OpenJPEG to compile, get the error message:&lt;br /&gt;
 &lt;br /&gt;
 make -f Makefile-i386.ppc libopenjpeg.a&lt;br /&gt;
 gcc -isysroot /Developer/SDKs/MacOSX10.3.9.sdk -O3 -arch ppc -Ilibopenjpeg -c libopenjpeg/bio.c -o libopenjpeg/bio.o&lt;br /&gt;
 gcc: cannot specify -o with -c or -S and multiple compilations&lt;br /&gt;
 make: *** [libopenjpeg/bio.o] Error 1&lt;br /&gt;
&lt;br /&gt;
gcc 3.3, Mac OS X 10.4.9 PPC --[[User:Mokelembembe Mokeev|Mokelembembe Mokeev]] 23:45, 7 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Compiling/Running on OS X ==&lt;br /&gt;
&lt;br /&gt;
I have the client successfully built and running on my Macbook Pro running 10.4.8 and XCode 2.2.1, using the linden library tarball. The only stumbling block is that it would not run using the &amp;quot;Development&amp;quot; build configuration, only under the &amp;quot;Deployment&amp;quot; config. Running under &amp;quot;Development&amp;quot; crashed on startup within Freetype, with a EXC_BAD_ACCESS.  [[User:Phineas Pegler|Phineas Pegler]] 15:48, 11 January 2007 (EST)&lt;br /&gt;
:How does it run compared to the Linden Labs&#039; release? [[User:David Frantisek|David Frantisek]] 00:22, 12 January 2007 (PST)&lt;br /&gt;
:: Even slower. I&#039;ll pop in some more memory and see if that helps. [[User:Phineas Pegler|Phineas Pegler]] 10:06, 12 January 2007 (EST)&lt;br /&gt;
&lt;br /&gt;
== build the project w/ gcc 3.3 or 4.0? ==&lt;br /&gt;
&lt;br /&gt;
In the section &amp;quot;Building the Viewer&amp;quot;, it describes setting up and building, then changing your gcc back to 4.0.  When I tried building with gcc set to 3.3, I got lots of errors about std::isfinite not defined (sorry I did not copy the exact error).&lt;br /&gt;
&lt;br /&gt;
When I set gcc to 4.0 first, then built, I was able to build the client a-ok.  I was thinking of reversing the two paragraphs (gcc 4.0 first, then build project) -- but I don&#039;t have any knowledge of the gcc, so figured I&#039;d ask here.&lt;br /&gt;
&lt;br /&gt;
none of any of the external libraries I could build with GCC 3.3, did some research and gcc 3.3 does not work correctly on intel macs [[User:Eelke Forder| Eelke Folmer]]&lt;br /&gt;
&lt;br /&gt;
== Changes to Boost instructions? ==&lt;br /&gt;
&lt;br /&gt;
I downloaded the Boost libraries, and noticed that the instructions for may need to be changed. Boost extracts to &amp;quot;&amp;lt;working directory&amp;gt;/boost_1_33_0&amp;quot; rather than &amp;quot;&amp;lt;working directory&amp;gt;/boost-1.33.0&amp;quot;. Note underscores in place of hyphens and dots. As hinted by the instructions, I was able to build boost, but none of the files to be copied in the &amp;quot;Copy the Libraries&amp;quot; section appeared to have been built. Should this section of the instructions be updated? [[User:Simon Nolan|Simon Nolan]] 20:07, 2 April 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
Aparently copying the header files is enough to get it running  [[User:Eelke Forder | Eelke Folmer]] OS 10.4.9&lt;br /&gt;
&lt;br /&gt;
I updated the section to reflect that the name uses underscores and not dash and periods. --[[User:Mokelembembe Mokeev|Mokelembembe Mokeev]] 04:56, 7 April 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Architecture&amp;diff=17018</id>
		<title>Viewer Architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Architecture&amp;diff=17018"/>
		<updated>2007-04-08T11:21:15Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: /* User Guides */ Change lslwiki.com to lslwiki.net&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
The Second Life client (also known as the &amp;quot;viewer&amp;quot;) is a complex piece of software. It can be visualized as a streaming media client like RealPlayer, a game engine like Quake 3, or a web browser.&lt;br /&gt;
&lt;br /&gt;
First you&#039;ll need to learn some terminology like &amp;quot;agent&amp;quot;, &amp;quot;sim&amp;quot;, and &amp;quot;region&amp;quot; in the [[glossary]].&lt;br /&gt;
&lt;br /&gt;
== Learn by Example ==&lt;br /&gt;
* [[Adding a menu item]]&lt;br /&gt;
* [[Adding a dialog]]&lt;br /&gt;
* [[How movement works]]&lt;br /&gt;
* [[How the camera works]]&lt;br /&gt;
* [[How login works]]&lt;br /&gt;
* [[Hegemons Login Analysis]]&lt;br /&gt;
* [[How keyboard processing works]]&lt;br /&gt;
* [[How scripts work]]&lt;br /&gt;
* [[The lifetime of a session]]&lt;br /&gt;
* [[How preferences work]]&lt;br /&gt;
&lt;br /&gt;
== Major Systems ==&lt;br /&gt;
* [[Message System]] - reliable and unreliable transport over UDP&lt;br /&gt;
* [[Image System]] - prioritizes and decodes JPEG2000 images into OpenGL textures&lt;br /&gt;
** [[Texture cache]] - used for reading and writing texture data to the local disk cache &lt;br /&gt;
* [[Viewer Object System]] - objects in scene for rendering and editing&lt;br /&gt;
* [[Rendering System]] - from viewer object to drawable to face to vertices to graphics card&lt;br /&gt;
* [[Culling]] - octree and occlusion based culling to speed rendering&lt;br /&gt;
* [[UI Widgets]] - cross platform buttons, scroll bars, etc.&lt;br /&gt;
* [[UI Floaters]] - dialogs and windows built from XML files&lt;br /&gt;
* [[Asset System]] - transport for animations, sounds, notecards, scripts, etc.&lt;br /&gt;
* [[Inventory]] - server-side storage of assets for each user&lt;br /&gt;
* [[Sound System]] - cross platform audio based on FMOD&lt;br /&gt;
* [[Movie System]] - QuickTime-based video on object surfaces&lt;br /&gt;
* [[VFS]] - cached data is held in two &amp;quot;virtual file systems&amp;quot; in large files on the client&lt;br /&gt;
* [[Selection Manager]] - holds extended information for selected objects and allows editing&lt;br /&gt;
* [[Avatar Appearance]] - appearance is constructed from a mesh, parameters to deform the mesh, and textures to describe clothing&lt;br /&gt;
* [[Web Browser]] - the integration of the viewer with the web.&lt;br /&gt;
* [[Avatar Profiles]]&lt;br /&gt;
* [[Groups]]&lt;br /&gt;
* [[L$ System]]&lt;br /&gt;
* [[Tools]] - anything that takes effect when you click your mouse on the world view.&lt;br /&gt;
* [[Error Logging System]] - command and control of debugging output&lt;br /&gt;
&lt;br /&gt;
== Threads ==&lt;br /&gt;
The viewer is a single process with a few threads:&lt;br /&gt;
* Main thread -- The input/output main program function (including rendering).&lt;br /&gt;
* VFS thread -- Thread responsible for reading/writing to the local virtual file system.&lt;br /&gt;
* LFS thread -- Thread responsible for some reading/writing to the local native file system.&lt;br /&gt;
** Used by the {{OSWiki|Threaded_Image_Pipeline}} project&lt;br /&gt;
* Image thread -- Thread responsible for requesting and decoding image data&lt;br /&gt;
** Used by the {{OSWiki|Threaded_Image_Pipeline}} project&lt;br /&gt;
* Error Thread -- Thread responsible for catching exceptions, calling the (currently unused?) error handler, and retiring&lt;br /&gt;
* Worker Threads -- Threads designed to do cpu intensive background tasks&lt;br /&gt;
** These threads may be paused during rendering so as not to reduce performance (design in-progress)&lt;br /&gt;
&lt;br /&gt;
== Program Flow ==&lt;br /&gt;
# Initialize - newview/viewer.cpp :: main()&lt;br /&gt;
# Loop  - newview/viewer.cpp :: main_loop()&lt;br /&gt;
#* Gathers  keyboard and mouse input&lt;br /&gt;
#* Pumps the TCP i/o&lt;br /&gt;
#* idle()&lt;br /&gt;
#* Render the frame&lt;br /&gt;
#* let filesystem and worker threads process&lt;br /&gt;
# Shutdown&lt;br /&gt;
One way to see what goes on in the main loop is to bring up the debug menus (Ctrl-Alt-D) then Client-&amp;gt;Consoles-&amp;gt;Fast Timers (or Ctrl-Shift-9) and expand the entries in the caption.&lt;br /&gt;
&lt;br /&gt;
== Sources of Input ==&lt;br /&gt;
* The [[Message System]].&lt;br /&gt;
** Assets through the [[Asset System]], transmitted using the [[Transfer Manager]], and extracted from the [[VFS]].&lt;br /&gt;
** Files through [[Xfer Manager]].&lt;br /&gt;
* Files copied out of a [[VFS]] into local file store and read through c/c++/ll file API.&lt;br /&gt;
* XMLRPC calls such as [[Authentication Flow|login]] and [[Buying Land and Currency]].&lt;br /&gt;
* HTTP GET/POST to the [[Backbone]]. This is not yet in use.&lt;br /&gt;
* Streaming music and videos.&lt;br /&gt;
** Quicktime.&lt;br /&gt;
** FMOD.&lt;br /&gt;
* The web browser.&lt;br /&gt;
&lt;br /&gt;
== User Guides ==&lt;br /&gt;
&lt;br /&gt;
* [[Viewer coordinate frames]].&lt;br /&gt;
* Known [[Client_parameters]]&lt;br /&gt;
* Known Client Parameters on [http://lslwiki.net/lslwiki/wakka.php?wakka=newview&amp;amp;show_comments=1 LSLwiki.net]&lt;br /&gt;
* Known [[defines]]&lt;br /&gt;
* [[Godmode]] - what Lindens can do&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Roadmap&amp;diff=7797</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Roadmap&amp;diff=7797"/>
		<updated>2007-01-29T13:24:01Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: fix link to user&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;January 8, 2007&#039;&#039;&#039; - This hardly constitutes a proper roadmap just yet, but here&#039;s the direction we&#039;re heading.&lt;br /&gt;
&lt;br /&gt;
*  &#039;&#039;&#039;Decrease coupling of viewer/server&#039;&#039;&#039; - If you work with our viewer enough, you&#039;ll notice that often you can&#039;t hook up to the main (Agni) grid.  This is due to the tight coupling of viewers and servers, which will make it very difficult to keep the source release synced with the current viewer/server release.  Fixing this issue correctly is where the work that {{User|Zero Linden}} described in his blog post &amp;quot;[http://blog.secondlife.com/2006/12/21/a-big-change-youll-barely-notice/ A Big Change You&#039;ll Barely Notice]&amp;quot;.  In the next few months, this coupling will be reduced such that having a heterogeneous pool of viewers is just fine.&lt;br /&gt;
*  &#039;&#039;&#039;Document what we&#039;re thinking about&#039;&#039;&#039; - yes, this is a copout.  One thing on our roadmap is make a roadmap.&lt;br /&gt;
*  &#039;&#039;&#039;Hold roundtables&#039;&#039;&#039; -  We&#039;re hoping to start up [[:Category:Future Roundtables|roundtable meetings]] to help chart the direction.  We&#039;ve certainly got ideas of our own, but we want to get a sense of what others are thinking.&lt;br /&gt;
*  &#039;&#039;&#039;Distribute binaries that correspond to source releases&#039;&#039;&#039; - Entered from [[Downloading_test_builds]] by [[User:Hunting_Hare|Hunting Hare]], not a Linden.&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Running_Multiple_Viewers&amp;diff=7796</id>
		<title>Running Multiple Viewers</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Running_Multiple_Viewers&amp;diff=7796"/>
		<updated>2007-01-29T13:22:29Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: include relevant info for MacOSX, and remove &amp;quot;vital info missing&amp;quot; tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For Windows:&lt;br /&gt;
&lt;br /&gt;
# Make a new shortcut to the SL exe file.&lt;br /&gt;
# Then in that shortcut go to properties.&lt;br /&gt;
# Then in the properties find the Target box.&lt;br /&gt;
#* It will say something like &amp;quot;C:\Program Files\SecondLife\SecondLife.exe&amp;quot;&lt;br /&gt;
# Just after the last &amp;quot; in that box put this in. -multiple&lt;br /&gt;
#* So it reads like this &amp;quot;C:\Program Files\SecondLife\SecondLife.exe&amp;quot; -multiple&lt;br /&gt;
&lt;br /&gt;
That lets you open as many as your computer can handle. &lt;br /&gt;
&lt;br /&gt;
(You can only have one login at a time to an account. So you&#039;ll need a second account for the second SL client you have open. Etc. Max is 5 per household.)&lt;br /&gt;
&lt;br /&gt;
On Mac OS X:&lt;br /&gt;
# you can specify command line options by selecting the &amp;quot;newview&amp;quot; executable, opening the &amp;quot;get info&amp;quot; dialog, and add them to the &amp;quot;Arguments to be passed on launch&amp;quot; on the &amp;quot;Arguments&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
[[Category:Text from In-world Notecards|Viewer, Running Multiple Instances]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Roadmap&amp;diff=7795</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Roadmap&amp;diff=7795"/>
		<updated>2007-01-29T13:09:50Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: copy relevant info from Downloading_Test_Builds page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;January 8, 2007&#039;&#039;&#039; - This hardly constitutes a proper roadmap just yet, but here&#039;s the direction we&#039;re heading.&lt;br /&gt;
&lt;br /&gt;
*  &#039;&#039;&#039;Decrease coupling of viewer/server&#039;&#039;&#039; - If you work with our viewer enough, you&#039;ll notice that often you can&#039;t hook up to the main (Agni) grid.  This is due to the tight coupling of viewers and servers, which will make it very difficult to keep the source release synced with the current viewer/server release.  Fixing this issue correctly is where the work that {{User|Zero Linden}} described in his blog post &amp;quot;[http://blog.secondlife.com/2006/12/21/a-big-change-youll-barely-notice/ A Big Change You&#039;ll Barely Notice]&amp;quot;.  In the next few months, this coupling will be reduced such that having a heterogeneous pool of viewers is just fine.&lt;br /&gt;
*  &#039;&#039;&#039;Document what we&#039;re thinking about&#039;&#039;&#039; - yes, this is a copout.  One thing on our roadmap is make a roadmap.&lt;br /&gt;
*  &#039;&#039;&#039;Hold roundtables&#039;&#039;&#039; -  We&#039;re hoping to start up [[:Category:Future Roundtables|roundtable meetings]] to help chart the direction.  We&#039;ve certainly got ideas of our own, but we want to get a sense of what others are thinking.&lt;br /&gt;
*  &#039;&#039;&#039;Distribute binaries that correspond to source releases&#039;&#039;&#039; - Entered from [[Downloading_test_builds]] by [[Hunting_Hare]], not a Linden.&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=BVH&amp;diff=5985</id>
		<title>BVH</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=BVH&amp;diff=5985"/>
		<updated>2007-01-22T09:56:42Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: fix the link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A BVH file is a file in the BioVision Hierarchal data format, and is used to specify the changes (deltas) between frames in moving bodies.&lt;br /&gt;
&lt;br /&gt;
http://www.cs.wisc.edu/graphics/Courses/cs-838-1999/Jeff/BVH.html&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=BVH&amp;diff=5984</id>
		<title>BVH</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=BVH&amp;diff=5984"/>
		<updated>2007-01-22T09:55:50Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Link to external description of file format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A BVH file is a file in the BioVision Hierarchal data format, and is used to specify the changes (deltas) between frames in moving bodies.&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.wisc.edu/graphics/Courses/cs-838-1999/Jeff/BVH.html]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Protocol&amp;diff=5983</id>
		<title>Protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Protocol&amp;diff=5983"/>
		<updated>2007-01-22T09:52:08Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: /* Animation */ - make link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
In order to spot potential trouble spots, we want to have a pretty clear understanding of the UDP, TCP, and by-product communication between the client and the servers.&lt;br /&gt;
&lt;br /&gt;
== The UDP Message System ==&lt;br /&gt;
* [[Message Layout]] -- Explanation of message format and the message template &lt;br /&gt;
* [[Packet Layout]] -- the layout of the UDP payload.&lt;br /&gt;
* [[Circuits]] -- Establishment and common operation of UDP circuits between two nodes&lt;br /&gt;
* [[Packet Accounting]] -- how the message system handles packet sequencing, reliability, suppression, throttling, etc.&lt;br /&gt;
* [[Common Messages]] -- messages that are handled by every Indra message system instance.&lt;br /&gt;
* [[Xfer Manager]] -- messages used by the &amp;lt;code&amp;gt;LLXFerManager&amp;lt;/code&amp;gt; class.&lt;br /&gt;
* [[Transfer Manager]] -- messages used by the &amp;lt;code&amp;gt;LLTransferManger&amp;lt;/code&amp;gt; class.&lt;br /&gt;
&lt;br /&gt;
=== Communication with userserver ===&lt;br /&gt;
* [[Userserver Agent]] -- agent update information which alters userserver state.&lt;br /&gt;
* [[Userserver Relay]] -- messages relayed between the back-end systems and the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Communication with simulator ===&lt;br /&gt;
* [[Agent Messages]] -- agent movement, animation, appearance, etc.&lt;br /&gt;
* [[Inventory Messages]] -- agent inventory and asset management.&lt;br /&gt;
* [[Money Messages]] -- money queries and updates.&lt;br /&gt;
* [[Object Messages]] -- object and prim interaction.&lt;br /&gt;
* [[Parcel Messages]] -- parcel and land management and interaction.&lt;br /&gt;
* [[Region Messages]] -- interaction with the region, nearby regions, and movement between them.&lt;br /&gt;
* [[Communication Messages]] -- chat, instant messages, and lsl script interaction.&lt;br /&gt;
* [[Group Messages]] -- joining, management, and group related messages.&lt;br /&gt;
* [[Relationship Messages]] -- friends, granted rights, calling cards, and mute.&lt;br /&gt;
* [[Search Messages]] -- access to global search services.&lt;br /&gt;
* [[Avatar Appearance]] -- messages controlling avatar appearance&lt;br /&gt;
&lt;br /&gt;
== XMLRPC Transactions ==&lt;br /&gt;
* [[Authentication Flow]] -- step-by-step diagram of login process&lt;br /&gt;
* [[Buying Land and Currency]] -- viewer side purchasing of land and currency.&lt;br /&gt;
* [[Capabilities]] -- authorization requests&lt;br /&gt;
&lt;br /&gt;
== File Formats ==&lt;br /&gt;
=== Asset Files ===&lt;br /&gt;
* [[Textures]]&lt;br /&gt;
* [[Sounds]]&lt;br /&gt;
* [[Landmarks]]&lt;br /&gt;
* [[Notecards]]&lt;br /&gt;
* [[LSL Text]]&lt;br /&gt;
* [[LSL Bytecode]]&lt;br /&gt;
* [[Bodypart]]&lt;br /&gt;
* [[Animations]]&lt;br /&gt;
* [[Gestures]]&lt;br /&gt;
&lt;br /&gt;
=== Media Files ===&lt;br /&gt;
==== Image format ====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Jpeg jpeg]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Jpeg_2000 JPEG2000]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Truevision_TGA tga (Truevision targa)]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Windows_bitmap bmp (Windows bitmap)]&lt;br /&gt;
&lt;br /&gt;
==== Audio ====&lt;br /&gt;
* wav files&lt;br /&gt;
==== Animation ====&lt;br /&gt;
* [[BVH]] files for animations&lt;br /&gt;
&lt;br /&gt;
==== Linden Files ====&lt;br /&gt;
* raw files for uploading sim land information&lt;br /&gt;
* LL DXT files&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous Files ===&lt;br /&gt;
* [[Task Inventory]]&lt;br /&gt;
* [[Mute List]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Hunting_Hare&amp;diff=5713</id>
		<title>User:Hunting Hare</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Hunting_Hare&amp;diff=5713"/>
		<updated>2007-01-17T11:58:15Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes to self:&lt;br /&gt;
&lt;br /&gt;
Figure out the best way of handling [[trusted]] -- should it be a category instead of a standard list?&lt;br /&gt;
&lt;br /&gt;
Figure out the best way of handling [[untrusted]] -- like [[trusted]], should it be a category?&lt;br /&gt;
&lt;br /&gt;
[[Category:English speaking Residents]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Hunting_Hare&amp;diff=5712</id>
		<title>User:Hunting Hare</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Hunting_Hare&amp;diff=5712"/>
		<updated>2007-01-17T11:57:35Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Edit my category affiliation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes to self:&lt;br /&gt;
&lt;br /&gt;
Figure out the best way of handling [[trusted]] -- should it be a category instead of a standard list?&lt;br /&gt;
&lt;br /&gt;
Figure out the best way of handling [[untrusted]] -- like [[trusted]], should it be a category?&lt;br /&gt;
&lt;br /&gt;
[[Category:English Speaking Residents]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Untrusted&amp;diff=5711</id>
		<title>Untrusted</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Untrusted&amp;diff=5711"/>
		<updated>2007-01-17T11:46:27Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Fix EstablishTrustedCircuit to be CreateTrustedCircuit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An untrusted [[message]] may be sent across either a [[trusted]] or an untrusted [[circuit]].&lt;br /&gt;
&lt;br /&gt;
Since the [[viewer]] may not establish a trusted circuit, it may only send untrusted messages.  Since it is not possible for the [[viewer]] to authenticate a circuit (with the [[CreateTrustedCircuit]] message), it cannot upgrade any circuit to [[trusted]] status, and thus must drop all [[trusted]] messages.&lt;br /&gt;
&lt;br /&gt;
==List of untrusted messages==&lt;br /&gt;
&lt;br /&gt;
[*TODO [[User:Hunting Hare|Hunting Hare]] 03:46, 17 January 2007 (PST)]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Untrusted&amp;diff=5710</id>
		<title>Untrusted</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Untrusted&amp;diff=5710"/>
		<updated>2007-01-17T11:45:44Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Initial Entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An untrusted [[message]] may be sent across either a [[trusted]] or an untrusted [[circuit]].&lt;br /&gt;
&lt;br /&gt;
Since the [[viewer]] may not establish a trusted circuit, it may only send untrusted messages.  Since it is not possible for the [[viewer]] to authenticate a circuit (with the [[EstablishTrustedCircuit]] message), it cannot upgrade any circuit to [[trusted]] status, and thus must drop all [[trusted]] messages.&lt;br /&gt;
&lt;br /&gt;
==List of untrusted messages==&lt;br /&gt;
&lt;br /&gt;
[*TODO [[User:Hunting Hare|Hunting Hare]] 03:45, 17 January 2007 (PST)]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Trusted&amp;diff=5709</id>
		<title>Trusted</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Trusted&amp;diff=5709"/>
		<updated>2007-01-17T11:29:59Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Initial entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A trusted message is a message which will only be accepted from a [[circuit]] which has been marked as trusted, through the use of the [[DenyTrustedCircuit]] and [[CreateTrustedCircuit]] handshakes.&lt;br /&gt;
&lt;br /&gt;
Due to the fact that ONLY [[simulators]] and [[utility servers]] can perform the [[CreateTrustedCircuit]] handshake successfully, any attempt by a [[viewer]] to use these messages will automatically fail.&lt;br /&gt;
&lt;br /&gt;
== List of Trusted Messages ==&lt;br /&gt;
&lt;br /&gt;
[*TODO [[User:Hunting Hare|Hunting Hare]] 03:29, 17 January 2007 (PST)]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Simulators&amp;diff=5707</id>
		<title>Simulators</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Simulators&amp;diff=5707"/>
		<updated>2007-01-17T11:28:32Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Redirection to the singular form&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[simulator]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Hunting_Hare&amp;diff=5706</id>
		<title>User:Hunting Hare</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Hunting_Hare&amp;diff=5706"/>
		<updated>2007-01-17T11:23:01Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Note to self&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Notes to self:&lt;br /&gt;
&lt;br /&gt;
Figure out the best way of handling [[trusted]] -- should it be a category instead of a standard list?&lt;br /&gt;
&lt;br /&gt;
Figure out the best way of handling [[untrusted]] -- like [[trusted]], should it be a category?&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Simulator&amp;diff=5705</id>
		<title>Simulator</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Simulator&amp;diff=5705"/>
		<updated>2007-01-17T11:19:23Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Redirection to the glossary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Glossary#Simulator]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer&amp;diff=5704</id>
		<title>Viewer</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer&amp;diff=5704"/>
		<updated>2007-01-17T11:18:06Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Redirection to the glossary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Glossary#Viewer]]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=UDP&amp;diff=5703</id>
		<title>UDP</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=UDP&amp;diff=5703"/>
		<updated>2007-01-17T11:13:44Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Initial Entry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Usergram Data Protocol, an unreliable and unstreamed transmission packet format over TCP/IP networks.  To describe what UDP is, it&#039;s easier to explain in terms of what it isn&#039;t -- and that&#039;s best explained by describing the guarantee that its counterpart, Transmission Control Protocol, provides.  In TCP, each packet of data is given the following guarantee: if it arrives, it will reliably arrive in order (no data will be lost from the stream before it, and no data from the stream which was sent after it will be delivered to the application before it).&lt;br /&gt;
&lt;br /&gt;
In UDP, no guarantee that it will be delivered at all, in any given order, or in any given timeframe is provided by the network layer.  This may sound like a negative, and for many purposes it is -- but it also uses a little less than one half of the packets used by TCP.  This lower number of packets makes it the only useful choice in situations which are time-sensitive, including streaming audio and video.  This lower number of packets also makes it suitable for situations where not every packet must arrive perfectly intact in order, including DNS (name to address resolution on the Internet) and Second Life.&lt;br /&gt;
&lt;br /&gt;
For more information on TCP and UDP, please see their respective definition documents.  (Note that these protocols use the services provided by the IP layer underneath them, be it IPv4 or IPv6.)&lt;br /&gt;
&lt;br /&gt;
[ftp://ftp.rfc-editor.org/in-notes/rfc768.txt User Datagram Protocol]&lt;br /&gt;
&lt;br /&gt;
[ftp://ftp.rfc-editor.org/in-notes/rfc793.txt Transmission Control Protocol]&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(Mac_OS_X)&amp;diff=5550</id>
		<title>Compiling the viewer (Mac OS X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(Mac_OS_X)&amp;diff=5550"/>
		<updated>2007-01-15T09:52:51Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: explanation of why fmodapi isn&amp;#039;t included with the libraries package&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CompileNav}}&lt;br /&gt;
&lt;br /&gt;
The following are instructions for building the Second Life viewer on Mac OS X.  For other platforms, see [[Compiling the viewer]]&lt;br /&gt;
&lt;br /&gt;
= Development Environment =&lt;br /&gt;
We use XCode 2.4.1 for building on Macintosh computers. For simplicity, we suggest installing everything from the mpkg.&lt;br /&gt;
&lt;br /&gt;
You will need to install the proprietary libraries as well as all of the other third party libraries below. For convenience, we package up the libraries we are allowed to distribute so you can either download that package and unpack it into your development working directory or install all of the libraries from scratch.&lt;br /&gt;
&lt;br /&gt;
= Installing Proprietary Libraries =&lt;br /&gt;
&lt;br /&gt;
We do not distribute these libraries, so you will need to fetch and install these even if you download the libraries packages.  (This is due to licensing restrictions.  Don&#039;t ask, we already did, and can&#039;t get permission.  So you do have to get them yourself.)&lt;br /&gt;
&lt;br /&gt;
== Fmod ==&lt;br /&gt;
* Download &amp;amp; extract [http://www.fmod.org/ifmoddownload.html fmod 3.75 programmers api for macintosh].&lt;br /&gt;
* (You do *not* want the latest version, instead scroll down to v3.75)&lt;br /&gt;
* Copy the extracted files. &amp;lt;em&amp;gt;Note the name change for the x86 library.&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp -p fmodapi375mac/api/inc/*.h linden/libraries/include&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmod.a linden/libraries/powerpc-darwin/lib_debug&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmod.a linden/libraries/powerpc-darwin/lib_release&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmodx86.a linden/libraries/i386-darwin/lib_debug/libfmod.a&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmodx86.a linden/libraries/i386-darwin/lib_release/libfmod.a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installing Libraries =&lt;br /&gt;
We supply a package of the required libraries and binaries on the [[compiling the viewer]] page.&lt;br /&gt;
&lt;br /&gt;
From the directory where you downloaded the tarballs:&lt;br /&gt;
&lt;br /&gt;
 tar xvfz sl-source.tar.gz&lt;br /&gt;
 tar xvfz sl-libraries.tar.gz&lt;br /&gt;
&lt;br /&gt;
Your filenames may vary. If you open them with the double click file extract, remember that dragging folders on top of each other will overwrite the original contents, not merge them as in windows.&lt;br /&gt;
&lt;br /&gt;
= Installing Libraries From Scratch =&lt;br /&gt;
We recommend creating a separate third party library directory named &#039;lindenlib&#039; on the same level as the &#039;linden&#039; tree in your directory structure. Download, unpack, and build from there and copy the files specified to their final location.&lt;br /&gt;
&lt;br /&gt;
Most of the libs built here are architecture specific, so these instructions will refer to &amp;lt;em&amp;gt;$PLATFORM&amp;lt;/em&amp;gt; to denote that. You can set an environment variable to make it so copy &amp;amp; paste from these instructions will work:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ PLATFORM=`uname -p`-darwin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Building the Universal target requires that you have built both the i386 and ppc libraries.  (Please see [http://developer.apple.com/technotes/tn2005/tn2137.html] for more background information.)&lt;br /&gt;
&lt;br /&gt;
Using gcc 4.0 on a ppc box when building many of these libraries will insert an undefined reference to _fprintf$LBDLStub which then fails to link later. Until we have a better solution to this issue, you will need to use an earlier version of gcc. Some of the instructions below will include a call to &amp;lt;em&amp;gt;gcc_select&amp;lt;/em&amp;gt; which is only necessary if you are building on a ppc box.&lt;br /&gt;
&lt;br /&gt;
== Boost ==&lt;br /&gt;
Download &amp;amp; extract [http://sourceforge.net/project/showfiles.php?group_id=7586&amp;amp;package_id=8041 Boost] source.&lt;br /&gt;
The viewer does not link to the boost libraries, so much of this is not necessary. You can simply copy the header files if you have problems getting the boost package to build.&lt;br /&gt;
=== Copy the Headers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp -r lindenlib/boost-1.33.0/boost linden/libraries/include/boost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Build Boost.Jam ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd boost-1.33.0/tools/build/jam_src&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
$ if [ $PLATFORM = &amp;quot;i386-darwin&amp;quot; ] then PLATDIR=bin.macosxx86; else PLATDIR=bin.macosxppc; fi&lt;br /&gt;
$ cp $PLATDIR/bjam ../../..&lt;br /&gt;
$ unset PLATDIR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Build Boost ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd boost-1.33.0/libs&lt;br /&gt;
$ export PYTHON_ROOT=/System/Library/Frameworks/Python.framework/Versions/2.3/&lt;br /&gt;
$ export PYTHON_VERSION=2.3&lt;br /&gt;
$ ./bjam stage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Copy the Libraries ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 4.0&lt;br /&gt;
$ cd boost-1.33.0&lt;br /&gt;
$ export PLATFORM=`uname -p`-darwin&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc-d.a \ &lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_python-gcc.a&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc-mt.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc-mt-d.a \&lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_python-gcc-mt.a&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc-d.a \&lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_regex-gcc.a&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc-mt.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc-mt-d.a \&lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_regex-gcc-mt.a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apache Portable Runtime ==&lt;br /&gt;
* Download &amp;amp; extract [http://apr.apache.org/download.cgi apr and apr-util].&lt;br /&gt;
* Build and install the headers and lib files using a terminal.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd lindenlib/apr-1.2.8&lt;br /&gt;
$ ./configure --disable-shared --disable-lfs --prefix=/tmp/apr&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/apr/include/apr-1 linden/libraries/$PLATFORM/include&lt;br /&gt;
$ cp /tmp/apr/lib/libapr-1.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp /tmp/apr/lib/libapr-1.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&lt;br /&gt;
$ cd lindenlib/apr-util-1.2.8&lt;br /&gt;
$ ./configure --disable-shared --disable-lfs --with-apr=/tmp/apr --prefix=/tmp/apr-util&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/apr-util/include/apr-1 linden/libraries/$PLATFORM/include&lt;br /&gt;
$ cp /tmp/apr-util/lib/*.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp /tmp/apr-util/lib/*.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
$ sudo gcc_select 4.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zlib ==&lt;br /&gt;
* Download and extract [http://www.zlib.net/ zlib].&lt;br /&gt;
* Build and install it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd zlib-1.2.3&lt;br /&gt;
$ ./configure --prefix=/tmp/zlib&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -Rp /tmp/zlib/include linden/libraries/include/zlib&lt;br /&gt;
$ cp -p /tmp/zlib/lib/libz.a linden/libraries/$PLATFORM/lib_debug/libllz.a&lt;br /&gt;
$ cp -p /tmp/zlib/lib/libz.a linden/libraries/$PLATFORM/lib_release/libllz.a&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Note that the library has a different name in the libraries directory.&lt;br /&gt;
&lt;br /&gt;
== Expat ==&lt;br /&gt;
* Download an extract the 1.95.8 version of [http://sourceforge.net/projects/expat/ expat].&lt;br /&gt;
* Build and install the library&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd expat-1.95.8&lt;br /&gt;
$ ./configure --prefix=/tmp/expat&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/expat/include linden/libraries/include/expat&lt;br /&gt;
$ cp -p /tmp/expat/lib/libexpat.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp -p /tmp/expat/lib/libexpat.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XMLRPC-epi ==&lt;br /&gt;
* Download a source package for [http://xmlrpc-epi.sourceforge.net/ xmlrpc-epi].&lt;br /&gt;
* Apply patch 1 and 2 from the instructions in [[patch xmlrpc-epi]].&lt;br /&gt;
* Configure the project:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd xmlrpc-epi-0.51&lt;br /&gt;
$ ./configure --disable-shared --prefix=/tmp/xmlrpc-epi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Apply patch 3 from the instructions in [[patch xmlrpc-epi]].&lt;br /&gt;
* Finish the removal of expat, build, and install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rm -rf expat&lt;br /&gt;
$ mkdir expat&lt;br /&gt;
$ cp /tmp/expat/include/* expat&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/xmlrpc-epi/include linden/libraries/include/xmlrpc-epi&lt;br /&gt;
$ cp -p /tmp/xmlrpc-epi/lib/libxmlrpc.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp -p /tmp/xmlrpc-epi/lib/libxmlrpc.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JPEGlib ==&lt;br /&gt;
* Download &amp;amp; extract [http://www.ijg.org/ jpeglib]. You will minimally need jpegsrc.v6b.tar.gz.&lt;br /&gt;
* Build and install the library:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd jpeg-6b&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ mkdir linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jconfig.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jerror.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jinclude.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jmorecfg.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jpeglib.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/libjpeg.a linden/libraries/$PLATFORM/lib_debug/liblljpeg.a&lt;br /&gt;
$ cp lindenlib/jpeg-6b/libjpeg.a linden/libraries/$PLATFORM/lib_release/liblljpeg.a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note that the library has a different name in the libraries directory.&lt;br /&gt;
* If you plan to use the header file from windows, you will need to [[patch jpeglib]] using any terminal.&lt;br /&gt;
&lt;br /&gt;
== OpenJPEG ==&lt;br /&gt;
* Download and extract version 1.0 [http://www.openjpeg.org/index.php?menu=download openjpeg] source.&lt;br /&gt;
* Copy the [[make openjpeg|linden openjpeg makefiles]] into the openjpeg source top level directory. We do this to maintain 10.3.9 compatibility.&lt;br /&gt;
* Build and install the library&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ mkdir ../../linden/libraries/include/openjpeg&lt;br /&gt;
$ cp -p libopenjpeg/openjpeg.h ../../linden/libraries/include/openjpeg&lt;br /&gt;
$ make -f Makefile-i386.ppc libopenjpeg.a&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/ppc-darwin/lib_debug&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/ppc-darwin/lib_release&lt;br /&gt;
$ make -f Makefile-i386.ppc clean&lt;br /&gt;
$ make -f Makefile-i386.osx libopenjpeg.a&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/i386-darwin/lib_debug&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/i386-darwin/lib_release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Freetype ==&lt;br /&gt;
* Download and extract [http://freetype.sourceforge.net/download.html#stable FreeType].&lt;br /&gt;
* Build and install the FreeType library:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd freetype-2.2.1&lt;br /&gt;
$ ./configure --prefix=/tmp/freetype&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/freetype/include/freetype2/freetype linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/freetype/include/freetype2/ft2build.h linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/freetype/lib/libfreetype.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp -p /tmp/freetype/lib/libfreetype.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorbis &amp;amp; Ogg ==&lt;br /&gt;
* Download &amp;amp; extract [http://www.xiph.org/downloads/ libvorbis].&lt;br /&gt;
* Download &amp;amp; extract [http://www.xiph.org/downloads/ libogg].&lt;br /&gt;
* Build &amp;amp; copy libogg first:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd libogg-1.1.3&lt;br /&gt;
$ ./configure --prefix=/tmp/ogg&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/ogg/include/ogg linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/ogg/lib/libogg.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
$ cp -p /tmp/ogg/lib/libogg.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Build &amp;amp; copy libvorbis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd libvorbis-1.1.2&lt;br /&gt;
$ ./configure --prefix=/tmp/vorbis --with-ogg=/tmp/ogg&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ ../..&lt;br /&gt;
$ cp -pR /tmp/vorbis/include/vorbis linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/vorbis/lib/libvorbis*.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
$ cp -p /tmp/vorbis/lib/libvorbis*.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TUT ==&lt;br /&gt;
* Download [http://tut-framework.sourceforge.net/download/ tut] into lindenlib&lt;br /&gt;
* Move it into a sub-directory, extract, and copy the headers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir tut&lt;br /&gt;
$ mv TUT-2006-11-04.tar.gz tut&lt;br /&gt;
$ cd tut&lt;br /&gt;
$ tar xvzf TUT-2006-11-04.tar.gz&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ mkdir linden/libraries/include/tut&lt;br /&gt;
$ cp -p lindenlib/tut/tut.h lindenlib/tut/tut_reporter.h lindenlib/tut/tut_restartable.h linden/libraries/include/tut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mozilla ==&lt;br /&gt;
&amp;lt;b&amp;gt;*FIX:&amp;lt;/b&amp;gt; It&#039;s really hard to build the mozilla libs. Instructions coming.&lt;br /&gt;
&lt;br /&gt;
= Building the Viewer =&lt;br /&gt;
Launch XCode, open the project file &#039;linden/indra/newview/macview.xcodeproj&#039;, set &#039;newview&#039; as the active target, select an active build configuration, and build the project.&lt;br /&gt;
&lt;br /&gt;
If you had to change gcc versions for a ppc build, restore gcc back to 4.0.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 4.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Configurations ==&lt;br /&gt;
* &amp;lt;em&amp;gt;Development&amp;lt;/em&amp;gt;: This configuration is more suitable for debugging. The build process will create the SecondLife application targeted for your host architecture.&lt;br /&gt;
* &amp;lt;em&amp;gt;Deployment&amp;lt;/em&amp;gt;: This configuration is faster than the development version at the cost of some ability to debug. The build process will create the SecondLife application targeted for your host architecture.&lt;br /&gt;
* &amp;lt;em&amp;gt;Universal&amp;lt;/em&amp;gt;: This configuration is the same as the Deployment target except that all supported architectures - ppc and i386 - are built.&lt;br /&gt;
&lt;br /&gt;
= Building the Unit Tests =&lt;br /&gt;
From XCode, open the project &#039;linden/indra/test/MacTester.xcodeproj&#039;, set &#039;MacTester&#039; as the active target, and build.&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Compiling_the_viewer_(Mac_OS_X)&amp;diff=5549</id>
		<title>Talk:Compiling the viewer (Mac OS X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Compiling_the_viewer_(Mac_OS_X)&amp;diff=5549"/>
		<updated>2007-01-15T09:36:52Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: Requested information to help track down environment-specific issues&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==PLEASE NOTE==&lt;br /&gt;
&lt;br /&gt;
When you report any problem, PLEASE post your OS version and version of Xcode.  This will help identify the environments that have issues, and allow the creation of workarounds specific to those environments.  Thank you!  [[User:Hunting Hare|Hunting Hare]] 01:36, 15 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Mozilla==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a bit confused about the Mozilla lib dependency--perhaps if someone knew what was actually required to be compiled (even if it would be somewhat difficult) we could at least try. :-) Thanks. [[User:David Frantisek|David Frantisek]] 19:55, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Problems with directions==&lt;br /&gt;
&lt;br /&gt;
It seems like there are a couple places here where problems are created because of the use of &amp;quot;../..&amp;quot; I&#039;m not all that familiar with use of the terminal, but I think this puts you in your home directory, which is okay as long as that&#039;s the top-level of your project, but not if the top-level is ~/Desktop or somewhere else entirely. [[User:David Frantisek|David Frantisek]] 19:55, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;../.. refers to the parent of the parent folder -- from /Users/yourusername/ , ../.. would refer to the root directory that contains the Users folder.  Remember, Mac OS X has the technological underpinning of BSD UNIX.  If you&#039;re not familiar with the use of the Terminal, then you will likely find a book on using UNIX very helpful.  For reference, the single character ~ refers to your home directory but only if it&#039;s used as the first element of a path specification -- ~/Desktop refers to your Desktop folder.  ~username/ refers to the home directory of username.  [[User:Hunting Hare|Hunting Hare]] 01:36, 15 January 2007 (PST)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Curl ==&lt;br /&gt;
&lt;br /&gt;
In the download of the SL libs, header files for Curl are included. Is this something that should is also required for a succesful build? Thanks. [[User:David Frantisek|David Frantisek]] 19:57, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== OpenJPEG ==&lt;br /&gt;
&lt;br /&gt;
At least on my Macbook Pro, the latest (1.1) version of OpenJPEG would not compile, giving the error &amp;quot;make: *** No rule to make target `libopenjpeg/fix.o&#039;, needed by `libopenjpeg.a&#039;.  Stop.&amp;quot;. Downloading the 1.0 version and following the instructions worked fine. [[User:Phineas Pegler|Phineas Pegler]] 22:48, 8 January 2007 (EST)&lt;br /&gt;
:I had the same experience, although I didn&#039;t try the 1.0 version - thanks for the suggestion :-) [[User:David Frantisek|David Frantisek]] 00:21, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Compiling/Running on OS X ==&lt;br /&gt;
&lt;br /&gt;
I have the client successfully built and running on my Macbook Pro running 10.4.8 and XCode 2.2.1, using the linden library tarball. The only stumbling block is that it would not run using the &amp;quot;Development&amp;quot; build configuration, only under the &amp;quot;Deployment&amp;quot; config. Running under &amp;quot;Development&amp;quot; crashed on startup within Freetype, with a EXC_BAD_ACCESS.  [[User:Phineas Pegler|Phineas Pegler]] 15:48, 11 January 2007 (EST)&lt;br /&gt;
:How does it run compared to the Linden Labs&#039; release? [[User:David Frantisek|David Frantisek]] 00:22, 12 January 2007 (PST)&lt;br /&gt;
:: Even slower. I&#039;ll pop in some more memory and see if that helps. [[User:Phineas Pegler|Phineas Pegler]] 10:06, 12 January 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Compiling_the_viewer_(Mac_OS_X)&amp;diff=5548</id>
		<title>Talk:Compiling the viewer (Mac OS X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Compiling_the_viewer_(Mac_OS_X)&amp;diff=5548"/>
		<updated>2007-01-15T09:29:27Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: /* Problems with directions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mozilla==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a bit confused about the Mozilla lib dependency--perhaps if someone knew what was actually required to be compiled (even if it would be somewhat difficult) we could at least try. :-) Thanks. [[User:David Frantisek|David Frantisek]] 19:55, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Problems with directions==&lt;br /&gt;
&lt;br /&gt;
It seems like there are a couple places here where problems are created because of the use of &amp;quot;../..&amp;quot; I&#039;m not all that familiar with use of the terminal, but I think this puts you in your home directory, which is okay as long as that&#039;s the top-level of your project, but not if the top-level is ~/Desktop or somewhere else entirely. [[User:David Frantisek|David Frantisek]] 19:55, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;../.. refers to the parent of the parent folder -- from /Users/yourusername/ , ../.. would refer to the root directory that contains the Users folder.  Remember, Mac OS X has the technological underpinning of BSD UNIX.  If you&#039;re not familiar with the use of the Terminal, then you will likely find a book on using UNIX very helpful.  For reference, the single character ~ refers to your home directory but only if it&#039;s used as the first element of a path specification -- ~/Desktop refers to your Desktop folder.  ~username/ refers to the home directory of username.  [[User:Hunting Hare]] 01:30, 15 January 2007 (PST)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Curl ==&lt;br /&gt;
&lt;br /&gt;
In the download of the SL libs, header files for Curl are included. Is this something that should is also required for a succesful build? Thanks. [[User:David Frantisek|David Frantisek]] 19:57, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== OpenJPEG ==&lt;br /&gt;
&lt;br /&gt;
At least on my Macbook Pro, the latest (1.1) version of OpenJPEG would not compile, giving the error &amp;quot;make: *** No rule to make target `libopenjpeg/fix.o&#039;, needed by `libopenjpeg.a&#039;.  Stop.&amp;quot;. Downloading the 1.0 version and following the instructions worked fine. [[User:Phineas Pegler|Phineas Pegler]] 22:48, 8 January 2007 (EST)&lt;br /&gt;
:I had the same experience, although I didn&#039;t try the 1.0 version - thanks for the suggestion :-) [[User:David Frantisek|David Frantisek]] 00:21, 12 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
== Compiling/Running on OS X ==&lt;br /&gt;
&lt;br /&gt;
I have the client successfully built and running on my Macbook Pro running 10.4.8 and XCode 2.2.1, using the linden library tarball. The only stumbling block is that it would not run using the &amp;quot;Development&amp;quot; build configuration, only under the &amp;quot;Deployment&amp;quot; config. Running under &amp;quot;Development&amp;quot; crashed on startup within Freetype, with a EXC_BAD_ACCESS.  [[User:Phineas Pegler|Phineas Pegler]] 15:48, 11 January 2007 (EST)&lt;br /&gt;
:How does it run compared to the Linden Labs&#039; release? [[User:David Frantisek|David Frantisek]] 00:22, 12 January 2007 (PST)&lt;br /&gt;
:: Even slower. I&#039;ll pop in some more memory and see if that helps. [[User:Phineas Pegler|Phineas Pegler]] 10:06, 12 January 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(Mac_OS_X)&amp;diff=5382</id>
		<title>Compiling the viewer (Mac OS X)</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Compiling_the_viewer_(Mac_OS_X)&amp;diff=5382"/>
		<updated>2007-01-14T01:51:30Z</updated>

		<summary type="html">&lt;p&gt;Hunting Hare: clean up some minor gotchas, add reference to ADC for Universal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CompileNav}}&lt;br /&gt;
&lt;br /&gt;
The following are instructions for building the Second Life viewer on Mac OS X.  For other platforms, see [[Compiling the viewer]]&lt;br /&gt;
&lt;br /&gt;
= Development Environment =&lt;br /&gt;
We use XCode 2.4.1 for building on Macintosh computers. For simplicity, we suggest installing everything from the mpkg.&lt;br /&gt;
&lt;br /&gt;
You will need to install the proprietary libraries as well as all of the other third party libraries below. For convenience, we package up the libraries we are allowed to distribute so you can either download that package and unpack it into your development working directory or install all of the libraries from scratch.&lt;br /&gt;
&lt;br /&gt;
= Installing Proprietary Libraries =&lt;br /&gt;
&lt;br /&gt;
We do not distribute these libraries, so you will need to fetch and install these even if you download the libraries packages.&lt;br /&gt;
&lt;br /&gt;
== Fmod ==&lt;br /&gt;
* Download &amp;amp; extract [http://www.fmod.org/ifmoddownload.html fmod 3.75 programmers api for macintosh].&lt;br /&gt;
* (You do *not* want the latest version, instead scroll down to v3.75)&lt;br /&gt;
* Copy the extracted files. &amp;lt;em&amp;gt;Note the name change for the x86 library.&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp -p fmodapi375mac/api/inc/*.h linden/libraries/include&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmod.a linden/libraries/powerpc-darwin/lib_debug&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmod.a linden/libraries/powerpc-darwin/lib_release&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmodx86.a linden/libraries/i386-darwin/lib_debug/libfmod.a&lt;br /&gt;
$ cp -p fmodapi375mac/api/lib/libfmodx86.a linden/libraries/i386-darwin/lib_release/libfmod.a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installing Libraries =&lt;br /&gt;
We supply a package of the required libraries and binaries on the [[compiling the viewer]] page.&lt;br /&gt;
&lt;br /&gt;
From the directory where you downloaded the tarballs:&lt;br /&gt;
&lt;br /&gt;
 tar xvfz sl-source.tar.gz&lt;br /&gt;
 tar xvfz sl-libraries.tar.gz&lt;br /&gt;
&lt;br /&gt;
Your filenames may vary. If you open them with the double click file extract, remember that dragging folders on top of each other will overwrite the original contents, not merge them as in windows.&lt;br /&gt;
&lt;br /&gt;
= Installing Libraries From Scratch =&lt;br /&gt;
We recommend creating a separate third party library directory named &#039;lindenlib&#039; on the same level as the &#039;linden&#039; tree in your directory structure. Download, unpack, and build from there and copy the files specified to their final location.&lt;br /&gt;
&lt;br /&gt;
Most of the libs built here are architecture specific, so these instructions will refer to &amp;lt;em&amp;gt;$PLATFORM&amp;lt;/em&amp;gt; to denote that. You can set an environment variable to make it so copy &amp;amp; paste from these instructions will work:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ PLATFORM=`uname -p`-darwin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Building the Universal target requires that you have built both the i386 and ppc libraries.  (Please see [http://developer.apple.com/technotes/tn2005/tn2137.html] for more background information.)&lt;br /&gt;
&lt;br /&gt;
Using gcc 4.0 on a ppc box when building many of these libraries will insert an undefined reference to _fprintf$LBDLStub which then fails to link later. Until we have a better solution to this issue, you will need to use an earlier version of gcc. Some of the instructions below will include a call to &amp;lt;em&amp;gt;gcc_select&amp;lt;/em&amp;gt; which is only necessary if you are building on a ppc box.&lt;br /&gt;
&lt;br /&gt;
== Boost ==&lt;br /&gt;
Download &amp;amp; extract [http://sourceforge.net/project/showfiles.php?group_id=7586&amp;amp;package_id=8041 Boost] source.&lt;br /&gt;
The viewer does not link to the boost libraries, so much of this is not necessary. You can simply copy the header files if you have problems getting the boost package to build.&lt;br /&gt;
=== Copy the Headers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp -r lindenlib/boost-1.33.0/boost linden/libraries/include/boost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Build Boost.Jam ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd boost-1.33.0/tools/build/jam_src&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
$ if [ $PLATFORM = &amp;quot;i386-darwin&amp;quot; ] then PLATDIR=bin.macosxx86; else PLATDIR=bin.macosxppc; fi&lt;br /&gt;
$ cp $PLATDIR/bjam ../../..&lt;br /&gt;
$ unset PLATDIR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Build Boost ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd boost-1.33.0/libs&lt;br /&gt;
$ export PYTHON_ROOT=/System/Library/Frameworks/Python.framework/Versions/2.3/&lt;br /&gt;
$ export PYTHON_VERSION=2.3&lt;br /&gt;
$ ./bjam stage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Copy the Libraries ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 4.0&lt;br /&gt;
$ cd boost-1.33.0&lt;br /&gt;
$ export PLATFORM=`uname -p`-darwin&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc-d.a \ &lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_python-gcc.a&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc-mt.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_python-gcc-mt-d.a \&lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_python-gcc-mt.a&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc-d.a \&lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_regex-gcc.a&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc-mt.a \&lt;br /&gt;
libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp src/stage/lib/libboost_regex-gcc-mt-d.a \&lt;br /&gt;
libraries/$PLATFORM/lib_debug/libboost_regex-gcc-mt.a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apache Portable Runtime ==&lt;br /&gt;
* Download &amp;amp; extract [http://apr.apache.org/download.cgi apr and apr-util].&lt;br /&gt;
* Build and install the headers and lib files using a terminal.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd lindenlib/apr-1.2.8&lt;br /&gt;
$ ./configure --disable-shared --disable-lfs --prefix=/tmp/apr&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/apr/include/apr-1 linden/libraries/$PLATFORM/include&lt;br /&gt;
$ cp /tmp/apr/lib/libapr-1.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp /tmp/apr/lib/libapr-1.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&lt;br /&gt;
$ cd lindenlib/apr-util-1.2.8&lt;br /&gt;
$ ./configure --disable-shared --disable-lfs --with-apr=/tmp/apr --prefix=/tmp/apr-util&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/apr-util/include/apr-1 linden/libraries/$PLATFORM/include&lt;br /&gt;
$ cp /tmp/apr-util/lib/*.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp /tmp/apr-util/lib/*.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
$ sudo gcc_select 4.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zlib ==&lt;br /&gt;
* Download and extract [http://www.zlib.net/ zlib].&lt;br /&gt;
* Build and install it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd zlib-1.2.3&lt;br /&gt;
$ ./configure --prefix=/tmp/zlib&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -Rp /tmp/zlib/include linden/libraries/include/zlib&lt;br /&gt;
$ cp -p /tmp/zlib/lib/libz.a linden/libraries/$PLATFORM/lib_debug/libllz.a&lt;br /&gt;
$ cp -p /tmp/zlib/lib/libz.a linden/libraries/$PLATFORM/lib_release/libllz.a&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Note that the library has a different name in the libraries directory.&lt;br /&gt;
&lt;br /&gt;
== Expat ==&lt;br /&gt;
* Download an extract the 1.95.8 version of [http://sourceforge.net/projects/expat/ expat].&lt;br /&gt;
* Build and install the library&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd expat-1.95.8&lt;br /&gt;
$ ./configure --prefix=/tmp/expat&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/expat/include linden/libraries/include/expat&lt;br /&gt;
$ cp -p /tmp/expat/lib/libexpat.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp -p /tmp/expat/lib/libexpat.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XMLRPC-epi ==&lt;br /&gt;
* Download a source package for [http://xmlrpc-epi.sourceforge.net/ xmlrpc-epi].&lt;br /&gt;
* Apply patch 1 and 2 from the instructions in [[patch xmlrpc-epi]].&lt;br /&gt;
* Configure the project:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd xmlrpc-epi-0.51&lt;br /&gt;
$ ./configure --disable-shared --prefix=/tmp/xmlrpc-epi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Apply patch 3 from the instructions in [[patch xmlrpc-epi]].&lt;br /&gt;
* Finish the removal of expat, build, and install&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rm -rf expat&lt;br /&gt;
$ mkdir expat&lt;br /&gt;
$ cp /tmp/expat/include/* expat&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/xmlrpc-epi/include linden/libraries/include/xmlrpc-epi&lt;br /&gt;
$ cp -p /tmp/xmlrpc-epi/lib/libxmlrpc.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp -p /tmp/xmlrpc-epi/lib/libxmlrpc.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JPEGlib ==&lt;br /&gt;
* Download &amp;amp; extract [http://www.ijg.org/ jpeglib]. You will minimally need jpegsrc.v6b.tar.gz.&lt;br /&gt;
* Build and install the library:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd jpeg-6b&lt;br /&gt;
$ ./configure&lt;br /&gt;
$ make&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ mkdir linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jconfig.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jerror.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jinclude.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jmorecfg.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/jpeglib.h linden/libraries/include/jpeglib&lt;br /&gt;
$ cp lindenlib/jpeg-6b/libjpeg.a linden/libraries/$PLATFORM/lib_debug/liblljpeg.a&lt;br /&gt;
$ cp lindenlib/jpeg-6b/libjpeg.a linden/libraries/$PLATFORM/lib_release/liblljpeg.a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Note that the library has a different name in the libraries directory.&lt;br /&gt;
* If you plan to use the header file from windows, you will need to [[patch jpeglib]] using any terminal.&lt;br /&gt;
&lt;br /&gt;
== OpenJPEG ==&lt;br /&gt;
* Download and extract version 1.0 [http://www.openjpeg.org/index.php?menu=download openjpeg] source.&lt;br /&gt;
* Copy the [[make openjpeg|linden openjpeg makefiles]] into the openjpeg source top level directory. We do this to maintain 10.3.9 compatibility.&lt;br /&gt;
* Build and install the library&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ mkdir ../../linden/libraries/include/openjpeg&lt;br /&gt;
$ cp -p libopenjpeg/openjpeg.h ../../linden/libraries/include/openjpeg&lt;br /&gt;
$ make -f Makefile-i386.ppc libopenjpeg.a&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/ppc-darwin/lib_debug&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/ppc-darwin/lib_release&lt;br /&gt;
$ make -f Makefile-i386.ppc clean&lt;br /&gt;
$ make -f Makefile-i386.osx libopenjpeg.a&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/i386-darwin/lib_debug&lt;br /&gt;
$ cp libopenjpeg.a ../../linden/libraries/i386-darwin/lib_release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Freetype ==&lt;br /&gt;
* Download and extract [http://freetype.sourceforge.net/download.html#stable FreeType].&lt;br /&gt;
* Build and install the FreeType library:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd freetype-2.2.1&lt;br /&gt;
$ ./configure --prefix=/tmp/freetype&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/freetype/include/freetype2/freetype linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/freetype/include/freetype2/ft2build.h linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/freetype/lib/libfreetype.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
$ cp -p /tmp/freetype/lib/libfreetype.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorbis &amp;amp; Ogg ==&lt;br /&gt;
* Download &amp;amp; extract [http://www.xiph.org/downloads/ libvorbis].&lt;br /&gt;
* Download &amp;amp; extract [http://www.xiph.org/downloads/ libogg].&lt;br /&gt;
* Build &amp;amp; copy libogg first:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd libogg-1.1.3&lt;br /&gt;
$ ./configure --prefix=/tmp/ogg&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ cp -pR /tmp/ogg/include/ogg linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/ogg/lib/libogg.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
$ cp -p /tmp/ogg/lib/libogg.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Build &amp;amp; copy libvorbis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 3.3&lt;br /&gt;
$ cd libvorbis-1.1.2&lt;br /&gt;
$ ./configure --prefix=/tmp/vorbis --with-ogg=/tmp/ogg&lt;br /&gt;
$ make&lt;br /&gt;
$ make install&lt;br /&gt;
$ ../..&lt;br /&gt;
$ cp -pR /tmp/vorbis/include/vorbis linden/libraries/include&lt;br /&gt;
$ cp -p /tmp/vorbis/lib/libvorbis*.a linden/libraries/$PLATFORM/lib_debug&lt;br /&gt;
$ cp -p /tmp/vorbis/lib/libvorbis*.a linden/libraries/$PLATFORM/lib_release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TUT ==&lt;br /&gt;
* Download [http://tut-framework.sourceforge.net/download/ tut] into lindenlib&lt;br /&gt;
* Move it into a sub-directory, extract, and copy the headers&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir tut&lt;br /&gt;
$ mv TUT-2006-11-04.tar.gz tut&lt;br /&gt;
$ cd tut&lt;br /&gt;
$ tar xvzf TUT-2006-11-04.tar.gz&lt;br /&gt;
$ cd ../..&lt;br /&gt;
$ mkdir linden/libraries/include/tut&lt;br /&gt;
$ cp -p lindenlib/tut/tut.h lindenlib/tut/tut_reporter.h lindenlib/tut/tut_restartable.h linden/libraries/include/tut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mozilla ==&lt;br /&gt;
&amp;lt;b&amp;gt;*FIX:&amp;lt;/b&amp;gt; It&#039;s really hard to build the mozilla libs. Instructions coming.&lt;br /&gt;
&lt;br /&gt;
= Building the Viewer =&lt;br /&gt;
Launch XCode, open the project file &#039;linden/indra/newview/macview.xcodeproj&#039;, set &#039;newview&#039; as the active target, select an active build configuration, and build the project.&lt;br /&gt;
&lt;br /&gt;
If you had to change gcc versions for a ppc build, restore gcc back to 4.0.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo gcc_select 4.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Configurations ==&lt;br /&gt;
* &amp;lt;em&amp;gt;Development&amp;lt;/em&amp;gt;: This configuration is more suitable for debugging. The build process will create the SecondLife application targeted for your host architecture.&lt;br /&gt;
* &amp;lt;em&amp;gt;Deployment&amp;lt;/em&amp;gt;: This configuration is faster than the development version at the cost of some ability to debug. The build process will create the SecondLife application targeted for your host architecture.&lt;br /&gt;
* &amp;lt;em&amp;gt;Universal&amp;lt;/em&amp;gt;: This configuration is the same as the Deployment target except that all supported architectures - ppc and i386 - are built.&lt;br /&gt;
&lt;br /&gt;
= Building the Unit Tests =&lt;br /&gt;
From XCode, open the project &#039;linden/indra/test/MacTester.xcodeproj&#039;, set &#039;MacTester&#039; as the active target, and build.&lt;/div&gt;</summary>
		<author><name>Hunting Hare</name></author>
	</entry>
</feed>