= Compile and install FFADO from source = We assume that you have successfully [wiki:DownloadFfadoSource downloaded the FFADO source code], and made sure all the [wiki:Dependencies build dependencies] are in place. The first thing you should do is change into the FFADO source directory and read the [source:trunk/libffado/README README] file. If your system already contains a pre-installed FFADO package, you should read about [wiki:AvoidingParallelInstallations avoiding multiple parallel installations] before proceeding. == Quick run-through for the impatient == The actual compilation is strikingly simple: {{{ $ cd /where/you/keep/libffado $ scons }}} This will start the build process. Sometimes, scons displays [wiki:QuickSconsHowto scary-looking error messages]. You can usually ignore these. Afterwards, you need to install FFADO. This requires root privileges. If you have {{{sudo}}} configured for your user, just do {{{ $ sudo scons install }}} If not, {{{ $ su -c "scons install" }}} will work. Now your FFADO is ready to be used. {{{ #!LegendBox #!legend: Warning FFADO changed its version numbers with the 2.0.0 release. Before the ffado-library was installed as libffado.so(.1(.X)), this is also used by distributions jackd. Now its libffado.so.2(.X), until distributions pick this up, there are only two solutions: 1. Install jack yourself, preferably overwriting the systems installation. 1. Remove the libffado.so* files from the installed version and replace them by links to libffado.so.2. This works as the application binary interface (abi) of the lib hasn't changed (yet). }}} == Customized builds == {{{scons}}} has a number of compile-time options that you can use to tweak your build process. Here is a list of the available options as of revision r1372: {{{ $ scons -h ... BUILDDIR: Path to place the built files in default: actual: DEBUG: Toggle debug-build. DEBUG means "-g -Wall" and more, otherwise we will use "-O2" to optimise. (yes|no) default: True actual: True PROFILE: Build with symbols and other profiling info (yes|no) default: False actual: False PREFIX: The prefix where ffado will be installed to. ( /path/to/PREFIX ) default: /usr/local actual: /usr/local BINDIR: Overwrite the directory where apps are installed to. ( /path/to/BINDIR ) default: $PREFIX/bin actual: /usr/local/bin LIBDIR: Overwrite the directory where libs are installed to. ( /path/to/LIBDIR ) default: $PREFIX/lib actual: /usr/local/lib INCLUDEDIR: Overwrite the directory where headers are installed to. ( /path/to/INCLUDEDIR ) default: $PREFIX/include actual: /usr/local/include SHAREDIR: Overwrite the directory where misc shared files are installed to. ( /path/to/SHAREDIR ) default: $PREFIX/share/libffado actual: /usr/local/share/libffado ENABLE_BEBOB: Enable/Disable the bebob part. (yes|no) default: True actual: True ENABLE_FIREWORKS: Enable/Disable the ECHO Audio FireWorks AV/C part. (yes|no) default: True actual: True ENABLE_MOTU: Enable/Disable the MOTU part. (yes|no) default: True actual: True ENABLE_DICE: Enable/Disable the DICE part. (yes|no) default: False actual: False ENABLE_METRIC_HALO: Enable/Disable the Metric Halo part. (yes|no) default: False actual: False ENABLE_RME: Enable/Disable the RME part. (yes|no) default: False actual: False ENABLE_GENERICAVC: Enable/Disable the the generic avc part (mainly used by apple). Note that disabling this option might be overwritten by other devices needing this code. (yes|no) default: False actual: False ENABLE_ALL: Enable/Disable support for all devices. (yes|no) default: False actual: False SERIALIZE_USE_EXPAT: Use libexpat for XML serialization. (yes|no) default: False actual: False BUILD_TESTS: Build the tests in their directory. As some contain quite some functionality, this is on by default. If you just want to use ffado with jack without the tools, you can disable this. (yes|no) default: True actual: True BUILD_STATIC_TOOLS: Build a statically linked version of the FFADO tools. (yes|no) default: False actual: False DIST_TARGET: Build target for cross compiling packagers (auto|i386|i686|x86_64|powerpc|powerpc64|none) default: auto actual: auto ENABLE_OPTIMIZATIONS: Enable optimizations and the use of processor specific extentions (MMX/SSE/...). (yes|no) default: False actual: False }}} You can set options by adding them to the scons command line. For example: {{{ $ scons ENABLE_OPTIMIZATIONS=True PREFIX=/usr ENABLE_METRIC_HALO=True }}} Note that you only need to specify the options once, scons saves them for further runs. === Tuning FFADO for production === For production systems, it may be advisable to turn on optimization and to turn off debugging. '''But''': the FFADO developers will not be able to help you if you compile without the debugging feature. So if you do run into problems, you will have to recompile with debugging enabled, reproduce your issue and then contact the developers with the full debugging output available.