= Building Transmission = [[PageOutline]] If you are searching for a HOWTO, covering a specific desitribution or device (NAS, router, ...), have a look at the [HeadlessUsage "Running Transmission on a headless machine"] page == Getting the Source == ==== Recommended ==== Source code for official releases can be found on our [http://www.transmissionbt.com/download.php download page]. ==== Experimental ==== Automated source code tarballs including the newest code [http://build.transmissionbt.com/job/trunk-linux-inc/ are now available, too!] If you want to check out the source code yourself from svn, open a terminal window and type: {{{ $ svn co svn://svn.m0k.org/Transmission/trunk Transmission }}} == On Mac OSX == Transmission has an Xcode project file (Transmission.xcodeproj) for building in Xcode. Make sure you have this software: * Mac OS X 10.6 or newer * Mac OS X 10.6 SDK * Xcode 3.2 or newer (Found on your OSX installation disk, or from the [http://developer.apple.com/ Apple Developer website]) If building from source is too daunting for you, check out the [http://transmission.xpjets.com/ nightly builds].[[BR]] (Note: These are untested snapshots. Use them with care.) == On Unix == === Prerequisites === Ubuntu users: The packages you need are: build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev libglib2.0-dev. After you install those you can skip this section. If this is your first time compiling on Unix, you'll need a few basic tools: * gcc * libtool * gettext 0.14.1 or newer * intltool 0.23 or newer If you're planning to build from SVN: * automake 1.9 or newer * autoconf 2.54 or newer Once you've got the basics out of the way, here are the libraries that Transmission needs to have in order to build: * OpenSSL 0.9.8 or newer, preferably ssl or gnutls support. * libcurl 7.16.3 or newer * GTK+ 2.6 or newer (only needed by the GTK+ gui) * libnotify 0.4.4 (optional, and only needed by the GTK+ gui) * DBUS 0.70 (optional, and only needed by the GTK+ gui) [[BR]] RPM users: you'll also need to install the corresponding -devel packages. === Building from a tarball === {{{ $ tar xvjf transmission-1.40.tar.bz2 $ cd transmission-1.40 $ ./configure -q && make -s $ su (if necessary for the next line) $ make install }}} === Building from an SVN snapshot === ==== First Time ==== {{{ $ svn co svn://svn.m0k.org/Transmission/trunk Transmission $ cd Transmission $ ./autogen.sh && make -s $ su (if necessary for the next line) $ make install }}} ==== Updating ==== {{{ $ cd Transmission $ make clean $ svn up $ make -s $ su (if necessary for the next line) $ make install }}} == On Windows == For Windows XP and above there are several choices: === Cygwin environment === With Cygwin [http://cygwin.com/] installed, the CLI tools (transmission-remote, transmissioncli) and the daemon can be built easily. Take a look at one procedure [http://forum.transmissionbt.com/viewtopic.php?f=1&t=7612#p37238] ( here's a patch for version 1.71 : [wiki:Building/transmission-1.71-Cygwin-build.diff]), and a better patch which works with 1.73 and probably every future version: [http://forum.transmissionbt.com/viewtopic.php?f=3&t=8353&p=39489#p39489]. === Native Windows === With a MinGW [http://mingw.org/] development environment, the Gtk and the Qt GUI applications can be built. The procedure: wiki:BuildingTransmissionQtWindows == Switches == The transmission {{{./configure}}} (or {{{./autogen.sh}}}) script allows you to switch on/off certain parts. To use these, you'll either use {{{--enable-*}}} or {{{--disable-*}}}. eg. To disable the GTK client: {{{--disable-gtk}}}. The switches that are available are: * '''gtk''' = enables GTK+ client (default) * '''daemon''' = enables transmission-daemon and *-remote client (default) * '''cli''' = enables cli client (default. deprecated, consider using the daemon) * '''libnotify''' = enables lib notify (default) * '''nls''' = enables native language support (default) * '''mac''' = enables Mac client (default, if possible) * '''wx''' = enables wxWidgets client (unsupported) * '''beos''' = enables beos client (unsupported) Note: ''{{{--disable-nls}}} removes the dependancy on gettext and intltool. It's designed for, and should only be used on, [HeadlessUsage embedded devices]. If you do have GTK+ installed on your box, you must also specify {{{--disable-gtk}}}.'' ---- == Comments == * How do you build a debug version? It could be a useful addition to configure's parameters.