Difference between revisions of "Building the Viewer with Autobuild"

From Second Life Wiki
Jump to navigation Jump to search
m (Remove broken link to fmodex package but keep instructions :()
(31 intermediate revisions by 13 users not shown)
Line 1: Line 1:
{{Autobuild Nav}}
{{Multi-lang}}{{Autobuild Nav}}
=== Install autobuild ===
=== Install autobuild ===
If you haven't done so already, install ''autoubuild''.  Full instructions can be found on the [[Autobuild]] page, but most users may simply use
{{KBwarning|If you are building for Windows go here [[Viewer_2_Microsoft_Windows_Builds]] and do not follow these instructions.}}
   [http://pypi.python.org/pypi/setuptools easy_install] autobuild
If you haven't done so already, install ''autobuild''.  Full documentation can be found on the [[Autobuild]] page.
or
 
  [http://pypi.python.org/pypi/pip pip] install autobuild
===Set desired address size===
to install.
 
As of autobuild 1.1, you must specify the desired pointer size for your builds.
 
You can use the argument:
  -A {32,64}, --address-size {32,64}
or you can set the environment variable AUTOBUILD_ADDRSIZE to either 32 or 64
   export AUTOBUILD_ADDRSIZE={32,64}
 
'''Note: OSX only supports 64 bit.'''
 
===Select 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, the autobuild source_environment command expects a file of variable definitions. This can be set using the environmenat variable AUTOBUILD_VARIABLES_FILE
 
export AUTOBUILD_VARIABLES_FILE=''<path-to-your-variables-file>''
 
In the Linden viewer builds, that file is in the repository, '''viewer''' branch
  https://github.com/secondlife/build-variables
 
You will need to clone a copy of that repository, check out the '''viewer''' branch and set the environment variable to point to the <tt>variables</tt> file in the top level of your working copy.; modify it with caution or you may need to recompile all the packages...


=== Build a desired configuration ===
=== Build a desired configuration ===
Line 16: Line 35:
Will install any dependencies (if the build configuration uses them) and construct an appropriate project or solution file (''.xcodeproj'' for mac and ''.sln'' for windows) inside the build directory.
Will install any dependencies (if the build configuration uses them) and construct an appropriate project or solution file (''.xcodeproj'' for mac and ''.sln'' for windows) inside the build directory.
   
   
==== Base build configurations ====
==== Linden build configurations ====
There are three basic types of build configurations which are used to vary the debugability of the resulting build versus optimization.  These configurations are:
There are two basic types of build configurations which are used to vary the debuggability of the resulting build versus optimization.  These configurations are:
* '''Debug''' &mdash; unoptomized with debugging information.
* '''RelWithDebInfo''' &mdash; optimized but with debugging information.
* '''RelWithDebInfo''' &mdash; optomized but with debugging information.
* '''Release''' &mdash; optimized with no debug information.
* '''Release''' &mdash; optimized with no debug information.
'''Debug''' will result in a slow client but is the easiest to use with a debugger.  '''RelWithDebInfo''' is significantly faster and is often easy to debug, but code optimizations may occasionally make tracking program flow in a debugger challenging.  '''Release''' is used for building a shipping version of the viewer.
'''RelWithDebInfo''' is usually easy to debug, but code optimizations may occasionally make tracking program flow in a debugger challenging.  '''Release''' is used for building a shipping version of the viewer; it may be hard to debug because it does not preserve all debugging information.
 
==== Installables ====
Lindens please see also https://wiki.lindenlab.com/wiki/Autobuild/Installables .
 
==== Configurations for non-Linden developers ====
 
The unmodified build configurations defined in the previous section are configured for use by Linden developers and may require access to installables which are not publicly available.  For open source developers a variation is provided to support development by third parties using special configuration names that end in '''OS'''.  For example, to build a viewer with release optimization including debug information run
 
  autobuild build -c RelWithDebInfoOS
 
The Fmod audio component is not publicly available as an autobuild package. To build without Fmod, use:
  autobuild build  -c ReleaseOS -- -DFMOD:BOOL=FALSE


==== Build variations for open source developers ====
To build with Fmod, you will need to build your own.
The unmodified build configuraitons defined in the previous section are configured for use by Linden developers and may require access to installables which are not publicly available.  For open source developers two variations are provided to support development by third parties using the following prefixes:
 
* '''OpenSource''' &mdash; build a viewer using only publicly distributed installables.
You will need to create an account with https://www.fmod.com/ & email them to get access to the older fmodex source.
* '''OpenSourceStandAlone''' &mdash; build a viewer without using any installable packages provided by Linden.
It's free for indie developers - https://www.fmod.com/licensing
*: Developers will need to install any 3<sup>rd</sup> party dependencies manually.
 
To build an open source configuration choose a build configuration which is a concatonation of one of the two above prefixes with a base configuraiton name. For example to build a stand alone viewer with release optimization including debug information run
autobuild build --all
  autobuild build -c OpenSourceStandAloneRelWithDebInfo
autobuild package
 
When you have an autobuild package, you must modify the viewer build to use the one you built:
 
autobuild installables edit 'fmodex' url='file:/<path-to-your-package>'
 
==== Use no installables ====
{{KBwarning|Building with system libraries rather than autobuild installables is '''not officially supported'''. Thus, it is '''not tested''' routinely and might be broken any time.}}
It is theoretically possible to build the viewer only using libraries installed to your system, rather than installing Linden Lab-supplied installables into the source tree checkout. The cmake variable that controls this is USESYSTEMLIBS.
{{KBcaution|To build with "USESYSTEMLIBS" on, you have to install any 3<sup>rd</sup> party dependencies manually.}}
Use the <code>*OS</code> configurations and manually switch the <code>USESYSTEMLIBS</code> CMake variable to <code>ON</code>. For example, to build a viewer with release optimization including debug information run  
autobuild configure -c RelWithDebInfoOS -- -DUSESYSTEMLIBS=ON
  autobuild build -c RelWithDebInfoOS --no-configure


==== Custom builds ====
==== Custom builds ====
Line 35: Line 78:
   autobuild configure -c [build configuration] -- [Option, [Option...]]
   autobuild configure -c [build configuration] -- [Option, [Option...]]
Options which appear after the '''--''' are passed through to the configuration command.  Now you may build using
Options which appear after the '''--''' are passed through to the configuration command.  Now you may build using
   autobuild configure -c [build configuration] --no-configure -- [Option, [Option]]
   autobuild build -c [build configuration] --no-configure -- [Option, [Option]]
passing any options that should be forwarded to the build command after the '''--'''.  Using the ''--no-configure'' option prevents the configure step from being run again (potentially reverting any option you passed) during the build step.
passing any options that should be forwarded to the build command after the '''--'''.  Using the ''--no-configure'' option prevents the configure step from being run again (potentially reverting any option you passed) during the build step.


Line 43: Line 86:
   autobuild edit  build
   autobuild edit  build
to interactively create new configure and build configurations.  More information on creating these configurations may be found in the [[Autobuild_How_To]] page.
to interactively create new configure and build configurations.  More information on creating these configurations may be found in the [[Autobuild_How_To]] page.
=== OSX 10.14 build issues ===
'''Build aborts due to 10.13sdks not found'''
* Verify that build-variables is up to date and LL_BUILD_DARWIN_BASE_SWITCHES points to a valid SDK.
* source variables and rerun config and build.
* If the above does not work
** In XCode Project Navigator, select SecondLife
** Under BuildSettings, change Base SDK to MacOS
'''In XCode, build aborts with libtool: can’t open file: HAVOK_DEBUG_LIB_hkBase-NOTFOUND'''
* Under Product|Scheme select Edit Scheme
* In the Info pane, change the Build Configuration to Release
[[Category:Autobuild]]

Revision as of 14:45, 17 November 2022


Install autobuild

KBwarning.png Warning: If you are building for Windows go here Viewer_2_Microsoft_Windows_Builds and do not follow these instructions.

If you haven't done so already, install autobuild. Full documentation can be found on the Autobuild page.

Set desired address size

As of autobuild 1.1, you must specify the desired pointer size for your builds.

You can use the argument:

 -A {32,64}, --address-size {32,64}

or you can set the environment variable AUTOBUILD_ADDRSIZE to either 32 or 64

 export AUTOBUILD_ADDRSIZE={32,64}

Note: OSX only supports 64 bit.

Select 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, the autobuild source_environment command expects a file of variable definitions. This can be set using the environmenat variable AUTOBUILD_VARIABLES_FILE

export AUTOBUILD_VARIABLES_FILE=<path-to-your-variables-file>

In the Linden viewer builds, that file is in the repository, viewer branch

https://github.com/secondlife/build-variables

You will need to clone a copy of that repository, check out the viewer branch and set the environment variable to point to the variables file in the top level of your working copy.; modify it with caution or you may need to recompile all the packages...

Build a desired configuration

With a properly configured developer machine (see compiling), building the viewer with autobuild is as simple as invoking

 autobuild build -c [CONFIGURATION]

where CONFIGURATION stands for the build configuration you would like to build. The build configurations defined in the viewer's autobuild.xml file follow some simple conventions which we describe below. As a developer you should choose the appropriate build configuration for your needs. After a build has completed, the resulting product will be found in the build directory named build-* where the * is wildcard representing the platform dependent part of the name.

Developers who wish to build a viewer with an IDE don't have to do a full command line build. Using

 autobuild configure -c [CONFIGURATION]

Will install any dependencies (if the build configuration uses them) and construct an appropriate project or solution file (.xcodeproj for mac and .sln for windows) inside the build directory.

Linden build configurations

There are two basic types of build configurations which are used to vary the debuggability of the resulting build versus optimization. These configurations are:

  • RelWithDebInfo — optimized but with debugging information.
  • Release — optimized with no debug information.

RelWithDebInfo is usually easy to debug, but code optimizations may occasionally make tracking program flow in a debugger challenging. Release is used for building a shipping version of the viewer; it may be hard to debug because it does not preserve all debugging information.

Installables

Lindens please see also https://wiki.lindenlab.com/wiki/Autobuild/Installables .

Configurations for non-Linden developers

The unmodified build configurations defined in the previous section are configured for use by Linden developers and may require access to installables which are not publicly available. For open source developers a variation is provided to support development by third parties using special configuration names that end in OS. For example, to build a viewer with release optimization including debug information run

 autobuild build -c RelWithDebInfoOS

The Fmod audio component is not publicly available as an autobuild package. To build without Fmod, use:

 autobuild build  -c ReleaseOS -- -DFMOD:BOOL=FALSE

To build with Fmod, you will need to build your own.

You will need to create an account with https://www.fmod.com/ & email them to get access to the older fmodex source. It's free for indie developers - https://www.fmod.com/licensing

autobuild build --all
autobuild package

When you have an autobuild package, you must modify the viewer build to use the one you built:

autobuild installables edit 'fmodex' url='file:/<path-to-your-package>'

Use no installables

KBwarning.png Warning: Building with system libraries rather than autobuild installables is not officially supported. Thus, it is not tested routinely and might be broken any time.

It is theoretically possible to build the viewer only using libraries installed to your system, rather than installing Linden Lab-supplied installables into the source tree checkout. The cmake variable that controls this is USESYSTEMLIBS.

KBcaution.png Important: To build with "USESYSTEMLIBS" on, you have to install any 3rd party dependencies manually.

Use the *OS configurations and manually switch the USESYSTEMLIBS CMake variable to ON. For example, to build a viewer with release optimization including debug information run

autobuild configure -c RelWithDebInfoOS -- -DUSESYSTEMLIBS=ON
autobuild build -c RelWithDebInfoOS --no-configure

Custom builds

If none of the predefined build configurations matches your needs, you have two options for building with exactly the options you need. If you just need to pass an extra configuration option, you should first run the configure command with the following syntax

 autobuild configure -c [build configuration] -- [Option, [Option...]]

Options which appear after the -- are passed through to the configuration command. Now you may build using

 autobuild build -c [build configuration] --no-configure -- [Option, [Option]]

passing any options that should be forwarded to the build command after the --. Using the --no-configure option prevents the configure step from being run again (potentially reverting any option you passed) during the build step.

Alternatively you may add a new configuration to the autobuild.xml configuration file using

 autobuild edit configure

and

 autobuild edit  build

to interactively create new configure and build configurations. More information on creating these configurations may be found in the Autobuild_How_To page.

OSX 10.14 build issues

Build aborts due to 10.13sdks not found

  • Verify that build-variables is up to date and LL_BUILD_DARWIN_BASE_SWITCHES points to a valid SDK.
  • source variables and rerun config and build.
  • If the above does not work
    • In XCode Project Navigator, select SecondLife
    • Under BuildSettings, change Base SDK to MacOS

In XCode, build aborts with libtool: can’t open file: HAVOK_DEBUG_LIB_hkBase-NOTFOUND

  • Under Product|Scheme select Edit Scheme
  • In the Info pane, change the Build Configuration to Release