[svn] / branches / dev-api-4 / xvidcore / build / generic / configure.in Repository:
ViewVC logotype

Annotation of /branches/dev-api-4/xvidcore/build/generic/configure.in

Parent Directory Parent Directory | Revision Log Revision Log


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

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4