Difference between revisions of "LLQtWebKit Win32 Build Instructions"
Jump to navigation
Jump to search
m (Text replacement - "hg.secondlife.com" to "bitbucket.org/lindenlab") |
|||
(10 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
== Introduction == | == Introduction == | ||
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 | 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. | ||
== Set up == | |||
* 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. | |||
== Acquire LLQtWebKit source code == | == Acquire LLQtWebKit source code == | ||
* In a Web browser, navigate to http:// | * In a Web browser, navigate to http://bitbucket.org/lindenlab/llqtwebkit/ | ||
* Select "get source->zip" from menu | * Select "get source->zip" from menu | ||
* A zip file of the source code will be downloaded | * A zip file of the source code will be downloaded | ||
* Extract the contents of the zip file to <code>C:\llqtwebkit</code> | * Extract the contents of the zip file to <code>C:\llqtwebkit</code> | ||
**Note: Different tools have different concepts of "contents" - you should end up with the directories and files in <code>C:\llqtwebkit</code> and not <code>C:\llqtwebkit\llqtwebkit</code> | **Note: Different archiving tools have different concepts of "contents" - you should end up with the directories and files in <code>C:\llqtwebkit</code> and not <code>C:\llqtwebkit\llqtwebkit</code> | ||
== Build the open source OpenSSL library == | == Build the open source OpenSSL library == | ||
* Make sure a recent version of 'perl' and 'patch' are available on your system. | * Make sure a recent version of '<code>perl</code>' and '<code>patch</code>' are available on your system. | ||
* Download the OpenSSL 0.9. | * Download the OpenSSL 0.9.8q tarball from http://openssl.org/source/openssl-0.9.8q.tar.gz | ||
* Extract the contents to <code>C:\openssl-0.9. | * Extract the contents to <code>C:\openssl-0.9.8q</code> | ||
** Note: Different tools have different concepts of "contents" - you should end up with the directories and files in <code>C:\openssl-0.9. | ** Note: Different archive tools have different concepts of "contents" - you should end up with the directories and files in <code>C:\openssl-0.9.8q</code> and not <code>C:\openssl-0.9.8q\openssl-0.9.8q</code> | ||
** Note: Some archive tools (notably 7-Zip) appear to have issues extracting the files correctly - make sure the header files in the <code>C:\openssl-0.9.8q\include\openssl</code> directory are not zero length before proceeding. | |||
* Open the "Visual Studio 2005 Command Prompt" (Start Menu->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt) | * Open the "Visual Studio 2005 Command Prompt" (Start Menu->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt) | ||
* | * Change to the <code>C:\openssl-0.9.8q</code> directory | ||
* Run these commands: | |||
** <code>perl Configure VC-WIN32</code> | ** <code>perl Configure VC-WIN32</code> | ||
** <code>ms\do_masm</code> | ** <code>ms\do_masm</code> | ||
* Patch the <code>ntdll.mak</code> file generated by the previous steps | * Patch the <code>ntdll.mak</code> file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration) | ||
** <code>patch -p1 < 020-openssl-disable-manifest.patch</code> | ** Copy the patch file <code>020-openssl-disable-manifest.patch</code> from the <code>C:\llqtwebkit\patches</code> to <code>C:\openssl-0.9.8q</code> | ||
** Run this command: | |||
*** <code>patch -p1 < 020-openssl-disable-manifest.patch</code> | |||
* Continue to build | * Continue to build | ||
** <code>nmake -f ms\ntdll.mak</code> | ** <code>nmake -f ms\ntdll.mak</code> | ||
* After a few minutes, the libraries <code>libeay32.dll</code> and <code>ssleay32.dll</code> will be built in the <code>C:\openssl-0.9. | * After a few minutes, the libraries <code>libeay32.dll</code> and <code>ssleay32.dll</code> will be built in the <code>C:\openssl-0.9.8q\out32dll</code> directory - confirm they exist - they will be needed later. | ||
== Build the open source version of Qt 4. | == Build the open source version of Qt 4.7.1 using Microsoft Visual Studio == | ||
=== | === Acquire the Qt 4.7.1 source code === | ||
* Download the | * Download the source from here: http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.1.zip | ||
* Extract the contents of the tarball into <code>C:\ | * Extract the contents of the tarball into <code>C:\qt-4.7.1</code> | ||
* This may take some as the archive contains a lot of files | * This may take some as the archive contains a lot of files | ||
** Note: Different tools have different concepts of "contents" - you should end up with the directories and files in <code>C: | ** Note: Different tools have different concepts of "contents" - you should end up with the directories and files in <code>C:\qt-4.7.1</code> and not <code>C:\qt-4.7.1\qt-4.7.1</code> | ||
** Note: using Cygwin's tar command might not work. It | ** Note: using Cygwin's <code>tar</code> command might not work. It may result in an '''Access is Denied''' error when running configure below. If so, try using WinZip, WinRAR or some other tool instead. | ||
* | |||
=== Configure Qt build system to disable manifests === | |||
* | * Windows manifest files are not required for Qt builds used in the Second Life client. | ||
* Inspect the <code>C:\qt-4.7.1\mkspecs\win32-msvc2005\qmake.conf</code> file and check that the <code>CONFIG</code> entry does not include an <code>embed_manifest_dll</code> entry | |||
* Inspect the <code>C:\qt-4.7.1\mkspecs\win32-msvc2005\qmake.conf</code> file and check that the <code>QMAKE_LFLAGS</code> line contains a <code>/MANIFEST:NO</code> directive. | |||
=== Configure Qt === | === Configure Qt === | ||
* Change to the <code>C: | * If it's not open already, open the "Visual Studio 2005 Command Prompt" (Start Menu->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt) | ||
* Change to the <code>C:\qt-4.7.1</code> directory | |||
* Run this command: | * Run this command: | ||
<code>configure -debug-and-release -no-qt3support -prefix C: | <code>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</code> | ||
* When the license agreement appears, if you agree type <code>y</code> the Enter key | |||
* When the license agreement appears, if you agree type <code>y</code> | |||
* This operation takes around 10-15 minutes on a typical development system | * This operation takes around 10-15 minutes on a typical development system | ||
=== Build Qt === | === Build Qt === | ||
* Change to the <code>C: | * Change to the <code>C:\qt-4.7.1</code> directory | ||
* Run this command: | * Run this command: | ||
<code>nmake | <code>nmake</code> | ||
* This operation takes around 1-2 hours on a typical development system | * This operation takes around 1-2 hours on a typical development system | ||
* After building Qt the release and debug libraries and dlls will be in <code>C: | * After building Qt, the release and debug libraries and dlls will be in <code>C:\qt-4.7.1\lib</code> | ||
=== Configure a Qt runtime environment === | === Configure a Qt runtime environment === | ||
* Copy the OpenSSL dynamic libraries (<code>C:\openssl-0.9. | * Copy the OpenSSL dynamic libraries (<code>C:\openssl-0.9.8q\out32dll\libeay32.dll</code> and <code>C:\openssl-0.9.8q\out32dll\ssleay32.dll</code>) to the Qt binary directory (<code>C:\qt-4.7.1\bin</code>) | ||
* Create the file <code>C: | * Create the file <code>C:\qt-4.7.1\bin\qt-vars.bat</code> and put the following in it: | ||
@echo off | @echo off | ||
echo Setting up a Qt environment... | echo Setting up a Qt environment... | ||
set QTDIR=C: | set QTDIR=C:\qt-4.7.1 | ||
set PATH=C: | set PATH=C:\qt-4.7.1\bin;%PATH% | ||
set QMAKESPEC=win32-msvc2005 | set QMAKESPEC=win32-msvc2005 | ||
call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" | call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" | ||
* Make a shortcut to <code>qt-vars.bat</code> on your desktop | * Make a shortcut to <code>qt-vars.bat</code> on your desktop | ||
* Right-click on the shortcut and set the following properties: | * Right-click on the shortcut and set the following properties: | ||
Target: %COMSPEC% /k "C: | Target: %COMSPEC% /k "C:\qt-4.7.1\bin\qt-vars.bat" | ||
Start in: C: | Start in: C:\qt-4.7.1 | ||
* Rename the shortcut to "Qt 4. | * Rename the shortcut to "Qt 4.7.1 Command Prompt". | ||
* Test it by opening the prompt and typing | * Test it by opening the prompt and typing | ||
qmake --version | qmake --version | ||
* Confirm that the Qt version displayed is 4. | * Confirm that the Qt version displayed is 4.7.1 | ||
== Build LLQtWebKit == | == Build LLQtWebKit == | ||
Line 133: | Line 131: | ||
..\GL\qttestapp.exe | ..\GL\qttestapp.exe | ||
* If you want to build the debug version, use <code>qmake CONFIG+=debug</code> instead and run <code>nmake clean</code> first | * If you want to build the debug version, use <code>qmake CONFIG+=debug</code> instead and run <code>nmake clean</code> first | ||
=== Win32GL === | |||
* Edit the path variables at the top of the <code>C:\llqtwebkit\tests\win32gl\copy_files.bat</code> directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files. | |||
* Run the <code>C:\llqtwebkit\tests\win32gl\copy_files.bat</code> | |||
* Open the <code>C:\llqtwebkit\tests\win32gl\win32gl.sln</code> MSVC solution file | |||
* Select <code>Release</code> configuration | |||
* Update <code>home_url</code> in win32gl.cpp with the correct path to your testpage | |||
* Build and run as normal | |||
== Win32 Helper batch files == | |||
* There are some helper batch files for Windows developers that may prove useful. | |||
* 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. | |||
* They do not do much error checking so make sure you understand the ramifications of any changes you make. | |||
* 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're finished. | |||
=== Build LLQtWebKit and test apps === | |||
* Now you have built LLQtWebKit by hand, I'll point out this batch file which does it for you. | |||
* <code>C:\llqtwebkit\make_all.bat</code> 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). | |||
* You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files. | |||
* 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. | |||
=== Generate a directory tree compatible with the Second Life client build system === | |||
* <code>C:\llqtwebkit\copy_llqtwebkit.bat</code> is a batch file that: | |||
** 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. | |||
** Builds a <code>tar.bz2 </code> archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life client <code>install.xml</code> configuration file. | |||
== Notes == | == Notes == |
Latest revision as of 09:13, 1 May 2015
<<< Back to LLQtWebKit main page
Introduction
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.
Set up
- 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.
Acquire LLQtWebKit source code
- In a Web browser, navigate to http://bitbucket.org/lindenlab/llqtwebkit/
- Select "get source->zip" from menu
- A zip file of the source code will be downloaded
- Extract the contents of the zip file to
C:\llqtwebkit
- Note: Different archiving tools have different concepts of "contents" - you should end up with the directories and files in
C:\llqtwebkit
and notC:\llqtwebkit\llqtwebkit
- Note: Different archiving tools have different concepts of "contents" - you should end up with the directories and files in
Build the open source OpenSSL library
- Make sure a recent version of '
perl
' and 'patch
' are available on your system. - Download the OpenSSL 0.9.8q tarball from http://openssl.org/source/openssl-0.9.8q.tar.gz
- Extract the contents to
C:\openssl-0.9.8q
- Note: Different archive tools have different concepts of "contents" - you should end up with the directories and files in
C:\openssl-0.9.8q
and notC:\openssl-0.9.8q\openssl-0.9.8q
- Note: Some archive tools (notably 7-Zip) appear to have issues extracting the files correctly - make sure the header files in the
C:\openssl-0.9.8q\include\openssl
directory are not zero length before proceeding.
- Note: Different archive tools have different concepts of "contents" - you should end up with the directories and files in
- Open the "Visual Studio 2005 Command Prompt" (Start Menu->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt)
- Change to the
C:\openssl-0.9.8q
directory - Run these commands:
perl Configure VC-WIN32
ms\do_masm
- Patch the
ntdll.mak
file generated by the previous steps (this fixes the DLL manifest settings so that they are compatible with the Second Life client build configuration)- Copy the patch file
020-openssl-disable-manifest.patch
from theC:\llqtwebkit\patches
toC:\openssl-0.9.8q
- Run this command:
patch -p1 < 020-openssl-disable-manifest.patch
- Copy the patch file
- Continue to build
nmake -f ms\ntdll.mak
- After a few minutes, the libraries
libeay32.dll
andssleay32.dll
will be built in theC:\openssl-0.9.8q\out32dll
directory - confirm they exist - they will be needed later.
Build the open source version of Qt 4.7.1 using Microsoft Visual Studio
Acquire the Qt 4.7.1 source code
- Download the source from here: http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.1.zip
- Extract the contents of the tarball into
C:\qt-4.7.1
- This may take some as the archive contains a lot of files
- Note: Different tools have different concepts of "contents" - you should end up with the directories and files in
C:\qt-4.7.1
and notC:\qt-4.7.1\qt-4.7.1
- Note: using Cygwin's
tar
command might not work. It may result in an Access is Denied error when running configure below. If so, try using WinZip, WinRAR or some other tool instead.
- Note: Different tools have different concepts of "contents" - you should end up with the directories and files in
Configure Qt build system to disable manifests
- Windows manifest files are not required for Qt builds used in the Second Life client.
- Inspect the
C:\qt-4.7.1\mkspecs\win32-msvc2005\qmake.conf
file and check that theCONFIG
entry does not include anembed_manifest_dll
entry - Inspect the
C:\qt-4.7.1\mkspecs\win32-msvc2005\qmake.conf
file and check that theQMAKE_LFLAGS
line contains a/MANIFEST:NO
directive.
Configure Qt
- If it's not open already, open the "Visual Studio 2005 Command Prompt" (Start Menu->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt)
- Change to the
C:\qt-4.7.1
directory - Run this command:
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
- When the license agreement appears, if you agree type
y
the Enter key - This operation takes around 10-15 minutes on a typical development system
Build Qt
- Change to the
C:\qt-4.7.1
directory - Run this command:
nmake
- This operation takes around 1-2 hours on a typical development system
- After building Qt, the release and debug libraries and dlls will be in
C:\qt-4.7.1\lib
Configure a Qt runtime environment
- Copy the OpenSSL dynamic libraries (
C:\openssl-0.9.8q\out32dll\libeay32.dll
andC:\openssl-0.9.8q\out32dll\ssleay32.dll
) to the Qt binary directory (C:\qt-4.7.1\bin
) - Create the file
C:\qt-4.7.1\bin\qt-vars.bat
and put the following in it:
@echo off echo Setting up a Qt environment... set QTDIR=C:\qt-4.7.1 set PATH=C:\qt-4.7.1\bin;%PATH% set QMAKESPEC=win32-msvc2005 call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
- Make a shortcut to
qt-vars.bat
on your desktop - Right-click on the shortcut and set the following properties:
Target: %COMSPEC% /k "C:\qt-4.7.1\bin\qt-vars.bat" Start in: C:\qt-4.7.1
- Rename the shortcut to "Qt 4.7.1 Command Prompt".
- Test it by opening the prompt and typing
qmake --version
- Confirm that the Qt version displayed is 4.7.1
Build LLQtWebKit
- Launch the Qt command prompt and enter the following in the command prompt:
cd C:\llqtwebkit qmake CONFIG-=debug nmake
- This operation takes just a few seconds on a typical development system
- If you want to build the debug version of LLQtWebKit, use
qmake CONFIG+=debug
instead - Now LLQtWebKit is built and can be used in the Second Life viewer.
- If you want to build the test applications, follow the next steps:
Acquire test application dependencies
Glut
- Glut is a cross-platform library that manages OpenGL state and creation/destruction of OpenGL windows
- The author provides a library and header for Windows so you do not have to build them yourself
- Download the library and headers from http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip
- Extract the contents of the zip to a new folder called
C:\llqtwebkit\tests\GL
GLUI
- Glut is a cross-platform library that renders UI components in the uBrowser test application
- The author does not provide libraries for Windows so you have to build them yourself.
- Download the source code from http://sourceforge.net/projects/glui/files/Source/2.36/glui-2.36.zip/download
- Extract to
C:\glui-2.36
- Copy
glut.h
fromC:\llqtwebkit\tests\GL
toC:\glui-2.36\src\include\GL
as it is required to build GLUI - Open
C:\glui-2.36\src\msvc\glui.sln
and let Visual Studio convert the project - Select "Release" configuration of "_glui library" project and build it as normal
- Copy the GLUI header (
C:\glui-2.36\src\include\GL\glui.h
) toC:\llqtwebkit\tests\GL
- Copy the GLUI library you just built (
C:\glui-2.36\src\msvc\lib\glui32.lib
) toC:\llqtwebkit\tests\GL
Build test applications
testGL
- Open the Qt command prompt using the shortcut you made and enter the following:
cd C:\llqtwebkit\tests\testgl qmake CONFIG-=debug nmake ..\GL\testgl.exe
- If you want to build the debug version, use
qmake CONFIG+=debug
instead and runnmake clean
first
uBrowser
- Open the Qt command prompt using the shortcut you made and enter the following:
cd C:\llqtwebkit\tests\ubrowser qmake CONFIG-=debug nmake ..\GL\ubrowser.exe
- Important:
glui.h
contains a pragma that forces the build to always link against the release version -glut32.lib
- instead of the debug version. This means building a debug version of uBrowser is currently broken.
QtTestApp
- Open the Qt command prompt using the shortcut you made and enter the following:
cd C:\llqtwebkit\tests\qttestapp qmake CONFIG-=debug nmake ..\GL\qttestapp.exe
- If you want to build the debug version, use
qmake CONFIG+=debug
instead and runnmake clean
first
Win32GL
- Edit the path variables at the top of the
C:\llqtwebkit\tests\win32gl\copy_files.bat
directory to reflect the location of your OpenSSL, Qt and LLQtWebKit files. - Run the
C:\llqtwebkit\tests\win32gl\copy_files.bat
- Open the
C:\llqtwebkit\tests\win32gl\win32gl.sln
MSVC solution file - Select
Release
configuration - Update
home_url
in win32gl.cpp with the correct path to your testpage - Build and run as normal
Win32 Helper batch files
- There are some helper batch files for Windows developers that may prove useful.
- 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.
- They do not do much error checking so make sure you understand the ramifications of any changes you make.
- 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're finished.
Build LLQtWebKit and test apps
- Now you have built LLQtWebKit by hand, I'll point out this batch file which does it for you.
C:\llqtwebkit\make_all.bat
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).- You will need to modify the GL_COMPONENT_DIR variable near the top that sets the location of the GLUT and GLUI build files.
- 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.
Generate a directory tree compatible with the Second Life client build system
C:\llqtwebkit\copy_llqtwebkit.bat
is a batch file that:- 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.
- Builds a
tar.bz2
archive and associated MD5 sum that can be used in the LLQtWebKit section of the Second Life clientinstall.xml
configuration file.
Notes
- To enable a run time console for the test applications add a
CONFIG+=console
line to theqmake
line. - Make sure all libraries and applications are built as Multi-threaded Dll or Multi-threaded debug dll. In Visual Studio this is in Properties->configuration->c/c++->code generation->runtime library
- Make sure you do not mix release and debug versions of libraries and applications