Difference between revisions of "Compiling VDrift"

From VDrift
Jump to: navigation, search
(→‎Prerequisites: SDL_net is required.)
Line 40: Line 40:
 
* '''sdl-gfx''' - Graphics drawing primitives library for SDL
 
* '''sdl-gfx''' - Graphics drawing primitives library for SDL
 
* '''sdl-image''' - Image file loading library for SDL
 
* '''sdl-image''' - Image file loading library for SDL
* '''sdl-net'''
 
 
* '''vorbisfile''' - File loading library for the ogg vorbis format
 
* '''vorbisfile''' - File loading library for the ogg vorbis format
 
* '''libvorbis''' - The Vorbis General Audio Compression Codec
 
* '''libvorbis''' - The Vorbis General Audio Compression Codec

Revision as of 10:07, 19 February 2012

Compiling VDrift depends upon the build environment beeing set up correctly. See Getting VDrift.

Compiling VDrift makes it possible to Installing VDrift.

Compiling VDrift is different depending on the operating system on which it is compiled. So follow the applicable passage.

Compiling on FreeBSD

To compile VDrift on FreeBSD, use the ports system.

Latest Release

If you downloaded a release, simply run make on the vdrift port:

 cd /usr/ports/games/vdrift && make install clean clean-depends

Development Version

If you Downloaded the development version, copy the vdrift and vdrift-data ports to vdrift-devel and vdrift-data-devel:

 cd /usr/ports/games && cp -rf vdrift vdrift-devel && cp -rf vdrift-data vdrift-data-devel

To compile, run make on the newly-created vdrift-devel port:

 cd /usr/ports/games/vdrift-devel && make install clean clean-depends

Compiling on Linux

Prerequisites

The required build tools include:

  • g++ - The GNU C++ compiler
  • scons - A replacement for Make

The required libraries include:

  • libsdl - Simple Direct Media Layer
  • libglew - OpenGL extension utilities
  • sdl-gfx - Graphics drawing primitives library for SDL
  • sdl-image - Image file loading library for SDL
  • vorbisfile - File loading library for the ogg vorbis format
  • libvorbis - The Vorbis General Audio Compression Codec
  • libbullet - Bullet Physics Library
  • libcurl - the multiprotocol file transfer library
  • libarchive - library for reading and writing archive formats
  • Boost C++ Libraries (header-file-only)
  • ASIO C++ Libraries (header-file-only)

Make sure you have all the required libraries and build tools. Make sure you also have the development files for each of the libraries. Your Linux distribution may have different package names and/or bundled differently. The list above should give enough information to search for applicable packages within your distribution's package manager.

Bullet

For the 2009-02-15 release, the only step required is to expand the Bullet source archive:

tar zxvf bullet-2.73-sp1.tgz
Note: For older versions of VDrift, you will need to follow the Old Method of Compiling Bullet.

Ubuntu does not include a libbullet package, but getdeb does. To add the getdeb-repository to your sources-list.d:

   wget -q -O - http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add - 
   sudo sh -c 'echo "deb http://archive.getdeb.net/ubuntu natty-getdeb games" > /etc/apt/sources.list.d/getdeb.list'
   sudo apt-get update

LibGLEW

Note: VDrift requires libglew version greater than 1.5.3.

Ubuntu 11.04 (Natty Narwhal) does contain libglew1.5, only. To install libglew1.6 and its development headers:

   wget http://archive.ubuntu.com/ubuntu/pool/universe/g/glew/libglew1.6_1.6.0-3_amd64.deb
   sudo dpkg -i libglew1.6_1.6.0-3_amd64.deb
   rm libglew1.6_1.6.0-3_amd64.deb
   
   wget http://archive.ubuntu.com/ubuntu/pool/universe/g/glew/libglew1.6-dev_1.6.0-3_amd64.deb
   sudo dpkg -i libglew1.6-dev_1.6.0-3_amd64.deb
   rm libglew1.6-dev_1.6.0-3_amd64.deb

Ubuntu 8.04

For Ubuntu 8.04 you additionally need:

sudo apt-get install libboost-date-time-dev libboost-regex-dev

SCons

As of the 2005-10-02 release, VDrift no longer uses ./configure, make, etc. (autotools). Now the project is built with SCons. You may want to read a little about Using SCons.

There are two ways to use SCons. The first way is to install scons on your system through your package manager, then you can use it simply by the name of the program, "scons". If you followed the directions for installing prerequisites for Ubuntu above, then you're done and can continue on to the next section. The second way is to use the scons-local package (included with VDrift) which will do the same thing but doesn't require that you install scons on your system. To do this, you must move the scons-local-0.96.95.tar.gz archive from tools to the root vdrift folder, un-tar the archive, and then use the ./scons.py command instead of scons.

All other Packages

