<?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=Callum+Linden</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=Callum+Linden"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Callum_Linden"/>
	<updated>2026-05-30T04:39:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195374</id>
		<title>Build the Viewer on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195374"/>
		<updated>2015-01-28T20:40:21Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiContribBox}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Visual Studio 2013 - Second Life Developer set up=&lt;br /&gt;
This &amp;quot;Minimum Requirements recipe&amp;quot; listed below works for both local machines and VMs such as VMWare Fusion.&lt;br /&gt;
&lt;br /&gt;
This document is mostly complete (see &amp;lt;font color=&amp;quot;#ff3333&amp;quot;&amp;gt;Todo&amp;lt;/font&amp;gt; sections below and has been tested a number of times on bare metal systems. It is expected (and hoped) that developers will improve and refine this process over time - there are still some rough edges and things will change as new versions of software become available.&lt;br /&gt;
&lt;br /&gt;
{{KBnote|custom=For Lindens Only|See [https://wiki.lindenlab.com/wiki/User:Callum/VS2013_Developer_Setup this page on the internal wiki for specifics of internal use].}}&lt;br /&gt;
{{KBcaution|custom=Some Gotchas before we start|&lt;br /&gt;
The external package versions and bit-widths listed below have been carefully selected and tested. If you decide to install a different version of a given package (even a minor update), you are on your own.&lt;br /&gt;
&lt;br /&gt;
This recipe, by design, only covers development using the Cygwin shell - some commands will have to be modified if you want to use the Windows Command Prompt instead.&lt;br /&gt;
&lt;br /&gt;
You will need at the very least, these items before you begin:&lt;br /&gt;
*An installer for Windows 7 Pro 64bit&lt;br /&gt;
*A valid Windows Product key&lt;br /&gt;
*An installer for Visual Studio 2013&lt;br /&gt;
*A valid license for Visual Studio 2013&lt;br /&gt;
&lt;br /&gt;
Every effort has been made to make this recipe work with the Cygwin shell only.  Currently, the &amp;quot;Set up Autobuild and Python&amp;quot; section &#039;&#039;&#039;only&#039;&#039;&#039; works inside the Windows Command Prompt. &#039;&#039;If you figure out a way to make this work with Cygwin, please let us know.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The combination of Cygwin and Tortoise Hg means it is not possible to check out or check into a repository that requires you to enter login credentials. Currently, to do this, you must switch to a Windows Command Prompt. &#039;&#039;Again, if you know how to fix this or have a suggestion for a better package to use, please let us know.&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Minimum Requirements&amp;quot; recipe==&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
*Install Windows 7 Pro 64bit using your own product key&lt;br /&gt;
&lt;br /&gt;
*Keep running Windows Update (Start Menu -&amp;gt; All Programs -&amp;gt; Windows Update) until clicking on &amp;quot;Check for Updates&amp;quot; there tells you everything is up to date. Depending on the age of the install media you started with, this could take a really long time and many, many iterations.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual Studio 2013 Pro===&lt;br /&gt;
*Install VS 2013 Pro&lt;br /&gt;
* Note: If you don&#039;t own a copy of VS 2013 Pro, you might consider installing the the [http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx Community Version]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Uncheck all the &amp;quot;Optional features to install:&amp;quot; - they are not required&lt;br /&gt;
&lt;br /&gt;
*Download and install VS2013 Service Packs and updates&lt;br /&gt;
**[http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_5 Update 4 ] is the most recent &#039;&#039;&#039;released&#039;&#039;&#039; version at time of writing (2015-01)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===DirectX SDK===&lt;br /&gt;
*Download and install [http://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX SDK (June 2010)]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the Installation Options screen, set everything except the DirectX Headers and Libs to &amp;quot;This feature will not be installed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Tortoise Hg===&lt;br /&gt;
*Download and install [http://tortoisehg.bitbucket.org/download/ TortoiseHg 3.2.3] (64bit)&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.)&lt;br /&gt;
&lt;br /&gt;
===CMake===&lt;br /&gt;
*Download and install [http://www.cmake.org/download/ CMake 3.1.0] (32bit is only option)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the &amp;quot;Install options&amp;quot; screen, select &amp;quot;Add CMake to the system PATH for all users&amp;quot;&lt;br /&gt;
**For everything else, use the default options (path, etc.)&lt;br /&gt;
&lt;br /&gt;
===Cygwin===&lt;br /&gt;
*Download and install [http://cygwin.com/install.html Cygwin 64] (64bit)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Select Packages&amp;quot; screen&lt;br /&gt;
**Add additional packages:&lt;br /&gt;
***Devel/bison&lt;br /&gt;
***Devel/flex&lt;br /&gt;
***Devel/patch&lt;br /&gt;
**Use default options for everything else&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
*Download and install [https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi Python 2.7.&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;8&amp;lt;/font&amp;gt; (32bit)] (Do &#039;&#039;&#039;not&#039;&#039;&#039; install version 2.7.9 - it doesn&#039;t work for our setup currently])&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Customize Python&amp;quot; screen&lt;br /&gt;
**Change &amp;quot;Add python.exe to Path&amp;quot; to &amp;quot;Will be installed on local hard drive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Intermediate check===&lt;br /&gt;
{{KBnote|custom=Confirm things are installed properly so far|&lt;br /&gt;
Open a Cygwin terminal and type:&lt;br /&gt;
 bison --version&lt;br /&gt;
 cmake --version&lt;br /&gt;
 flex --version&lt;br /&gt;
 hg --version&lt;br /&gt;
 python --version&lt;br /&gt;
If they all report sensible values and not &amp;quot;Command not found&amp;quot; errors, then you are in good shape}}&lt;br /&gt;
&lt;br /&gt;
===Set up Autobuild and Python===&lt;br /&gt;
*Bootstrap pip &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/get-pip.py get-pip.py] and copy to a temp folder&lt;br /&gt;
** Open &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python get-pip.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pip will be installed&lt;br /&gt;
*Bootstrap easy_install &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/ez_setup.py ez_setup.py] and copy to a temp folder&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python ez_setup.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** easy_install will be installed&lt;br /&gt;
*Install Autobuild&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Change to the Python Scripts folder that was just created&lt;br /&gt;
** Typically &amp;lt;code&amp;gt;cd \Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run &amp;lt;code&amp;gt;pip install hg+http://bitbucket.org/oz_linden/autobuild-metadata#egg=autobuild&amp;lt;/code&amp;gt;&lt;br /&gt;
** Autobuild will be installed&lt;br /&gt;
*Update system PATH&lt;br /&gt;
**Add Python Scripts folder to PATH environment variable via the Control Panel&lt;br /&gt;
**Typically &amp;lt;code&amp;gt;C:\Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NSIS (Unicode)===&lt;br /&gt;
* You must install the Unicode version [http://www.scratchpaper.com/ here] and not the one from the NSIS page&lt;br /&gt;
* Not strictly required for developers (although it&#039;s useful) &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Test build of the Second Life Viewer===&lt;br /&gt;
Open a Cygwin shell and create a folder to hold your work&lt;br /&gt;
 cd /cygdrive/c&lt;br /&gt;
 mkdir work&lt;br /&gt;
 cd work&lt;br /&gt;
Check out a branch from Mercurial&lt;br /&gt;
: Currently this has to be [https://bitbucket.org/lindenlab/viewer-tools-update Viewer Tools Update] but eventually will apply to Viewer Release too.&lt;br /&gt;
 hg clone https://bitbucket.org/lindenlab/viewer-tools-update&lt;br /&gt;
Switch to the directory you just checked out and run Autobuild Configure&lt;br /&gt;
 cd viewer-tools-update&lt;br /&gt;
 autobuild configure -c &#039;&#039;RelWithDebInfoOS|ReleaseOS&#039;&#039;&lt;br /&gt;
{{KBnote|custom=TBD|we need a description here or somewhere on optional configuration switches}}&lt;br /&gt;
When that completes, open the VS 2013 solution file that gets created&lt;br /&gt;
 cygstart build-vc120/SecondLife.sln&lt;br /&gt;
Right-click on &amp;quot;secondlife-bin&amp;quot; in the Solution Explorer and select &amp;quot;Build&amp;quot;&lt;br /&gt;
: &#039;&#039;wait...&#039;&#039;&lt;br /&gt;
When the build completes (hopefully without errors) run it by pressing Control-F5&lt;br /&gt;
{{KBnote|At some point, this recipe will include steps that facilitate command line builds - for the moment, only option is to use the VS 2013 IDE}}&lt;br /&gt;
&lt;br /&gt;
==Additional Tools &amp;amp; Settings you might need==&lt;br /&gt;
*Tools&lt;br /&gt;
** Install and set up hg hooks using [https://wiki.secondlife.com/wiki/Mercurial_Tools instructions]&lt;br /&gt;
**:&#039;&#039;This arguably should be in the &amp;quot;minimum Requirements&amp;quot; section as it&#039;s way to easy to accidentally check in files with Windows line endings. Strongly suggested you install this.&#039;&#039;&lt;br /&gt;
**Install a Visual Studio helper like [http://www.wholetomato.com/ WholeTomato Visual Assist for VS2013] or [http://workspacewhiz.com/ Workspace Whiz]&lt;br /&gt;
**:These extensions to Visual Studio add many great features. Pretty much essential for serious work.&lt;br /&gt;
**Install a decent merge tool like [http://www.araxis.com/merge/index.en Araxis Merge] &lt;br /&gt;
**:Many free alternatives out there but Araxis is the best (and most expensive)&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Compiling viewer]]&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195373</id>
		<title>Build the Viewer on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195373"/>
		<updated>2015-01-28T20:39:55Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiContribBox}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Visual Studio 2013 - Second Life Developer set up=&lt;br /&gt;
This &amp;quot;Minimum Requirements recipe&amp;quot; listed below works for both local machines and VMs such as VMWare Fusion.&lt;br /&gt;
&lt;br /&gt;
This document is mostly complete (see &amp;lt;font color=&amp;quot;#ff3333&amp;quot;&amp;gt;Todo&amp;lt;/font&amp;gt; sections below and has been tested a number of times on bare metal systems. It is expected (and hoped) that developers will improve and refine this process over time - there are still some rough edges and things will change as new versions of software become available.&lt;br /&gt;
&lt;br /&gt;
{{KBnote|custom=For Lindens Only|See [https://wiki.lindenlab.com/wiki/User:Callum/VS2013_Developer_Setup this page on the internal wiki for specifics of internal use].}}&lt;br /&gt;
{{KBcaution|custom=Some Gotchas before we start|&lt;br /&gt;
The external package versions and bit-widths listed below have been carefully selected and tested. If you decide to install a different version of a given package (even a minor update), you are on your own.&lt;br /&gt;
&lt;br /&gt;
This recipe, by design, only covers development using the Cygwin shell - some commands will have to be modified if you want to use the Windows Command Prompt instead.&lt;br /&gt;
&lt;br /&gt;
You will need at the very least, these items before you begin:&lt;br /&gt;
*An installer for Windows 7 Pro 64bit&lt;br /&gt;
*A valid Windows Product key&lt;br /&gt;
*An installer for Visual Studio 2013&lt;br /&gt;
*A valid license for Visual Studio 2013&lt;br /&gt;
&lt;br /&gt;
Every effort has been made to make this recipe work with the Cygwin shell only.  Currently, the &amp;quot;Set up Autobuild and Python&amp;quot; section &#039;&#039;&#039;only&#039;&#039;&#039; works inside the Windows Command Prompt. &#039;&#039;If you figure out a way to make this work with Cygwin, please let us know.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The combination of Cygwin and Tortoise Hg means it is not possible to check out or check into a repository that requires you to enter login credentials. Currently, to do this, you must switch to a Windows Command Prompt. &#039;&#039;Again, if you know how to fix this or have a suggestion for a better package to use, please let us know.&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Minimum Requirements&amp;quot; recipe==&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
*Install Windows 7 Pro 64bit using your own product key&lt;br /&gt;
&lt;br /&gt;
*Keep running Windows Update (Start Menu -&amp;gt; All Programs -&amp;gt; Windows Update) until clicking on &amp;quot;Check for Updates&amp;quot; there tells you everything is up to date. Depending on the age of the install media you started with, this could take a really long time and many, many iterations.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual Studio 2013 Pro===&lt;br /&gt;
*Install VS 2013 Pro&lt;br /&gt;
* Note: If you don&#039;t own a copy of VS 2013 Pro, you might consider installing the the [http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx Community Version]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Uncheck all the &amp;quot;Optional features to install:&amp;quot; - they are not required&lt;br /&gt;
&lt;br /&gt;
*Download and install VS2013 Service Packs and updates&lt;br /&gt;
**[hhttp://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_5 Update 4 ] is the most recent &#039;&#039;&#039;released&#039;&#039;&#039; version at time of writing (2015-01)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===DirectX SDK===&lt;br /&gt;
*Download and install [http://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX SDK (June 2010)]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the Installation Options screen, set everything except the DirectX Headers and Libs to &amp;quot;This feature will not be installed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Tortoise Hg===&lt;br /&gt;
*Download and install [http://tortoisehg.bitbucket.org/download/ TortoiseHg 3.2.3] (64bit)&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.)&lt;br /&gt;
&lt;br /&gt;
===CMake===&lt;br /&gt;
*Download and install [http://www.cmake.org/download/ CMake 3.1.0] (32bit is only option)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the &amp;quot;Install options&amp;quot; screen, select &amp;quot;Add CMake to the system PATH for all users&amp;quot;&lt;br /&gt;
**For everything else, use the default options (path, etc.)&lt;br /&gt;
&lt;br /&gt;
===Cygwin===&lt;br /&gt;
*Download and install [http://cygwin.com/install.html Cygwin 64] (64bit)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Select Packages&amp;quot; screen&lt;br /&gt;
**Add additional packages:&lt;br /&gt;
***Devel/bison&lt;br /&gt;
***Devel/flex&lt;br /&gt;
***Devel/patch&lt;br /&gt;
**Use default options for everything else&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
*Download and install [https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi Python 2.7.&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;8&amp;lt;/font&amp;gt; (32bit)] (Do &#039;&#039;&#039;not&#039;&#039;&#039; install version 2.7.9 - it doesn&#039;t work for our setup currently])&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Customize Python&amp;quot; screen&lt;br /&gt;
**Change &amp;quot;Add python.exe to Path&amp;quot; to &amp;quot;Will be installed on local hard drive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Intermediate check===&lt;br /&gt;
{{KBnote|custom=Confirm things are installed properly so far|&lt;br /&gt;
Open a Cygwin terminal and type:&lt;br /&gt;
 bison --version&lt;br /&gt;
 cmake --version&lt;br /&gt;
 flex --version&lt;br /&gt;
 hg --version&lt;br /&gt;
 python --version&lt;br /&gt;
If they all report sensible values and not &amp;quot;Command not found&amp;quot; errors, then you are in good shape}}&lt;br /&gt;
&lt;br /&gt;
===Set up Autobuild and Python===&lt;br /&gt;
*Bootstrap pip &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/get-pip.py get-pip.py] and copy to a temp folder&lt;br /&gt;
** Open &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python get-pip.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pip will be installed&lt;br /&gt;
*Bootstrap easy_install &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/ez_setup.py ez_setup.py] and copy to a temp folder&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python ez_setup.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** easy_install will be installed&lt;br /&gt;
*Install Autobuild&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Change to the Python Scripts folder that was just created&lt;br /&gt;
** Typically &amp;lt;code&amp;gt;cd \Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run &amp;lt;code&amp;gt;pip install hg+http://bitbucket.org/oz_linden/autobuild-metadata#egg=autobuild&amp;lt;/code&amp;gt;&lt;br /&gt;
** Autobuild will be installed&lt;br /&gt;
*Update system PATH&lt;br /&gt;
**Add Python Scripts folder to PATH environment variable via the Control Panel&lt;br /&gt;
**Typically &amp;lt;code&amp;gt;C:\Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NSIS (Unicode)===&lt;br /&gt;
* You must install the Unicode version [http://www.scratchpaper.com/ here] and not the one from the NSIS page&lt;br /&gt;
* Not strictly required for developers (although it&#039;s useful) &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Test build of the Second Life Viewer===&lt;br /&gt;
Open a Cygwin shell and create a folder to hold your work&lt;br /&gt;
 cd /cygdrive/c&lt;br /&gt;
 mkdir work&lt;br /&gt;
 cd work&lt;br /&gt;
Check out a branch from Mercurial&lt;br /&gt;
: Currently this has to be [https://bitbucket.org/lindenlab/viewer-tools-update Viewer Tools Update] but eventually will apply to Viewer Release too.&lt;br /&gt;
 hg clone https://bitbucket.org/lindenlab/viewer-tools-update&lt;br /&gt;
Switch to the directory you just checked out and run Autobuild Configure&lt;br /&gt;
 cd viewer-tools-update&lt;br /&gt;
 autobuild configure -c &#039;&#039;RelWithDebInfoOS|ReleaseOS&#039;&#039;&lt;br /&gt;
{{KBnote|custom=TBD|we need a description here or somewhere on optional configuration switches}}&lt;br /&gt;
When that completes, open the VS 2013 solution file that gets created&lt;br /&gt;
 cygstart build-vc120/SecondLife.sln&lt;br /&gt;
Right-click on &amp;quot;secondlife-bin&amp;quot; in the Solution Explorer and select &amp;quot;Build&amp;quot;&lt;br /&gt;
: &#039;&#039;wait...&#039;&#039;&lt;br /&gt;
When the build completes (hopefully without errors) run it by pressing Control-F5&lt;br /&gt;
{{KBnote|At some point, this recipe will include steps that facilitate command line builds - for the moment, only option is to use the VS 2013 IDE}}&lt;br /&gt;
&lt;br /&gt;
==Additional Tools &amp;amp; Settings you might need==&lt;br /&gt;
*Tools&lt;br /&gt;
** Install and set up hg hooks using [https://wiki.secondlife.com/wiki/Mercurial_Tools instructions]&lt;br /&gt;
**:&#039;&#039;This arguably should be in the &amp;quot;minimum Requirements&amp;quot; section as it&#039;s way to easy to accidentally check in files with Windows line endings. Strongly suggested you install this.&#039;&#039;&lt;br /&gt;
**Install a Visual Studio helper like [http://www.wholetomato.com/ WholeTomato Visual Assist for VS2013] or [http://workspacewhiz.com/ Workspace Whiz]&lt;br /&gt;
**:These extensions to Visual Studio add many great features. Pretty much essential for serious work.&lt;br /&gt;
**Install a decent merge tool like [http://www.araxis.com/merge/index.en Araxis Merge] &lt;br /&gt;
**:Many free alternatives out there but Araxis is the best (and most expensive)&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Compiling viewer]]&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195368</id>
		<title>Build the Viewer on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195368"/>
		<updated>2015-01-28T18:16:42Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiContribBox}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
=Visual Studio 2013 - Second Life Developer set up=&lt;br /&gt;
This &amp;quot;Minimum Requirements recipe&amp;quot; listed below works for both local machines and VMs such as VMWare Fusion.&lt;br /&gt;
&lt;br /&gt;
This document is mostly complete (see &amp;lt;font color=&amp;quot;#ff3333&amp;quot;&amp;gt;Todo&amp;lt;/font&amp;gt; sections below and has been tested a number of times on bare metal systems. It is expected (and hoped) that developers will improve and refine this process over time - there are still some rough edges and things will change as new versions of software become available.&lt;br /&gt;
&lt;br /&gt;
{{KBnote|custom=For Lindens Only|See [https://wiki.lindenlab.com/wiki/User:Callum/VS2013_Developer_Setup this page on the internal wiki for specifics of internal use].}}&lt;br /&gt;
{{KBcaution|custom=Some Gotchas before we start|&lt;br /&gt;
The external package versions and bit-widths listed below have been carefully selected and tested. If you decide to install a different version of a given package (even a minor update), you are on your own.&lt;br /&gt;
&lt;br /&gt;
This recipe, by design, only covers development using the Cygwin shell - some commands will have to be modified if you want to use the Windows Command Prompt instead.&lt;br /&gt;
&lt;br /&gt;
You will need at the very least, these items before you begin:&lt;br /&gt;
*An installer for Windows 7 Pro 64bit&lt;br /&gt;
*A valid Windows Product key&lt;br /&gt;
*An installer for Visual Studio 2013&lt;br /&gt;
*A valid license for Visual Studio 2013&lt;br /&gt;
&lt;br /&gt;
Every effort has been made to make this recipe work with the Cygwin shell only.  Currently, the &amp;quot;Set up Autobuild and Python&amp;quot; section &#039;&#039;&#039;only&#039;&#039;&#039; works inside the Windows Command Prompt. &#039;&#039;If you figure out a way to make this work with Cygwin, please let us know.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The combination of Cygwin and Tortoise Hg means it is not possible to check out or check into a repository that requires you to enter login credentials. Currently, to do this, you must switch to a Windows Command Prompt. &#039;&#039;Again, if you know how to fix this or have a suggestion for a better package to use, please let us know.&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Minimum Requirements&amp;quot; recipe==&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
*Install Windows 7 Pro 64bit using your own product key&lt;br /&gt;
&lt;br /&gt;
*When the Windows installer asks for the default username, use &amp;lt;code&amp;gt;sldev&amp;lt;/code&amp;gt; and no password. Note: these instructions are trying to be as generic as possible - for local installs on your own machine, you can of course use any username you like.&lt;br /&gt;
&lt;br /&gt;
*Keep running Windows Update (Start Menu -&amp;gt; All Programs -&amp;gt; Windows Update) until clicking on &amp;quot;Check for Updates&amp;quot; there tells you everything is up to date. Depending on the age of the install media you started with, this could take a really long time and many, many iterations.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual Studio 2013 Pro===&lt;br /&gt;
*Install VS 2013 Pro&lt;br /&gt;
* Note: If you don&#039;t own a copy of VS 2013 Pro, you might consider installing the the [http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx Community Version]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Uncheck all the &amp;quot;Optional features to install:&amp;quot; - they are not required&lt;br /&gt;
&lt;br /&gt;
*Download and install VS2013 Service Packs and updates&lt;br /&gt;
**[http://www.microsoft.com/en-us/download/details.aspx?id=45508 VS 2013 Update 5.2, January 26, 2015] is the most recent at time of writing (2015-01)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===DirectX SDK===&lt;br /&gt;
*Download and install [http://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX SDK (June 2010)]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the Installation Options screen, set everything except the DirectX Headers and Libs to &amp;quot;This feature will not be installed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Tortoise Hg===&lt;br /&gt;
*Download and install [http://tortoisehg.bitbucket.org/download/ TortoiseHg 3.2.3] (64bit)&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.)&lt;br /&gt;
&lt;br /&gt;
===CMake===&lt;br /&gt;
*Download and install [http://www.cmake.org/download/ CMake 3.1.0] (32bit is only option)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the &amp;quot;Install options&amp;quot; screen, select &amp;quot;Add CMake to the system PATH for all users&amp;quot;&lt;br /&gt;
**For everything else, use the default options (path, etc.)&lt;br /&gt;
&lt;br /&gt;
===Cygwin===&lt;br /&gt;
*Download and install [http://cygwin.com/install.html Cygwin 64] (64bit)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Select Packages&amp;quot; screen&lt;br /&gt;
**Add additional packages:&lt;br /&gt;
***Devel/bison&lt;br /&gt;
***Devel/flex&lt;br /&gt;
***Devel/patch&lt;br /&gt;
**Use default options for everything else&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
*Download and install [https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi Python 2.7.&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;8&amp;lt;/font&amp;gt; (32bit)] (Do &#039;&#039;&#039;not&#039;&#039;&#039; install version 2.7.9 - it doesn&#039;t work for our setup currently])&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Customize Python&amp;quot; screen&lt;br /&gt;
**Change &amp;quot;Add python.exe to Path&amp;quot; to &amp;quot;Will be installed on local hard drive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Intermediate check===&lt;br /&gt;
{{KBnote|custom=Confirm things are installed properly so far|&lt;br /&gt;
Open a Cygwin terminal and type:&lt;br /&gt;
 bison --version&lt;br /&gt;
 cmake --version&lt;br /&gt;
 flex --version&lt;br /&gt;
 hg --version&lt;br /&gt;
 python --version&lt;br /&gt;
If they all report sensible values and not &amp;quot;Command not found&amp;quot; errors, then you are in good shape}}&lt;br /&gt;
&lt;br /&gt;
===Set up Autobuild and Python===&lt;br /&gt;
*Bootstrap pip &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/get-pip.py get-pip.py] and copy to a temp folder&lt;br /&gt;
** Open &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python get-pip.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pip will be installed&lt;br /&gt;
*Bootstrap easy_install &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/ez_setup.py ez_setup.py] and copy to a temp folder&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python ez_setup.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** easy_install will be installed&lt;br /&gt;
*Install Autobuild&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Change to the Python Scripts folder that was just created&lt;br /&gt;
** Typically &amp;lt;code&amp;gt;cd \Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run &amp;lt;code&amp;gt;pip install hg+http://bitbucket.org/oz_linden/autobuild-metadata#egg=autobuild&amp;lt;/code&amp;gt;&lt;br /&gt;
** Autobuild will be installed&lt;br /&gt;
*Update system PATH&lt;br /&gt;
**Add Python Scripts folder to PATH environment variable via the Control Panel&lt;br /&gt;
**Typically &amp;lt;code&amp;gt;C:\Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NSIS (Unicode)===&lt;br /&gt;
* You must install the Unicode version [http://www.scratchpaper.com/ here] and not the one from the NSIS page&lt;br /&gt;
* Not strictly required for developers (although it&#039;s useful) &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Test build of the Second Life Viewer===&lt;br /&gt;
Open a Cygwin shell and create a folder to hold your work&lt;br /&gt;
 cd /cygdrive/c&lt;br /&gt;
 mkdir work&lt;br /&gt;
 cd work&lt;br /&gt;
Check out a branch from Mercurial&lt;br /&gt;
: Currently this has to be [https://bitbucket.org/lindenlab/viewer-tools-update Viewer Tools Update] but eventually will apply to Viewer Release too.&lt;br /&gt;
 hg clone https://bitbucket.org/lindenlab/viewer-tools-update&lt;br /&gt;
Switch to the directory you just checked out and run Autobuild Configure&lt;br /&gt;
 cd viewer-tools-update&lt;br /&gt;
 autobuild configure -c &#039;&#039;RelWithDebInfoOS|ReleaseOS&#039;&#039;&lt;br /&gt;
{{KBnote|custom=TBD|we need a description here or somewhere on optional configuration switches}}&lt;br /&gt;
When that completes, open the VS 2013 solution file that gets created&lt;br /&gt;
 cygstart build-vc120/SecondLife.sln&lt;br /&gt;
Right-click on &amp;quot;secondlife-bin&amp;quot; in the Solution Explorer and select &amp;quot;Build&amp;quot;&lt;br /&gt;
: &#039;&#039;wait...&#039;&#039;&lt;br /&gt;
When the build completes (hopefully without errors) run it by pressing Control-F5&lt;br /&gt;
{{KBnote|At some point, this recipe will include steps that facilitate command line builds - for the moment, only option is to use the VS 2013 IDE}}&lt;br /&gt;
&lt;br /&gt;
==Additional Tools &amp;amp; Settings you might need==&lt;br /&gt;
*Tools&lt;br /&gt;
** Install and set up hg hooks using [https://wiki.secondlife.com/wiki/Mercurial_Tools instructions]&lt;br /&gt;
**:&#039;&#039;This arguably should be in the &amp;quot;minimum Requirements&amp;quot; section as it&#039;s way to easy to accidentally check in files with Windows line endings. Strongly suggested you install this.&#039;&#039;&lt;br /&gt;
**Install a Visual Studio helper like [http://www.wholetomato.com/ WholeTomato Visual Assist for VS2013] or [http://workspacewhiz.com/ Workspace Whiz]&lt;br /&gt;
**:These extensions to Visual Studio add many great features. Pretty much essential for serious work.&lt;br /&gt;
**Install a decent merge tool like [http://www.araxis.com/merge/index.en Araxis Merge] &lt;br /&gt;
**:Many free alternatives out there but Araxis is the best (and most expensive)&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Compiling viewer]]&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195358</id>
		<title>Build the Viewer on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Build_the_Viewer_on_Windows&amp;diff=1195358"/>
		<updated>2015-01-27T20:27:07Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: Created page with &amp;quot;__NOTOC__ =Visual Studio 2013 - Second Life Developer set up= This &amp;quot;Minimum Requirements recipe&amp;quot; listed below works for both local machines and VMs such as VMWare Fusion. &amp;lt;br&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=Visual Studio 2013 - Second Life Developer set up=&lt;br /&gt;
This &amp;quot;Minimum Requirements recipe&amp;quot; listed below works for both local machines and VMs such as VMWare Fusion.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This document is mostly complete (see &amp;lt;font color=&amp;quot;#ff3333&amp;quot;&amp;gt;Todo&amp;lt;/font&amp;gt; sections below and has been tested a number of times on bare metal systems. It is expected (and hoped) that developers will improve and refine this process over time - there are still some rough edges and things will change as new versions of software become available.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;Some Gotchas before we start&amp;lt;/font&amp;gt;==&lt;br /&gt;
* The external package versions and bit-widths listed below have carefully been selected and tested. If you decide to install a different version of a given package (even a minor update), you are on your own&lt;br /&gt;
* This recipe, by design, only covers development using the Cygwin shell - some commands will have to be modified if you want to use the Windows Command Prompt instead.&lt;br /&gt;
* You will need at the very least, these items from before you begin:&lt;br /&gt;
**An installer for Windows 7 Pro 64bit&lt;br /&gt;
**A valid Windows Product key&lt;br /&gt;
**An installer for Visual Studio 2013&lt;br /&gt;
**A valid license for Visual Studio 2013&lt;br /&gt;
* Every effort has been made to make this recipe work with the Cygwin shell only.  Currently, the &amp;quot;Set up Autobuild and Python&amp;quot; section &#039;&#039;&#039;only&#039;&#039;&#039; works inside the Windows Command Prompt. If you figure out a way to make this work with Cygwin, please let us know.&lt;br /&gt;
* The combination of Cygwin and Tortoise Hg means it is not possible to check out or check into a repository that requires you to enter login credentials. Currently, to do this, you must switch to a Windows Command Prompt. Again, if you know how to fix this or have a suggestion for a better package to use, please let us know.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Minimum Requirements&amp;quot; recipe==&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
*Install Windows 7 Pro 64bit using your own product key&lt;br /&gt;
&lt;br /&gt;
*When the Windows installer asks for the default username, use &amp;lt;code&amp;gt;sldev&amp;lt;/code&amp;gt; and no password. Note: these instructions are trying to be as generic as possible - for local installs on your own machine, you can of course use any username you like.&lt;br /&gt;
&lt;br /&gt;
*Keep running Windows Update (Start Menu -&amp;gt; All Programs -&amp;gt; Windows Update) until clicking on &amp;quot;Check for Updates&amp;quot; there tells you everything is up to date. Depending on the age of the install media you started with, this could take a really long time and many, many iterations.&lt;br /&gt;
&lt;br /&gt;
===Microsoft Visual Studio 2013 Pro===&lt;br /&gt;
*Install VS 2013 Pro&lt;br /&gt;
* Note: If you don&#039;t own a copy of VS 2013 Pro, you might consider installing the the [http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx Community Version]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Uncheck all the &amp;quot;Optional features to install:&amp;quot; - they are not required&lt;br /&gt;
&lt;br /&gt;
*Download and install VS2013 Service Packs and updates&lt;br /&gt;
**[http://www.microsoft.com/en-us/download/details.aspx?id=45508 VS 2013 Update 5.2, January 26, 2015] is the most recent at time of writing (2015-01)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===DirectX SDK===&lt;br /&gt;
*Download and install [http://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX SDK (June 2010)]&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the Installation Options screen, set everything except the DirectX Headers and Libs to &amp;quot;This feature will not be installed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Tortoise Hg===&lt;br /&gt;
*Download and install [http://tortoisehg.bitbucket.org/download/ TortoiseHg 3.2.3] (64bit)&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.)&lt;br /&gt;
&lt;br /&gt;
===CMake===&lt;br /&gt;
*Download and install [http://www.cmake.org/download/ CMake 3.1.0] (32bit is only option)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**At the &amp;quot;Install options&amp;quot; screen, select &amp;quot;Add CMake to the system PATH for all users&amp;quot;&lt;br /&gt;
**For everything else, use the default options (path, etc.)&lt;br /&gt;
&lt;br /&gt;
===Cygwin===&lt;br /&gt;
*Download and install [http://cygwin.com/install.html Cygwin 64] (64bit)&lt;br /&gt;
**Run the installer as Administrator (right click, &amp;quot;Run as administrator&amp;quot;)&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Select Packages&amp;quot; screen&lt;br /&gt;
**Add additional packages:&lt;br /&gt;
***Devel/bison&lt;br /&gt;
***Devel/flex&lt;br /&gt;
***Devel/patch&lt;br /&gt;
**Use default options for everything else&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
*Download and install [https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi Python 2.7.&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;8&amp;lt;/font&amp;gt; (32bit)] (Do &#039;&#039;&#039;not&#039;&#039;&#039; install version 2.7.9 - it doesn&#039;t work for our setup currently])&lt;br /&gt;
**Note: No option available to install as Administrator&lt;br /&gt;
**Use default options (path, components etc.) *until* you get to the &amp;quot;Customize Python&amp;quot; screen&lt;br /&gt;
**Change &amp;quot;Add python.exe to Path&amp;quot; to &amp;quot;Will be installed on local hard drive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Intermediate check===&lt;br /&gt;
*Confirm things are installed properly so far:&lt;br /&gt;
**Open a Cygwin terminal and type:&lt;br /&gt;
***&amp;lt;code&amp;gt;bison --version&amp;lt;/code&amp;gt;&lt;br /&gt;
***&amp;lt;code&amp;gt;cmake --version&amp;lt;/code&amp;gt;&lt;br /&gt;
***&amp;lt;code&amp;gt;flex --version&amp;lt;/code&amp;gt;&lt;br /&gt;
***&amp;lt;code&amp;gt;hg --version&amp;lt;/code&amp;gt;&lt;br /&gt;
***&amp;lt;code&amp;gt;python --version&amp;lt;/code&amp;gt;&lt;br /&gt;
**If they all report sensible values and not &amp;quot;Command not found&amp;quot; errors, then you are in good shape&lt;br /&gt;
&lt;br /&gt;
===Set up Autobuild and Python===&lt;br /&gt;
*Bootstrap pip &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/get-pip.py get-pip.py] and copy to a temp folder&lt;br /&gt;
** Open &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python get-pip.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** Pip will be installed&lt;br /&gt;
*Bootstrap easy_install &lt;br /&gt;
** Download (Save As) [https://bootstrap.pypa.io/ez_setup.py ez_setup.py] and copy to a temp folder&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Switch to that temp folder and execute it &amp;lt;code&amp;gt;python ez_setup.py&amp;lt;/code&amp;gt;&lt;br /&gt;
** easy_install will be installed&lt;br /&gt;
*Install Autobuild&lt;br /&gt;
** Remain in &amp;lt;font color=&amp;quot;#660000&amp;quot;&amp;gt;Windows Command Prompt&amp;lt;/font&amp;gt;&lt;br /&gt;
** Change to the Python Scripts folder that was just created&lt;br /&gt;
** Typically &amp;lt;code&amp;gt;cd \Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run &amp;lt;code&amp;gt;pip install hg+http://bitbucket.org/oz_linden/autobuild-metadata#egg=autobuild&amp;lt;/code&amp;gt;&lt;br /&gt;
** Autobuild will be installed&lt;br /&gt;
*Update system PATH&lt;br /&gt;
**Add Python Scripts folder to PATH environment variable via the Control Panel&lt;br /&gt;
**Typically &amp;lt;code&amp;gt;C:\Python27\Scripts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NSIS (Unicode)===&lt;br /&gt;
* You must install the Unicode version [http://www.scratchpaper.com/ here] and not the one from the NSIS page&lt;br /&gt;
* Not strictly required for developers (although it&#039;s useful) &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Test build of the Second Life Viewer===&lt;br /&gt;
*Open a Cygwin shell and create a folder to hold your work&lt;br /&gt;
** &amp;lt;code&amp;gt;cd /cygdrive/c&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;mkdir work&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;cd work&amp;lt;/code&amp;gt;&lt;br /&gt;
* Check out a branch from Mercurial&lt;br /&gt;
** Currently this has to be [https://bitbucket.org/lindenlab/viewer-tools-update Viewer Tools Update] but eventually will apply to Viewer Release too.&lt;br /&gt;
** &amp;lt;code&amp;gt;hg clone https://bitbucket.org/lindenlab/viewer-tools-update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Switch to the directory you just checked out and run Autobuild Configure&lt;br /&gt;
** &amp;lt;code&amp;gt;cd viewer-tools-update&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;autobuild configure&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;font color=&amp;quot;#ff3333&amp;quot;&amp;gt;Todo:&amp;lt;/font&amp;gt; Enumerate configure switches for OSS Community (FMOD, Havok etc.)&lt;br /&gt;
* When that completes, open the VS 2013 solution file that gets created&lt;br /&gt;
** &amp;lt;code&amp;gt;cygstart build-vc120/SecondLife.sln&amp;lt;/code&amp;gt;&lt;br /&gt;
*Right-click on &amp;quot;secondlife-bin&amp;quot; in the Solution Explorer and select &amp;quot;Build&amp;quot;&lt;br /&gt;
*Wait&lt;br /&gt;
* When the build completes (hopefully without errors) run it by pressing Control-F5&lt;br /&gt;
* Note: At some point, this recipe will include steps that facilitate command line builds - for the moment, only option is to use the VS 2013 IDE&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Tools &amp;amp; Settings you might need==&lt;br /&gt;
*Tools&lt;br /&gt;
** Install and set up hg hooks using [https://wiki.secondlife.com/wiki/Mercurial_Tools instructions]&lt;br /&gt;
*** This arguably should be in the &amp;quot;minimum Requirements&amp;quot; section as it&#039;s wway to easy to accidentally check in files with Windows line endings. Strongly suggested you install this.&lt;br /&gt;
**Install a Visual Studio helper like [http://www.wholetomato.com/ WholeTomato Visual Assist for VS2013] or [http://workspacewhiz.com/ Workspace Whiz]&lt;br /&gt;
***These extensions to Visual Studio add many great features. Pretty much essential for serious work.&lt;br /&gt;
**Install a decent merge tool like [http://www.araxis.com/merge/index.en Araxis Merge] &lt;br /&gt;
***Many free alternatives out there but Araxis is the best (and most expensive)&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=1129316</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=1129316"/>
		<updated>2010-12-24T00:45:32Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using an off-the-shelf version of the [http://qt.nokia.com/ Qt application and UI framework]. It is currently used by the most recent version of the [[Media Rendering Plugin Framework|Media Plugin API]] to render Web content in the Second Life viewer.&lt;br /&gt;
&lt;br /&gt;
The biggest change in this version of LLQtWebKit is that is can be built against an un-patched version of Qt. The patches that were present before have either been rolled into the main Qt codebase or we have found way to work around them. &lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
LLQtWebKit is released under the [http://www.gnu.org/licenses/gpl-2.0.html GPL V2] license. &lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
Versions built with earlier editions of Qt can be found via appropriate Mercurial tags.&lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [[LLQtWebKit Win32 Build Instructions|here]].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [[LLQtWebKit Mac OSX Build Instructions|here]].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
However, that README-linux.txt is incorrect. Since Qt 4, qmake has the Qt location hardcoded and ignores QTDIR. It is necessary to run the correct qmake (and uic) and therefore to make sure that the correct ones are found &amp;lt;em&amp;gt;first&amp;lt;/em&amp;gt; in the PATH. Also, some webpages instruct one that you must set QMAKESPEC to $QTDIR/mkspecs/default.&lt;br /&gt;
&lt;br /&gt;
Hence, correct instructions are (change &#039;4.6.0&#039; as appropriate for your Qt version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export QTDIR=/usr/local/Trolltech/Qt-4.6.0&lt;br /&gt;
export PATH=$QTDIR/bin:$PATH&lt;br /&gt;
export QMAKESPEC=$QTDIR/mkspecs/default&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then continue as instructed (&amp;lt;code&amp;gt;which qmake&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;which uic&amp;lt;/code&amp;gt; now should show a binary in your QTDIR).&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and other files required to build LLQtWebKit, there are a number of applications included in the package that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the platform specific build instructions above.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based, cross platform application that implements a simple Web browser &lt;br /&gt;
* &#039;&#039;&#039;win32gl&#039;&#039;&#039; - A simple Win32 specific application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based, cross platform application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based, cross platform application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: &amp;lt;code&amp;gt;4.7.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* The version of LLQtWebKit is &amp;lt;code&amp;gt;2.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* The user agent string reported by LLQtWebKit can be modified using the API but is of the form: &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko, Safari/533.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [[LLMozLib2]] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [[Qt Webkit Win32 Build Instructions|Qt WebKit]] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=1129315</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=1129315"/>
		<updated>2010-12-24T00:45:23Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using an off-the-shelf version of the [http://qt.nokia.com/ Qt application and UI framework]. It is currently used by the most recent version of the [[Media Rendering Plugin Framework|Media Plugin API]] to render Web content in the Second Life viewer.&lt;br /&gt;
&lt;br /&gt;
The biggest change in this version of the LLQtWebKit is that is can be built against an un-patched version of Qt. The patches that were present before have either been rolled into the main Qt codebase or we have found way to work around them. &lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
LLQtWebKit is released under the [http://www.gnu.org/licenses/gpl-2.0.html GPL V2] license. &lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
Versions built with earlier editions of Qt can be found via appropriate Mercurial tags.&lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [[LLQtWebKit Win32 Build Instructions|here]].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [[LLQtWebKit Mac OSX Build Instructions|here]].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
However, that README-linux.txt is incorrect. Since Qt 4, qmake has the Qt location hardcoded and ignores QTDIR. It is necessary to run the correct qmake (and uic) and therefore to make sure that the correct ones are found &amp;lt;em&amp;gt;first&amp;lt;/em&amp;gt; in the PATH. Also, some webpages instruct one that you must set QMAKESPEC to $QTDIR/mkspecs/default.&lt;br /&gt;
&lt;br /&gt;
Hence, correct instructions are (change &#039;4.6.0&#039; as appropriate for your Qt version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export QTDIR=/usr/local/Trolltech/Qt-4.6.0&lt;br /&gt;
export PATH=$QTDIR/bin:$PATH&lt;br /&gt;
export QMAKESPEC=$QTDIR/mkspecs/default&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then continue as instructed (&amp;lt;code&amp;gt;which qmake&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;which uic&amp;lt;/code&amp;gt; now should show a binary in your QTDIR).&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and other files required to build LLQtWebKit, there are a number of applications included in the package that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the platform specific build instructions above.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based, cross platform application that implements a simple Web browser &lt;br /&gt;
* &#039;&#039;&#039;win32gl&#039;&#039;&#039; - A simple Win32 specific application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based, cross platform application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based, cross platform application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: &amp;lt;code&amp;gt;4.7.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* The version of LLQtWebKit is &amp;lt;code&amp;gt;2.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* The user agent string reported by LLQtWebKit can be modified using the API but is of the form: &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko, Safari/533.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [[LLMozLib2]] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [[Qt Webkit Win32 Build Instructions|Qt WebKit]] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=1129314</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=1129314"/>
		<updated>2010-12-24T00:42:47Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp, Win32GL). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows 7/64 and Qt 4.7.1. It is not known if the same instructions work using other versions of Windows, Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
* For clarity, these instructions contain references to example paths and directories. Except where noted, you may replace these with ones of your own choosing although it is generally advisable to choose ones without spaces in them.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different archiving tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;&amp;lt;code&amp;gt;perl&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8q tarball from http://openssl.org/source/openssl-0.9.8q.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8q&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different archive tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8q&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8q\openssl-0.9.8q&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Some archive tools (notably 7-Zip) appear to have issues extracting the files correctly - make sure the header files in the &amp;lt;code&amp;gt;C:\openssl-0.9.8q\include\openssl&amp;lt;/code&amp;gt; directory are not zero length before proceeding.&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8q&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run these commands:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration)&lt;br /&gt;
** Copy the patch file &amp;lt;code&amp;gt;020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;C:\llqtwebkit\patches&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\openssl-0.9.8q&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8q\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.7.1 using Microsoft Visual Studio ==&lt;br /&gt;
=== Acquire the Qt 4.7.1 source code ===&lt;br /&gt;
* Download the source from here:  http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.1.zip&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\qt-4.7.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\qt-4.7.1&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\qt-4.7.1\qt-4.7.1&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command might not work.  It may result in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below. If so, try using WinZip, WinRAR or some other tool instead.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt build system to disable manifests ===&lt;br /&gt;
* Windows manifest files are not required for Qt builds used in the Second Life client.&lt;br /&gt;
* Inspect the &amp;lt;code&amp;gt;C:\qt-4.7.1\mkspecs\win32-msvc2005\qmake.conf&amp;lt;/code&amp;gt; file and check that the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; entry does not include an &amp;lt;code&amp;gt;embed_manifest_dll&amp;lt;/code&amp;gt; entry&lt;br /&gt;
* Inspect the &amp;lt;code&amp;gt;C:\qt-4.7.1\mkspecs\win32-msvc2005\qmake.conf&amp;lt;/code&amp;gt; file and check that the &amp;lt;code&amp;gt;QMAKE_LFLAGS&amp;lt;/code&amp;gt; line contains a &amp;lt;code&amp;gt;/MANIFEST:NO&amp;lt;/code&amp;gt; directive.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* If it&#039;s not open already, open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-4.7.1&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -opensource -fast -debug-and-release -no-qt3support -no-phonon -no-phonon-backend -prefix C:\qt-4.7.1 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8q\include -L C:\openssl-0.9.8q\out32dll -opensource -nomake demos -nomake examples&amp;lt;/code&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; the Enter key&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-4.7.1&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt, the release and debug libraries and dlls will be in &amp;lt;code&amp;gt;C:\qt-4.7.1\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8q\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8q\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt-4.7.1\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\qt-4.7.1\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\qt-4.7.1&lt;br /&gt;
 set PATH=C:\qt-4.7.1\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\qt-4.7.1\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\qt-4.7.1&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.7.1 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.7.1&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== Win32GL ===&lt;br /&gt;
* Edit the path variables at the top of the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt; directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files.&lt;br /&gt;
* Run the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\win32gl.sln&amp;lt;/code&amp;gt; MSVC solution file&lt;br /&gt;
* Select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration&lt;br /&gt;
* Update &amp;lt;code&amp;gt;home_url&amp;lt;/code&amp;gt; in win32gl.cpp with the correct path to your testpage&lt;br /&gt;
* Build and run as normal&lt;br /&gt;
&lt;br /&gt;
== Win32 Helper batch files ==&lt;br /&gt;
* There are some helper batch files for Windows developers that may prove useful. &lt;br /&gt;
* You will very likely need to configure settings at the top of each one to match the location of the files and directories on your system.&lt;br /&gt;
* They do not do much error checking so make sure you understand the ramifications of any changes you make.&lt;br /&gt;
* A useful pattern is to edit them so they only do what you need at that moment - build release LLQtWebKit and release testGL for example - then revert them when you&#039;re finished.&lt;br /&gt;
&lt;br /&gt;
=== Build LLQtWebKit and test apps ===&lt;br /&gt;
* Now you have built LLQtWebKit by hand, I&#039;ll point out this batch file which does it for you.&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\make_all.bat&amp;lt;/code&amp;gt; is a very simple batch file that will clean and build release and debug versions of LLQtWebKit and then clean and build release version of the test apps (except Win32GL). &lt;br /&gt;
* You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files.&lt;br /&gt;
* You almost certainly will want to run this batch file from a Qt command prompt as described above since various Qt directories need to be in the path.&lt;br /&gt;
&lt;br /&gt;
=== Generate a directory tree compatible with the Second Life client build system ===&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\copy_llqtwebkit.bat&amp;lt;/code&amp;gt; is a batch file that:&lt;br /&gt;
** Generates a directory tree containing LLQtWebKit header and libraries along with the necessary Qt run time files that are required by the Second Life client.&lt;br /&gt;
** Builds a &amp;lt;code&amp;gt;tar.bz2 &amp;lt;/code&amp;gt; archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life client &amp;lt;code&amp;gt;install.xml&amp;lt;/code&amp;gt; configuration file.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=1129313</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=1129313"/>
		<updated>2010-12-23T22:58:43Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using an off-the-shelf version of the [http://qt.nokia.com/ Qt application and UI framework]. It is currently used by the most recent version of the [[Media Rendering Plugin Framework|Media Plugin API]] to render Web content in the Second Life viewer.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
LLQtWebKit is released under the [http://www.gnu.org/licenses/gpl-2.0.html GPL V2] license. &lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
Versions built with earlier editions of Qt can be found via appropriate Mercurial tags.&lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [[LLQtWebKit Win32 Build Instructions|here]].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [[LLQtWebKit Mac OSX Build Instructions|here]].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
However, that README-linux.txt is incorrect. Since Qt 4, qmake has the Qt location hardcoded and ignores QTDIR. It is necessary to run the correct qmake (and uic) and therefore to make sure that the correct ones are found &amp;lt;em&amp;gt;first&amp;lt;/em&amp;gt; in the PATH. Also, some webpages instruct one that you must set QMAKESPEC to $QTDIR/mkspecs/default.&lt;br /&gt;
&lt;br /&gt;
Hence, correct instructions are (change &#039;4.6.0&#039; as appropriate for your Qt version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export QTDIR=/usr/local/Trolltech/Qt-4.6.0&lt;br /&gt;
export PATH=$QTDIR/bin:$PATH&lt;br /&gt;
export QMAKESPEC=$QTDIR/mkspecs/default&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then continue as instructed (&amp;lt;code&amp;gt;which qmake&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;which uic&amp;lt;/code&amp;gt; now should show a binary in your QTDIR).&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and other files required to build LLQtWebKit, there are a number of applications included in the package that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the platform specific build instructions above.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based, cross platform application that implements a simple Web browser &lt;br /&gt;
* &#039;&#039;&#039;win32gl&#039;&#039;&#039; - A simple Win32 specific application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based, cross platform application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based, cross platform application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: &amp;lt;code&amp;gt;4.7.1&amp;lt;/code&amp;gt;&lt;br /&gt;
* The version of LLQtWebKit is &amp;lt;code&amp;gt;2.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* The user agent string reported by LLQtWebKit can be modified using the API but is of the form: &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 6.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko, Safari/533.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [[LLMozLib2]] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [[Qt Webkit Win32 Build Instructions|Qt WebKit]] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=1030132</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=1030132"/>
		<updated>2010-09-08T23:03:16Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Configure Qt build system to disable manifests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp, Win32GL). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 3 and Qt 4.6.0. It is not known if the same instructions work using other versions of Windows, Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
* For clarity, these instructions contain references to example paths and directories. Except where noted, you may replace these with ones of your own choosing although it is generally advisable to choose ones without spaces in them.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different archiving tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;&amp;lt;code&amp;gt;perl&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8l tarball from http://openssl.org/source/openssl-0.9.8l.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different archive tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8l\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Some archive tools (notably 7-Zip) appear to have issues extracting the files correctly - make sure the header files in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\include\openssl&amp;lt;/code&amp;gt; directory are not zero length before proceeding.&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run these commands:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration)&lt;br /&gt;
** Copy the patch file &amp;lt;code&amp;gt;020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;C:\llqtwebkit-4.6\patches&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.6.0 using Microsoft Visual Studio ==&lt;br /&gt;
=== Acquire the Qt 4.6.0 source with our patches ===&lt;br /&gt;
* Our clone of Qt is available here: http://gitorious.org/+lindenqt/qt/lindenqt&lt;br /&gt;
* Download the source by clicking on the &amp;quot;lindenqt&amp;quot; branch under &amp;quot;Branches:&amp;quot; and then using the &amp;quot;Download lindenqt as tar.gz&amp;quot; link on the right hand side of the page&lt;br /&gt;
** It&#039;s a large download - over 100MB - so it may take some time&lt;br /&gt;
** Alternately, if you prefer you can clone the repository with git using the &amp;quot;clone&amp;quot; link on the page -- details of this are left as an exercise to the reader&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\qt-lindenqt\qt-lindenqt&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command might not work.  It may result in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below. If so, try using WinZip, WinRAR or some other tool instead.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt build system to disable manifests ===&lt;br /&gt;
* Windows manifest files are not required for Qt builds used in the Second Life client.&lt;br /&gt;
* Inspect the &amp;lt;code&amp;gt;C:\qt-lindenqt\mkspecs\win32-msvc2005\qmake.conf&amp;lt;/code&amp;gt; file and check that the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; entry does not include an &amp;lt;code&amp;gt;embed_manifest_dll&amp;lt;/code&amp;gt; entry&lt;br /&gt;
* Inspect the &amp;lt;code&amp;gt;C:\qt-lindenqt\mkspecs\win32-msvc2005\qmake.conf&amp;lt;/code&amp;gt; file and check that the &amp;lt;code&amp;gt;QMAKE_LFLAGS&amp;lt;/code&amp;gt; line contains a &amp;lt;code&amp;gt;/MANIFEST:NO&amp;lt;/code&amp;gt; directive.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* If it&#039;s not open already, open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -no-phonon -no-phonon-backend -prefix C:\qt-lindenqt -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8l\include -L C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press the Enter key&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; the Enter key&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt, the release and debug libraries and dlls will be in &amp;lt;code&amp;gt;C:\qt-lindenqt\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt-lindenqt\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\qt-lindenqt\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\qt-lindenqt&lt;br /&gt;
 set PATH=C:\qt-lindenqt\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\qt-lindenqt\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\qt-lindenqt&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt Linden Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.6.0&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== Win32GL ===&lt;br /&gt;
* Edit the path variables at the top of the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt; directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files.&lt;br /&gt;
* Run the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\win32gl.sln&amp;lt;/code&amp;gt; MSVC solution file&lt;br /&gt;
* Select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration&lt;br /&gt;
* Update &amp;lt;code&amp;gt;home_url&amp;lt;/code&amp;gt; in win32gl.cpp with the correct path to your testpage&lt;br /&gt;
* Build and run as normal&lt;br /&gt;
&lt;br /&gt;
== Win32 Helper batch files ==&lt;br /&gt;
* There are some helper batch files for Windows developers that may prove useful. &lt;br /&gt;
* You will very likely need to configure settings at the top of each one to match the location of the files and directories on your system.&lt;br /&gt;
* They do not do much error checking so make sure you understand the ramifications of any changes you make.&lt;br /&gt;
* A useful pattern is to edit them so they only do what you need at that moment - build release LLQtWebKit and testGL for example - then revert them when you&#039;re finished.&lt;br /&gt;
&lt;br /&gt;
=== Build LLQtWebKit and test apps ===&lt;br /&gt;
* Now you have built LLQtWebKit by hand, I&#039;ll point out this batch file which does it for you.&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\make_all.bat&amp;lt;/code&amp;gt; is a very simple batch file that will clean and build release and debug versions of LLQtWebKit and then clean and build release version of the test apps (except Win32GL). &lt;br /&gt;
* You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files.&lt;br /&gt;
* You almost certainly will want to run this batch file from a Qt command prompt as described above since various Qt directories need to be in the path.&lt;br /&gt;
&lt;br /&gt;
=== Generate a directory tree compatible with the Second Life client build system ===&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\copy_llqtwebkit.bat&amp;lt;/code&amp;gt; is a batch file that:&lt;br /&gt;
** Generates a directory tree containing LLQtWebKit header and libraries along with the necessary Qt run time files that are required by the Second Life client.&lt;br /&gt;
** Builds a &amp;lt;code&amp;gt;tar.bz2 &amp;lt;/code&amp;gt; archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life client &amp;lt;code&amp;gt;install.xml&amp;lt;/code&amp;gt; configuration file.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=1030043</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=1030043"/>
		<updated>2010-09-08T21:26:39Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build the open source version of Qt 4.6.0 using Microsoft Visual Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp, Win32GL). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 3 and Qt 4.6.0. It is not known if the same instructions work using other versions of Windows, Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
* For clarity, these instructions contain references to example paths and directories. Except where noted, you may replace these with ones of your own choosing although it is generally advisable to choose ones without spaces in them.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different archiving tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;&amp;lt;code&amp;gt;perl&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8l tarball from http://openssl.org/source/openssl-0.9.8l.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different archive tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8l\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Some archive tools (notably 7-Zip) appear to have issues extracting the files correctly - make sure the header files in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\include\openssl&amp;lt;/code&amp;gt; directory are not zero length before proceeding.&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run these commands:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration)&lt;br /&gt;
** Copy the patch file &amp;lt;code&amp;gt;020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;C:\llqtwebkit-4.6\patches&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.6.0 using Microsoft Visual Studio ==&lt;br /&gt;
=== Acquire the Qt 4.6.0 source with our patches ===&lt;br /&gt;
* Our clone of Qt is available here: http://gitorious.org/+lindenqt/qt/lindenqt&lt;br /&gt;
* Download the source by clicking on the &amp;quot;lindenqt&amp;quot; branch under &amp;quot;Branches:&amp;quot; and then using the &amp;quot;Download lindenqt as tar.gz&amp;quot; link on the right hand side of the page&lt;br /&gt;
** It&#039;s a large download - over 100MB - so it may take some time&lt;br /&gt;
** Alternately, if you prefer you can clone the repository with git using the &amp;quot;clone&amp;quot; link on the page -- details of this are left as an exercise to the reader&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\qt-lindenqt\qt-lindenqt&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command might not work.  It may result in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below. If so, try using WinZip, WinRAR or some other tool instead.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt build system to disable manifests ===&lt;br /&gt;
* Windows manifest files are not required for Qt builds used in the Second Life client.&lt;br /&gt;
* Inspect the &amp;lt;code&amp;gt;C:\qt-lindenqt\mkspecs\win32-msvc2005\qmake.conf&amp;lt;/code&amp;gt; file and check that the &amp;lt;code&amp;gt;QMAKE_LFLAGS&amp;lt;/code&amp;gt; line contains a &amp;lt;code&amp;gt;/MANIFEST:NO&amp;lt;/code&amp;gt; directive.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* If it&#039;s not open already, open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -no-phonon -no-phonon-backend -prefix C:\qt-lindenqt -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8l\include -L C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press the Enter key&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; the Enter key&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt, the release and debug libraries and dlls will be in &amp;lt;code&amp;gt;C:\qt-lindenqt\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt-lindenqt\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\qt-lindenqt\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\qt-lindenqt&lt;br /&gt;
 set PATH=C:\qt-lindenqt\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\qt-lindenqt\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\qt-lindenqt&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt Linden Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.6.0&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== Win32GL ===&lt;br /&gt;
* Edit the path variables at the top of the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt; directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files.&lt;br /&gt;
* Run the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\win32gl.sln&amp;lt;/code&amp;gt; MSVC solution file&lt;br /&gt;
* Select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration&lt;br /&gt;
* Update &amp;lt;code&amp;gt;home_url&amp;lt;/code&amp;gt; in win32gl.cpp with the correct path to your testpage&lt;br /&gt;
* Build and run as normal&lt;br /&gt;
&lt;br /&gt;
== Win32 Helper batch files ==&lt;br /&gt;
* There are some helper batch files for Windows developers that may prove useful. &lt;br /&gt;
* You will very likely need to configure settings at the top of each one to match the location of the files and directories on your system.&lt;br /&gt;
* They do not do much error checking so make sure you understand the ramifications of any changes you make.&lt;br /&gt;
* A useful pattern is to edit them so they only do what you need at that moment - build release LLQtWebKit and testGL for example - then revert them when you&#039;re finished.&lt;br /&gt;
&lt;br /&gt;
=== Build LLQtWebKit and test apps ===&lt;br /&gt;
* Now you have built LLQtWebKit by hand, I&#039;ll point out this batch file which does it for you.&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\make_all.bat&amp;lt;/code&amp;gt; is a very simple batch file that will clean and build release and debug versions of LLQtWebKit and then clean and build release version of the test apps (except Win32GL). &lt;br /&gt;
* You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files.&lt;br /&gt;
* You almost certainly will want to run this batch file from a Qt command prompt as described above since various Qt directories need to be in the path.&lt;br /&gt;
&lt;br /&gt;
=== Generate a directory tree compatible with the Second Life client build system ===&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\copy_llqtwebkit.bat&amp;lt;/code&amp;gt; is a batch file that:&lt;br /&gt;
** Generates a directory tree containing LLQtWebKit header and libraries along with the necessary Qt run time files that are required by the Second Life client.&lt;br /&gt;
** Builds a &amp;lt;code&amp;gt;tar.bz2 &amp;lt;/code&amp;gt; archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life client &amp;lt;code&amp;gt;install.xml&amp;lt;/code&amp;gt; configuration file.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=873823</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=873823"/>
		<updated>2010-04-21T18:44:18Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build the open source OpenSSL library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp, Win32GL). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 3 and Qt 4.6.0. It is not known if the same instructions work using other versions of Windows, Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
* For clarity, these instructions contain references to example paths and directories. Except where noted, you may replace these with ones of your own choosing although it is generally advisable to choose ones without spaces in them.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different archiving tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;&amp;lt;code&amp;gt;perl&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8l tarball from http://openssl.org/source/openssl-0.9.8l.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different archive tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8l\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Some archive tools (notably 7-Zip) appear to have issues extracting the files correctly - make sure the header files in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\include\openssl&amp;lt;/code&amp;gt; directory are not zero length before proceeding.&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run these commands:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration)&lt;br /&gt;
** Copy the patch file &amp;lt;code&amp;gt;020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;C:\llqtwebkit-4.6\patches&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.6.0 using Microsoft Visual Studio ==&lt;br /&gt;
=== Acquire the Qt 4.6.0 source with our patches ===&lt;br /&gt;
* Our clone of Qt is available here: http://gitorious.org/+lindenqt/qt/lindenqt&lt;br /&gt;
* Download the source by clicking on the &amp;quot;lindenqt&amp;quot; branch under &amp;quot;Branches:&amp;quot; and then using the &amp;quot;Download lindenqt as tar.gz&amp;quot; link on the right hand side of the page&lt;br /&gt;
** It&#039;s a large download - over 100MB - so it may take some time&lt;br /&gt;
** Alternately, if you prefer you can clone the repository with git using the &amp;quot;clone&amp;quot; link on the page -- details of this are left as an exercise to the reader&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\qt-lindenqt\qt-lindenqt&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command might not work.  It may result in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below. If so, try using WinZip, WinRAR or some other tool instead.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* If it&#039;s not open already, open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -no-phonon -no-phonon-backend -prefix C:\qt-lindenqt -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8l\include -L C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press the Enter key&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; the Enter key&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt, the release and debug libraries and dlls will be in &amp;lt;code&amp;gt;C:\qt-lindenqt\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt-lindenqt\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\qt-lindenqt\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\qt-lindenqt&lt;br /&gt;
 set PATH=C:\qt-lindenqt\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\qt-lindenqt\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\qt-lindenqt&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt Linden Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.6.0&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== Win32GL ===&lt;br /&gt;
* Edit the path variables at the top of the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt; directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files.&lt;br /&gt;
* Run the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\win32gl.sln&amp;lt;/code&amp;gt; MSVC solution file&lt;br /&gt;
* Select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration&lt;br /&gt;
* Build and run as normal&lt;br /&gt;
&lt;br /&gt;
== Win32 Helper batch files ==&lt;br /&gt;
* There are some helper batch files for Windows developers that may prove useful. &lt;br /&gt;
* You will very likely need to configure settings at the top of each one to match the location of the files and directories on your system.&lt;br /&gt;
* They do not do much error checking so make sure you understand the ramifications of any changes you make.&lt;br /&gt;
* A useful pattern is to edit them so they only do what you need at that moment - build release LLQtWebKit and testGL for example - then revert them when you&#039;re finished.&lt;br /&gt;
&lt;br /&gt;
=== Build LLQtWebKit and test apps ===&lt;br /&gt;
* Now you have built LLQtWebKit by hand, I&#039;ll point out this batch file which does it for you.&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\make_all.bat&amp;lt;/code&amp;gt; is a very simple batch file that will clean and build release and debug versions of LLQtWebKit and then clean and build release version of the test apps (except Win32GL). &lt;br /&gt;
* You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files.&lt;br /&gt;
* You almost certainly will want to run this batch file from a Qt command prompt as described above since various Qt directories need to be in the path.&lt;br /&gt;
&lt;br /&gt;
=== Generate a directory tree compatible with the Second Life client build system ===&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\copy_llqtwebkit.bat&amp;lt;/code&amp;gt; is a batch file that:&lt;br /&gt;
** Generates a directory tree containing LLQtWebKit header and libraries along with the necessary Qt run time files that are required by the Second Life client.&lt;br /&gt;
** Builds a &amp;lt;code&amp;gt;tar.bz2 &amp;lt;/code&amp;gt; archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life client &amp;lt;code&amp;gt;install.xml&amp;lt;/code&amp;gt; configuration file.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Mac_OSX_Build_Instructions&amp;diff=800863</id>
		<title>LLQtWebKit Mac OSX Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Mac_OSX_Build_Instructions&amp;diff=800863"/>
		<updated>2010-03-12T22:45:46Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Mac OS X as well as the test applications (testGL and uBrowser). They have been tested using XCode 3.2.1 on Mac OS X 10.6.2.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
Create a directory you&#039;ll use for the build.  This can be anywhere you like, but for the purposes of the example I&#039;ll use ~/llqtwebkit.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip into &amp;lt;code&amp;gt;~/llqtwebkit&amp;lt;/code&amp;gt; (this should create the directory &amp;lt;code&amp;gt;~/llqtwebkit/llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt using XCode ==&lt;br /&gt;
=== Acquire the Qt 4.6 source with our patches ===&lt;br /&gt;
* Our clone of Qt is available here: http://gitorious.org/+lindenqt/qt/lindenqt&lt;br /&gt;
* Download the source by clicking on the &amp;quot;lindenqt&amp;quot; branch under &amp;quot;Branches&amp;quot; and then using the &amp;quot;download as tar.gz&amp;quot; link on the right hand side of the page&lt;br /&gt;
** Alternately, if you prefer you can clone the repository with git using the &amp;quot;clone&amp;quot; link on the page -- details of this are left as an exercise to the reader&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;~/llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;~/llqtwebkit/qt-lindenqt&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open a terminal window and cd to &amp;lt;code&amp;gt;~/llqtwebkit/qt-lindenqt &amp;lt;/code&amp;gt; directory &lt;br /&gt;
* run the following commands (we&#039;ll use the QTDIR variable in later steps)&lt;br /&gt;
 export QTDIR=`pwd`&lt;br /&gt;
 export PATH=$PATH:$QTDIR/bin&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* In the terminal window, make sure you&#039;re still in the directory &amp;lt;code&amp;gt;~/llqtwebkit/qt-lindenqt &amp;lt;/code&amp;gt;&lt;br /&gt;
* Run the following command:&lt;br /&gt;
 ./configure -platform macx-g++40 -no-framework -fast -no-qt3support -prefix $PWD -static -release -no-xmlpatterns -no-phonon -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk/ -nomake examples -nomake demos -nomake docs -nomake translations&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* In the terminal window, make sure you&#039;re still in the directory &amp;lt;code&amp;gt;~/llqtwebkit/qt-lindenqt &amp;lt;/code&amp;gt; &lt;br /&gt;
* Run this command:&lt;br /&gt;
 make&lt;br /&gt;
* If you&#039;re on a multicore machine, you can speed up the build substantially by using the &#039;-j&#039; argument to make, which will cause it to build files in parallel.  For example, on a 4-core system, I use:&lt;br /&gt;
 make -j4&lt;br /&gt;
* This takes a little over an hour on a 4-core Mac Pro.&lt;br /&gt;
* After building Qt the built libraries will be in &amp;lt;code&amp;gt;~/llqtwebkit/qt-lindenqt/lib&amp;lt;/code&amp;gt;&lt;br /&gt;
* For me, the full build fails with &amp;quot;duplicate symbol _sqlite3_status&amp;quot;, but at that point it has already built most of what we need.  &lt;br /&gt;
* The one additional piece we need is the JavaScriptCore library in Webkit.  To build that do the following:&lt;br /&gt;
 cd $QTDIR/src/3rdparty/webkit/JavaScriptCore&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* In the terminal window, change to the directory &amp;lt;code&amp;gt;~/llqtwebkit/llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Create a symlink to QTDIR in this directory (this allows the Xcode project to find it easily):&lt;br /&gt;
 ln -s $QTDIR QTDIR&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;llqtwebkit.xcodeproj&amp;lt;/code&amp;gt; project with Xcode&lt;br /&gt;
* Build the &amp;quot;Release&amp;quot; configuration of the &amp;quot;llqtwebkit&amp;quot; target&lt;br /&gt;
* The output of the build is  &amp;lt;code&amp;gt;~/llqtwebkit/llqtwebkit/build/Release/libllqtwebkit.dylib&amp;lt;/code&amp;gt;&lt;br /&gt;
** to build the Second Life viewer, this library needs to be copied to &amp;lt;code&amp;gt;{VIEWERSRC}/libraries/universal-darwin/lib_release/&amp;lt;/code&amp;gt; and llqtwebkit.h needs to go in &amp;lt;code&amp;gt;{VIEWERSRC}/libraries/include/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optional: build testgl ==&lt;br /&gt;
testgl is a simple example that uses the OpenGL GLUT toolkit to open a window, and renders web pages to an OpenGL texture using llqtwebkit.&lt;br /&gt;
* First, build the llqtwebkit library as described above&lt;br /&gt;
* In Terminal, go into the &amp;lt;code&amp;gt;tests/testgl/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* Create a symlink to your built version of the llqtwebkit library:&lt;br /&gt;
 ln -s ../../build/Release/libllqtwebkit.dylib&lt;br /&gt;
* run the following commands:&lt;br /&gt;
 qmake&lt;br /&gt;
 make&lt;br /&gt;
* this should create a &#039;testgl&#039; binary, which you can run from the terminal window like so:&lt;br /&gt;
 ./testgl&lt;br /&gt;
&lt;br /&gt;
== Optional: build ubrowser ==&lt;br /&gt;
ubrowser is a more complex example that uses the GLUI toolkit to render web pages to OpenGL textures and apply them to various 3d models.&lt;br /&gt;
* First, build the llqtwebkit library as described above&lt;br /&gt;
* Open the Xcode project at &amp;lt;code&amp;gt;tests/ubrowser/ubrowser.xcodeproj&amp;lt;/code&amp;gt;&lt;br /&gt;
* Build and run using the Xcode UI&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=800853</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=800853"/>
		<updated>2010-03-12T22:45:11Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp, Win32GL). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 3 and Qt 4.6.0. It is not known if the same instructions work using other versions of Windows, Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
* For clarity, these instructions contain references to example paths and directories. Except where noted, you may replace these with ones of your own choosing although it is generally advisable to choose ones without spaces in them.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different archiving tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;&amp;lt;code&amp;gt;perl&amp;lt;/code&amp;gt;&#039; and &#039;&amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8l tarball from http://openssl.org/source/openssl-0.9.8l.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different archive tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8l\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run these commands:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration)&lt;br /&gt;
** Copy the patch file &amp;lt;code&amp;gt;020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;llqtwebkit-4.6\patches&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\openssl-0.9.8l&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.6.0 using Microsoft Visual Studio ==&lt;br /&gt;
=== Acquire the Qt 4.6.0 source with our patches ===&lt;br /&gt;
* Our clone of Qt is available here: http://gitorious.org/+lindenqt/qt/lindenqt&lt;br /&gt;
* Download the source by clicking on the &amp;quot;lindenqt&amp;quot; branch under &amp;quot;Branches:&amp;quot; and then using the &amp;quot;Download lindenqt as tar.gz&amp;quot; link on the right hand side of the page&lt;br /&gt;
** It&#039;s a large download - over 100MB - so it may take some time&lt;br /&gt;
** Alternately, if you prefer you can clone the repository with git using the &amp;quot;clone&amp;quot; link on the page -- details of this are left as an exercise to the reader&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\qt-lindenqt\qt-lindenqt&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s &amp;lt;code&amp;gt;tar&amp;lt;/code&amp;gt; command might not work.  It may result in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below. If so, try using WinZip, WinRAR or some other tool instead.&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* If it&#039;s not open already, open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -no-phonon -no-phonon-backend -prefix C:\qt-lindenqt -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8l\include -L C:\openssl-0.9.8l\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press the Enter key&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; the Enter key&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\qt-lindenqt&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt, the release and debug libraries and dlls will be in &amp;lt;code&amp;gt;C:\qt-lindenqt\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8l\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt-lindenqt\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\qt-lindenqt\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\qt-lindenqt&lt;br /&gt;
 set PATH=C:\qt-lindenqt\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\qt-lindenqt\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\qt-lindenqt&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt Linden Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.6.0&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== Win32GL ===&lt;br /&gt;
* Edit the path variables at the top of the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt; directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files.&lt;br /&gt;
* Run the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\copy_files.bat&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;C:\llqtwebkit\tests\win32gl\win32gl.sln&amp;lt;/code&amp;gt; MSVC solution file&lt;br /&gt;
* Select &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; configuration&lt;br /&gt;
* Build and run as normal&lt;br /&gt;
&lt;br /&gt;
== Win32 Helper batch files ==&lt;br /&gt;
* There are some helper batch files for Windows developers that may prove useful. &lt;br /&gt;
* You will very likely need to configure settings at the top of each one to match the location of the files and directories on your system.&lt;br /&gt;
* They do not do much error checking so make sure you understand the ramifications of any changes you make.&lt;br /&gt;
* A useful pattern is to edit them so they only do what you need at that moment - build release LLQtWebKit and testGL for example - then revert them when you&#039;re finished.&lt;br /&gt;
&lt;br /&gt;
=== Build LLQtWebKit and test apps ===&lt;br /&gt;
* Now you have built LLQtWebKit by hand, I&#039;ll point out this batch file which does it for you.&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\make_all.bat&amp;lt;/code&amp;gt; is a very simple batch file that will clean and build release and debug versions of LLQtWebKit and then clean and build release version of the test apps (except Win32GL). &lt;br /&gt;
* You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files.&lt;br /&gt;
* You almost certainly will want to run this batch file from a Qt command prompt as described above since various Qt directories need to be in the path.&lt;br /&gt;
&lt;br /&gt;
=== Generate a directory tree compatible with the Second Life client build system ===&lt;br /&gt;
* &amp;lt;code&amp;gt;C:\llqtwebkit\copy_llqtwebkit.bat&amp;lt;/code&amp;gt; is a batch file that:&lt;br /&gt;
** Generates a directory tree containing LLQtWebKit header and libraries along with the necessary Qt run time files that are required by the Second Life client.&lt;br /&gt;
** Builds a &amp;lt;code&amp;gt;tar.bz2 &amp;lt;/code&amp;gt; archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life client &amp;lt;code&amp;gt;install.xml&amp;lt;/code&amp;gt; configuration file.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=800843</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=800843"/>
		<updated>2010-03-12T22:44:17Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a modified version of the [http://qt.nokia.com/ Qt application and UI framework]. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in the Second Life viewer.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
LLQtWebKit is released under the [http://www.gnu.org/licenses/gpl-2.0.html GPL V2] license. &lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and other files required to build LLQtWebKit, there are a number of applications included in the package that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the platform specific build instructions above.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based, cross platform application that implements a simple Web browser &lt;br /&gt;
* &#039;&#039;&#039;win32gl&#039;&#039;&#039; - A simple Win32 specific application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based, cross platform application that implements a simple Web browser&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based, cross platform application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: &amp;lt;code&amp;gt;4.6.0&amp;lt;/code&amp;gt;&lt;br /&gt;
* The version of LLQtWebKit is &amp;lt;code&amp;gt;2.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* The user agent string reported by LLQtWebKit can be modified using the API but is of the form: &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/532.4+ (KHTML, like Gecko, Safari/532.4)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Qt_Webkit_Win32_Build_Instructions&amp;diff=667462</id>
		<title>Qt Webkit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Qt_Webkit_Win32_Build_Instructions&amp;diff=667462"/>
		<updated>2009-11-19T21:44:35Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{KBcaution|For a more recent version of the Qt/WebKit rendering library (LLQtWebKit) please go to [https://wiki.secondlife.com/wiki/LLQtWebKit this] page }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are instructions for building the Qt/WebKit library as well as testgl and&lt;br /&gt;
uBrowser demo apps using WebKit.&lt;br /&gt;
&lt;br /&gt;
If you do not have git, you can download and install from:&lt;br /&gt;
 http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Select the option (number 2 of 3) to add git to your path, but not all the unix&lt;br /&gt;
tools that ship with it.&lt;br /&gt;
&lt;br /&gt;
0) Building the open source OpenSSL library with Visual Studio:&lt;br /&gt;
* You can build Qt without ssl support (and skip this step) by removing -openssl from the Qt configure options.&lt;br /&gt;
* Download the latest tarball from http://openssl.org/source/ (Currently it is openssl-0.9.8j.tar.gz)&lt;br /&gt;
* Copy to C:\ and extract the contents  C:\openssl-0.9.8j&lt;br /&gt;
* The header files are symlinks to the real files, Microsoft&#039;s compiler doesn&#039;t seem to support NTFS sysmlinks so the real files have to be copied to the include directory.  Below are steps to do that in cygwin&#039;s bash.  Feel free to put the equivalent dos commands here as going into bash seems like a nasty hack.&lt;br /&gt;
Goto cd C:\openssl-0.9.8j and Launch bash and execute the following commands&lt;br /&gt;
 rm include/openssl/*&lt;br /&gt;
 cd crypto/&lt;br /&gt;
 find ./ -name &amp;quot;*.h&amp;quot; -exec cp {} ../include/openssl/ \;&lt;br /&gt;
 cd ../ssl/&lt;br /&gt;
 find ./ -name &amp;quot;*.h&amp;quot; -exec cp {} ../include/openssl/ \;&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp *.h include/openssl/&lt;br /&gt;
* Patch the OpenSSL distribution - it&#039;s broken out of the box. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8j\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8j\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 patch mk1mf.pl -p0 &amp;lt; fix.patch&lt;br /&gt;
&lt;br /&gt;
* Compile openssl&lt;br /&gt;
 cd C:\openssl-0.9.8j&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
&lt;br /&gt;
* The libraries libeay32.dll ssleay32.dll have now been build, they should be copied to wherever the Qt libraries are located for the applications that use them. &lt;br /&gt;
&lt;br /&gt;
1) Acquire llmozlib&lt;br /&gt;
* 1.1) Run &amp;quot;Qt Snapshot Command Prompt&amp;quot; and clone llmozlib in the C drive.&lt;br /&gt;
 cd C:\&lt;br /&gt;
 git clone git://code.staikos.net/llmozlib&lt;br /&gt;
&lt;br /&gt;
* 1.2) Checkout the qtwebkit branch &lt;br /&gt;
 cd C:\llmozlib&lt;br /&gt;
 git checkout -f -b qtwebkit origin/qtwebkit&lt;br /&gt;
&lt;br /&gt;
2) Building the open source Qt snapshot with Visual Studio:&lt;br /&gt;
* 2.1) Set up directories&lt;br /&gt;
* Start/All Programs/Microsoft Visual Studio 2005/Visual Studio Tools/Visual Studio 2005 Command Prompt&lt;br /&gt;
 mkdir C:\Qt&lt;br /&gt;
&lt;br /&gt;
* 2.2) Aquire the source for Qt&lt;br /&gt;
 Download the 4.5.2 source which is found on the ftp server here:&lt;br /&gt;
 ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz&lt;br /&gt;
&lt;br /&gt;
* 2.3) Unzip the tarball and extract the contents of Qt in C:\Qt using your favorite zip tool &#039;&#039;(Note: using Cygwin&#039;s tar commmand might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
 You should now have a directory C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
&lt;br /&gt;
* 2.4) Apply patches&lt;br /&gt;
Review the file llmozlib/llmozlib2/qt_patches/merged_into_qt to determine which patches need to be applied.  Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
  There are patches that can be found in llmozlib/llmozlib2/qt_patches/*.patch that should be applied to Qt&lt;br /&gt;
&lt;br /&gt;
* 2.4) Configure Qt, takes about 10 minutes.  Open a vs console&lt;br /&gt;
 cd C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8j\include -L C:\openssl-0.9.8j\out32dll&lt;br /&gt;
&lt;br /&gt;
* When the license agreement appears, if you agree type:&lt;br /&gt;
* y&amp;lt;enter&amp;gt;&lt;br /&gt;
* 2.5) Build Qt, without demos.  This takes 1-2 hours.&lt;br /&gt;
 nmake sub-src&lt;br /&gt;
&lt;br /&gt;
* After building Qt the release and debug libraries will be in C:\Qt\qt-all-opensource-src-4.5.2\lib&lt;br /&gt;
* 2.8) Create the file C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat and put the following in it&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 2.8) Make a shortcut to qt-vars.bat on your desktop&lt;br /&gt;
Right-click &amp;gt; Properties on the shortcut and set:&lt;br /&gt;
Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
&lt;br /&gt;
Rename the command prompt shortcut to &amp;quot;Qt 4.5 Command Prompt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
To make sure that the version shows 4.5.2&lt;br /&gt;
&lt;br /&gt;
3) Build llmozlib&lt;br /&gt;
&lt;br /&gt;
* Investigate: does &#039;git config core.safecrlf true&#039; solve the windows line ending issue?&lt;br /&gt;
&lt;br /&gt;
* 3.1) Launch the Qt command prompt, generate the makefile and build the library&lt;br /&gt;
 cd C:\llmozlib\llmozlib2&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
&lt;br /&gt;
If you want to build the debug version of llmozlib run &#039;qmake CONFIG+=debug&#039;&lt;br /&gt;
&lt;br /&gt;
* Now llmozlib is built and can be used in the  viewer.  If you want to build the test applications follow the next steps:&lt;br /&gt;
&lt;br /&gt;
4) Acquire the test application library dependencies; Glut and GLUI&lt;br /&gt;
* a. Glut: http://www.xmission.com/~nate/glut.html  Grab the library and header zip.&lt;br /&gt;
 glut-3.7.6-bin.zip&lt;br /&gt;
* a1. Extract the contents of the zip to a c:\llmozlib\llmozlib2\tests\GL&lt;br /&gt;
* b. Glui32: http://glui.sourceforge.net/&lt;br /&gt;
 glui-2.35.zip&lt;br /&gt;
* b1. Extract the zip&lt;br /&gt;
* b2. Open glui\src\msvc\glui.vcproj.  Allow Visual Studio to convert the project.&lt;br /&gt;
* b2. Edit src\include\GL\glui.h&lt;br /&gt;
* b3. Move &amp;quot;#include &amp;lt;cstdlib&amp;gt;&amp;quot; to the top of the file, just under #define GLUI_GLUI_H&lt;br /&gt;
     (hence above #include &amp;lt;GL/glut.h&amp;gt;&lt;br /&gt;
* b4. See http://www.lighthouse3d.com/opengl/glut/ for details on this edit&lt;br /&gt;
* Copy the contents of c:\llmozlib\llmozlib2\tests\GL into glue\src\include\GL&lt;br /&gt;
* b5. Follow the instructions in the readme.txt to compile the library&lt;br /&gt;
     Make sure to build a release library&lt;br /&gt;
* b6. Copy glui.h and from the include into C:\llmozlib\llmozlib2\tests\GL&lt;br /&gt;
* b7. Copy glui32.lib from msvc/lib into C:\llmozlib\llmozlib2\tests\GL&lt;br /&gt;
&lt;br /&gt;
4) Build testgl and run it.  Open the Qt Snapshot command prompt.&lt;br /&gt;
 cd C:\llmozlib\llmozlib2\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
&lt;br /&gt;
5) Build ubrowser and run it.  Open the Qt Snapshot command prompt.&lt;br /&gt;
 cd C:\llmozlib\llmozlib2\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
&lt;br /&gt;
6) Build Second life&lt;br /&gt;
* [[Get_source_and_compile]]&lt;br /&gt;
* When grabbing the source use the webkit branch  https://svn.secondlife.com/svn/linden/branches/2009/webkit&lt;br /&gt;
* Copy Qt libraries and ssl into C:\linden\webkit\libraries\i686-win32\lib\debug &amp;amp; release&lt;br /&gt;
* Copy Qt image plugins into C:\linden\webkit\indra\build-VC80\newview\relwithdebinfo\imageformats&lt;br /&gt;
* Copy llmozlib and header into C:\linden\webkit\libraries\i686-win32\*&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
a. To generate a Visual studio vcproj file you have to use a Qt *commercial* command prompt and run the following:&lt;br /&gt;
  qmake -tp vc&lt;br /&gt;
&lt;br /&gt;
b. Make sure all libs and app are built as Multi-threaded Dll or Multi-threaded debug dll.&lt;br /&gt;
 In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
&lt;br /&gt;
Troubleshooting:&lt;br /&gt;
1) If you see this, you need to reorder the &amp;lt;cstdlib&amp;gt; and &amp;lt;GL/glut.h&amp;gt; includes.&lt;br /&gt;
&lt;br /&gt;
C:\Program Files\Microsoft Visual Studio 8\VC\include\stdlib.h(406) : error C2381: &#039;exit&#039; : redefinition; __declspec(noreturn) differs&lt;br /&gt;
        ../include\GL/glut.h(146) : see declaration of &#039;exit&#039;&lt;br /&gt;
&lt;br /&gt;
2) uBrowser crashes on startup in stdlib (vc8crt.dll or similar)&lt;br /&gt;
&lt;br /&gt;
This happens when you mix debug and release libraries.  Make sure you are using&lt;br /&gt;
all &amp;quot;release&amp;quot; builds of GLUI and ubrowser.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Qt_Webkit_OSX_Build_Instructions&amp;diff=667442</id>
		<title>Qt Webkit OSX Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Qt_Webkit_OSX_Build_Instructions&amp;diff=667442"/>
		<updated>2009-11-19T21:40:00Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|For a more recent version of the Qt/WebKit rendering library (LLQtWebKit) please go to [https://wiki.secondlife.com/wiki/LLQtWebKit this] page }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Get Qt and set environment variables.&lt;br /&gt;
&lt;br /&gt;
Download Qt from trolltech.com&lt;br /&gt;
&lt;br /&gt;
Extract it somewhere such as&lt;br /&gt;
$HOME/dev/qt-4.5/&lt;br /&gt;
&lt;br /&gt;
Then set the environment variable QTDIR to point to that location.&lt;br /&gt;
 cd $HOME/dev/qt-4.5/&lt;br /&gt;
 export QTDIR=`pwd`&lt;br /&gt;
 export PATH=$PATH:$QTDIR/bin&lt;br /&gt;
&lt;br /&gt;
2) Get llmozlib and checkout the qtwebkit branch&lt;br /&gt;
&lt;br /&gt;
 cd $HOME/dev&lt;br /&gt;
 # note if you hasve write access and want to make changes, &lt;br /&gt;
 # use git+ssh://git@code.staikos.net/srv/git/llmozlib&lt;br /&gt;
 git clone git://code.staikos.net/llmozlib&lt;br /&gt;
 git checkout -b qtwebkit origin/qtwebkit&lt;br /&gt;
&lt;br /&gt;
3) Apply locally maintained Qt patches&lt;br /&gt;
&lt;br /&gt;
 cd $QTDIR&lt;br /&gt;
 &lt;br /&gt;
 # the patch files are numbered in the order they should be applied, so this should do the right thing&lt;br /&gt;
 for patchfile in /path/to/llmozlib/llmozlib2/qt_patches/[0-9]* /path/to/llmozlib/llmozlib2/qt_patches/qtwebkit-[0-9]* ; do&lt;br /&gt;
 	echo applying &amp;quot;$patchfile&amp;quot;&lt;br /&gt;
 	patch -p1 &amp;lt;&amp;quot;$patchfile&amp;quot;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
4) Compile Qt&lt;br /&gt;
&lt;br /&gt;
 cd $QTDIR&lt;br /&gt;
 ./configure -opensource -no-framework -fast -no-qt3support -prefix $PWD -static -release -no-xmlpatterns -no-phonon -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
If you have a multi-core machine, you can speed the make up substantially by using the &#039;-j&#039; argument.  On a 4-core machine, I use &#039;make -j4&#039;.&lt;br /&gt;
&lt;br /&gt;
For some reason, this doesn&#039;t seem to build libJavaScriptCore.a.  I also had to do the following:&lt;br /&gt;
&lt;br /&gt;
 cd $QTDIR/src/3rdparty/webkit/JavaScriptCore&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
5)  build llmozlib2.dylib with XCode:&lt;br /&gt;
&lt;br /&gt;
 cd $HOME/dev/llmozlib/llmozlib2/&lt;br /&gt;
&lt;br /&gt;
Create a symlink to QTDIR in the same directory as llmozlib2.xcodeproj (this allows the xcode project to find it easily):&lt;br /&gt;
&lt;br /&gt;
 ln -s $QTDIR QTDIR&lt;br /&gt;
&lt;br /&gt;
build the &amp;quot;llwebkitlib&amp;quot; configuration of the &amp;quot;llmozlib2&amp;quot; target&lt;br /&gt;
(note especially: the default configuration is &amp;quot;Release&amp;quot;.  Be sure&lt;br /&gt;
to specify &amp;quot;llwebkitlib&amp;quot; as the configuration):&lt;br /&gt;
&lt;br /&gt;
 xcodebuild -project llmozlib2.xcodeproj -target llmozlib2 -configuration llwebkitlib&lt;br /&gt;
&lt;br /&gt;
6) build ubrowser with xcode:&lt;br /&gt;
&lt;br /&gt;
Get the GLUI Framework (the one tested to work is at http://lukecyca.com/wp-content/uploads/2008/12/GLUI-Framework-2.35.tgz)&lt;br /&gt;
&lt;br /&gt;
run &amp;quot;update-mac-symbols.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ./update-mac-symbols.sh&lt;br /&gt;
&lt;br /&gt;
build the &amp;quot;Release&amp;quot; configuration of the &amp;quot;llmozlib2&amp;quot; target:&lt;br /&gt;
&lt;br /&gt;
 xcodebuild -project llmozlib2.xcodeproj -target llmozlib2 -configuration Release&lt;br /&gt;
&lt;br /&gt;
now build ubrowser&lt;br /&gt;
&lt;br /&gt;
 cd tests/ubrowser&lt;br /&gt;
 xcodebuild -project ubrowser.xcodeproj -target ubrowser -configuration Release&lt;br /&gt;
 open build/Release/ubrowser.app&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official:Media_Plugin_System_Messages&amp;diff=628533</id>
		<title>Linden Lab Official:Media Plugin System Messages</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linden_Lab_Official:Media_Plugin_System_Messages&amp;diff=628533"/>
		<updated>2009-10-23T17:21:23Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* media_status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
|&lt;br /&gt;
{{Media Plugin Nav}}&lt;br /&gt;
|--&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|--&lt;br /&gt;
|&lt;br /&gt;
{{Media Messages AlphaList}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
{{Note|This document reflects ongoing internal work on the Media Plugin System.  The details may not match the current publicly-available code; however the overall approach and high-level features reflect the project direction.}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This article specifies the messages used in the Second Life Viewer media plugin system to communicate between the Plugin Loader Shell (PLS) and individual media rendering plugins.&lt;br /&gt;
&lt;br /&gt;
For information on messages passed between the PLS and the Viewer, see [[Media Plugin System Internal Messages]].&lt;br /&gt;
&lt;br /&gt;
=== Message categories ===&lt;br /&gt;
&lt;br /&gt;
Messages fall into these general categories:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[#Base_messages|Base messages]]&#039;&#039;&#039; for initialization, connection management, and shared memory setup.  All plugins must implement these basic messages.&lt;br /&gt;
** &#039;&#039;&#039;[[#Media messages|Media messages]]&#039;&#039;&#039; for negotiating the pixel buffer and handling updates of subsections of it, specifying a media source URL, and passing mouse and keyboard events.  All media rendering plugins must implement these messages.&lt;br /&gt;
*** &#039;&#039;&#039;[[#Media_browser_messages|Time-based media messages]]&#039;&#039;&#039; for functions such as play, pause, stop, seek, and so on.   All time-based media (video-like) rendering plugins must implement these messages.&lt;br /&gt;
*** &#039;&#039;&#039;[[#Media_time_messages|Browser-like media messages]]&#039;&#039;&#039; for functions such as forward, back, reload, and so on.  All browser-like media rendering plugins must implement these messages.&lt;br /&gt;
* &#039;&#039;&#039;[[Media Plugin System Internal Messages|Internal messages]]&#039;&#039;&#039; for communication between the viewer and the plugin loader shell.  These messages are not delivered to a plugin.  Plugin developers need not be concerned with them; their documentation is provided for Viewer developers.&lt;br /&gt;
&lt;br /&gt;
During initialization, a plugin tells the PLS the set of messages it supports, including versioning information to maintain backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
=== Buffer size negotiation ===&lt;br /&gt;
&lt;br /&gt;
A plugin and the PLS negotiate the size and format of the pixel buffer into which the plugin draws with the texture_params, size_change_request, and size_change messages.&lt;br /&gt;
&lt;br /&gt;
The plugin determines the buffer&#039;s pixel size and format according to what it sends in the texture_params message.  Indexed pixel modes and pixels which use less than eight bits per channel are not currently supported.  Recommended modes are 24 bit RGB or 32 bit ARGB, or variants thereof (BGRA, etc).&lt;br /&gt;
&lt;br /&gt;
Size negotiation is a bit more complicated:&lt;br /&gt;
&lt;br /&gt;
* PLS initially sets up the dimensions of the pixel buffer.&lt;br /&gt;
** If the plugin doesn&#039;t have any special sizing requirements, it can just draw to the buffer and never send a size_change_request message.&lt;br /&gt;
* If the plugin sends a size_change_request message, the PLS takes that as the &amp;quot;native size&amp;quot; of the media.&lt;br /&gt;
** Media is allowed to change sizes multiple times during playback, such as with streaming QuickTime movies.&lt;br /&gt;
* If the media is playing as parcel media and the &amp;quot;auto scale&amp;quot; option is set, the draw dimensions may be increased to the next power of two.&lt;br /&gt;
* If the plugin sets the allow_downsample field in the texture_params message and the media&#039;s priority has been lowered, the host may reduce the requested draw dimensions. &lt;br /&gt;
** The plugin should only set allow_downsample if it can draw the media at different scales without changing the overall look of the media, such as scaling down a video stream&lt;br /&gt;
** Media which looks different when drawn at different pixel scales (such as a web browser where font sizes depend on pixel scale) should NOT set allow_downsample&lt;br /&gt;
** If it&#039;s more expensive to draw media downsampled than at native resolution, the plugin should NOT set allow_downsample: it&#039;s supposed to be a way to reduce load on the system, and if it doesn&#039;t accomplish that it shouldn&#039;t be used.&lt;br /&gt;
* If the plugin sets the &#039;padding&#039; field in the texture_params message, the buffer&#039;s byte width will be padded to the requested alignment.&lt;br /&gt;
** Note that it&#039;s possible to request pixel size/alignment combinations that don&#039;t come out even when using 3-byte RGB pixels.  If the host detects this, it will disable padding.&lt;br /&gt;
* PLS sends the requested drawing dimensions, the actual size of the buffer, and the name of the shared memory segment to the plugin in a size_change_response message.&lt;br /&gt;
** The plugin must draw within the specified dimensions, and should NOT send a size_change_request in response to the size_change_response&lt;br /&gt;
&lt;br /&gt;
When changing buffer sizes, the new size may require a larger or smaller memory buffer than the old size.  In this case, the shared memory segment name received with the size_change_response may be different than the one the plugin was previously drawing to.  If the plugin receives a size_change_response with a shared memory segment name it hasn&#039;t seen yet, it MUST not draw to the old shared memory segment using the new parameters, or it may overrun the end of the buffer and crash.  &lt;br /&gt;
&lt;br /&gt;
In this case, the plugin should expect to receive a shm_added message for the new shared memory segment either before or after the size_change_response, and must wait until it has received both before drawing to the new buffer.&lt;br /&gt;
&lt;br /&gt;
Likewise, when a plugin receives a shm_remove message and it&#039;s drawing to the shared memory buffer with that name, it needs to stop doing so, since the memory buffer will be deallocated once the message handler returns.&lt;br /&gt;
&lt;br /&gt;
== Base messages ==&lt;br /&gt;
All plugins need to handle these messages.&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin receives ===&lt;br /&gt;
&lt;br /&gt;
==== init ====&lt;br /&gt;
&lt;br /&gt;
Initialization message the PLS sends.  Plugin responds with [[#init_response|init_response]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== idle ====&lt;br /&gt;
&lt;br /&gt;
Call-in for plugin to do processing.  No response required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| time&lt;br /&gt;
| Real&lt;br /&gt;
| interval (in seconds) at which idle messages are being sent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== cleanup ====&lt;br /&gt;
&lt;br /&gt;
The plugin is about to be unloaded, and should perform any cleanup it needs to do beforehand.&lt;br /&gt;
&lt;br /&gt;
==== shm_added ====&lt;br /&gt;
Shared memory segment has been set up.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name &lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| size&lt;br /&gt;
| String&lt;br /&gt;
| ?&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| address &lt;br /&gt;
| string&lt;br /&gt;
| Since this is going from the PLS to the plugin (not crossing a process boundary),&lt;br /&gt;
the pointer will actually be valid.  LLSD doesn&#039;t have an encoding for a pointer (or even an unsigned 32 bit value),&lt;br /&gt;
so this will be the pointer&#039;s lowest 32-bits of value as a hexadecimal string.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| address_1&lt;br /&gt;
| string&lt;br /&gt;
| Optional.  The next 32-bits of the shm address, as above.  Usually 0 or absent (unneeded) on 32-bit hosts. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== shm_remove ====&lt;br /&gt;
&lt;br /&gt;
PLS will remove the shared memory segment will be removed when plugin responds with [[#shm_remove_response|shm_remove_response]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name&lt;br /&gt;
| String&lt;br /&gt;
| Name of memory segment to remove.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin sends ===&lt;br /&gt;
&lt;br /&gt;
==== init_response ====&lt;br /&gt;
&lt;br /&gt;
This message is the plugin&#039;s response to the [[#init|init]] message sent by the PLS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| versions &lt;br /&gt;
| Map&lt;br /&gt;
| Lists version corresponding to each plugin class.&lt;br /&gt;
* Key: message class name&lt;br /&gt;
* Value: version string.  All versions start at &amp;quot;1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| plugin_version &lt;br /&gt;
| String&lt;br /&gt;
| Free-form version string for the plugin.  This is expected to contain the versions of libraries the plugin uses (for example, quicktime, webkit, and so on) and may end up in the Viewer&#039;s about box.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== shm_remove_response ====&lt;br /&gt;
&lt;br /&gt;
Plugin is done with the shared memory segment, safe to delete.  Plugin responds with this message when it receives a [[#shm_remove|shm_remove]] message.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name&lt;br /&gt;
| String&lt;br /&gt;
| Name of shared memory segment to delete.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Media messages ==&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin receives ===&lt;br /&gt;
&lt;br /&gt;
==== load_uri ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| uri&lt;br /&gt;
| String&lt;br /&gt;
| URI to load.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== key_event ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| event&lt;br /&gt;
| String&lt;br /&gt;
| One of:&lt;br /&gt;
* down&lt;br /&gt;
* repeat&lt;br /&gt;
* up&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| key&lt;br /&gt;
| String &lt;br /&gt;
| Platform-specific keycode&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| modifiers&lt;br /&gt;
| String&lt;br /&gt;
| Contains zero or more of the following, concatenated together with &amp;lt;nowiki&amp;gt;&#039;|&#039;&amp;lt;/nowiki&amp;gt; characters in between.  There may be a spurious trailing &amp;lt;nowiki&amp;gt;&#039;|&#039;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
* control&lt;br /&gt;
* alt -- the &#039;option&#039; key on the mac&lt;br /&gt;
* shift&lt;br /&gt;
* meta -- the &#039;command&#039; key on the mac&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== text_event ====&lt;br /&gt;
&lt;br /&gt;
Text input event not associated with a single keystroke.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
|text&lt;br /&gt;
| String&lt;br /&gt;
| Encoded in utf8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== mouse_event ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| event&lt;br /&gt;
| String&lt;br /&gt;
| One of: &lt;br /&gt;
* down&lt;br /&gt;
* move&lt;br /&gt;
* up&lt;br /&gt;
* double_click&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
|x&lt;br /&gt;
|Integer&lt;br /&gt;
| x-coordinate in texture space&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| y &lt;br /&gt;
| Integer&lt;br /&gt;
| Y-coordinate in texture space (taking into account whether vertical flip was requested or not).&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| modifiers &lt;br /&gt;
| string &lt;br /&gt;
| Contains zero or more of the following, concatenated together with &amp;lt;nowiki&amp;gt;&#039;|&#039;&amp;lt;/nowiki&amp;gt; characters in between.  There may be a spurious trailing &amp;lt;nowiki&amp;gt;&#039;|&#039;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
* control&lt;br /&gt;
* alt -- the &#039;option&#039; key on the mac&lt;br /&gt;
* shift&lt;br /&gt;
* meta -- the &#039;command&#039; key on the mac&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== scroll_event ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
|x&lt;br /&gt;
|Integer&lt;br /&gt;
| x-coordinate in texture space&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| y &lt;br /&gt;
| Integer&lt;br /&gt;
| Y-coordinate in texture space (taking into account whether vertical flip was requested or not).&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| modifiers &lt;br /&gt;
| string &lt;br /&gt;
| Contains zero or more of the following, concatenated together with &amp;lt;nowiki&amp;gt;&#039;|&#039;&amp;lt;/nowiki&amp;gt; characters in between.  There may be a spurious trailing &amp;lt;nowiki&amp;gt;&#039;|&#039;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
* control&lt;br /&gt;
* alt -- the &#039;option&#039; key on the mac&lt;br /&gt;
* shift&lt;br /&gt;
* meta -- the &#039;command&#039; key on the mac&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== size_change ====&lt;br /&gt;
Either host-initiated or after a request from the plugin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| width&lt;br /&gt;
| String&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| height&lt;br /&gt;
| String&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| texture_width&lt;br /&gt;
| String&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| texture_height&lt;br /&gt;
| String&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name&lt;br /&gt;
| String&lt;br /&gt;
| Name of the shared memory segment the texture will draw into.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== set_priority ====&lt;br /&gt;
&lt;br /&gt;
Tells the plugin its relative priority.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| priority&lt;br /&gt;
| String&lt;br /&gt;
| One of:&lt;br /&gt;
* stopped: media is not playing, shouldn&#039;t need to update at all&lt;br /&gt;
* hidden: media is not being displayed or is out of view, don&#039;t need to do graphic updates, but may still update audio, playhead, etc. &lt;br /&gt;
* slideshow: media is being displayed, but is being severely throttled to reduce resource usage &lt;br /&gt;
* low: media is in the far distance, may be rendered at reduced size&lt;br /&gt;
* normal: default priority&lt;br /&gt;
* high: media has user focus and/or is taking up most of the screen&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== edit_cut ====&lt;br /&gt;
&lt;br /&gt;
Perform an edit-menu &amp;quot;cut&amp;quot; operation to the system clipboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== edit_copy ====&lt;br /&gt;
&lt;br /&gt;
Perform an edit-menu &amp;quot;copy&amp;quot; operation to the system clipboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== edit_paste ====&lt;br /&gt;
Perform an edit-menu &amp;quot;paste&amp;quot; operation from the system clipboard.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No parameters&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin sends ===&lt;br /&gt;
&lt;br /&gt;
==== texture_params ====&lt;br /&gt;
&lt;br /&gt;
* Note that the hexadecimal GLint and GLenum values used for internalformat, format and type are fixed by the OpenGL ARB, so passing them across process boundaries should be safe.&lt;br /&gt;
* Although the pixel size in bytes is completely determined by the format and type, deriving it from only those values is complex.  To simplify things, the plugin must provide the pixel size to the host.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| default_width&lt;br /&gt;
| String&lt;br /&gt;
| Optional. Default width for the texture.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| default_height&lt;br /&gt;
| String&lt;br /&gt;
| Optional. Default height for the texture.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| depth&lt;br /&gt;
| String&lt;br /&gt;
| Pixel size in bytes.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| internalformat&lt;br /&gt;
| String&lt;br /&gt;
| Texture internal format for glTexImage2D.  The value is a string containing hexadecimal digits, (e.g. &amp;quot;0xDEADBEEF&amp;quot;) representing a GLint.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| format&lt;br /&gt;
| String&lt;br /&gt;
| Texture format for glTexImage2D. The value is a string containing hexadecimal digits, (e.g. &amp;quot;0xDEADBEEF&amp;quot;) representing a GLenum.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| type&lt;br /&gt;
| String&lt;br /&gt;
| Texture type for glTexImage2D. The value is a string containing hexadecimal digits, (e.g. &amp;quot;0xDEADBEEF&amp;quot;) representing a GLenum.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| swap_bytes&lt;br /&gt;
| Boolean&lt;br /&gt;
| Optional.  True if the host should use glPixelStorei(GL_UNPACK_SWAP_BYTES, 1) when loading the data.  If not specified, defaults to false.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| coords_opengl&lt;br /&gt;
| Boolean&lt;br /&gt;
| True if the plugin wants to work in OpenGL coordinates (where (0,0) is the lower left corner of the texture), false to work in a coordinate system where (0,0) is the upper left.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| allow_downsample&lt;br /&gt;
| Boolean &lt;br /&gt;
| Optional.  If true, the host may negotiate a smaller texture when the plugin&#039;s priority is reduced. The plugin should not set this if downscaling the media is more expensive than drawing it at native size.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| padding&lt;br /&gt;
| String&lt;br /&gt;
| Optional.   Specifies how the rows of the texture should be padded. Useful values:&lt;br /&gt;
* 0 (the default) -- no padding is added&lt;br /&gt;
* -1 -- pad width to the next power of two&lt;br /&gt;
* 16 -- start each row on a 16 byte boundary -- NOTE: may not work correctly with odd-sized pixels like GL_RGB&lt;br /&gt;
* 32 -- start each row on a 32 byte boundary -- NOTE: may not work correctly with odd-sized pixels like GL_RGB&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== updated====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| left&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
|--&lt;br /&gt;
| top&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
|--&lt;br /&gt;
| right&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
|--&lt;br /&gt;
| bottom&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
|--&lt;br /&gt;
| current_time&lt;br /&gt;
| Real&lt;br /&gt;
| Optional.  Current playhead time in seconds.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| duration&lt;br /&gt;
| Real&lt;br /&gt;
| Optional.  Total duration of the media in seconds&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| current_rate&lt;br /&gt;
| Real&lt;br /&gt;
| Optional.  Rate at which the media is currently playing.&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| loaded_duration&lt;br /&gt;
| Real&lt;br /&gt;
| Optional.  For media which is partially loaded, the duration through which the media could currently play or seek.  For media which can&#039;t be loaded incrementally, either omit this parameter or set it to the same value as &#039;duration&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== media_status====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| status &lt;br /&gt;
| String&lt;br /&gt;
| One of:&lt;br /&gt;
* &amp;lt;empty string&amp;gt; -- not initialized or no media loaded&lt;br /&gt;
* loading -- loading or navigating&lt;br /&gt;
* loaded -- preroll/navigation complete&lt;br /&gt;
* error -- navigation/preroll failed&lt;br /&gt;
* playing -- playing (only for time-based media)&lt;br /&gt;
* paused -- paused (only for time-based media)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== name_text====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name &lt;br /&gt;
| String&lt;br /&gt;
| The name of the media. Typically the &amp;lt;code&amp;gt;&amp;lt;title&amp;gt;&amp;lt;/code&amp;gt; tag &amp;lt;br&amp;gt;in a Web page or the name in time based media.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== size_change_request ====&lt;br /&gt;
&lt;br /&gt;
When the stream wants to change its native size.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| width&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| height&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name&lt;br /&gt;
| String&lt;br /&gt;
| Name of the shared memory segment the texture will draw into.  This may induce the host to send a size_change message.  The plugin may stop drawing to the texture until an appropriate size_change message has been received.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== size_change_response ====&lt;br /&gt;
&lt;br /&gt;
Sent by the plugin in response to [[#size_change|size_change]] when the size change is complete.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| width&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| height&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| texture_width&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| texture_height&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name&lt;br /&gt;
| String&lt;br /&gt;
| Name of the shared memory segment the texture will draw into&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== cursor_changed ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| name&lt;br /&gt;
| String&lt;br /&gt;
| One of:&lt;br /&gt;
* &amp;lt;empty string&amp;gt;&lt;br /&gt;
*  arrow&lt;br /&gt;
*  ibeam&lt;br /&gt;
*  splith&lt;br /&gt;
*  splitv&lt;br /&gt;
*  hand&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== edit_state ====&lt;br /&gt;
&lt;br /&gt;
Update the state of the edit menu items in the host.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| cut&lt;br /&gt;
| Boolean&lt;br /&gt;
| OPTIONAL&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| copy&lt;br /&gt;
| Boolean&lt;br /&gt;
| OPTIONAL&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
| paste&lt;br /&gt;
| Boolean&lt;br /&gt;
| OPTIONAL&lt;br /&gt;
*  items that are not present in the update message should have their state unchanged.  &lt;br /&gt;
*  All states start out false in the host.  &lt;br /&gt;
*  False means the operation is not possible and the menu should be disabled.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Media_browser messages ==&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin receives ===&lt;br /&gt;
&lt;br /&gt;
==== focus ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| focused &lt;br /&gt;
| Boolean&lt;br /&gt;
| true if the browser instance has focus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== clear_cache ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No Parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== clear_cookies ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No Parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== enable_cookies ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|--&lt;br /&gt;
|enable&lt;br /&gt;
|Boolean&lt;br /&gt;
|Whether to enable cookies.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== proxy_setup ====&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| enable &lt;br /&gt;
|Boolean&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| host&lt;br /&gt;
| String&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| port&lt;br /&gt;
|String&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== browse_stop ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No Parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== browse_reload ====&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| ignore_cache&lt;br /&gt;
| Boolean&lt;br /&gt;
| If true, bypass cache for this reload.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== browse_forward ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No Parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== browse_back ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No Parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== set_status_redirect  ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| code&lt;br /&gt;
| String&lt;br /&gt;
| The HTTP status code on which to redirect (currently, only be 404).&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| url&lt;br /&gt;
| String&lt;br /&gt;
| URL to which to redirect.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== init_history ====&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| history &lt;br /&gt;
| Array of strings&lt;br /&gt;
| Array of string URIs to add to the browser history.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin sends ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== navigate_begin ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| uri &lt;br /&gt;
| String&lt;br /&gt;
| URI to which the browser is navigating.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== navigate_complete ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|---&lt;br /&gt;
| uri &lt;br /&gt;
| String&lt;br /&gt;
| URI to which the browser was navigating.&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| result_code&lt;br /&gt;
| String&lt;br /&gt;
| For example, 200, 404.&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| result_string &lt;br /&gt;
| String&lt;br /&gt;
| &amp;quot;OK&amp;quot;, &amp;quot;Not Found&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| history_back_available &lt;br /&gt;
| Boolean&lt;br /&gt;
| True if the &amp;quot;back&amp;quot; button should be enabled&lt;br /&gt;
|---&lt;br /&gt;
| history_forward_available &lt;br /&gt;
| Boolean&lt;br /&gt;
| True if the &amp;quot;forward&amp;quot; button should be enabled&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== progress ====&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|---&lt;br /&gt;
| percent&lt;br /&gt;
| String&lt;br /&gt;
| Percent of page load that has completed&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== status_text ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|---&lt;br /&gt;
| status &lt;br /&gt;
| String&lt;br /&gt;
| New browser status string.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== location_changed ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| uri &lt;br /&gt;
| String&lt;br /&gt;
| New browser URI for the navigation bar.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== click_href ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|---&lt;br /&gt;
| uri &lt;br /&gt;
| String&lt;br /&gt;
| URI of the link.&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| target &lt;br /&gt;
| String&lt;br /&gt;
| Target property of the link.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== click_nofollow ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parameters&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| uri &lt;br /&gt;
| String&lt;br /&gt;
| URI of the link.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Media_time messages ==&lt;br /&gt;
&lt;br /&gt;
=== Messages the plugin receives ===&lt;br /&gt;
&lt;br /&gt;
==== stop ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== start ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|---&lt;br /&gt;
| rate&lt;br /&gt;
| Real&lt;br /&gt;
| Optional. Rate to play at:&lt;br /&gt;
* 0.0 is the movie&#039;s default rate.&lt;br /&gt;
* 1.0 is normal forward (on most movies).&lt;br /&gt;
* -1.0 is reverse.&lt;br /&gt;
* Greater than 1.0 is fast foward. &lt;br /&gt;
* Less than 1.0 is slow motion.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pause ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No parameters&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== seek ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| time &lt;br /&gt;
| Real&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== set_loop ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|---&lt;br /&gt;
| loop &lt;br /&gt;
| Boolean&lt;br /&gt;
| True to make the media loop, false to make it play once.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== set_volume ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;lltable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|--&lt;br /&gt;
!Key&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
&lt;br /&gt;
|---&lt;br /&gt;
| volume &lt;br /&gt;
| Real&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627493</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627493"/>
		<updated>2009-10-22T21:31:59Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build Qt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the OpenSSL and Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit\other_patches&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 007, 008 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries and dlls will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627393</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627393"/>
		<updated>2009-10-22T21:25:16Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Downloading and patching the Qt source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the OpenSSL and Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit\other_patches&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 007, 008 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627373</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627373"/>
		<updated>2009-10-22T21:22:46Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build the open source OpenSSL library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the OpenSSL and Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit\other_patches&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627343</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627343"/>
		<updated>2009-10-22T21:19:06Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Acquire LLQtWebKit source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the OpenSSL and Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627333</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627333"/>
		<updated>2009-10-22T21:18:20Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627313</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627313"/>
		<updated>2009-10-22T21:16:27Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build the open source OpenSSL library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** &amp;lt;code&amp;gt;perl Configure VC-WIN32&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ms\do_masm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Continue to build &lt;br /&gt;
** &amp;lt;code&amp;gt;nmake -f ms\ntdll.mak&amp;lt;/code&amp;gt;&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627293</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=627293"/>
		<updated>2009-10-22T21:15:22Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build the open source OpenSSL library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - the line endings are broken out of the box on Windows. &lt;br /&gt;
** Copy the OpenSSL patch files from the &amp;lt;code&amp;gt;LLQtWebKit&amp;lt;/code&amp;gt; directory into the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
** Open a command prompt and change to the &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; directory&lt;br /&gt;
** Run this command:&lt;br /&gt;
*** &amp;lt;code&amp;gt;patch -p1 &amp;lt; 010-openssl-fix-line-endings.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the same directory, execute the following commands to build OpenSSL:&lt;br /&gt;
** perl Configure VC-WIN32&lt;br /&gt;
** ms\do_masm&lt;br /&gt;
&lt;br /&gt;
* Patch the &amp;lt;code&amp;gt;ntdll.mak&amp;lt;/code&amp;gt; file generated by the previous steps using&lt;br /&gt;
** patch -p1 &amp;lt; 020-openssl-disable-manifest.patch&lt;br /&gt;
&lt;br /&gt;
* Continue to build &lt;br /&gt;
** nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=560593</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=560593"/>
		<updated>2009-10-06T23:22:33Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* To enable a run time console for the test applications add a &amp;lt;code&amp;gt;CONFIG+=console&amp;lt;/code&amp;gt; line to the &amp;lt;code&amp;gt;qmake &amp;lt;/code&amp;gt; line.&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=559453</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=559453"/>
		<updated>2009-10-06T23:21:16Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Downloading and patching the Qt source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Apply the patches in the order indicated by the number in the filename - 002, 0007 etc.&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=495892</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=495892"/>
		<updated>2009-09-24T06:47:15Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Downloading and patching the Qt source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the contents of the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
** Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.).&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=495882</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=495882"/>
		<updated>2009-09-24T06:39:55Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Acquire LLQtWebKit source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the contents of the zip file to &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
**Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\llqtwebkit&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\llqtwebkit\llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=495872</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=495872"/>
		<updated>2009-09-24T06:33:56Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build the open source OpenSSL library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
** Note: Different tools have different concepts of &amp;quot;contents&amp;quot; - you should end up with the directories and files in &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt; and not &amp;lt;code&amp;gt;C:\openssl-0.9.8k\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip to C:\llqtwebkit&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477902</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477902"/>
		<updated>2009-09-02T09:25:28Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications included in the package that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the build instructions above.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477893</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477893"/>
		<updated>2009-09-02T09:19:41Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Test applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications included in the package that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the build instructions above.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477883</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477883"/>
		<updated>2009-09-02T09:18:41Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the instructions below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477873</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477873"/>
		<updated>2009-09-02T09:18:01Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Test applications ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the instructions below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477863</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477863"/>
		<updated>2009-09-02T09:16:43Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* What&amp;#039;s included? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== What&#039;s included? ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the instructions below.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;qttestapp&#039;&#039;&#039; - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* &#039;&#039;&#039;testgl&#039;&#039;&#039; - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* &#039;&#039;&#039;ubrowser&#039;&#039;&#039; - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477853</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477853"/>
		<updated>2009-09-02T09:16:06Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== What&#039;s included? ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/tip/tests/ here]. Details of how to build them are included in the instructions below.&lt;br /&gt;
&lt;br /&gt;
* &#039;qttestapp&#039; - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* &#039;testgl&#039; - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* &#039;ubrowser&#039; - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477843</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477843"/>
		<updated>2009-09-02T09:15:04Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* What&amp;#039;s included? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== What&#039;s included? ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications that are useful for testing. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here]. Details of how to build them are included in the instructions below.&lt;br /&gt;
&lt;br /&gt;
* qttestapp - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* testgl - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* ubrowser - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477833</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477833"/>
		<updated>2009-09-02T09:14:13Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from a patched version of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== What&#039;s included? ==&lt;br /&gt;
As well as the source code and patch files required to build the library there are a number of test applications that are useful for testing. Details of how to build them are included in the instructions below.&lt;br /&gt;
&lt;br /&gt;
* qttestapp - A simple Qt based application that implements a simple Web browser using LLQtWebKit&lt;br /&gt;
* testgl - A simple GLUT based application that renders a single Web page using OpenGL&lt;br /&gt;
* ubrowser - A more complex application GLUT/GLUI based application that renders multiple Web pages on the surface of 3D geometry&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477823</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477823"/>
		<updated>2009-09-02T09:07:06Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from version 4.5.2 of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;&amp;lt;code&amp;gt;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477813</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477813"/>
		<updated>2009-09-02T09:06:00Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Previous Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from version 4.5.2 of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Incarnations ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477803</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477803"/>
		<updated>2009-09-02T09:05:33Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from version 4.5.2 of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Version numbers ==&lt;br /&gt;
* The version of Qt/WebKit used is: 4.5.2&lt;br /&gt;
* The version of LLQtWebKit is 2.1&lt;br /&gt;
* The user agent string reported by LLQtWebKit is &amp;quot;Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Previous Versions ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Qt_Webkit_Win32_Build_Instructions&amp;diff=477793</id>
		<title>Qt Webkit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Qt_Webkit_Win32_Build_Instructions&amp;diff=477793"/>
		<updated>2009-09-02T08:58:00Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|For a more recent version of the Qt/WebKit rendering library (LLQtWebKit) please go to [https://wiki.secondlife.com/wiki/LLQtWebKit this] page }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are instructions for building the Qt/WebKit library as well as testgl and&lt;br /&gt;
uBrowser demo apps using WebKit.&lt;br /&gt;
&lt;br /&gt;
If you do not have git, you can download and install from:&lt;br /&gt;
 http://code.google.com/p/msysgit/&lt;br /&gt;
&lt;br /&gt;
Select the option (number 2 of 3) to add git to your path, but not all the unix&lt;br /&gt;
tools that ship with it.&lt;br /&gt;
&lt;br /&gt;
0) Building the open source OpenSSL library with Visual Studio:&lt;br /&gt;
* You can build Qt without ssl support (and skip this step) by removing -openssl from the Qt configure options.&lt;br /&gt;
* Download the latest tarball from http://openssl.org/source/ (Currently it is openssl-0.9.8j.tar.gz)&lt;br /&gt;
* Copy to C:\ and extract the contents  C:\openssl-0.9.8j&lt;br /&gt;
* The header files are symlinks to the real files, Microsoft&#039;s compiler doesn&#039;t seem to support NTFS sysmlinks so the real files have to be copied to the include directory.  Below are steps to do that in cygwin&#039;s bash.  Feel free to put the equivalent dos commands here as going into bash seems like a nasty hack.&lt;br /&gt;
Goto cd C:\openssl-0.9.8j and Launch bash and execute the following commands&lt;br /&gt;
 rm include/openssl/*&lt;br /&gt;
 cd crypto/&lt;br /&gt;
 find ./ -name &amp;quot;*.h&amp;quot; -exec cp {} ../include/openssl/ \;&lt;br /&gt;
 cd ../ssl/&lt;br /&gt;
 find ./ -name &amp;quot;*.h&amp;quot; -exec cp {} ../include/openssl/ \;&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp *.h include/openssl/&lt;br /&gt;
* Patch the OpenSSL distribution - it&#039;s broken out of the box. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8j\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8j\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 patch mk1mf.pl -p0 &amp;lt; fix.patch&lt;br /&gt;
&lt;br /&gt;
* Compile openssl&lt;br /&gt;
 cd C:\openssl-0.9.8j&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
&lt;br /&gt;
* The libraries libeay32.dll ssleay32.dll have now been build, they should be copied to wherever the Qt libraries are located for the applications that use them. &lt;br /&gt;
&lt;br /&gt;
1) Acquire llmozlib&lt;br /&gt;
* 1.1) Run &amp;quot;Qt Snapshot Command Prompt&amp;quot; and clone llmozlib in the C drive.&lt;br /&gt;
 cd C:\&lt;br /&gt;
 git clone git://code.staikos.net/llmozlib&lt;br /&gt;
&lt;br /&gt;
* 1.2) Checkout the qtwebkit branch &lt;br /&gt;
 cd C:\llmozlib&lt;br /&gt;
 git checkout -f -b qtwebkit origin/qtwebkit&lt;br /&gt;
&lt;br /&gt;
2) Building the open source Qt snapshot with Visual Studio:&lt;br /&gt;
* 2.1) Set up directories&lt;br /&gt;
* Start/All Programs/Microsoft Visual Studio 2005/Visual Studio Tools/Visual Studio 2005 Command Prompt&lt;br /&gt;
 mkdir C:\Qt&lt;br /&gt;
&lt;br /&gt;
* 2.2) Aquire the source for Qt&lt;br /&gt;
 Download the 4.5.2 source which is found on the ftp server here:&lt;br /&gt;
 ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz&lt;br /&gt;
&lt;br /&gt;
* 2.3) Unzip the tarball and extract the contents of Qt in C:\Qt using your favorite zip tool &#039;&#039;(Note: using Cygwin&#039;s tar commmand might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
 You should now have a directory C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
&lt;br /&gt;
* 2.4) Apply patches&lt;br /&gt;
Review the file llmozlib/llmozlib2/qt_patches/merged_into_qt to determine which patches need to be applied.  Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
  There are patches that can be found in llmozlib/llmozlib2/qt_patches/*.patch that should be applied to Qt&lt;br /&gt;
&lt;br /&gt;
* 2.4) Configure Qt, takes about 10 minutes.  Open a vs console&lt;br /&gt;
 cd C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8j\include -L C:\openssl-0.9.8j\out32dll&lt;br /&gt;
&lt;br /&gt;
* When the license agreement appears, if you agree type:&lt;br /&gt;
* y&amp;lt;enter&amp;gt;&lt;br /&gt;
* 2.5) Build Qt, without demos.  This takes 1-2 hours.&lt;br /&gt;
 nmake sub-src&lt;br /&gt;
&lt;br /&gt;
* After building Qt the release and debug libraries will be in C:\Qt\qt-all-opensource-src-4.5.2\lib&lt;br /&gt;
* 2.8) Create the file C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat and put the following in it&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 2.8) Make a shortcut to qt-vars.bat on your desktop&lt;br /&gt;
Right-click &amp;gt; Properties on the shortcut and set:&lt;br /&gt;
Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
&lt;br /&gt;
Rename the command prompt shortcut to &amp;quot;Qt 4.5 Command Prompt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
To make sure that the version shows 4.5.2&lt;br /&gt;
&lt;br /&gt;
3) Build llmozlib&lt;br /&gt;
&lt;br /&gt;
* Investigate: does &#039;git config core.safecrlf true&#039; solve the windows line ending issue?&lt;br /&gt;
&lt;br /&gt;
* 3.1) Launch the Qt command prompt, generate the makefile and build the library&lt;br /&gt;
 cd C:\llmozlib\llmozlib2&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
&lt;br /&gt;
If you want to build the debug version of llmozlib run &#039;qmake CONFIG+=debug&#039;&lt;br /&gt;
&lt;br /&gt;
* Now llmozlib is built and can be used in the  viewer.  If you want to build the test applications follow the next steps:&lt;br /&gt;
&lt;br /&gt;
4) Acquire the test application library dependencies; Glut and GLUI&lt;br /&gt;
* a. Glut: http://www.xmission.com/~nate/glut.html  Grab the library and header zip.&lt;br /&gt;
 glut-3.7.6-bin.zip&lt;br /&gt;
* a1. Extract the contents of the zip to a c:\llmozlib\llmozlib2\tests\GL&lt;br /&gt;
* b. Glui32: http://glui.sourceforge.net/&lt;br /&gt;
 glui-2.35.zip&lt;br /&gt;
* b1. Extract the zip&lt;br /&gt;
* b2. Open glui\src\msvc\glui.vcproj.  Allow Visual Studio to convert the project.&lt;br /&gt;
* b2. Edit src\include\GL\glui.h&lt;br /&gt;
* b3. Move &amp;quot;#include &amp;lt;cstdlib&amp;gt;&amp;quot; to the top of the file, just under #define GLUI_GLUI_H&lt;br /&gt;
     (hence above #include &amp;lt;GL/glut.h&amp;gt;&lt;br /&gt;
* b4. See http://www.lighthouse3d.com/opengl/glut/ for details on this edit&lt;br /&gt;
* Copy the contents of c:\llmozlib\llmozlib2\tests\GL into glue\src\include\GL&lt;br /&gt;
* b5. Follow the instructions in the readme.txt to compile the library&lt;br /&gt;
     Make sure to build a release library&lt;br /&gt;
* b6. Copy glui.h and from the include into C:\llmozlib\llmozlib2\tests\GL&lt;br /&gt;
* b7. Copy glui32.lib from msvc/lib into C:\llmozlib\llmozlib2\tests\GL&lt;br /&gt;
&lt;br /&gt;
4) Build testgl and run it.  Open the Qt Snapshot command prompt.&lt;br /&gt;
 cd C:\llmozlib\llmozlib2\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
&lt;br /&gt;
5) Build ubrowser and run it.  Open the Qt Snapshot command prompt.&lt;br /&gt;
 cd C:\llmozlib\llmozlib2\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
&lt;br /&gt;
6) Build Second life&lt;br /&gt;
* [[Get_source_and_compile]]&lt;br /&gt;
* When grabbing the source use the webkit branch  https://svn.secondlife.com/svn/linden/branches/2009/webkit&lt;br /&gt;
* Copy Qt libraries and ssl into C:\linden\webkit\libraries\i686-win32\lib\debug &amp;amp; release&lt;br /&gt;
* Copy Qt image plugins into C:\linden\webkit\indra\build-VC80\newview\relwithdebinfo\imageformats&lt;br /&gt;
* Copy llmozlib and header into C:\linden\webkit\libraries\i686-win32\*&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
a. To generate a Visual studio vcproj file you have to use a Qt *commercial* command prompt and run the following:&lt;br /&gt;
  qmake -tp vc&lt;br /&gt;
&lt;br /&gt;
b. Make sure all libs and app are built as Multi-threaded Dll or Multi-threaded debug dll.&lt;br /&gt;
 In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
&lt;br /&gt;
Troubleshooting:&lt;br /&gt;
1) If you see this, you need to reorder the &amp;lt;cstdlib&amp;gt; and &amp;lt;GL/glut.h&amp;gt; includes.&lt;br /&gt;
&lt;br /&gt;
C:\Program Files\Microsoft Visual Studio 8\VC\include\stdlib.h(406) : error C2381: &#039;exit&#039; : redefinition; __declspec(noreturn) differs&lt;br /&gt;
        ../include\GL/glut.h(146) : see declaration of &#039;exit&#039;&lt;br /&gt;
&lt;br /&gt;
2) uBrowser crashes on startup in stdlib (vc8crt.dll or similar)&lt;br /&gt;
&lt;br /&gt;
This happens when you mix debug and release libraries.  Make sure you are using&lt;br /&gt;
all &amp;quot;release&amp;quot; builds of GLUI and ubrowser.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477783</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477783"/>
		<updated>2009-09-02T08:55:15Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from version 4.5.2 of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions (in the form of a README file) can be found [http://hg.secondlife.com/llqtwebkit/src/tip/README-linux.txt here].&lt;br /&gt;
&lt;br /&gt;
== Previous Versions ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477773</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477773"/>
		<updated>2009-09-02T08:52:21Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from version 4.5.2 of the Qt/WebKit project. It is currently used by the most recent version of the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Linux_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
== Previous Versions ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Mac_OSX_Build_Instructions&amp;diff=477763</id>
		<title>LLQtWebKit Mac OSX Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Mac_OSX_Build_Instructions&amp;diff=477763"/>
		<updated>2009-09-02T08:50:40Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: Created page with &amp;#039;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]  == Introduction == These are instructions for building the Qt/WebKit library (LLQtWebKit) on Mac O...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Mac OS X as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using XCode 3.1.2 on Mac OS X 10.5.8.&lt;br /&gt;
&lt;br /&gt;
== Set up ==&lt;br /&gt;
Create a directory you&#039;ll use for the build.  This can be anywhere you like, but for the purposes of the example I&#039;ll use ~/llqtwebkit.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip into &amp;lt;code&amp;gt;~/llqtwebkit&amp;lt;/code&amp;gt; (this should create the directory &amp;lt;code&amp;gt;~/llqtwebkit/llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using XCode ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;~/llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;~/llqtwebkit/qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;~/llqtwebkit/llqtwebkit/qt_patches/merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Open a terminal window and cd to &amp;lt;code&amp;gt;~/llqtwebkit/qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* run the following commands (we&#039;ll use the QTDIR variable in later steps)&lt;br /&gt;
 export QTDIR=`pwd`&lt;br /&gt;
 export PATH=$PATH:$QTDIR/bin&lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 patch -p1 &amp;lt; ../llqtwebkit/qt_patches/$PATCH_NAME&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* In the terminal window, make sure you&#039;re still in the directory &amp;lt;code&amp;gt;~/llqtwebkit/qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run the following command:&lt;br /&gt;
 ./configure -no-framework -fast -no-qt3support -prefix $PWD -static -release -no-xmlpatterns -no-phonon -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk/&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* In the terminal window, make sure you&#039;re still in the directory &amp;lt;code&amp;gt;~/llqtwebkit/qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; &lt;br /&gt;
* Run this command:&lt;br /&gt;
 make&lt;br /&gt;
* If you&#039;re on a multicore machine, you can speed up the build substantially by using the &#039;-j&#039; argument to make, which will cause it to build files in parallel.  For example, on a 4-core system, I use:&lt;br /&gt;
 make -j4&lt;br /&gt;
* This takes a little over an hour on a 4-core Mac Pro.&lt;br /&gt;
* After building Qt the built libraries will be in &amp;lt;code&amp;gt;~/llqtwebkit/qt-all-opensource-src-4.5.2/lib&amp;lt;/code&amp;gt;&lt;br /&gt;
* For some reason, this doesn&#039;t build one of the libraries we need.  I also had to do the following:&lt;br /&gt;
 cd $QTDIR/src/3rdparty/webkit/JavaScriptCore&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* In the terminal window, change to the directory &amp;lt;code&amp;gt;~/llqtwebkit/llqtwebkit&amp;lt;/code&amp;gt;&lt;br /&gt;
* Create a symlink to QTDIR in this directory (this allows the xcode project to find it easily):&lt;br /&gt;
 ln -s $QTDIR QTDIR&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;llqtwebkit.xcodeproj&amp;lt;/code&amp;gt; project with Xcode&lt;br /&gt;
* Build the &amp;quot;Release&amp;quot; configuration of the &amp;quot;llqtwebkit&amp;quot; target&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477753</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477753"/>
		<updated>2009-09-02T08:48:41Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip to C:\llqtwebkit&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477743</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477743"/>
		<updated>2009-09-02T08:44:12Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== &amp;lt;&amp;lt;&amp;lt; [ Back to LLQtWebKit main page] ===&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip to C:\llqtwebkit&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477733</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477733"/>
		<updated>2009-09-02T08:44:05Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* &amp;lt;&amp;lt;&amp;lt; Back to LLQtWebKit main page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== &amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page] ====&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip to C:\llqtwebkit&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477723</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477723"/>
		<updated>2009-09-02T08:43:41Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== &amp;lt;&amp;lt;&amp;lt; [https://wiki.secondlife.com/wiki/LLQtWebKit Back to LLQtWebKit main page] ===&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip to C:\llqtwebkit&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477713</id>
		<title>LLQtWebKit Win32 Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit_Win32_Build_Instructions&amp;diff=477713"/>
		<updated>2009-09-02T08:42:21Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: Created page with &amp;#039;== Introduction == These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have bee...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
These are instructions for building the Qt/WebKit library (LLQtWebKit) on Windows as well as the test applications (testGL, uBrowser, QtTestApp). They have been tested using Microsoft Visual Studio 2005 (SP2) on Windows XP Service Pack 2 and Qt 4.5.2. It is not known if the same instructions work on Windows Vista or Windows 7 or using other versions of Microsoft Visual Studio or Qt.&lt;br /&gt;
&lt;br /&gt;
== Build the open source OpenSSL library ==&lt;br /&gt;
* Make sure a recent version of &#039;perl&#039; and &#039;patch&#039; are available on your system.&lt;br /&gt;
* Download the OpenSSL 0.9.8k tarball from http://openssl.org/source/openssl-0.9.8k.tar.gz&lt;br /&gt;
* Extract the contents to &amp;lt;code&amp;gt;C:\openssl-0.9.8k&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the &amp;quot;Visual Studio 2005 Command Prompt&amp;quot; (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Patch the OpenSSL distribution - it is broken out of the box on Windows. Copy the following lines into a file called &amp;lt;code&amp;gt;fix.patch&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
 *** Source: http://marc.info/?l=openssl-dev&amp;amp;m=107628900919852&amp;amp;q=raw&lt;br /&gt;
 *** openssl-0.9.7c/util/mk1mf.pl	Fri Mar 14 17:29:18 2003&lt;br /&gt;
 --- openssl-0.9.7c-miket/util/mk1mf.pl	Sat Feb  7 21:58:57 2004&lt;br /&gt;
 ***************&lt;br /&gt;
 *** 485,490 ****&lt;br /&gt;
 --- 485,495 ----&lt;br /&gt;
   	chop;&lt;br /&gt;
   &lt;br /&gt;
   	($key,$val)=/^([^=]+)=(.*)/;&lt;br /&gt;
 + 	&lt;br /&gt;
 + 	# On some Windows machines, $val has linefeeds at the end, which confuses&lt;br /&gt;
 + 	# subsequent code in this file. So we strip all whitespace at the end.&lt;br /&gt;
 +     $val =~ s/\s+$//;&lt;br /&gt;
 +     &lt;br /&gt;
   	if ($key eq &amp;quot;RELATIVE_DIRECTORY&amp;quot;)&lt;br /&gt;
   		{&lt;br /&gt;
   		if ($lib ne &amp;quot;&amp;quot;)&lt;br /&gt;
then run this command from the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\util\&amp;lt;/code&amp;gt; directory: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p0 mk1mf.pl &amp;lt; fix.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Execute the following commands to build OpenSSL:&lt;br /&gt;
 cd C:\openssl-0.9.8k&lt;br /&gt;
 perl Configure VC-WIN32&lt;br /&gt;
 ms\do_masm&lt;br /&gt;
 nmake -f ms\ntdll.mak&lt;br /&gt;
* After a few minutes, the libraries &amp;lt;code&amp;gt;libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ssleay32.dll&amp;lt;/code&amp;gt; will be built in the &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt; directory - confirm they exist - they will be needed later.&lt;br /&gt;
&lt;br /&gt;
== Acquire LLQtWebKit source code ==&lt;br /&gt;
* In a Web browser, navigate to http://hg.secondlife.com/llqtwebkit/&lt;br /&gt;
* Select &amp;quot;get source-&amp;gt;zip&amp;quot; from menu&lt;br /&gt;
* A zip file of the source code will be downloaded&lt;br /&gt;
* Extract the files in the zip to C:\llqtwebkit&lt;br /&gt;
* Do not build anything yet - some of the files that were just downloaded will be used to modify the Qt source code&lt;br /&gt;
&lt;br /&gt;
== Build the open source version of Qt 4.5.2 using Microsoft Visual Studio ==&lt;br /&gt;
=== Downloading and patching the Qt source ===&lt;br /&gt;
* Download the Qt 4.5.2 source from ftp://ftp.qtsoftware.com/qt/source/qt-all-opensource-src-4.5.2.tar.gz (Approximately 125MB)&lt;br /&gt;
* Extract the tarball into &amp;lt;code&amp;gt;C:\Qt&amp;lt;/code&amp;gt;  &#039;&#039;(Note: using Cygwin&#039;s tar command might not work.  It results in an &#039;&#039;&#039;Access is Denied&#039;&#039;&#039; error when running configure below.  Use WinZip or some other tool instead.)&#039;&#039;.&lt;br /&gt;
* This may take some as the archive contains a lot of files&lt;br /&gt;
* You should now have a directory &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Review the file &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\merged_into_qt&amp;lt;/code&amp;gt; to determine which patches need to be applied. Some patches are no longer needed with Qt 4.5.2.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; files that are required from the &amp;lt;code&amp;gt;C:\llqtwebkit\qt_patches\&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory&lt;br /&gt;
* If you do not have an MSVC command prompt open, open one now. (Start Menu-&amp;gt;Microsoft Visual Studio 2005-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio 2005 Command Prompt)&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* For each &amp;lt;code&amp;gt;.patch&amp;lt;/code&amp;gt; file, run the following command: &lt;br /&gt;
 &amp;lt;code&amp;gt;patch -p1 &amp;lt; $PATCH_NAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* where &amp;lt;code&amp;gt;$PATCH_NAME&amp;lt;/code&amp;gt; is the filename of the patch file&lt;br /&gt;
&lt;br /&gt;
=== Configure Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command: &lt;br /&gt;
 &amp;lt;code&amp;gt;configure -debug-and-release -no-qt3support -prefix C:\Qt\qt-all-opensource-src-4.5.2 -qt-libjpeg -qt-libpng -openssl-linked -I C:\openssl-0.9.8k\include -L C:\openssl-0.9.8k\out32dll&amp;lt;/code&amp;gt;&lt;br /&gt;
* When you are asked if you want to use the Commercial or Open Source version type &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; to select Open Source and press &amp;lt;enter&amp;gt;&lt;br /&gt;
* When the license agreement appears, if you agree type &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; &amp;lt;enter&amp;gt;&lt;br /&gt;
* This operation takes around 10-15 minutes on a typical development system&lt;br /&gt;
&lt;br /&gt;
=== Build Qt ===&lt;br /&gt;
* Change to the &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2&amp;lt;/code&amp;gt; directory &lt;br /&gt;
* Run this command:&lt;br /&gt;
 &amp;lt;code&amp;gt;nmake sub-src&amp;lt;/code&amp;gt;&lt;br /&gt;
* This operation takes around 1-2 hours on a typical development system&lt;br /&gt;
* After building Qt the release and debug libraries will be in &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure a Qt runtime environment ===&lt;br /&gt;
* Copy the OpenSSL dynamic libraries (&amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\libeay32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;C:\openssl-0.9.8k\out32dll\ssleay32.dll&amp;lt;/code&amp;gt;) to the Qt binary directory (&amp;lt;code&amp;gt;C:\qt\qt-all-opensource-src-4.5.2\bin&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Create the file &amp;lt;code&amp;gt;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;lt;/code&amp;gt; and put the following in it:&lt;br /&gt;
 @echo off&lt;br /&gt;
 echo Setting up a Qt environment...&lt;br /&gt;
 set QTDIR=C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
 set PATH=C:\Qt\qt-all-opensource-src-4.5.2\bin;%PATH%&lt;br /&gt;
 set QMAKESPEC=win32-msvc2005&lt;br /&gt;
 call &amp;quot;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat&amp;quot;&lt;br /&gt;
* Make a shortcut to &amp;lt;code&amp;gt;qt-vars.bat&amp;lt;/code&amp;gt; on your desktop&lt;br /&gt;
* Right-click on the shortcut and set the following properties:&lt;br /&gt;
 Target: %COMSPEC% /k &amp;quot;C:\Qt\qt-all-opensource-src-4.5.2\bin\qt-vars.bat&amp;quot;&lt;br /&gt;
 Start in: C:\Qt\qt-all-opensource-src-4.5.2&lt;br /&gt;
* Rename the shortcut to &amp;quot;Qt 4.5.2 Command Prompt&amp;quot;.&lt;br /&gt;
* Test it by opening the prompt and typing&lt;br /&gt;
 qmake --version&lt;br /&gt;
* Confirm that the Qt version displayed is 4.5.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build LLQtWebKit ==&lt;br /&gt;
* Launch the Qt command prompt and enter the following in the command prompt:&lt;br /&gt;
 cd C:\llqtwebkit&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
* This operation takes just a few seconds on a typical development system&lt;br /&gt;
* If you want to build the debug version of LLQtWebKit, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead&lt;br /&gt;
* Now LLQtWebKit is built and can be used in the Second Life viewer. &lt;br /&gt;
* If you want to build the test applications, follow the next steps:&lt;br /&gt;
&lt;br /&gt;
== Acquire test application dependencies == &lt;br /&gt;
=== Glut ===&lt;br /&gt;
* Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows&lt;br /&gt;
* The author provides a library and header for Windows so you do not have to build them yourself&lt;br /&gt;
* Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip&lt;br /&gt;
* Extract the contents of the zip to a new folder called &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GLUI ===&lt;br /&gt;
* Glut is a cross-platform library that renders UI components in the uBrowser test application&lt;br /&gt;
* The author does not provide libraries for Windows so you have to build them yourself.&lt;br /&gt;
* Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download&lt;br /&gt;
* Extract to &amp;lt;code&amp;gt;C:\glui-2.36&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;glut.h&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL&amp;lt;/code&amp;gt; as it is required to build GLUI&lt;br /&gt;
* Open &amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\glui.sln&amp;lt;/code&amp;gt; and let Visual Studio convert the project&lt;br /&gt;
* Select &amp;quot;Release&amp;quot; configuration of &amp;quot;_glui library&amp;quot; project and build it as normal&lt;br /&gt;
* Copy the GLUI header (&amp;lt;code&amp;gt;C:\glui-2.36\src\include\GL\glui.h&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the GLUI library you just built (&amp;lt;code&amp;gt;C:\glui-2.36\src\msvc\lib\glui32.lib&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\llqtwebkit\tests\GL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build test applications  == &lt;br /&gt;
=== testGL ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following:&lt;br /&gt;
 cd C:\llqtwebkit\tests\testgl&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\testgl.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
=== uBrowser ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\ubrowser&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\ubrowser.exe&lt;br /&gt;
* &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Important&amp;lt;/font&amp;gt;: &amp;lt;code&amp;gt;glui.h&amp;lt;/code&amp;gt; contains a pragma that forces the build to always link against the release version - &amp;lt;code&amp;gt;glut32.lib&amp;lt;/code&amp;gt; - instead of the debug version. This means building a debug version of uBrowser is currently broken.&lt;br /&gt;
&lt;br /&gt;
=== QtTestApp ===&lt;br /&gt;
* Open the Qt command prompt using the shortcut you made and enter the following: &lt;br /&gt;
 cd C:\llqtwebkit\tests\qttestapp&lt;br /&gt;
 qmake CONFIG-=debug&lt;br /&gt;
 nmake&lt;br /&gt;
 ..\GL\qttestapp.exe&lt;br /&gt;
* If you want to build the debug version, use &amp;lt;code&amp;gt;qmake CONFIG+=debug&amp;lt;/code&amp;gt; instead and run &amp;lt;code&amp;gt;nmake clean&amp;lt;/code&amp;gt; first&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties-&amp;gt;configuration-&amp;gt;c/c++-&amp;gt;code generation-&amp;gt;runtime library&lt;br /&gt;
* Make sure you do not mix release and debug versions of libraries and applications&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477703</id>
		<title>LLQtWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LLQtWebKit&amp;diff=477703"/>
		<updated>2009-09-02T08:40:06Z</updated>

		<summary type="html">&lt;p&gt;Callum Linden: /* Build instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
LLQtWebKit is a static library that renders Web content into a memory buffer using code from version 4.5.2 of the Qt/WebKit project. It is currently used by the [https://wiki.secondlife.com/wiki/Media_Rendering_Plugin_Framework Media Plugin API] to render Web content in Second Life.&lt;br /&gt;
&lt;br /&gt;
== Browse the code ==&lt;br /&gt;
The code for LLQtWebKit is stored in a Mercurial code repository. You can browse the code [http://hg.secondlife.com/llqtwebkit/src/ here] using a Web browser. &lt;br /&gt;
&lt;br /&gt;
== Build instructions ==&lt;br /&gt;
==== Windows ====&lt;br /&gt;
The Windows version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Win32_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
The Mac OSX version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Mac_OSX_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The Linux version of the build instructions can be found [https://wiki.secondlife.com/wiki/LLQtWebKit_Linux_Build_Instructions here].&lt;br /&gt;
&lt;br /&gt;
== Previous Versions ==&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/LLMozLib2 LLMozLib2] - the initial version of a Web content rendering library for Second Life that used the Mozilla/Gecko rendering engine. This is now deprecated.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.secondlife.com/wiki/Qt_Webkit_Win32_Build_Instructions Qt WebKit] - a poorly named version of the Web content rendering engine for Second Life that uses Qt/WebKit to render but retained the same method/class names from LLMozLib2. This is now deprecated.&lt;/div&gt;</summary>
		<author><name>Callum Linden</name></author>
	</entry>
</feed>