|
|
| (236 intermediate revisions by 23 users not shown) |
| Line 1: |
Line 1: |
| {{multi-lang}} | | {{Multi-lang}} |
| {{Warning|The viewer source is under a big transition. The ways to get and compile the viewer source is different in 1.19, 1.20, and 1.21 series. Some information about compiling are based on viewer source 1.19 series and before, while some others are based on 1.20 series or even on the coming 1.21 series. The pages will be consistent when 1.21 series are out and stable. Thank you for your patience.}}
| |
| | |
| {{CompileNav}} | | {{CompileNav}} |
| | {{TOC}} |
|
| |
|
| The following are instructions for building the Second Life viewer on linux. This process has been used on [http://www.debian.org/ debian] and debian based systems like [http://www.ubuntu.com/ ubuntu], and also on [http://www.fedoraproject.org/ Fedora]. For other platforms, see [[Get source and compile]].
| | ==Step 0. Review BUILD.LINUX.md== |
| | | There is a [https://github.com/secondlife/viewer/blob/develop-linux/doc/BUILD.LINUX.md BUILD.LINUX.md] markdown file in the active '''develop-linux''' branch (see '''Step 2''') which will eventually become the primary documentation for building the SL viewer on Linux. In the meantime the instructions below may also be helpful. |
| = Building the client = | |
| To build the Second Life Viewer you will first need to install the required tools and libraries.
| |
| The following sections outline steps to build the client from source. To simplify building,
| |
| Linden Lab has been nice enough to prepackage some of the libraries and bundled them up in an
| |
| additional tar file.
| |
| | |
| And while The Second Life Viewer is not a trivial build, and experience with building large
| |
| software packages will help you greatly - but don't be daunted, it should be simple once the
| |
| dependencies are in the right place.
| |
| | |
| The tasks are:
| |
| # Install required tools.
| |
| # Unpack source and art trees from Linden Lab.
| |
| # Install libraries not shipped by Linden Lab.
| |
| # Unpack or install the other required libraries and headers.
| |
| # Compile.
| |
| <br />
| |
| <br />
| |
| == Required tools ==
| |
| There are a number of tools that need to be installed first. | |
| | |
| * <b>python 2.5</b> [package: python]
| |
| * <b>SCons</b> build tool [package: scons]
| |
| * <b>GCC 3.4</b> C/C++ compiler [debian/ubuntu: g++-3.4] [fedora: compat-gcc-34-c++]
| |
| ** Other GCC versions are not well-tested; GCC 4.x will NOT currently build the viewer. (Although some say a few simple code adjustments does the job.)
| |
| ** 2008-05-29 (Ochi Wolfe): Compilation of 1.20.7 r88152 with gcc/g++ version 4.2.4 runs just fine on my Gentoo system without tweaks to the code but the following tweaks to the SConstruct file:
| |
| *** Replace "g++-3.4" with "g++" at line 352 to use your standard g++ (4.2.4 in my case)
| |
| *** If compilation fails with errors from ld complaining about missing "-lboost_signals-gcc34-mt" or similar: Try using your system's '''boost library''' (make sure it's installed) by searching for "boost_" in the SConstruct and removing all occurences of "gcc34-" or "gcc33-" in those strings. For example: 'boost_signals-gcc34-mt' becomes 'boost_signals-mt'.
| |
| *** '''libboost-program-options-dev''' is needed on Ubuntu 8.04 to use cmake
| |
| ** On Fedora, you may need to edit line 342 of indra/SConstruct (Branch_1-18-2-Viewer) as
| |
| **: change gcc_bin = 'g++-3.4' to gcc_bin = 'g++34'
| |
| * <b>yacc</b> or compatible tool [suggest packages: bison]
| |
| * <b>lex</b> or compatible tool [suggest packages: flex]
| |
| | |
| | |
| The build process may use the following optional tool:
| |
| | |
| * <b>distcc</b> distributed compiler (useful if you have multiple PCs.)
| |
| | |
| == Unpack the source tree ==
| |
| | |
| You can get the source either from the source archives available at [[Source downloads]], or you can get it from [[Subversion]].
| |
| | |
| Using a source archive is the easier option, but if you plan to do active development and want to make your own modifications, while merging LL's changes, subversion will probably be much more convenient on the long term.
| |
| | |
| === Getting the source from the source archives ===
| |
| Get the source from [[Source downloads]]. You will need all 3 archives: source, artwork and libraries.
| |
| | |
| Choose a location and unpack the source tree and the art work. They will be extracted into a
| |
| directory call <b>linden</b>.
| |
| | |
| <code>
| |
| % tar -xzf slviewer-src-<version>.tar.gz
| |
| % tar -xzf slviewer-<os>-libs-<version>.tar.gz
| |
| % unzip slviewer-artwork-<version>.zip
| |
| </code>
| |
| <br />
| |
| | |
| === Getting the source from Subversion ===
| |
| Select a source [[Source branches|branch]] to check out.
| |
| | |
| Check it out with:
| |
| <code>
| |
| % svn co http://svn.secondlife.com/svn/linden/<branch> [directory]
| |
| </code>
| |
| If you don't specify the directory, it'll use the name of the branch as the default.
| |
| | |
| Now you will have a directory with the source code. This only includes the source code itself, without the libraries or artwork. You will have to get them from the [[Source downloads]] and unpack them into the tree.
| |
| | |
| If the directory SVN created is called 'linden' then you can directly unzip and untar the archives on top of it. If it's called something else, create a symlink:
| |
| <code>
| |
| % ln -sf <branch> linden
| |
| </code>
| |
| | |
| Now unpack the libraries and artwork:
| |
| <code>
| |
| % tar -xzf slviewer-<os>-libs-<version>.tar.gz
| |
| % unzip slviewer-artwork-<version>.zip
| |
| </code>
| |
| | |
| <br />
| |
| | |
| == Installing the required libraries (that Linden Lab can not or does not provide)==
| |
| | |
| === Libraries and header files that usually come with a Linux distribution ===
| |
| Make sure the libraries and header files for the following packages are installed on your system:
| |
| ; GL : [ubuntu: mesa-common-dev, fedora: mesa-libGL-devel]
| |
| ; GLU : [ubuntu: libglu1-mesa-dev, fedora: mesa-libGLU-devel]
| |
| ; glibc : [ubuntu: libc6-dev, fedora: glibc-devel]
| |
| ; stdc++ library : [ubuntu: libstdc++6, fedora: libstdc++-devel]
| |
| ; X11 : [ubuntu: libx11-dev, fedora: libX11-devel]
| |
| ; zlib : [ubuntu: zlib1g-dev, fedora: zlib-devel]
| |
| ; openssl : [ubuntu: libssl-dev, redhat: openssl-devel]
| |
| | |
| === FMOD (audio) ===
| |
| * FMOD provides audio output, but (although 'free' in some senses) is not itself open-source. <b>If</b> you wish to avoid FMOD, thus disabling audio, you may make these changes:
| |
| ** Comment-out the libfmod line in indra/newview/viewer_manifest.py
| |
| ** Add FMOD=no to your Scons build command when compiling the source.
| |
| * If you want to use FMOD, fetch and unpack <b>FMOD 3.75</b> <http://www.fmod.org/>
| |
| | |
| wget http://www.fmod.org/index.php/release/version/fmodapi375linux.tar.gz
| |
| tar -xzvf fmodapi375linux.tar.gz
| |
| cd fmodapi375linux/
| |
| cp api/inc/* ../linden/libraries/i686-linux/include/
| |
| cp api/libfmod-3.75.so ../linden/libraries/i686-linux/lib_release_client/
| |
| | |
| <br />
| |
| <br />
| |
| | |
| == Installing the required dependencies (prepackaged by Linden Lab)==
| |
| | |
| The Second Life Viewer has a number of compile/link dependencies on external libraries which
| |
| are needed - to help you, the source download page contains a link to a <i>slviewer-linux-libs</i> package which you unpack over the source tree to fill most of the dependencies (and thus avoid most of the fiddly work described on this page).
| |
| | |
| If you download the libs to the top folder, where the <i>linden</i> folder is after getting and extracting the viewer source code tarball, the following command should unpack everything to the right spot.
| |
| <code>
| |
| tar xvfz slviewer-linux-libs-<version>.tar.gz
| |
| </code>
| |
| | |
| If you choose to use the provided libraries you can skip to
| |
| [[Compiling_the_viewer_%28Linux%29#Compiling|Compiling the client]].
| |
| <br />
| |
| === Doing yourself ===
| |
| If you are porting to a new architecture or wish to make a package tailored to your Linux distribution's own libraries. You will have to install the following additional dependencies
| |
| listed below. Paths and package names given here are based on Ubuntu 7.04 and may vary
| |
| according to your Linux distribution.
| |
| | |
| ==== List of libraries ====
| |
| * <b>apr-1</b> [ubuntu: libapr1-dev, fedora: apr-devel]
| |
| | |
| * <b>aprutil-1</b> [ubuntu: libaprutil1-dev, fedora: apr-util-devel]
| |
| | |
| * <b>boost</b> [ubuntu: libboost-dev, fedora: boost-devel]
| |
| | |
| * <b>boost-regex</b> [ubuntu: libboost-regex-dev]
| |
| | |
| * <b>curl</b> library at least version 7.15.4 is recommended, 7.16.x is ideal.
| |
| ** [ubuntu: libcurl3-dev, fedora: libcurl-devel]
| |
| ** If you are compiling your own version of <b>Curl</b>, then you should consider configuring it to use the <b>c-ares</b> library so that DNS lookups will be asynchronous.
| |
| | |
| * <b>c-ares</b> library (mandatory for v1.18.4.0, and missing from the pre-compiled libraries package):
| |
| **<http://daniel.haxx.se/projects/c-ares/>
| |
| **[fedora: c-ares-devel]
| |
| **[ubuntu (gutsy): download Hardy packages and install:
| |
| ***<http://packages.ubuntu.com/hardy/libs/libc-ares1>
| |
| ***<http://packages.ubuntu.com/hardy/libdevel/libc-ares-dev>
| |
| <code>
| |
| % sudo dpkg -i libc-ares1 && dpkg -i libc-ares-dev
| |
| </code>
| |
| * <b>ELFIO</b> <http://sourceforge.net/projects/elfio/>
| |
| ** This wants to build a static library by default. Afterwards, to create a dynamic libelfio.so
| |
| <code>
| |
| % cd ELFIO && g++-3.4 -shared *.o -o libELFIO.so
| |
| </code>
| |
| | |
| * <b>expat</b> [ubuntu: libexpat1-dev, ubuntu (gutsy): libcurl4-openssl-dev, fedora: expat-devel]
| |
| | |
| * <b>google-perftools</b> library for the tcmalloc and stacktrace libraries. (memory checking)
| |
| **[ubuntu: libgoogle-perftools-dev, fedora: google-perftools-devel.i386
| |
| | |
| * <b>GTK 2.x</b> development headers [ubuntu: libgtk2.0-dev, fedora: gtk2-devel]
| |
| | |
| * <b>jpeglib</b> [ubuntu: libjpeg62-dev, fedora: libjpeg-devel]
| |
| | |
| | |
| * <b>OpenJPEG</b> <http://www.openjpeg.org/>
| |
| ** note: OpenJPEG 1.1.1 or greater is required which has the macro OPJ_PATH_LEN, if the header has MAX_PATH, then upgrade or it will crash with a divide by zero error as the structures would be two different sizes.
| |
| *** ''what does this mean?''
| |
| | |
| * <b>OpenSSL</b> <http://www.openssl.org/> [ubuntu: libssl-dev, fedora: openssl-devel]
| |
| | |
| * <b>SDL</b> [ubuntu libsdl1.2-dev, fedora: SDL-devel]
| |
| | |
| * <b>Vorbis</b> [ubuntu: libvorbis-dev, fedora: libvorbis-devel]
| |
| | |
| * <b>xmlrpc-epi 0.54</b> <http://xmlrpc-epi.sourceforge.net/>
| |
| ** note: not xmlrpc-c (xmlrpc-c has a library and headers with the same name but is not compatible)
| |
| <br />
| |
| <br />
| |
| | |
| ==== Copy headers and libraries into the source tree ====
| |
| | |
| Here is a guide to the sequence of shell commands needed to copy the required headers and libraries into the Second Life Viewer source tree for building. Actual paths to system headers may vary according to Linux distribution.
| |
| | |
| If you are using the easy <i>slviewer-linux-libs</i> bundle then you can skip the rest of this section, <b>otherwise</b> you will also need to perform the following:
| |
| | |
| * ${SLSRC} refers to the top-level directory of the Second Life Viewer source tree.
| |
| * ${OPENJPEG} refers to the top-level directory of your completed OpenJPEG build.
| |
| * ${ELFIO} refers to the top-level directory of your completed ELFIO build.
| |
| | |
| <code>
| |
| cp -a /usr/include/atk-1.0 ${SLSRC}/libraries/i686-linux/include/
| |
| cp -a /usr/include/gtk-2.0 ${SLSRC}/libraries/i686-linux/include/
| |
| cp -a /usr/lib/gtk-2.0/include/* ${SLSRC}/libraries/i686-linux/include/gtk-2.0/
| |
| cp -a /usr/include/glib-2.0 ${SLSRC}/libraries/i686-linux/include/
| |
| cp -a /usr/lib/glib-2.0/include/* ${SLSRC}/libraries/i686-linux/include/glib-2.0/
| |
| cp -a /usr/include/pango-1.0 ${SLSRC}/libraries/i686-linux/include/
| |
| | |
| if your GTK is fairly recent and thus needs Cairo:
| |
| cp -a /usr/include/cairo/* ${SLSRC}/libraries/i686-linux/include
| |
| | |
| | |
| cp -a /usr/include/apr-1.0/ ${SLSRC}/libraries/i686-linux/include/apr-1
| |
| | |
| mkdir ${SLSRC}/libraries/i686-linux/include/expat
| |
| cp -a /usr/include/expat*.h ${SLSRC}/libraries/i686-linux/include/expat/
| |
| | |
| mkdir ${SLSRC}/libraries/i686-linux/include/zlib
| |
| cp -a /usr/include/zlib*.h ${SLSRC}/libraries/i686-linux/include/zlib/
| |
| | |
| mkdir ${SLSRC}/libraries/i686-linux/include/openjpeg
| |
| cp ${OPENJPEG}/libopenjpeg/openjpeg.h ${SLSRC}/libraries/i686-linux/include/openjpeg/
| |
| cp ${OPENJPEG}/libopenjpeg.a ${SLSRC}/libraries/i686-linux/lib_release_client/
| |
| | |
| mkdir ${SLSRC}/libraries/i686-linux/include/ELFIO
| |
| cp ${ELFIO}/ELFIO/*.h ${SLSRC}/libraries/i686-linux/include/ELFIO/
| |
| cp ${ELFIO}/ELFIO/libelfio.so ${SLSRC}/libraries/i686-linux/lib_release_client/
| |
| | |
| mkdir ${SLSRC}/libraries/i686-linux/include/jpeglib
| |
| cp -a /usr/include/j*.h ${SLSRC}/libraries/i686-linux/include/jpeglib/
| |
| touch ${SLSRC}/libraries/i686-linux/include/jpeglib/jinclude.h
| |
| | |
| mkdir ${SLSRC}/libraries/i686-linux/include/llfreetype2
| |
| cp -a /usr/include/freetype2/freetype/ ${SLSRC}/libraries/i686-linux/include/llfreetype2/
| |
| cp -a /usr/include/ft2build.h ${SLSRC}/libraries/i686-linux/include/llfreetype2/freetype/
| |
|
| |
|
| mkdir ${SLSRC}/libraries/i686-linux/include/xmlrpc-epi
| | ==Step 1. Install Requirements== |
| cp -a /usr/include/xmlrpc*.h ${SLSRC}/libraries/i686-linux/include/xmlrpc-epi/
| |
|
| |
|
| # For SL v1.18.4.0:
| | * Python 3.7+ |
| mkdir ${SLSRC}/libraries/i686-linux/include/ares
| | * [https://git-scm.com/downloads Git] |
| cp -a /usr/include/ares* ${SLSRC}/libraries/i686-linux/include/ares/
| | * [https://cmake.org/download/ CMake] 3.20+ (need to be able to handle <code>--config</code> option) |
| cp -a /usr/lib/libcares.* ${SLSRC}/libraries/i686-linux/lib_release_client/
| | * Native packages and tools (this list may be incomplete, please update as new dependencies are discovered): |
| </code>
| | libfontconfig-dev libglib2.0-dev libglvnd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libosmesa6-dev libvlc-dev libwayland-dev libx11-dev ninja-build python3-venv |
| <br />
| | * [[Autobuild]] (probably best installed in a [https://docs.python.org/3/library/venv.html virtual environment]) |
| <br />
| |
|
| |
|
| == Compiling == | | ===Intermediate Check=== |
| === Build Types === | |
| The ''BUILD'' parameter specifies the build type. For normal usage, use '''release'''. If you plan to work on the source, choose '''releasenoopt''' or '''debug''', as these versions are unoptimized and much easier to debug.
| |
|
| |
|
| You can also edit the scons file to cause releasefordownload to skip the "stripping" step, for a version that is relatively easy to debug, yet still performs well.
| | Confirm things are installed properly so far by typing the following in a terminal: |
| | cmake --version |
| | python3 --version |
| | git --version |
| | autobuild --version |
|
| |
|
| * '''release''': Optimized build for release.
| | If everything reported sensible values and not "Command not found" errors, then you are in good shape! |
| * '''releasenoopt''': Unoptimized build.
| |
| * '''debug''': Debug build with assertions.
| |
| * '''releasefordownload''': Optimized build for release, will create a .tar.gz with the files for distribution.
| |
| <br />
| |
| === Building ===
| |
| === Enabling llMozLib ===
| |
| Add MOZLIB=yes to your Scons build command when compiling the source. Failure to do this will cause errors on some versions, due to badly structured ifdefs in the code. If you really don't want mozlib you must apply the patches attached to VWR-3748.
| |
| <br />
| |
| <code>
| |
| $ cd indra
| |
| $ scons DISTCC=no BTARGET=client BUILD=release MOZLIB=yes
| |
| </code>
| |
| Expect a build time of a couple of hours. The resulting unstripped Second Life Viewer binary is <b>newview/secondlife-i686-bin</b>. Note that temporary object code is compiled into <b>/tmp/$USER</b> by default (where $USER is your username) - this can be changed by prefixing the <b>scons</b> command above with <b>TEMP_BUILD_DIR="<i>[full directory path]</i>"</b>. For example:
| |
|
| |
|
| <code>
| | ==Step 2. Checkout Code== |
| $ TEMP_BUILD_DIR="/home/fred/secondlife/temp-build" scons DISTCC=no BTARGET=client BUILD=release
| |
| </code>
| |
|
| |
|
| To build a release that has all of the shaders and optimizations enabled and resembles the official shipped Linux client, use BUILD=releasefordownload
| | ===Viewer=== |
|
| |
|
| Be sure to read the [[Common compilation problems]] page if you have problems - we'll try to keep the page up to date with known problems and solutions.
| | Open a terminal and checkout the viewer source code: |
| <br />
| | git clone https://github.com/secondlife/viewer.git |
| <br />
| |
|
| |
|
| == Testing and packaging the client ==
| | Until it is merged into the '''develop''' branch you need to checkout '''develop-linux''': |
| | cd viewer |
| | git checkout develop-linux |
|
| |
|
| === Testing the result from inside the tree === | | ===Build Variables=== |
|
| |
|
| You may find it simpler and less error-prone to follow the instructions in the [[Compiling_the_viewer_%28Linux%29#Packaging_the_client|Packaging the client]] section below to run the client under the same conditions as an end-user would.
| | See [[Building the Viewer with Autobuild#Select Build Variables]] |
|
| |
|
| * 2008-05-29 (Ochi Wolfe): Compiling the 1.20.7 r88152 viewer, it seems like even when compiling as "release" the viewer is built ready-to-go inside the newview/packaged/ directory including the message_template.msg and message.xml in the right place. Try to cd to the newview/packaged/ directory and run SL from there with the ./secondlife command as you would normally do.
| | ==Step 3. Configure== |
|
| |
|
| Otherwise:
| | Be sure you have the following environment variables set before continuing: |
|
| |
|
| * Preparing to run 'in-tree'
| | AUTOBUILD_ADDRSIZE=64 |
| ** <i>ensure that you have indra/newview/app_settings/static_*.db2</i> - if not, you'll find it in the 'slviewer-artwork' download (a zip file).
| | AUTOBUILD_VARIABLES_FILE=<path to autobuild viewer variables> |
| ** now, from the indra directory:
| |
| <code>
| |
| $ cp ../scripts/messages/message_template.msg newview/app_settings/ | |
| $ cp ../etc/message.xml newview/app_settings/ | |
| </code> | |
|
| |
|
| '''Important:''' Starting from version 1.18.0, copying message.xml is also required. Missing it will cause group IMs to fail to work, although the viewer will run fine otherwise. | | Configuring and building with '''autobuild''' works the same on all platforms. Full instructions may be found at [[Build_Viewer_With_Autobuild]]. |
|
| |
|
| * Running it: The LD_LIBRARY_PATH stuff ensures that the binary looks for its libraries in the right places. From the indra directory:
| | autobuild configure -c RelWithDebInfoOS |
| <code>
| |
| $ ( cd newview && LD_LIBRARY_PATH="`pwd`"/../../libraries/i686-linux/lib_release_client:"`pwd`"/app_settings/mozilla-runtime-linux-i686:${LD_LIBRARY_PATH}:/usr/local/lib ./secondlife-i686-bin )
| |
| </code>
| |
|
| |
|
| <br />
| | ==Step 4. Build== |
| ==== The client seems kinda slow. ==== | |
|
| |
|
| By default, the open-source Second Life Viewer uses the open-source OpenJPEG library to decode the (many) JPEG-2000 texture images it receives from the servers. This isn't quite of comparable speed to the proprietary third-party library which the Linden Lab viewer builds have traditionally used, for which we are not permitted to redistribute the source.
| | autobuild build |
|
| |
|
| However, the <i>slviewer-linux-libs</i> package includes two pre-built libraries which facilitate the use of this slightly faster image decoding method: <b>libkdu_v42R.so</b> and <b>libllkdu.so</b>. These are provided for your testing; again, we are not permitted to grant you the right to re-distribute these libraries to downstream users, but the viewer will still work (albeit slightly slower) without them.
| | ===Running your newly built viewer=== |
|
| |
|
| To <b>use these faster image-decoding libraries</b>, they simply need to be put into the right places relative to the viewer runtime directory - nothing needs to be reconfigured or recompiled. If you're running the client from the source tree, the following will make the KDU libraries available:
| | ==Step 5. Run== |
| <code>
| |
| cp "$SLSRC/libraries/i686-linux/lib_release_client/libllkdu.so" "$SLSRC/indra/newview/libllkdu.so"
| |
| mkdir "$SLSRC/indra/lib"
| |
| cp "$SLSRC/libraries/i686-linux/lib_release_client/libkdu_v42R.so" "$SLSRC/indra/lib/libkdu_v42R.so"
| |
| </code>
| |
|
| |
|
| The file <b>indra/newview/viewer_manifest.py</b> contains some commented-out entries describing where these libraries belong; if you uncomment the two lines corresponding to libllkdu and libkdu then they will be automatically copied into the right place in the runtime directory when you follow the 'Packaging the client' instructions below.
| | To launch the '''viewer''' you built, from your source tree root directory, run: |
|
| |
|
| ==== File Dialogs Don't Work on 64 bit system ====
| | build-linux-x86_64/newview/packaged/secondlife |
|
| |
|
| If you run a 64 bit system, and your file dialogs don't work, or they worked before and stopped after you installed an update, it may be due to a mismatch between the headers used to compile the viewer and the library it's using. The log will contain something like this:
| | ==Step 6. Optional== |
| <code>
| |
| 2007-06-21T01:28:35Z INFO: ll_try_gtk_init: Starting GTK Initialization.
| |
| 2007-06-21T01:28:36Z INFO: ll_try_gtk_init: GTK Initialized.
| |
| 2007-06-21T01:28:36Z INFO: ll_try_gtk_init: - Compiled against GTK version 2.10.11
| |
| 2007-06-21T01:28:36Z INFO: ll_try_gtk_init: - Running against GTK version 2.10.6
| |
| 2007-06-21T01:28:36Z WARNING: ll_try_gtk_init: - GTK COMPATIBILITY WARNING: Gtk+ version too old (micro mismatch)
| |
| </code>
| |
|
| |
|
| What happens here is that your distribution includes 32 bit GTK libraries, but the package only includes the libraries themselves and not the headers. When building, the SL client will build against the headers included with the main 64 bit GTK package. This will work if the 64 bit version of the library is the same or older than the 32 bit one. However, if your 32 bit library is older, then the viewer will detect the mismatch (built with headers for a newer version of GTK than it's using) and turn GTK off.
| | ===Running Unit Tests=== |
|
| |
|
| Possible solutions:
| | TODO: provide instructions for running unit tests. |
| * Download the source for the version of the 32 bit GTK libraries your distribution comes with, and build your viewer against those headers.
| |
| * Upgrade your 32 bit GTK package so that it's the same or newer as the 64 bit one.
| |
| * Downgrade your 64 bit package (may not be a good idea).
| |
|
| |
|
| === Packaging the client === | | ===Optional: Installing Proprietary Libraries=== |
|
| |
|
| If you substitute 'BUILD=release' with '<b>BUILD=releasefordownload</b>' in the 'Compiling' section above, then packaging the resulting code, libraries, data and documentation into a tarball for the end-user will be done automatically as the final stage of the build process; the pristine end-user client distribution has been assembled into the directory <b>indra/newview/SecondLife_i686_1_X_Y_Z/</b> and has also been tarred into <b>indra/newview/SecondLife_i686_1_X_Y_Z.tar.bz2</b>
| | Some builds of the the Viewer depends on proprietary libraries (alternative open source libraries are also provided for developers who prefer or are not licensed to use the proprietary libraries). Lindens do not distribute these libraries, so you will need to fetch and install these even if you download the libraries packages. (This is due to licensing restrictions. Don't ask, Lindens already did, and can't get permission. So you do have to get them yourself.) |
|
| |
|
| The file which controls what (and where) files go into the end-user runtime viewer directory is <b>indra/newview/viewer_manifest.py</b>
| | TODO: provide instructions for building proprietary libraries. |
|
| |
|
| | ==Handling Problems== |
|
| |
|
| == Resident contributed instructions ==
| | If you encounter errors or run into problems following the instructions above, please first check whether someone else already had the same issue. A solution might be known already. |
|
| |
|
| === Automated libraries and headers adjustments, compilation and packaging ===
| | You may find the solution in any of these resources: |
| | * [[{{TALKPAGENAME}}|This talk page]] (Report useful experiences there) |
| | * [[#Common_Issues.2FBugs.2FGlitches_And_Solutions|Issue list below]] (If new issues, please add it to talk page above instead of there) |
| | * [[Talk:Microsoft_Windows_Builds|Old talk page]] |
| | * [[Common compilation problems]] (Rather old) |
| | * [[Issue tracker]] |
|
| |
|
| * [[User:Henri Beauchamp/Automated Linux Build Script (1.20 and earlier)]] | | * Fix it: [[Modifying CMake Files]] and please, submit a patch! |
| * [[User:Henri Beauchamp/Building the viewer with CMake/cmake-SL script]]
| |
|
| |
|
| === FreeBSD === | | ===Getting Help=== |
|
| |
|
| A list of patches is given for [[Compiling the viewer (FreeBSD)]].
| | Even when no description of your problem has been written down yet, someone might know about it, so get in touch with the community to get help. |
|
| |
|
| = Submitting Patches =
| | * Subscribe to [[OpenSource-Dev|OpenSource-Dev Mailing List]] ([https://lists.secondlife.com/cgi-bin/mailman/listinfo/opensource-dev subscribe]) and post your question there. |
| This is probably far down the road, but if you make changes to the source and want to submit them, see the page about [[Submitting patches|submitting patches]].
| |
|
| |
|
| | ---- |
| [[Category:Compiling viewer]] | | [[Category:Compiling viewer]] |