Firestorm Windows Builds
This page describes all necessary steps to build the Firestorm viewer for Windows, using the updated build infrastructure introduced with Linden Lab's project Alex Ivy.
Install required development tools
This is needed for compiling any viewer based on the Linden Lab open source code and only needs to be done once.
All installations are done with default settings (unless told explicitly) - if you change that, you're on your own!
Windows
- Install Windows 10 Pro 64bit using your own product key
- Alternatively: Install Windows 7 or 8.1 Pro 64bit
Microsoft Visual Studio 2013 Professional
- Install Visual Studio 2013 Professional
- Note: If you don't own a copy of Visual Studio 2013 Professional, you might consider installing the Community version (requires creating a Microsoft account if you do not already have one ) (If the download link for 2013 on visualstudio.com leads to a dead page even after logging in and out and back in again, try Googling “Visual Studio 2013 Community update 5 download” for a direct link. MS has recently changed things with accounts and the free subscriptions.)
- Run the installer as Administrator (right click, “Run as administrator”)
- Uncheck all the “Optional features to install:” - they are not required
DirectX SDK
- Download and install DirectX SDK (June 2010)
- Run the installer as Administrator (right click, “Run as administrator”)
- At the Installation Options screen, set everything except the DirectX Headers and Libs to “This feature will not be installed”
Tortoise Hg
- Download and install TortoiseHg 3.2.3 or newer (64bit)
- Note: No option available to install as Administrator
- Use default options (path, components etc.)
- Add the following directory to your path:
C:\Program Files\TortoiseHG
CMake
- Download and install at least CMake 3.4.3 (32bit is only option)
- Run the installer as Administrator (right click, “Run as administrator”)
- At the “Install options” screen, select “Add CMake to the system PATH for all users”
- For everything else, use the default options (path, etc.)
- Make sure that the following directory was added to your path:
C:\Program Files (x86)\CMake\bin
Cygwin
- Download and install Cygwin 64 (64bit)
- Run the installer as Administrator (right click, “Run as administrator”)
- Use default options (path, components etc.) *until* you get to the “Select Packages” screen
- Add additional packages:
- Devel/patch
- Use default options for everything else
- Make sure that the following directory was added to your path.:
C:\Cygwin64\bin
Python
- Download and install the most recent version of Python 2.7 (32bit)
- Linden Lab advises to use the 32bit version as the VMP requires it. However, Firestorm currently doesn't use VMP, so the 64bit version might work (use at own risk!)
- Note: No option available to install as Administrator
- Use default options (path, components etc.) until you get to the “Customize Python” screen
- Change “Add python.exe to Path” to “Will be installed on local hard drive”
- Add the Python installation dir to the system path:
C:\Python27
Intermediate check
Confirm things are installed properly so far by opening a Cygwin terminal and enter:
cmake --version hg --version python --version
If they all report sensible values and not “Command not found” errors, then you are in good shape.
Set up Autobuild and Python
- Install Boostrip pip
- Download (Save As) get-pip.py and copy to a temp folder
- Open Windows Command Prompt
- Switch to that temp folder and execute it:
python get-pip.py
- Pip will be installed
- Add the following directory to your path:
C:\Python27\Scripts
- Install Autobuild
- Open Windows Command Prompt and enter:
pip install hg+https://bitbucket.org/lindenlab/autobuild-1.1#egg=autobuild
- Autobuild will be installed. Earlier versions of Autobuild could be made to work by just putting the source files into your path correctly; this is no longer true - Autobuild must be installed as described here.
- Set environment variable AUTOBUILD_VSVER to 120
- Check Autobuild version to be 1.1.7 or higher:
autobuild --version
NSIS (Unicode)
- You must install the Unicode version here and not the one from the NSIS page
- Not required unless you need to build an actual viewer installer for distribution, or change the NSIS installer package logic itself
Setup viewer build variables
In order to make it easier to build collections of related packages (such as the viewer and all the library packages that it imports) with the same compilation options, Autobuild expects a file of variable definitions. This can be set using the environmenat variable AUTOBUILD_VARIABLES_FILE.
- Clone the build variables repository:
hg clone https://hg.phoenixviewer.com/fs-build-variables <path-to-your-variables-file>
- Set the environment variable AUTOBUILD_VARIABLES_FILE to
<path-to-your-variables-file>\variables
Configure Visual Studio 2013 (optional)
- Start the IDE
- Navigate to Tools> Options> Projects and Solutions> Build and Run and set maximum number of parallel projects builds to 1.
Set up your source code tree
Plan your directory structure ahead of time. If you are going to be producing changes or patches you will be cloning a copy of an unaltered source code tree for every change or patch you make, so you might want to have all this work stored in its own directory. If you are a casual compiler and won't be producing any changes, you can use one directory. For this document, it is assumed that you created a folder c:\firestorm.
c: cd \firestorm hg clone https://hg.phoenixviewer.com/phoenix-firestorm-lgpl
This can take a bit, it's a rather large download.
Prepare third party libraries
Most third party libraries needed to build the viewer will be automatically downloaded for you and installed into the build directory within your source tree during compilation. Some need to be manually prepared and are not normally required when using an open source configuration (ReleaseFS_open).
FMOD Studio using Autobuild
If you want to use FMOD Studio to play sounds within the viewer, you will have to download your own copy. FMOD Studio can be downloaded here (requires creating an account to access the download section).
c: cd \firestorm hg clone https://bitbucket.org/Ansariel/3p-fmodstudio
- After you have cloned the repository, copy the downloaded FMOD Studio installer file to C:\Firestorm
- If you downloaded a different version of FMOD Studio that is currently used in the viewer, you will have to modify the file build-cmd.sh in the root of the repository. Right at the top, you find the version number of FMOD Studio you want to package (one short version without separator and one long version). Change these values to the version you downloaded:
FMOD_VERSION="11005" FMOD_VERSION_PRETTY="1.10.05"
Continue on the Windows command line:
c: cd \firestorm\3p-fmodstudio autobuild build --all autobuild package
While running the Autobuild build command, Windows might ask if you want to allow making changes to the computer. This is because of the FMOD Studio installer being executed. Allow these changes to be made.
Near the end of the output you will see the package name written and the md5 hash below it:
wrote C:\firestorm\3p-fmodstudio\fmodstudio-{version#}-windows-{build_id}.tar.bz2
md5 c3f696412ef74f1559c6d023efe3a087
where {version#} is the version of FMOD Studio (like 1.10.02) and {build_id} is an internal build id of the package.
cd \firestorm\phoenix-firestorm-lgpl cp autobuild.xml my_autobuild.xml set AUTOBUILD_CONFIG_FILE=my_autobuild.xml
Copy the FMOD Studio path and md5 value from the package process into this command:
autobuild installables edit fmodstudio platform=windows hash=<md5 value> url=file:///<fmodstudio path>
For example:
autobuild installables edit fmodstudio platform=windows hash=c3f696412ef74f1559c6d023efe3a087 url=file:///C:\firestorm\3p-fmodstudio\fmodstudio-1.10.02-windows-180191431.tar.bz2
Configuring the viewer
Open the Windows command prompt.
If you are building with FMOD Studio and have followed the previous FMOD Studio setup instructions AND you are now using a new terminal you will need to reset the environment variable first by entering
set AUTOBUILD_CONFIG_FILE=my_autobuild.xml
Then enter:
c: cd \firestorm\phoenix-firestorm-lgpl autobuild configure -c ReleaseFS_open
This will configure Firestorm to be built with all defaults and without third party libraries.
autobuild configure -v -c ReleaseFS_open
Configuration switches
There are a number of switches you can use to modify the configuration process. The name of each switch is followed by its type and then by the value you want to set.
- -A <architecture> sets the target architecture, that is if you want to build a 32bit or 64bit viewer (32bit is default if omitted).
- –fmodstudio controls if the FMOD Studio package is incorporated into the viewer. You must have performed the FMOD Studio installation steps in FMOD Studio using Autobuild for this to work.
- –package makes sure all files are copied into viewers output directory. You won't be able to start your compiled viewer if you don't enable package or do 'compile' it in VS.
- –chan <channel name> lets you define a custom channel name for the viewer
- -LL_TESTS:BOOL=<bool> controls if the tests are compiled and run. There are quite a lot of them so excluding them is recommended unless you have some reason to need one or
more of them.
Examples:
- To build a 32bit viewer with FMOD Studio and to create an installer package, run this command in the Windows command window:
autobuild configure -c ReleaseFS_open -- --fmodstudio --package --chan MyViewer -DLL_TESTS:BOOL=FALSE
- To build a 64bit viewer without FMOD Studio and without installer package, run this command:
autobuild configure -A 64 -c ReleaseFS_open -- --chan MyViewer -DLL_TESTS:BOOL=FALSE
Building the viewer
There are two ways to build the viewer: Via Windows command line or from within Visual Studio.
Building from the Windows command line
If you are building with FMOD Studio and have followed the previous FMOD Studio setup instructions AND you are now using a new terminal you will need to reset the environment variable with
set AUTOBUILD_CONFIG_FILE=my_autobuild.xml
Then run the Autobuild build command. Make sure you include the same architecture parameter you used while configuring the viewer:
autobuild build -A 64 -c ReleaseFS_open --no-configure
Now, sit back, read War and Peace, calculate PI to 50 places, tour the country, whatever you desire. Compiling will take quite a bit of time.
Building from within Visual Studio
Inside the Firestorm source folder, you will find a folder named build-vc120-<architecture>, with <architecture> either being 32 or 64, depending on what you chose during the configuration step. Inside the folder is the Visual Studio solution file for Firestorm, called Firestorm.sln.
- Double-click Firestorm.sln to open the Firestorm solution in Visual Studio.
- From the menu, choose Build → Build Solution
- Wait until the build is finished
Parallel building of pre Alex Ivy viewers
Older versions of the viewer before the merge of Linden Lab's project Alex Ivy use Autobuild 1.0 that is incompatible with the build process as it is now. By default it is not possible to install two different versions of Autobuild on the same computer at the same time. Making use of virtualenv will overcome this problem, allowing simultaneous installations of Autobuild 1.0 and Autobuild 1.1 in two distinct “virtual” Python environments.
Install virtualenv
Install virtualenv by opening a Windows command prompt and enter:
pip install virtualenv
This requires the Boostrip pip already installed. After virtualenv has been installed, you can create virtual Python environments using the command
virtualenv <virtual-environment-name>
This will create the directory <virtual-environment-name> within the Python installation folder and add some required folders and files. Among these files is a batch file called activate.bat in the folder Scripts. To switch to the newly created virtual environment execute the activate.bat batch file. After switching to the virtual environment, your command prompt will be prepended by the name of the virtual environment.
In this example we will create a virtual environment called “Autobuild11”:
virtualenv Autobuild11 c:\Python27\Autobuild11\Scripts\Activate.bat
Your command prompt should look like this now:
(Autobuild11) C:\
After you switched to a particular virtual environment, you can now install as described in Set up Autobuild and Python.
Complete example:
virtualenv Autobuild11 c:\Python27\Autobuild11\Scripts\Activate.bat pip install hg+https://bitbucket.org/lindenlab/autobuild-1.1#egg=autobuild
Configuring and building the viewer
Configuring and building the viewer from the Windows command line is basically identical as described in Building from the Windows command line with the difference that you now have to call the activate script first:
c: \Python27\Autobuild11\Scripts\Activate.bat cd \firestorm\phoenix-firestorm-lgpl autobuild configure -c ReleaseFS_open -- --fmodstudio --package --chan MyViewer -DLL_TESTS:BOOL=FALSE autobuild build -A 64 -c ReleaseFS_open --no-configure
If you plan to build the viewer from within Visual Studio, you will have to configure the viewer the same way as if you were to build from the Windows command line:
c: \Python27\Autobuild11\Scripts\Activate.bat cd \firestorm\phoenix-firestorm-lgpl autobuild configure -c ReleaseFS_open -- --fmodstudio --package --chan MyViewer -DLL_TESTS:BOOL=FALSE
To be able to build from Visual Studio, you will have to set a Windows environment variable called VIRTUAL_ENV pointing at the virtual Python environment to use, in our example “C:\Python27\Autobuild11”. Now open the Firestorm Visual Studio solution to start Visual Studio and build the viewer.