Difference between revisions of "User:Michelle2 Zenovka/cmake"

From Second Life Wiki
Jump to navigation Jump to search
Line 125: Line 125:
This is where the real fun and grace of cmake starts to take shape. Open a terminal window and go to the folder with the viewer source code. Enter the folder linden/indra/ now run the develop.py script. Probably on windows if python installed correctly you can just type "develop.py".  
This is where the real fun and grace of cmake starts to take shape. Open a terminal window and go to the folder with the viewer source code. Enter the folder linden/indra/ now run the develop.py script. Probably on windows if python installed correctly you can just type "develop.py".  


(It seems quite possible to stay with in your cygwin prompt and just "cd release/indra" "develo.py")
(It seems possible to stay with in your cygwin prompt but if this breaks on windows, open a command prompt instead)
cd release/indra
develop.py configure


it may be necessary to add a -G option which selects which version of visual studio to target, possible options are :-
it may be necessary to add a -G option which selects which version of visual studio to target, possible options are :-
Line 135: Line 138:
for example
for example


develop.py -G VC90
develop.py configure -G VC90


will generate project files for Visual C++ 2008
will generate project files for Visual C++ 2008


NOTE: This develo.py script now downloads the libraries that were previously in the libs zip file. This saves developers who are tracking release from constantly downloading them every update and only downloads updated libraries. This means on the first run develo.py will take ages download the libs and secondly if you manually want to override libs with older or newer versions it will take some dancing around (feel free to document this).
NOTE: This develop.py script now downloads the libraries that were previously in the libs zip file. This saves developers who are tracking release from constantly downloading them every update and only downloads updated libraries. This means on the first run develop.py will take ages download the libs and secondly if you manually want to override libs with older or newer versions it will take some dancing around (feel free to document this).


== Build the viewer ==
== Build the viewer ==

Revision as of 00:05, 30 July 2008

How to build the viewer with cmake

This page represents some notes of mine for building the viewer via cmake. The process under linux is trivial but under windows it is slightly more involved (but not really that bad at all). If you've only ever been used to starting with a Visual Studio project file then the cmake steps may seem a little strange at first but its a great system for ensuring that radically different build environments start from the same "control" files.

As cygwin is required for a couple of operations during the building of the viewer i make use of it for svn access too. If you are more familar with unix/linux then this will feel quite at home to you, if you are use to windows it all looks a bit scary!

Prerequisites

Prerequisites for Windows

  • cmake (well duh!)
  • Python
  • bison and flex (from cygwin)
  • DirectX SDK (Microsoft DirectX SDK (November 2007))
  • Quicktime SDK
  • openssl SDK


Get cmake from http://www.cmake.org/HTML/Download.html Download and install the setup executable


Get python from http://www.python.org

When installing cmake and python, its important to allow the commands to be addded to the system path. Both installers give an option for this towards the end of the installation. (On my system i needed to select for current user only as for all users (silently) failed to work).


Get cygwin from http://www.cygwin.com/

When you get to the package choice make sure you select bison and flex, they are under development tools.


Get DirectX SDK November 2007 from Microsoft Warning 400MB+ 2007 http://www.microsoft.com/downloads/details.aspx?FamilyId=4B78A58A-E672-4B83-A28E-72B5E93BD60A&displaylang=en]


Get Quicktime SDK from Apple http://developer.apple.com/quicktime/download/


Openssl SDK

I think this is now with the viewer code and shipped, Please double check me!

Not sure why this is not packaged with the viewer. Probably license issues as OpenSSL can be troublesome WRT licenses and compatibility with other licenses. Some windows packages are available which may be a better solution. Work to do

http://www.openssl.org/

Prerequisites for Linux

For linux you will also need very similar packages to the windows build, but it is highly recommended that you install these via your distributions package management system.

Required packages (based on a minimum debian lenny install):-

  • cmake
  • python
  • build-essential (gcc/ld/make etc)
  • svn (to get latest release branch)
  • unzip

Some header/development packages are also required (note these are the debian package names, and these packages probably depend on other packages)

  • libgl1-mesa-dev
  • libzip-dev
  • libfreetype6-dev ?
  • libxft2-dev
  • libxrandr-dev
  • libxcursor-dev
  • libglu1-mesa-dev
  • libxt-dev

