1 |
|
Table of contents: |
2 |
|
================== |
3 |
|
|
4 |
|
1/ Generic install procedure for Unix based systems |
5 |
|
1.a/ Requirements. |
6 |
|
1.b/ How to build from a release tarball. |
7 |
|
1.c/ How to build from CVS. |
8 |
|
1.d/ Cross compiling xvidcore. |
9 |
|
1.e/ What is the meaning of the xvidcore Makefile output. |
10 |
|
1.f/ Building a Debian package. |
11 |
|
|
12 |
|
2/ Generic install procedure for Win32/MSVC. |
13 |
|
2.a/ Requirements. |
14 |
|
2.b/ How to build the VFW frontend from a release tarball. |
15 |
|
2.c/ How to build from CVS. |
16 |
|
|
17 |
|
|
18 |
|
1/ Generic install procedure for Unix based systems |
19 |
|
=================================================== |
20 |
|
|
21 |
|
This build process works for most common Unix based systems, including |
22 |
|
GNU/Linux, (Free|Open|Net)BSD, Solaris and faked unix environments |
23 |
|
like cygwin and minsys on Win32 platforms. |
24 |
|
|
25 |
|
1.a/ Requirements |
26 |
|
----------------- |
27 |
|
- ANSI C compiler (gcc) |
28 |
|
- make (GNU make, BSD make, Solaris make) |
29 |
|
- a C library providing ANSI C functions like malloc/free/realloc |
30 |
|
and some other standard functions. |
31 |
|
- nasm on ia32 platforms for MMX/SSE optimized code. |
32 |
|
|
33 |
|
|
34 |
|
1.b/ How to build from a release tarball |
35 |
|
---------------------------------------- |
36 |
|
|
37 |
|
Get the latest version on http://www.xvid.org/, and uncompress it on |
38 |
|
your disk. Let's name the resulting source directory ${xvidcore}. |
39 |
|
|
40 |
|
The next step allows you to configure the xvid sources. |
41 |
|
# cd ${xvidcore}/build/generic |
42 |
|
# ./configure |
43 |
|
|
44 |
|
Some building options can be tuned thanks to the ./configure tool. You |
45 |
|
can use your own CC and CFLAGS variables in order to override xvid's |
46 |
|
default ones. To have a list of known options: |
47 |
|
# ./configure --help |
48 |
|
|
49 |
|
Now xvidcore is configured according to your specific platform. You |
50 |
|
can still handwrite the platform.inc file in order to add/remove |
51 |
|
specific flags that ./configure may have set them wrong. |
52 |
|
|
53 |
|
It is time to build xvidcore: |
54 |
|
# make |
55 |
|
|
56 |
|
That creates a =build directory where all object files go, and where |
57 |
|
the build targets are linked. If no error was reported by the build |
58 |
|
process, then you can install it on your system: |
59 |
|
# make install |
60 |
|
|
61 |
|
This copies the shared and static libraries to the prefix location |
62 |
|
passed to the ./configure tool (/usr/local by default). The xvid.h |
63 |
|
include file is also copied during the "make install" run. |
64 |
|
|
65 |
|
Voila, xvidcore is installed on your system, make sure your runtime |
66 |
|
linker knows about the xvidcore prefix lib dir where it is |
67 |
|
installed. And make also sure that it generates a symlink to its |
68 |
|
SONAME. In case it would do not take care of the symlink itself: |
69 |
|
# cd ${prefix}/lib |
70 |
|
# ls libxvidcore.so.* |
71 |
|
ls should list at least one libxvidcore.so.MAJOR.MINOR file |
72 |
|
# ln -s libxvidcore.so.MAJOR.MINOR libxvidcore.so.MAJOR |
73 |
|
|
74 |
|
You may also add a .so link to .so.MAJOR, so that applications linked |
75 |
|
against .so are in fact linked to .so.MAJOR and thus ensures better |
76 |
|
binary compatibility as we take care not changing the MAJOR number |
77 |
|
until there is an incompatible ABI change. |
78 |
|
# ln -s libxvidcore.so.MAJOR libxvidcore.so |
79 |
|
|
80 |
|
|
81 |
|
1.c/ How to build from CVS |
82 |
|
-------------------------- |
83 |
|
|
84 |
|
In order to build from CVS, you need some more requirements compared |
85 |
|
to the release building process: |
86 |
|
- GNU autoconf >= 2.5 |
87 |
|
- GNU automake (no specific version) |
88 |
|
- GNU libtool (no specific version) |
89 |
|
|
90 |
|
Grab the desired CVS version you want to build. |
91 |
|
# cvs -d:pserver:anonymous@cvs.xvid.org:/xvid login |
92 |
|
(just type enter) |
93 |
|
# cvs -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore |
94 |
|
(read the CVS documentation if you want details about branch |
95 |
|
checking outs) |
96 |
|
|
97 |
|
You now need to bootstrap the build files: |
98 |
|
# cd xvidcore/build/generic |
99 |
|
# ./bootstrap.sh |
100 |
|
|
101 |
|
A configure script has been bootstraped, you're now able to follow |
102 |
|
the "Build from release tarballs" steps. |
103 |
|
|
104 |
|
|
105 |
|
1.d/ Cross compiling xvidcore. |
106 |
|
------------------------------ |
107 |
|
|
108 |
|
The configure script allows an easy handling of cross compilation. You |
109 |
|
have just to specify the host and build platform values. |
110 |
|
|
111 |
|
e.g: building Win32 libxvidcore.dll from a gnu/linux systems |
112 |
|
# cd ${xvidcore}/build/generic |
113 |
|
# ./configure --host=i386-mingw32 --build=i386-pc-linux-gnu |
114 |
|
|
115 |
|
And then build as usual. |
116 |
|
|
117 |
|
As the example uses the Win32 target, we can even build the vfw frontend. |
118 |
|
Additional requirements are: |
119 |
|
- Resource compiler (the Makefile uses the syntax of windres from the |
120 |
|
GNU CC suite, but you can easily modify the cmd line) |
121 |
|
- GNU make (other make programs may have problem with shell expansion) |
122 |
|
|
123 |
|
So to cross compile the VFW frontend, you just need to override the |
124 |
|
Makefile variables pointing to the compiler and the resource compiler. |
125 |
|
These variables are CC and WINDRES. |
126 |
|
# cd ${xvidcore}/vfw/bin |
127 |
|
# make CC=i386-mingw32-gcc WINDRES=i386-mingw32-windres |
128 |
|
|
129 |
|
|
130 |
|
1.e/ What is the meaning of xvidcore Makefile output. |
131 |
|
----------------------------------------------------- |
132 |
|
|
133 |
|
The makefile available in ${xvidcore}/build/generic is handwritten and |
134 |
|
outputs uncommon building progress strings to the terminal. You may |
135 |
|
want to understanding their meaning. Here is a brief explaination. |
136 |
|
|
137 |
|
- A: a/dir/file.(asm|s) |
138 |
|
This an assembling rule assembling 'a/dir/file.(asm|s)' |
139 |
|
- C: a/dir/file.c |
140 |
|
This is a compilation rule compiling 'a/dir/file.c' |
141 |
|
- Cl: Stuff |
142 |
|
This is a cleaning rule in action |
143 |
|
- D: Directory |
144 |
|
This is a rule creating 'Directory' |
145 |
|
- I: a/dir/file |
146 |
|
Installing 'file' in 'a/dir' |
147 |
|
- L: file |
148 |
|
Linking 'file' |
149 |
|
- W: file |
150 |
|
Compiling the Win32 resource 'file' |
151 |
|
|
152 |
|
|
153 |
|
1.f/ Building a Debian package. |
154 |
|
------------------------------- |
155 |
|
|
156 |
|
Release tarballs contain a debian dir so that you can easily build a |
157 |
|
debian package. Just execute the usual steps. They may be sumed up to: |
158 |
|
# cd ${xvidcore} |
159 |
|
# dpkg-buildpackage -rfakeroot |
160 |
|
|
161 |
|
If all went right, you're now able to install the package: |
162 |
|
# cd .. |
163 |
|
# dpkg -i libxvidcore... |
164 |
|
|
165 |
|
|
166 |
|
|
167 |
|
2/ Generic install procedure for Win32/MSVC. |
168 |
|
============================================ |
169 |
|
|
170 |
|
|
171 |
|
|
172 |
|
2.a/ Requirements. |
173 |
|
------------------ |
174 |
|
|
175 |
|
- MS VisualDev 6 Processor Pack 5 or MS VisualDev 7 |
176 |
|
- nasm installed as 'nasm' in the msvc binary search paths. |
177 |
|
|
178 |
|
2.b/ How to build the VFW frontend from a release tarball. |
179 |
|
---------------------------------------------------------- |
180 |
|
|
181 |
|
Download the latest source distribution from http://www.xvid.org/ and |
182 |
|
uncompress it on your disk. Let's call this directory ${xvidcore}. |
183 |
|
|
184 |
|
- Open the workspace xvidcore.dsw located in |
185 |
|
${xvidcore}/build/win32. |
186 |
|
- Then choose the libxvidcore project as the Active project of the |
187 |
|
workspace. |
188 |
|
- Make sure the Active configuration is |
189 |
|
'libxvidcore Win32 Release' |
190 |
|
- Build the project (F7) |
191 |
|
- Open the project vfw.dsp file located in ${xvidcore}/vfw. |
192 |
|
- Make sure the Active configuration is |
193 |
|
'vfw Win32 Release' |
194 |
|
- Build the project (F7) |
195 |
|
- Install the resulting VFW frontend using the xvid.inf file |
196 |
|
provided in ${xvidcore}/vfw/bin. Right click on the file, and |
197 |
|
then click 'Install' |
198 |
|
|
199 |
|
2.c/ How to build from CVS. |
200 |
|
--------------------------- |
201 |
|
|
202 |
|
You have first to retrieve the sources from the xvid CVS repository |
203 |
|
using a tool like WinCVS. Then follow the normal steps explained in |
204 |
|
the previous section. |
205 |
|
|
206 |
|
NB: your CVS program may not convert text files to the cr/lf windows |
207 |
|
text. In that case opening project files in MSVC will result in |
208 |
|
some weird error messages from MSVC. To fix that, you have to |
209 |
|
convert all .dsp files to the cr/lf format. You can do that |
210 |
|
opening the .dsp file in WordPad and saving it. It should now be |
211 |
|
in cr/lf format. |