]> git.sesse.net Git - mlt/blob - docs/install.txt
Added install.txt
[mlt] / docs / install.txt
1 INSTALL
2 -------
3
4         This document provides a description of the MLT project installation and
5         organisation.
6
7         It provides *CRITICAL* architecture information, so please read carefully
8         if you plan to extend or use the MLT code base.
9
10
11 Directories
12 -----------
13
14         The directory heirarchy is defined as follows:
15
16         + docs                  - Location of all documentation
17         + src                   - All project source is provided here
18             + framework         - The mlt media framework
19             + modules           - All services are defined here
20                 + core          - Independent MLT services
21                 + dv            - libdv dependent services
22                 + ffmpeg        - ffmpeg dependent services
23                 + avformat      - libavformat dependent services
24                 + vorbis        - vorbis dependenent services
25                 + sdl            - SDL dependent services
26                 + resample      - libresample dependent services
27                 + gtk2          - pango and pixbuf dependent services
28                 + bluefish      - Bluefish dependent services (*)
29                 + mainconcept   - mainconcept dependent services (*)
30             + inigo             - A media playing test application
31             + valerie           - Client API to access the server
32             + miracle           - The server implementation
33             + humperdink        - The evil demo
34             + albino            - The simple but nice demo
35             + tests             - Reserved for regression and unit tests
36
37         Additional subdirectories may be nested below those shown and should be
38         documented in their parent.
39
40         (*) Not posted to CVS due to licensing issues.
41
42
43 Configuration
44 -------------
45
46         Configuration is triggered from the top level directory via a 
47         ./configure script.
48
49         Each source bearing subdirectory shown above have their own configure
50         script which are called automatically from the top level.
51
52         Typically, new modules can be introduced without modification to the 
53         configure script and arguments are accepted and passed through to all 
54         subdirectories.
55
56         Top level usage is:
57
58         ./configure --help          - report all configure options
59         ./configure --prefix=[dir]  - target install directory (default: /usr/local)
60         ./configure --disable-[mod] - do not compile specified module(s)
61         ./configure --[other]       - pass through to children
62
63         NB: This script must be run to register new services after a CVS checkout
64         or subsequent update.
65
66         
67 Compilation
68 -----------
69
70         Makefiles are generated during configuration and these are based on
71         a per directory template which must be provided by the developer.
72
73
74 Testing
75 -------
76
77         To execute the mlt tools without installation, or to test a new version
78         on a system with an already installed mlt version, you should run:
79
80         . setenv
81
82         NB: This applies to your current shell only.
83
84
85 Installation
86 ------------
87
88         * NOT IMPLEMENTED YET *
89
90         The install is triggered by running make install or make install-strip
91         from the top level directory.
92         
93         The framework produces a single shared object which is installed in 
94         $prefix/lib/ and public header files which are installed in
95         $prefix/include/mlt/framework.
96
97         The client produces a single shared object which is installed in 
98         $prefix/lib/ and public header which are installed in 
99         $prefix/include/mlt/client.
100
101         The server produces a single exectuable which is installed in
102         $prefix/bin/. This is linked against the framework shared object and
103         posix libs but not against any of the modules.
104
105         The modules produce a shared object per module and update text files
106         containing a list of modules provided by this build. These are installed 
107         in $prefix/share/mlt/. It is at the discretion of the module to install
108         additional support files. 
109         
110         To allow the development of external components, mlt-client-config and
111         mlt-framework-config scripts are generated and installed in $prefix/bin.
112
113         After install, only those modules listed are usable by the server. No
114         module is loaded unless explicitly requested via server configuration
115         or usage.
116
117         External modules are also placed in this $prefix/share/mlt, and the 
118         installation of those must modify the text file accordingly before they
119         will be considered at runtime.
120
121
122 Development
123 -----------
124
125         All compilation in the project has {top-level-dir}/src on the include path. 
126         All headers are included as:
127
128             #include <framework/file.h>
129         
130         All external modules have {prefix}/include/mlt on the include path. All 
131         headers should also be included as:
132
133             #include <framework/file.h>
134
135         This allows migration of source between external and internal modules. 
136         The configuration and Makefile template requirements will require
137         attention though.
138
139