Parent Directory
|
Revision Log
Revision 900 - (view) (download)
1 : | edgomez | 824 | dnl ========================================================================== |
2 : | dnl | ||
3 : | dnl Autoconf script for XviD | ||
4 : | dnl | ||
5 : | dnl Copyright(C) 2003 Edouard Gomez <ed.gomez@free.fr> | ||
6 : | dnl | ||
7 : | dnl ========================================================================== | ||
8 : | |||
9 : | edgomez | 851 | AC_INIT([XviD], [1.0.0 cvs-snapshot], [xvid-devel@xvid.org]) |
10 : | edgomez | 824 | AC_CONFIG_SRCDIR(configure.in) |
11 : | |||
12 : | edgomez | 900 | dnl Do not forget to increase that when needed. |
13 : | API_MAJOR="3" | ||
14 : | API_MINOR="0" | ||
15 : | |||
16 : | edgomez | 824 | dnl NASM version requirement |
17 : | minimum_nasm_patch_version=34 | ||
18 : | nasm_prog="nasm" | ||
19 : | |||
20 : | dnl Default CFLAGS -- Big impact on overall speed | ||
21 : | our_cflags_defaults="-Wall" | ||
22 : | our_cflags_defaults="$our_cflags_defaults -O2" | ||
23 : | our_cflags_defaults="$our_cflags_defaults -fomit-frame-pointer" | ||
24 : | our_cflags_defaults="$our_cflags_defaults -ffast-math" | ||
25 : | our_cflags_defaults="$our_cflags_defaults -funroll-loops" | ||
26 : | our_cflags_defaults="$our_cflags_defaults -fschedule-insns" | ||
27 : | our_cflags_defaults="$our_cflags_defaults -fschedule-insns2" | ||
28 : | |||
29 : | dnl ========================================================================== | ||
30 : | dnl Features - configure options | ||
31 : | dnl ========================================================================== | ||
32 : | |||
33 : | FEATURES="" | ||
34 : | DIVX4COMPAT_SOURCES="" | ||
35 : | edgomez | 830 | DIVX4_ENCORE="" |
36 : | DIVX4_DECORE="" | ||
37 : | edgomez | 824 | |
38 : | dnl BIGLUT aka old VLC code | ||
39 : | AC_ARG_ENABLE(oldvlc, | ||
40 : | AC_HELP_STRING([--enable-oldvlc], | ||
41 : | [Enable old VLC code (Needs much more memory ~10MB)]), | ||
42 : | [if test "$enable_oldvlc" = "yes" ; then | ||
43 : | FEATURES="$FEATURES -DBIGLUT" | ||
44 : | fi]) | ||
45 : | |||
46 : | dnl Internal Debug | ||
47 : | AC_ARG_ENABLE(idebug, | ||
48 : | AC_HELP_STRING([--enable-idebug], | ||
49 : | [Enable internal debug function]), | ||
50 : | [if test "$enable_idebug" = "yes" ; then | ||
51 : | FEATURES="$FEATURES -D_DEBUG" | ||
52 : | fi]) | ||
53 : | |||
54 : | dnl Internal Profile | ||
55 : | AC_ARG_ENABLE(iprofile, | ||
56 : | AC_HELP_STRING([--enable-iprofile], | ||
57 : | [Enable internal profiling]), | ||
58 : | [if test "$enable_iprofile" = "yes" ; then | ||
59 : | FEATURES="$FEATURES -D_PROFILING_" | ||
60 : | fi]) | ||
61 : | |||
62 : | dnl Assembly code | ||
63 : | AC_ARG_ENABLE(assembly, | ||
64 : | AC_HELP_STRING([--disable-assembly], | ||
65 : | [Disable assembly code]), | ||
66 : | [if test "$enable_assembly" = "no" ; then | ||
67 : | assembly="no" | ||
68 : | else | ||
69 : | if test "$enable_assembly" = "yes" ; then | ||
70 : | assembly="yes" | ||
71 : | fi | ||
72 : | fi], | ||
73 : | [assembly="yes"]) | ||
74 : | |||
75 : | dnl Internal Debug | ||
76 : | AC_ARG_ENABLE(divx4compat, | ||
77 : | AC_HELP_STRING([--enable-divx4compat], | ||
78 : | [Enable DivX4 compatibility API]), | ||
79 : | [if test "$enable_divx4compat" = "yes" ; then | ||
80 : | DIVX4COMPAT_SOURCES="SRC_DIVX4COMPAT" | ||
81 : | edgomez | 830 | DIVX4_ENCORE="encore;" |
82 : | DIVX4_DECORE="decore;" | ||
83 : | edgomez | 824 | fi]) |
84 : | |||
85 : | |||
86 : | dnl ========================================================================== | ||
87 : | dnl Default install prefix and checks build type | ||
88 : | dnl ========================================================================== | ||
89 : | |||
90 : | AC_PREFIX_DEFAULT("/usr/local") | ||
91 : | AC_CANONICAL_BUILD | ||
92 : | AC_CANONICAL_HOST | ||
93 : | AC_CANONICAL_TARGET | ||
94 : | |||
95 : | dnl ========================================================================== | ||
96 : | dnl Check for the C compiler (could be passed on command line) | ||
97 : | dnl ========================================================================== | ||
98 : | |||
99 : | dnl | ||
100 : | dnl First we test if CFLAGS have been passed on command line | ||
101 : | dnl I do that because autoconf defaults (-g -O2) suck and they would kill | ||
102 : | dnl performance. To prevent that we define a good defult CFLAGS at the end | ||
103 : | dnl of the script if and only if CFLAGS has not been passed on the command | ||
104 : | dnl line | ||
105 : | dnl | ||
106 : | AC_MSG_CHECKING(whether to use default CFLAGS) | ||
107 : | if test x"$CFLAGS" = x"" ; then | ||
108 : | force_default_cc_options="yes" | ||
109 : | AC_MSG_RESULT([yes]) | ||
110 : | else | ||
111 : | force_default_cc_options="no" | ||
112 : | AC_MSG_RESULT([no]) | ||
113 : | fi | ||
114 : | |||
115 : | dnl Now we can safely check for the C compiler | ||
116 : | AC_PROG_CC | ||
117 : | |||
118 : | dnl ========================================================================== | ||
119 : | dnl Check for the install program | ||
120 : | dnl ========================================================================== | ||
121 : | |||
122 : | AC_PROG_INSTALL | ||
123 : | |||
124 : | dnl ========================================================================== | ||
125 : | edgomez | 830 | dnl Check for the ranlib program to generate static library index |
126 : | dnl ========================================================================== | ||
127 : | |||
128 : | AC_PROG_RANLIB | ||
129 : | |||
130 : | dnl ========================================================================== | ||
131 : | edgomez | 824 | dnl |
132 : | dnl This part looks for: | ||
133 : | dnl | ||
134 : | dnl ARCHITECTURE : The platform architecture | ||
135 : | dnl - IA32 for mmx, mmx-ext, mmx2, sse assembly | ||
136 : | dnl - IA64 | ||
137 : | dnl - PPC for PowerPC assembly routines | ||
138 : | dnl - GENERIC for plain C sources only | ||
139 : | dnl | ||
140 : | dnl BUS: Address bus size (in bits) | ||
141 : | dnl - 32 | ||
142 : | dnl - 64 | ||
143 : | dnl | ||
144 : | dnl ENDIANNESS: I think you can guess what this thing means :-) | ||
145 : | dnl - LITTLE_ENDIAN | ||
146 : | dnl - BIG_ENDIAN | ||
147 : | dnl | ||
148 : | dnl ========================================================================== | ||
149 : | |||
150 : | dnl | ||
151 : | dnl Looking what sources have to be compiled according to the CPU type | ||
152 : | dnl | ||
153 : | |||
154 : | ARCHITECTURE="" | ||
155 : | |||
156 : | AC_MSG_CHECKING([for whether to use assembly code]) | ||
157 : | if test x"$assembly" = x"yes" ; then | ||
158 : | AC_MSG_RESULT([yes]) | ||
159 : | AC_MSG_CHECKING([for architecture type]) | ||
160 : | case "$target_cpu" in | ||
161 : | i[[3456]]86) | ||
162 : | AC_MSG_RESULT(ia32) | ||
163 : | ARCHITECTURE="IA32" | ||
164 : | ;; | ||
165 : | powerpc) | ||
166 : | AC_MSG_RESULT(PowerPC) | ||
167 : | edgomez | 827 | dnl ATM the ppc port is out of date |
168 : | dnl ARCHITECTURE="PPC" | ||
169 : | ARCHITECTURE="GENERIC" | ||
170 : | edgomez | 824 | ;; |
171 : | ia64) | ||
172 : | AC_MSG_RESULT(ia64) | ||
173 : | ARCHITECTURE="IA64" | ||
174 : | ;; | ||
175 : | *) | ||
176 : | AC_MSG_RESULT($target_cpu) | ||
177 : | ARCHITECTURE="GENERIC" | ||
178 : | ;; | ||
179 : | esac | ||
180 : | else | ||
181 : | AC_MSG_RESULT([no]) | ||
182 : | ARCHITECTURE="GENERIC" | ||
183 : | fi | ||
184 : | |||
185 : | dnl | ||
186 : | dnl Testing address bus length | ||
187 : | dnl | ||
188 : | BUS="" | ||
189 : | |||
190 : | AC_CHECK_SIZEOF([int *]) | ||
191 : | case "$ac_cv_sizeof_int_p" in | ||
192 : | 4) | ||
193 : | BUS="32BIT" | ||
194 : | ;; | ||
195 : | 8) | ||
196 : | BUS="64BIT" | ||
197 : | ;; | ||
198 : | *) | ||
199 : | AC_MSG_ERROR([XviD supports only 32/64 bit architectures]) | ||
200 : | ;; | ||
201 : | esac | ||
202 : | |||
203 : | dnl | ||
204 : | dnl Testing endianness | ||
205 : | dnl | ||
206 : | ENDIANNESS="" | ||
207 : | |||
208 : | AC_C_BIGENDIAN(ENDIANNESS="BIG_ENDIAN", ENDIANNESS="LITTLE_ENDIAN") | ||
209 : | |||
210 : | dnl ========================================================================== | ||
211 : | dnl | ||
212 : | dnl Check for OS specific variables | ||
213 : | dnl - SHARED_EXTENSION, STATIC_EXTENSION, OBJECT_EXTENSION | ||
214 : | dnl | ||
215 : | dnl ========================================================================== | ||
216 : | |||
217 : | AC_MSG_CHECKING(for build extensions) | ||
218 : | SHARED_EXTENSION="" | ||
219 : | STATIC_EXTENSION="" | ||
220 : | OBJECT_EXTENSION="" | ||
221 : | case "$target_os" in | ||
222 : | *bsd*|linux*|beos|irix*|solaris*) | ||
223 : | AC_MSG_RESULT([.so .a .o]) | ||
224 : | STATIC_EXTENSION="a" | ||
225 : | SHARED_EXTENSION="so" | ||
226 : | OBJECT_EXTENSION="o" | ||
227 : | ;; | ||
228 : | [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]|mingw32|mks) | ||
229 : | edgomez | 900 | AC_MSG_RESULT([.dll .a .obj]) |
230 : | STATIC_EXTENSION="a" | ||
231 : | edgomez | 824 | SHARED_EXTENSION="dll" |
232 : | OBJECT_EXTENSION="obj" | ||
233 : | ;; | ||
234 : | darwin*|raphsody*) | ||
235 : | AC_MSG_RESULT([.dynlib .a .o]) | ||
236 : | STATIC_EXTENSION="a" | ||
237 : | SHARED_EXTENSION="dylib" | ||
238 : | OBJECT_EXTENSION="o" | ||
239 : | ;; | ||
240 : | *) | ||
241 : | AC_MSG_RESULT([Unknown OS - Using .so .a .o]) | ||
242 : | STATIC_EXTENSION="a" | ||
243 : | SHARED_EXTENSION="so" | ||
244 : | OBJECT_EXTENSION="o" | ||
245 : | ;; | ||
246 : | esac | ||
247 : | |||
248 : | AC_MSG_CHECKING(for platform specific LDFLAGS/CFLAGS) | ||
249 : | edgomez | 830 | SPECIFIC_LDFLAGS="" |
250 : | SPECIFIC_CFLAGS="" | ||
251 : | edgomez | 824 | case "$target_os" in |
252 : | *bsd*|linux*|irix*|solaris*) | ||
253 : | edgomez | 900 | AC_MSG_RESULT([-Wl,-soname,libxvidcore.so -shared -lc -lm]) |
254 : | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" | ||
255 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" | ||
256 : | SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION) -shared -lc -lm" | ||
257 : | edgomez | 830 | SPECIFIC_CFLAGS="-fPIC" |
258 : | edgomez | 824 | ;; |
259 : | [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]|mingw32|mks) | ||
260 : | AC_MSG_RESULT([-shared -Wl,--dll,--out-implib,\$@.a]) | ||
261 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
262 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" | ||
263 : | SPECIFIC_LDFLAGS="-mno-cygwin -shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" | ||
264 : | edgomez | 830 | SPECIFIC_CFLAGS="-mno-cygwin" |
265 : | edgomez | 824 | ;; |
266 : | darwin*|raphsody*) | ||
267 : | edgomez | 830 | AC_MSG_RESULT([-dynamiclib -flat_namespace]) |
268 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
269 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" | ||
270 : | edgomez | 830 | SPECIFIC_LDFLAGS="-dynamiclib -flat_namespace" |
271 : | edgomez | 900 | SPECIFIC_CFLAGS="-fPIC -fno-common -no-cpp-precomp" |
272 : | edgomez | 824 | ;; |
273 : | beos) | ||
274 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
275 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" | ||
276 : | edgomez | 824 | AC_MSG_RESULT([-nostart]) |
277 : | edgomez | 830 | SPECIFIC_LDFLAGS="-nostart" |
278 : | SPECIFIC_CFLAGS="-fPIC" | ||
279 : | edgomez | 824 | ;; |
280 : | *) | ||
281 : | AC_MSG_RESULT([Unknown OS - -shared -lc -lm]) | ||
282 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
283 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" | ||
284 : | edgomez | 830 | SPECIFIC_LDFLAGS="" |
285 : | SPECIFIC_CFLAGS="" | ||
286 : | edgomez | 824 | ;; |
287 : | esac | ||
288 : | |||
289 : | dnl ========================================================================== | ||
290 : | dnl | ||
291 : | dnl Assembler stuff - AS, AFLAGS, ASSEMBLY_EXTENSION, SOURCES | ||
292 : | dnl | ||
293 : | dnl ========================================================================== | ||
294 : | |||
295 : | AS="" | ||
296 : | AFLAGS="" | ||
297 : | ASSEMBLY_EXTENSION="" | ||
298 : | GENERIC_SOURCES="SRC_GENERIC" | ||
299 : | ASSEMBLY_SOURCES="" | ||
300 : | |||
301 : | dnl | ||
302 : | dnl IA32 | ||
303 : | dnl | ||
304 : | |||
305 : | if test "$ARCHITECTURE" = "IA32" ; then | ||
306 : | |||
307 : | dnl | ||
308 : | dnl Checking nasm existence | ||
309 : | dnl | ||
310 : | AC_CHECK_PROG([ac_nasm], [$nasm_prog], [yes], [no], , [yes]) | ||
311 : | if test "$ac_nasm" = "yes" ; then | ||
312 : | |||
313 : | dnl | ||
314 : | dnl Checking nasm patch version | ||
315 : | dnl | ||
316 : | AC_MSG_CHECKING([for nasm patch version]) | ||
317 : | nasm_patch=`nasm -r | cut -d '.' -f 3 | cut -d ' ' -f 1` | ||
318 : | AC_MSG_RESULT([$nasm_patch]) | ||
319 : | |||
320 : | if test "$nasm_patch" -lt "$minimum_nasm_patch_version" ; then | ||
321 : | AC_MSG_WARN([nasm patch version too old - Compiling generic sources only]) | ||
322 : | ARCHITECTURE="GENERIC" | ||
323 : | else | ||
324 : | |||
325 : | dnl | ||
326 : | dnl Checking nasm format - win32 or elf | ||
327 : | dnl | ||
328 : | AC_MSG_CHECKING([for nasm object format]) | ||
329 : | case "$target_os" in | ||
330 : | *bsd*|linux*|beos|irix*|solaris*) | ||
331 : | AC_MSG_RESULT([elf]) | ||
332 : | NASM_FORMAT="elf" | ||
333 : | PREFIX="" | ||
334 : | ;; | ||
335 : | [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]|mingw32|mks) | ||
336 : | AC_MSG_RESULT([win32]) | ||
337 : | NASM_FORMAT="win32" | ||
338 : | PREFIX="-DPREFIX" | ||
339 : | ;; | ||
340 : | esac | ||
341 : | |||
342 : | AS=nasm | ||
343 : | AFLAGS="-I\$(<D) -f $NASM_FORMAT $PREFIX" | ||
344 : | ASSEMBLY_EXTENSION="asm" | ||
345 : | ASSEMBLY_SOURCES="SRC_IA32" | ||
346 : | fi | ||
347 : | |||
348 : | else | ||
349 : | AC_MSG_WARN([nasm not found - Compiling generic sources only]) | ||
350 : | ARCHITECTURE="GENERIC" | ||
351 : | fi | ||
352 : | |||
353 : | fi | ||
354 : | |||
355 : | dnl | ||
356 : | dnl PPC | ||
357 : | dnl | ||
358 : | |||
359 : | if test "$ARCHITECTURE" = "PPC" ; then | ||
360 : | AS="\$(CC)" | ||
361 : | AFLAGS="-c" | ||
362 : | ASSEMBLY_EXTENSION="s" | ||
363 : | ASSEMBLY_SOURCES="SRC_PPC" | ||
364 : | AC_MSG_CHECKING([for Altivec support]) | ||
365 : | cat > conftest.S << EOF | ||
366 : | .text | ||
367 : | vxor 0,0,0 | ||
368 : | EOF | ||
369 : | if $CC -c conftest.S 2>/dev/null 1>/dev/null ; then | ||
370 : | AC_MSG_RESULT(yes) | ||
371 : | edgomez | 830 | SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DARCH_IS_PPC_ALTIVEC" |
372 : | edgomez | 824 | ASSEMBLY_SOURCES="SRC_ALTIVEC" |
373 : | else | ||
374 : | AC_MSG_RESULT(no) | ||
375 : | fi | ||
376 : | rm -f conftest.* | ||
377 : | fi | ||
378 : | |||
379 : | dnl | ||
380 : | dnl IA64 | ||
381 : | dnl | ||
382 : | |||
383 : | if test "$ARCHITECTURE" = "IA64" ; then | ||
384 : | AS="\$(CC)" | ||
385 : | AFLAGS="-c" | ||
386 : | ASSEMBLY_EXTENSION="s" | ||
387 : | ASSEMBLY_SOURCES="SRC_IA64" | ||
388 : | edgomez | 830 | |
389 : | case `basename $CC` in | ||
390 : | *ecc*) | ||
391 : | DCT_IA64_SOURCES="idct_ia64_ecc.s" | ||
392 : | |||
393 : | dnl If the compiler is ecc, then i don't know its options | ||
394 : | dnl fallback to "no options" | ||
395 : | if test "$force_default_cc_options" = "yes" ; then | ||
396 : | our_cflags_defaults="" | ||
397 : | fi | ||
398 : | ;; | ||
399 : | *) | ||
400 : | DCT_IA64_SOURCES="idct_ia64_gcc.s" | ||
401 : | ;; | ||
402 : | esac | ||
403 : | |||
404 : | edgomez | 824 | fi |
405 : | |||
406 : | dnl ========================================================================== | ||
407 : | dnl | ||
408 : | dnl Check for header files | ||
409 : | dnl | ||
410 : | dnl ========================================================================== | ||
411 : | |||
412 : | AC_CHECK_HEADERS( | ||
413 : | stdio.h \ | ||
414 : | signal.h \ | ||
415 : | , , AC_MSG_ERROR(Missing header file)) | ||
416 : | |||
417 : | dnl ========================================================================== | ||
418 : | dnl | ||
419 : | edgomez | 830 | dnl Now we can set CFLAGS if needed |
420 : | dnl | ||
421 : | dnl ========================================================================== | ||
422 : | |||
423 : | if test "$force_default_cc_options" = "yes" ; then | ||
424 : | CFLAGS="$our_cflags_defaults" | ||
425 : | fi | ||
426 : | |||
427 : | dnl ========================================================================== | ||
428 : | dnl | ||
429 : | edgomez | 824 | dnl Substitions |
430 : | dnl | ||
431 : | dnl ========================================================================== | ||
432 : | |||
433 : | AC_SUBST(FEATURES) | ||
434 : | AC_SUBST(ARCHITECTURE) | ||
435 : | AC_SUBST(BUS) | ||
436 : | AC_SUBST(ENDIANNESS) | ||
437 : | AC_SUBST(SHARED_EXTENSION) | ||
438 : | AC_SUBST(STATIC_EXTENSION) | ||
439 : | AC_SUBST(OBJECT_EXTENSION) | ||
440 : | AC_SUBST(NASM_FORMAT) | ||
441 : | AC_SUBST(AS) | ||
442 : | AC_SUBST(AFLAGS) | ||
443 : | AC_SUBST(ASSEMBLY_EXTENSION) | ||
444 : | AC_SUBST(GENERIC_SOURCES) | ||
445 : | AC_SUBST(ASSEMBLY_SOURCES) | ||
446 : | AC_SUBST(CC) | ||
447 : | AC_SUBST(CFLAGS) | ||
448 : | edgomez | 830 | AC_SUBST(SPECIFIC_LDFLAGS) |
449 : | AC_SUBST(SPECIFIC_CFLAGS) | ||
450 : | edgomez | 824 | AC_SUBST(DIVX4COMPAT_SOURCES) |
451 : | edgomez | 830 | AC_SUBST(DCT_IA64_SOURCES) |
452 : | AC_SUBST(DIVX4_ENCORE) | ||
453 : | AC_SUBST(DIVX4_DECORE) | ||
454 : | AC_SUBST(RANLIB) | ||
455 : | edgomez | 900 | AC_SUBST(API_MAJOR) |
456 : | AC_SUBST(API_MINOR) | ||
457 : | AC_SUBST(STATIC_LIB) | ||
458 : | AC_SUBST(SHARED_LIB) | ||
459 : | edgomez | 824 | |
460 : | dnl ========================================================================== | ||
461 : | dnl | ||
462 : | dnl Output files | ||
463 : | dnl | ||
464 : | dnl ========================================================================== | ||
465 : | |||
466 : | AC_CONFIG_FILES(platform.inc) | ||
467 : | edgomez | 830 | AC_CONFIG_FILES(libxvidcore.def) |
468 : | edgomez | 824 | |
469 : | AC_OUTPUT |
No admin address has been configured | ViewVC Help |
Powered by ViewVC 1.0.4 |