TODO do a chroot build to find out exactly what is needed as a minimum

Prerequisites for Mac

HELP!

Get the source

At the time of writing the source is only available via SVN. cmake based viewer builds are in the release branch so it should be in a released zip ball soon and is expected to start shipping with the 1.21 RCs

Check out the source :-

svn co http://svn.secondlife.com/svn/linden/release

Probably the best plan on Windowd, if you do not have an svn client but have installed cygwin, is to go back to the cygwin setup and select the svn tools from the development group. Once these are installed you can checkout svn just like we do on unix.

Open a cygwin prompt (or for linux just at your console) and run the following commands :-

cd c:
mkdir secondlife
cd secondlife
svn co http://svn.secondlife.com/svn/linden/release release


You no longer need to download the libs tarball/zip file as the develo.py will download the required libraries for you, note you still need the librarys and programs in the initial section of this page installed.

DON'T FORGET THE ARTWORK!

If you are running from svn and still in your cygwin prompt/console, the easiest and quickest way to get the artwork is as follows -

chmod +x release/doc/asset_urls.txt
. release/doc/asset_urls.txt
wget $SLASSET_ART
unzip *.zip
cp linden/* release/ -r

In the future this section will be supplemented by a straight forward download from the usual viewer source location as well as the option of downloading the latest and greatest direct from svn release branch.

Install FMOD API

At the time of writing fmod still needs to be manually downloaded and installed within the linden source tree. This is assumed you are still working from the cygwin shell or a linux terminal.

(linux)

wget http://www.fmod.org/index.php/release/version/fmodapi375linux.tar.gz
tar -xvzf fmodapi375linux.tar.gz
cp fmodapi375linux/api/libfmod-3.75.so release/libraries/i686-linux/lib_debug/
cp fmodapi375linux/api/libfmod-3.75.so release/libraries/i686-linux/lib_release/
cp fmodapi375linux/api/inc/* release/libraries/include/
 

(windows)

wget http://www.fmod.org/index.php/release/version/fmodapi375win.zip
unzip fmodapi385win.zip
<NOT FINISHED>

Generate the project files

This is where the real fun and grace of cmake starts to take shape. Open a terminal window and go to the folder with the viewer source code. Enter the folder linden/indra/ now run the develop.py script. Probably on windows if python installed correctly you can just type "develop.py".

(It seems possible to stay with in your cygwin prompt but if this breaks on windows, open a command prompt instead)

cd release/indra
develop.py configure

it may be necessary to add a -G option which selects which version of visual studio to target, possible options are :-

  • VC71
  • VC2003 (default)
  • VC80 (VS2005)
  • VC90 (VS2008)

for example

develop.py configure -G VC90

will generate project files for Visual C++ 2008

NOTE: This develop.py script now downloads the libraries that were previously in the libs zip file. This saves developers who are tracking release from constantly downloading them every update and only downloads updated libraries. This means on the first run develop.py will take ages download the libs and secondly if you manually want to override libs with older or newer versions it will take some dancing around (feel free to document this).

Build the viewer

Now the previous cmake process will have generated some build project files, either Unix makefiles, xcode project files or Visual Studio project files.

Visual Studio files (and xcode?) can be found under linden/indra/build-vc71 (in fact the exact path name depends on which target you have generated for). Just open the solution file .sln in that folder and build the solution in the standard way. Unix make files are found in the same location and a build can be started with a make in that directory as well. And i would guess that xcode projects are also created in the same way.

If you don't have the VSTool.exe issues below, just opening up your Visual Studio c++ will show secondlife at the top of the recent projects, ready for you to open.

It is also possible to start the build directly from the command line/console with :-

develop.py build

On Windows (and mac?) this starts the build without using the visual studio environment but only using the compiler tool chain.

Problems

Express editions of Visual C++

Express editions do not have some of the extra features that VSTool.exe requires, VSTool is a little application that sets a few default project options, like which project is the startup and which build configuration to use.


Custom builds

If you wish to do custom builds or things that develop.py just was not intended for then please have a look at User:Michelle2_Zenovka/cmake-flags