LUMIERA.clone/doc/technical/build/BuildDependencies.txt
Ichthyostega 8ffab2f002 Dependencies: get rid of boost-regexp (see #995)
Mostly, std::regexp can be used as a drop-in replacement.

Note: unfortunately ECMA regexps do not support lookbehind assertions.
This lookbehind is necesary here because we want to allow parsing values
from strings with additional content, which means we need explicitly to
exclude mismatches due to invalid syntax.

We can work around that issue like "either line start, or *not* one of these characters.


Alternatively we could consider to make the match more rigid,
i.e we would require the string to conain *only* the timecode spec to be parsed.
2019-06-24 02:41:02 +02:00

106 lines
4.4 KiB
Text

Build Dependencies
==================
:Author: core-devs
:Date: 11/2015
:toc:
_Lumiera is written for GNU/Linux._ +
We try to get the best out of modern system programming
techniques to reach a solid performance and good throughput.
Lumiera shall scale with the provided Hardware,
the more RAM and the more/faster CPU's you have the better.
Nevertheless lower end 32bit machines are supported too.
Secondary targets will be other free operating systems which offer a decent Posix API.
Porting to other more or less similar platforms will be possible, if -- by coincidence --
Someone(TM) helps with porting.
Having said that -- for the time being, the core team won't spend much effort on porting.
Platform
--------
We develop and test on standard PC hardware, 32 and 64 bit.
It is intended to target other platforms running GNU/Linux eventually.
Lumiera expects a `standard' desktop installation running a XServer.
Graphics::
There are no special requirements for the graphic system.
Hardware acceleration will likely be added later through extensions,
but will remain strictly optional.footnote:[For the time being, we'll watch
the evolution in that area and might revisit that topic when there are more
compelling and widely supported solutions available]
Disks::
No special requirements. Video editing requires decent disk speed though,
so it is suggested to use a fast/big array of disks configured as raid.
Special Hardware::
Support for special hardware would be possible, but depends on certain conditions
+
* we need access / donations for the hardware
* Specs and APIs must be open.
* someone to do the actual interfacing and support needs to join the team
Compatibility
~~~~~~~~~~~~~
We try to keep our depdendencies close to Debian/stable and the most recent Ubuntu LTS.
Whenever we need more recent libraries or other dependencies not available for our reference platform,
we care to provide custom Debian / Ubuntu packages as reference. This does not mean Lumiera is
limited to Devian flavours, it should work on any current Linux distribution.
Languages and Tools
-------------------
* C / C++
- a C99 / C++14 compatible compiler footnote:[in practice, we build using GCC and
occasionally we check using Clang]
- GCC *4.9* or Clang *3.5* should be fine footnote:[basically we try to use just the stock language.
On rare occasions in the past, we _did_ use some GCC extensions, like `typeof()`, but we care for
workarounds, in case this becomes a problem. Incidentally, `typeof()` is obsoleted by the new
C++ standard, which provides `decltype()` for this purpose.].
* BOOST (listed below are the Debian package names)
- libboost-dev (at least *1.55*)
- libboost-program-options-dev
- libboost-program-options-dev
- libboost-filesystem-dev
* Script languages
- Python (*2.7*) for build scripts
- bash (some test scripts use bash specific extensions)
Build Tools
~~~~~~~~~~~
* Git
* SCons *2.0* footnote:[we build with SCons >= 2.0 since a long time. Previously the buildsystem used to work with 1.0
In addition, we use some SCons plug-ins, which are all shipped in-tree (`admin/scons`)]
* pkg-config
* Doxygen
We maintain a link:/documentation/technical/infra/debianDepot.html[Debian/Ubuntu package] (relying on debhelper, CDBS, git-buildpackage)
Libraries
~~~~~~~~~
* BOOST
* link:http://nobug.pipapo.org/[NoBug]
* http://gmerlin.sourceforge.net/gavl.html[GAVL] (for raw media support)
* ALSA: libasound2-dev
* for the GUI: (*GTK-3*) gtkmm-3.0 gdlmm-3.0 glibmm-2.4 cairomm-1.0 xv
- libgtkmm-3.0-dev
- libcairomm-1.0-dev
- libglibmm-2.4-dev, requiring at least glib2.0 (2.40 or better) and gthread-2.0
- libxv-dev footnote:[for the XV viewer widget `gui/output/xvdisplayer.cpp`
-- currently obsolete as of [yellow-background]#5/2015#][yellow-background]#TODO 5/2015# and X-lib
- librsvg-2.0 and librsvg2-dev for rendering Icons
- libgdl-3 (3.12 or better) through libgdlmm-3 -- the »Gnome Docking Library«footnote:[GDL isn't directly related to GNOME any more.
We contributed to the improvement of this library in the past. These improvements went upstream
with GDL-2.27. At times, we used to ship our own GDL package. Right now, a recent upstream version
together with the corresponding *mm-bindings will do. We provide a debian package for the latter,
until they will be available in the official Debian/Ubuntu/Mint repos. But we don't have any
special requirements on these `gdlmm` bindings.]