All other required packages can be installed using this command:

   sudo apt-get install g++ libarchive-dev libarchive-dev libasio-dev \
                        libboost-dev libcurl4-gnutls-dev libdrm-dev \
                        libgl1-mesa-dev libglu1-mesa-dev libkms1 \
                        mesa-common-dev libsdl-gfx1.2-dev libsdl-image1.2-dev \
                        libsdl-net1.2-dev libvorbis-dev freeglut3 libbullet0 \
                        libbullet-dev scons

Optional: Using scons-local instead of installing SCons

If you have decided not to install SCons on your system, you can use scons-local. To set it up, do the following:

tar zxvf tools/scons-local-0.96.1.tar.gz
Note: Some of the following steps refer to the scons command, you should now replace that with ./scons.py.

Compiling

To compile VDrift, just use the scons command.

scons

Optional: Compile Options

You can use one or more compile options. To compile with optimization for a certain platform, you can use the arch option.

scons arch=a64

Compiling VDrift in release mode will turn off debugging options, and enable more compiler optimizations. VDrift runs much more quickly in release mode.

scons release=1

To enable force feedback, use this option:

scons force_feedback=1

You can get a list of all compile time options with:

scons --help
Note: These options are probably best left off the first time you compile. If you have problems compiling or running VDrift, it is easier to debug with them off. Once you verify that VDrift is compiling, then recompile with these optimizations to improve performance.

Installing

VDrift does not need to be installed to work and you can run it from the folder where you compiled it. If you do want to install, use the SCons build target install. This command must be run as root.

sudo scons install
Note: The scons install process was broken for several releases including the 2009-02-15 release and may fail to install needed datafiles. If you have release 2009-02-15 or earlier, run "sudo scons install" as noted above and then manually re-copy the data files to the installed destination folder:
sudo cp -r data/* /usr/share/games/vdrift/data

Optional: Installation Location

You can change the installation prefix. For example, if you want VDrift to go in /usr/local/share/games/vdrift, you can change the prefix setting.

scons install prefix=/usr/local
Note: There are many more build and install options, see the Using SCons page for more information.

Compiling on Mac OS

Prerequisites

The VDrift Mac OS X project requires Xcode 3.2 or later. The latest version, Xcode 4.2 is free on the Mac App Store.

Get the VDrift source code, either from the latest source release on the VDrift downloads page, or the development version.

Dependencies

Download the Mac OS X dependancies into vdrift/vdrift-mac

cd vdrift
git clone https://github.com/VDrift/vdrift-mac.git

Building

Open vdrift/vdrift-mac/vdrift.xcodeproj and in Xcode 4 or higher click "Build" in the "Product" menu, otherwise hit "Build" from Xcode's "Build" menu.

Error fixing

If when building, you get some errors, it is most likely because the Xcode project is out of date (it often is as we don't have an active Mac OS X developer). To fix it:

  • Remove files from Xcode that are in the project but not in the repository anymore.
  • Add new files to Xcode that are in the repository, but have not yet been added to the project.

Compiling on Windows

Prerequisites

Building with Code::Blocks/MinGW

  • Download latest MinGW. When asked to select components for install, you only need the base system and the g++ compiler.
  • Your PATH Environment Variable should contain the MinGW bin path(e.g. C:\MinGW\bin;).
  • Download Code::Blocks nightly
  • Run "vdrift-win\premake4 codeblocks" command line from vdrift directory to generate the solution.

Building with MSVC

  • Run "vdrift-win\premake4 vs2008" or "vdrift-win\premake4 vs2010" command line from vdrift directory to generate the appropriate solution.

Building with Scons(broken)

Note: SCons will prefer the MSVC tools over the MinGW. So if you have Microsoft Visual Studio installed, you might have problems building VDrift with Scons.
  • Download latest MinGW. When asked to select components for install, you only need the base system and the g++ compiler.
  • Your PATH Environment Variable should contain the MinGW bin path(e.g. C:\MinGW\bin;).
  • Download Python 2.6.4
  • Run the installer and accept all the defaults.
  • Download SCons 1.20
  • Run the installer. It should find your Python installation, accept all defaults.
  • Your PATH Environment Variable should contain the Python and Python scripts paths(e.g. C:\Python26;C:\Python26\Scripts;).
  • Open a new CMD prompt by choosing START, RUN, cmd, OK.
  • Change directories to the spot where you checked VDrift out.
  • Now, to build VDrift, run the command:
tools/win/bin/build_vdrift.bat

Installing VDrift Data

  • Move or copy the VDrift data to a directory named data within the root VDrift directory. This can be done in a few different ways, depending on how you obtained the VDrift data. You could check it out directly here, or you could check it out in another place and use TortoiseSVN to export it to this location. If you downloaded a VDrift data archive you can extract it here, or extract it elsewhere and then move or copy the necessary files to runtime. In the end, just make sure you have a directory structure with paths like VDrift/data/cars/, VDrift/data/tracks/, etc.