123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- 1.- Build dependencies:
- The tools required to build the viewer are:
- - gcc/g++ v8.1 or newer (1), or clang/clang++ v7.0 or newer (2), that is a
- full-fledged C17/C++17 compiler.
- - binutils (as, ld & Co) and optionally elfutils (for eu-strip)
- - cmake (v3.5 or newer); v3.16+ recommended for a much faster compilation.
- - make
- - python (among v3.10 to v3.3, in this preference order)
- - bzip2
- - gzip
- - tar
- - bash
- - grep (for the linux-build.sh script)
- - coreutils (for the linux-build.sh script)
- You will also need:
- - The headers and shared libraries for glibc v2.28 or newer.
- - The headers and shared libraries for libstdc++ v6.0.25 or newer.
- - The headers and libraries for X11, Xrender, Xinerama, OpenGL, Mesa (GL/GLU).
- - A working connection to Internet for the automatic retrieval of the
- pre-built libraries (note that once those libraries are cached on your
- build system, the connection is no more necessary).
- (1) The building process was only tested and working (without any warning) with
- gcc/g++ v8.3.0, v11.4.0 and v12.4.0. Note that I won't support a viewer built
- with other gcc versions.
- For gcc versions other than v8.3 (for x86_64) and v11.4 (for aarch64), which
- are the versions used to compile the official viewer builds, shared boost
- libraries are used instead of static ones, so to avoid boost static libraries
- link failures, due to boost messing up dirtily with symbols naming, causing
- mismatches... This results in a larger viewer distribution (the full boost
- shared libraries are bundled, instead of just having the actually used boost
- functions merged into the viewer binary).
- (2) The building process was only tested and working (without any warning) with
- clang/clang++ v18.1.8. Note that I won't support a viewer built with other
- clang versions.
- 2.- Distribution-neutral building instructions (for RPM builds, see chapter 4):
- Extract the viewer sources tarball, which will create a linden/ sub-directory
- in the destination directory.
- You may want to open the linden/indra/cmake/00-BuildOptions.cmake file to
- review the various build options; they are set to their default used for the
- official builds, but you may want to add/remove features such as plugins,
- memory management, experimental features, etc...
- To launch the build, simply open a terminal, change to the linden/ directory of
- the viewer sources and type:
- ./linux-build.sh
- If you want to build with clang, use:
- ./linux-build.sh --clang
- Notes:
- a.- If your version of gcc/clang spews warnings and aborts the compilation
- (seen when using compiler versions that are not among the tested ones: see
- paragraph 1), then you can force the compilation, not treating warnings as
- errors with: ./linux-build.sh [--clang] --ignore-warnings
- b.- If you have patches you want to apply to personal builds, you may place
- them inside ~/.secondlife/patches/cool_vl_viewer/ and have them
- automatically applied when the build is done with the --patches option.
- Note that the patches must have been produced with:
- diff -durN linden linden-patched >your_patch_name
- They may then be left as plain text patches, or be gzipped, bzipped or
- xzipped.
- c.- Use "./linux-build.sh --help" to learn about more build options.
- d.- The Voice client, still being a 32 bits binary, needs for the minimum 32
- bits compatibility libraries (glibc & Co) to be installed on the target
- system in order to be usable (but the end user may use the provided
- install-wine-SLVoice.sh script to install the Windows version of the
- SLVoice client and use that instead, via Wine).
- 3.- Distribution-neutral packaging and distribution:
- If you wish to distribute your build, you will need to use InstallJammer v1.3
- (https://sourceforge.net/projects/installjammer/files/InstallJammer/snapshots/installjammer-1.3-snapshot.tar.gz/download)
- with the provided script in linden/scripts/installers/linux[64]/ (in the latter
- script, using a text editor, change the occurrences of
- "/usr/local/CoolVLViewer-1.32.x/" with the path of whatever directory you
- installed the viewer into).
- Simply load the CoolVLViewer-x86_64-1.32.x.mpi file into InstallJammer,
- select "Build Installers" in the tree on the left, then check "Build for final
- release" on the bottom and press the "Build Install" button. The distributable
- package will be created in linden/scripts/installers/linux64/output/
- 4.- RPM packaging (for Mandriva, Fedora, Suse and all their forks):
- The build process described here works for 64 bits RPM-based distributions. It
- has been tested and working on two Mandriva forks (Rosa 2016 and PCLinuxOS);
- other RPM-based distributions may require a slight adjustement of the .spec
- file (depending on possible RPM %macros peculiarities/oddities).
- You will find a CoolVLViewer.spec file in the scripts/installers/rpm/ sub-
- directory of the viewer sources. Place it into the SPECS/ sub-directory of your
- RPM build tree (which may be /usr/src/RPM, /usr/src/rpm, /usr/src/rpmbuild or
- ~/rpmbuild, depending on your Linux distribution), then either place the
- corresponding sources tarball in SOURCES/ or, to get the tarball automatically
- downloaded into SOURCES/, type (from the RPM build tree):
- touch SOURCES/CoolVLViewer-src-130BR.tar.bz2
- where 'B' is the branch number and 'R' is the release number: those are listed
- in the first lines of the spec file, respectively as "micro" and "nano") so to
- create an empty file (so that rpmbuild would not complain about a missing
- source tarball).
- Finally launch the build by typing:
- rpmbuild -ba SPECS/CoolVLViewer.spec
- You may also specify options to build with specific gcc versions (when they are
- installed on your system) not matching your system gcc version, or with clang
- (here again, if installed on your system).
- For example, to build with gcc vX.N (with X=5 to 10) when available:
- rpmbuild -ba --with gcc55 SPECS/CoolVLViewer.spec
- Or to build with clang when available:
- rpmbuild -ba --with clang SPECS/CoolVLViewer.spec
- You may also enable tuned optimizations (*) for the CPU model of the computer
- you build the viewer onto with:
- rpmbuild -ba --with tune SPECS/CoolVLViewer.spec
- The tune option may be mixed with gccXN or clang, e.g.:
- rpmbuild -ba --with gcc55 --with tune SPECS/CoolVLViewer.spec
- If you have patches you want to apply to personal builds, you may place them
- inside ~/.secondlife/patches/cool_vl_viewer/ and have them automatically
- applied when the build is done --with tune. Note that the patches must have
- been produced with: diff -durN linden linden-patched >your_patch_name.patch
- They may then be left as plain text patches, or be gzipped, bzipped or xzipped.
- For distribution specific patches, you will have to edit manually the .spec
- file and add them in the usual way ("PatchN: your_patch_N.patch" lines below
- the "Source0:" line, then "%patchN -p1" lines in the %prep section, just after
- the "cd linden" line).
- Note that the Voice client, still being a 32 bits binary, needs for the minimum
- 32 bits compatibility libraries (glibc & Co) to be installed on the target
- system in order to be usable. So you might want to add the corresponding 32bits
- package(s) as "Requires" in the spec file for your Linux distro.
- (*) IMPORTANT: the built RPM package may be distributed *IF AND ONLY IF* the
- "tune" option was *NOT* used.
|