]> git.sesse.net Git - mlt/blob - docs/install.txt
Configure and build tuning
[mlt] / docs / install.txt
1 Installation Documentation
2
3 Copyright (C) 2004 Ushodaya Enterprises Limited
4 Author: Charles Yates <charles.yates@pandora.be>
5 Last Revision: 2004-04-13
6
7
8 INSTALL
9 -------
10
11         This document provides a description of the MLT project installation and
12         organisation.
13
14
15 Directories
16 -----------
17
18         The directory heirarchy is defined as follows:
19
20         + demo                  - A selection of samples to show off capabilities.
21         + docs                  - Location of all documentation
22         + src                   - All project source is provided here
23             + framework         - The mlt media framework
24             + modules           - All services are defined here
25                 + core          - Independent MLT services
26                 + dv            - libdv dependent services
27                 + ffmpeg        - ffmpeg dependent services
28                 + avformat      - libavformat dependent services
29                 + vorbis        - vorbis dependenent services
30                 + sdl           - SDL dependent services
31                 + resample      - libresample dependent services
32                 + gtk2          - pango and pixbuf dependent services
33                 + fezzik        - A giant (meta) service to load and normalise media
34                 + westley       - Nice and clever XML services
35                 + vorbis        - Ogg Vorbis dependent services
36                 + xine          - Xine-derived sources
37                 + bluefish      - Bluefish dependent services (*)
38                 + mainconcept   - mainconcept dependent services (*)
39             + inigo             - A media playing test application
40             + valerie           - Client API to access the server
41             + miracle           - The server implementation
42             + albino            - A simple console (protocol level) example
43             + humperdink        - A terminal-based example client
44             + tests             - Reserved for regression and unit tests
45
46         Additional subdirectories may be nested below those shown and should be
47         documented in their parent.
48
49         (*) Not posted to CVS due to licensing issues.
50
51
52 Dependencies
53 ------------
54
55         The MLT core is dependent on:
56
57         * a C99 compliant C compiler
58         * posix threading
59         * standard posix libraries
60
61         The MLT applications and libraries provided are all dependent on the core.
62
63         The modules have the following dependencies:
64
65         ----------- ----------------------------------------------------------
66         MODULE      DESCRIPTION
67         ----------- ----------------------------------------------------------
68         avformat    Provided from ffmpeg CVS and compiled as a shared library.
69                     URL: http://ffmpeg.sf.net
70         ----------- ----------------------------------------------------------
71         bluefish    Bluefish hardware and software development kit
72                     URL: http://www.bluefish444.com
73         ----------- ----------------------------------------------------------
74         dv          libdv 0.102 or later.
75                     URL: http://libdv.sf.net
76         ----------- ----------------------------------------------------------
77         gtk2        GTK2 and associated dependencies.
78                     URL: http://www.gtk.org
79         ----------- ----------------------------------------------------------
80         mainconcept Mainconcept MPEG and DVCPRO Release SDKs.
81                     URL: http://www.mainconcept.com
82         ----------- ----------------------------------------------------------
83         resample    libsamplerate 0.15 or later 
84                     URL: http://www.mega-nerd.com/SRC/
85         ----------- ----------------------------------------------------------
86         sdl         SDL 1.2 or later.
87                     URL: http://www.libsdl.org
88         ----------- ----------------------------------------------------------
89         vorbis      libvorbis 1.0.1 or later.
90                     URL: http://www.vorbis.com/
91         ----------- ----------------------------------------------------------
92         westley     libxml2 2.5 or later.
93                     URL: http://www.xmlsoft.org/
94         ----------- ----------------------------------------------------------
95
96
97 Configuration
98 -------------
99
100         Configuration is triggered from the top level directory via a 
101         ./configure script.
102
103         Each source bearing subdirectory shown above have their own configure
104         script which are called automatically from the top level.
105
106         Typically, new modules can be introduced without modification to the 
107         configure script and arguments are accepted and passed through to all 
108         subdirectories.
109
110         Top level usage is:
111
112         ./configure --help          - report all configure options
113         ./configure --prefix=[dir]  - target install directory (default: /usr/local)
114         ./configure --disable-debug - turn off debugging
115         ./configure --disable-mmx   - turn off MMX usage
116         ./configure --cpu='cpu'     - tune build for a specific cpu
117         ./configure --disable-[mod] - do not compile specified module(s)
118         ./configure --[other]       - pass through to children
119
120         NB: This script must be run to register new services after a CVS checkout
121         or subsequent update.
122
123         
124 Compilation
125 -----------
126
127         Makefiles are generated during configuration and these are based on
128         a per directory template which must be provided by the developer.
129
130
131 Testing
132 -------
133
134         To execute the mlt tools without installation, or to test a new version
135         on a system with an already installed mlt version, you should run:
136
137         . setenv
138
139         NB: This applies to your current shell only and it assumes sh or bash.
140
141
142 Installation
143 ------------
144
145         The install is triggered by running make install from the top level
146         directory.
147         
148         The framework produces a single shared object which is installed in 
149         $prefix/lib/ and public header files which are installed in
150         $prefix/include/mlt/framework.
151
152         Valerie produces a single shared object which is installed in 
153         $prefix/lib/ and public header which are installed in 
154         $prefix/include/mlt/valerie.
155
156         Miracle produces a single exectuable which is installed in
157         $prefix/bin/, a library in $prefix/lib and associated header files in
158         $prefix/include.
159
160         The modules produce a shared object per module and update text files
161         containing a list of modules provided by this build. These are installed 
162         in $prefix/share/mlt/modules. It is at the discretion of the module to 
163         install additional support files. 
164         
165         To allow the development of external components, mlt-config and scripts 
166         are generated and installed in $prefix/bin.
167
168         After install, only those modules listed are usable by the server. No
169         module is loaded unless explicitly requested via server configuration
170         or usage.
171
172         External modules are also placed in this $prefix/share/mlt/modules, and the
173         installation of those must modify the text file accordingly before they
174         will be considered at runtime.
175
176
177 Development
178 -----------
179
180         All compilation in the project has {top-level-dir}/src on the include path. 
181         All headers are included as:
182
183             #include <framework/file.h>
184         
185         All external modules have {prefix}/include/mlt on the include path. All 
186         headers should also be included as:
187
188             #include <framework/file.h>
189
190         This allows migration of source between external and internal modules. 
191         The configuration and Makefile template requirements will require
192         attention though.