Parent Directory | Revision Log
Revision 2044 - (view) (download)
1 : | edgomez | 824 | dnl ========================================================================== |
2 : | dnl | ||
3 : | Isibaar | 1797 | dnl Autoconf script for Xvid |
4 : | edgomez | 824 | dnl |
5 : | edgomez | 1451 | dnl Copyright(C) 2003-2004 Edouard Gomez <ed.gomez@free.fr> |
6 : | edgomez | 824 | dnl |
7 : | dnl ========================================================================== | ||
8 : | |||
9 : | edgomez | 1451 | AC_PREREQ([2.50]) |
10 : | |||
11 : | Isibaar | 1938 | AC_INIT([Xvid], [1.4.0], [xvid-devel@xvid.org]) |
12 : | edgomez | 824 | AC_CONFIG_SRCDIR(configure.in) |
13 : | |||
14 : | edgomez | 900 | dnl Do not forget to increase that when needed. |
15 : | edgomez | 1382 | API_MAJOR="4" |
16 : | Isibaar | 1938 | API_MINOR="4" |
17 : | edgomez | 900 | |
18 : | Isibaar | 1845 | dnl NASM/YASM version requirement |
19 : | Isibaar | 1889 | minimum_yasm_major_version=1 |
20 : | Isibaar | 1797 | minimum_nasm_minor_version=0 |
21 : | Isibaar | 1788 | minimum_nasm_major_version=2 |
22 : | edgomez | 824 | nasm_prog="nasm" |
23 : | Isibaar | 1845 | yasm_prog="yasm" |
24 : | edgomez | 824 | |
25 : | dnl Default CFLAGS -- Big impact on overall speed | ||
26 : | our_cflags_defaults="-Wall" | ||
27 : | our_cflags_defaults="$our_cflags_defaults -O2" | ||
28 : | edgomez | 1382 | our_cflags_defaults="$our_cflags_defaults -fstrength-reduce" |
29 : | our_cflags_defaults="$our_cflags_defaults -finline-functions" | ||
30 : | our_cflags_defaults="$our_cflags_defaults -ffast-math" | ||
31 : | edgomez | 824 | our_cflags_defaults="$our_cflags_defaults -fomit-frame-pointer" |
32 : | |||
33 : | dnl ========================================================================== | ||
34 : | dnl Features - configure options | ||
35 : | dnl ========================================================================== | ||
36 : | |||
37 : | FEATURES="" | ||
38 : | |||
39 : | dnl Internal Debug | ||
40 : | AC_ARG_ENABLE(idebug, | ||
41 : | AC_HELP_STRING([--enable-idebug], | ||
42 : | [Enable internal debug function]), | ||
43 : | [if test "$enable_idebug" = "yes" ; then | ||
44 : | FEATURES="$FEATURES -D_DEBUG" | ||
45 : | fi]) | ||
46 : | |||
47 : | dnl Internal Profile | ||
48 : | AC_ARG_ENABLE(iprofile, | ||
49 : | AC_HELP_STRING([--enable-iprofile], | ||
50 : | [Enable internal profiling]), | ||
51 : | [if test "$enable_iprofile" = "yes" ; then | ||
52 : | FEATURES="$FEATURES -D_PROFILING_" | ||
53 : | fi]) | ||
54 : | |||
55 : | edgomez | 1382 | dnl GNU Profiling options |
56 : | AC_ARG_ENABLE(gnuprofile, | ||
57 : | AC_HELP_STRING([--enable-gnuprofile], | ||
58 : | [Enable profiling informations for gprof]), | ||
59 : | [if test "$enable_gnuprofile" = "yes" ; then | ||
60 : | GNU_PROF_CFLAGS="-pg -fprofile-arcs -ftest-coverage" | ||
61 : | GNU_PROF_LDFLAGS="-pg" | ||
62 : | fi]) | ||
63 : | |||
64 : | edgomez | 824 | dnl Assembly code |
65 : | AC_ARG_ENABLE(assembly, | ||
66 : | AC_HELP_STRING([--disable-assembly], | ||
67 : | [Disable assembly code]), | ||
68 : | [if test "$enable_assembly" = "no" ; then | ||
69 : | assembly="no" | ||
70 : | else | ||
71 : | if test "$enable_assembly" = "yes" ; then | ||
72 : | assembly="yes" | ||
73 : | fi | ||
74 : | fi], | ||
75 : | [assembly="yes"]) | ||
76 : | |||
77 : | Isibaar | 1971 | dnl pthread code |
78 : | AC_ARG_ENABLE(pthread, | ||
79 : | AC_HELP_STRING([--disable-pthread], | ||
80 : | [Disable pthread dependent code]), | ||
81 : | [if test "$enable_pthread" = "no" ; then | ||
82 : | pthread="no" | ||
83 : | else | ||
84 : | if test "$enable_pthread" = "yes" ; then | ||
85 : | pthread="yes" | ||
86 : | fi | ||
87 : | fi], | ||
88 : | [pthread="yes"]) | ||
89 : | |||
90 : | edgomez | 1024 | dnl Build as a module not a shared lib on darwin |
91 : | AC_ARG_ENABLE(macosx_module, | ||
92 : | AC_HELP_STRING([--enable-macosx_module], | ||
93 : | [Build as a module on MacOS X]), | ||
94 : | [if test "$enable_macosx_module" = "yes" ; then | ||
95 : | macosx_module="yes" | ||
96 : | else | ||
97 : | macosx_module="no" | ||
98 : | edgomez | 1382 | fi], |
99 : | [macosx_module="no"]) | ||
100 : | edgomez | 1024 | |
101 : | edgomez | 824 | dnl ========================================================================== |
102 : | dnl Default install prefix and checks build type | ||
103 : | dnl ========================================================================== | ||
104 : | |||
105 : | AC_PREFIX_DEFAULT("/usr/local") | ||
106 : | AC_CANONICAL_BUILD | ||
107 : | AC_CANONICAL_HOST | ||
108 : | AC_CANONICAL_TARGET | ||
109 : | |||
110 : | dnl ========================================================================== | ||
111 : | dnl Check for the C compiler (could be passed on command line) | ||
112 : | dnl ========================================================================== | ||
113 : | |||
114 : | dnl | ||
115 : | dnl First we test if CFLAGS have been passed on command line | ||
116 : | dnl I do that because autoconf defaults (-g -O2) suck and they would kill | ||
117 : | dnl performance. To prevent that we define a good defult CFLAGS at the end | ||
118 : | dnl of the script if and only if CFLAGS has not been passed on the command | ||
119 : | dnl line | ||
120 : | dnl | ||
121 : | AC_MSG_CHECKING(whether to use default CFLAGS) | ||
122 : | if test x"$CFLAGS" = x"" ; then | ||
123 : | force_default_cc_options="yes" | ||
124 : | AC_MSG_RESULT([yes]) | ||
125 : | else | ||
126 : | force_default_cc_options="no" | ||
127 : | AC_MSG_RESULT([no]) | ||
128 : | fi | ||
129 : | |||
130 : | dnl Now we can safely check for the C compiler | ||
131 : | AC_PROG_CC | ||
132 : | |||
133 : | dnl ========================================================================== | ||
134 : | dnl Check for the install program | ||
135 : | dnl ========================================================================== | ||
136 : | |||
137 : | AC_PROG_INSTALL | ||
138 : | |||
139 : | dnl ========================================================================== | ||
140 : | edgomez | 830 | dnl Check for the ranlib program to generate static library index |
141 : | dnl ========================================================================== | ||
142 : | |||
143 : | AC_PROG_RANLIB | ||
144 : | Isibaar | 1944 | AC_CHECK_TOOL([AR], [ar], [ar-not-found]) |
145 : | edgomez | 830 | |
146 : | dnl ========================================================================== | ||
147 : | Isibaar | 2035 | dnl Check for the egrep program |
148 : | dnl ========================================================================== | ||
149 : | |||
150 : | AC_PROG_EGREP | ||
151 : | |||
152 : | dnl ========================================================================== | ||
153 : | Isibaar | 2042 | dnl Check how the system supports symlinks. |
154 : | dnl ========================================================================== | ||
155 : | |||
156 : | AC_PROG_LN_S | ||
157 : | |||
158 : | dnl ========================================================================== | ||
159 : | edgomez | 824 | dnl |
160 : | dnl This part looks for: | ||
161 : | dnl | ||
162 : | dnl ARCHITECTURE : The platform architecture | ||
163 : | dnl - IA32 for mmx, mmx-ext, mmx2, sse assembly | ||
164 : | dnl - IA64 | ||
165 : | dnl - PPC for PowerPC assembly routines | ||
166 : | dnl - GENERIC for plain C sources only | ||
167 : | dnl | ||
168 : | dnl BUS: Address bus size (in bits) | ||
169 : | dnl - 32 | ||
170 : | dnl - 64 | ||
171 : | dnl | ||
172 : | dnl ENDIANNESS: I think you can guess what this thing means :-) | ||
173 : | dnl - LITTLE_ENDIAN | ||
174 : | dnl - BIG_ENDIAN | ||
175 : | dnl | ||
176 : | dnl ========================================================================== | ||
177 : | |||
178 : | dnl | ||
179 : | dnl Looking what sources have to be compiled according to the CPU type | ||
180 : | dnl | ||
181 : | |||
182 : | ARCHITECTURE="" | ||
183 : | |||
184 : | AC_MSG_CHECKING([for whether to use assembly code]) | ||
185 : | if test x"$assembly" = x"yes" ; then | ||
186 : | AC_MSG_RESULT([yes]) | ||
187 : | AC_MSG_CHECKING([for architecture type]) | ||
188 : | case "$target_cpu" in | ||
189 : | i[[3456]]86) | ||
190 : | AC_MSG_RESULT(ia32) | ||
191 : | ARCHITECTURE="IA32" | ||
192 : | edgomez | 1586 | ;; |
193 : | x86_64) | ||
194 : | AC_MSG_RESULT(x86_64) | ||
195 : | ARCHITECTURE="X86_64" | ||
196 : | edgomez | 824 | ;; |
197 : | powerpc) | ||
198 : | AC_MSG_RESULT(PowerPC) | ||
199 : | edgomez | 1412 | ARCHITECTURE="PPC" |
200 : | edgomez | 824 | ;; |
201 : | ia64) | ||
202 : | AC_MSG_RESULT(ia64) | ||
203 : | ARCHITECTURE="IA64" | ||
204 : | ;; | ||
205 : | *) | ||
206 : | AC_MSG_RESULT($target_cpu) | ||
207 : | ARCHITECTURE="GENERIC" | ||
208 : | ;; | ||
209 : | esac | ||
210 : | else | ||
211 : | AC_MSG_RESULT([no]) | ||
212 : | ARCHITECTURE="GENERIC" | ||
213 : | fi | ||
214 : | |||
215 : | dnl | ||
216 : | dnl Testing address bus length | ||
217 : | dnl | ||
218 : | BUS="" | ||
219 : | |||
220 : | AC_CHECK_SIZEOF([int *]) | ||
221 : | case "$ac_cv_sizeof_int_p" in | ||
222 : | 4) | ||
223 : | BUS="32BIT" | ||
224 : | ;; | ||
225 : | 8) | ||
226 : | BUS="64BIT" | ||
227 : | ;; | ||
228 : | *) | ||
229 : | Isibaar | 1797 | AC_MSG_ERROR([Xvid supports only 32/64 bit architectures]) |
230 : | edgomez | 824 | ;; |
231 : | esac | ||
232 : | |||
233 : | dnl | ||
234 : | dnl Testing endianness | ||
235 : | dnl | ||
236 : | ENDIANNESS="" | ||
237 : | |||
238 : | AC_C_BIGENDIAN(ENDIANNESS="BIG_ENDIAN", ENDIANNESS="LITTLE_ENDIAN") | ||
239 : | |||
240 : | dnl ========================================================================== | ||
241 : | dnl | ||
242 : | dnl Check for OS specific variables | ||
243 : | dnl - SHARED_EXTENSION, STATIC_EXTENSION, OBJECT_EXTENSION | ||
244 : | dnl | ||
245 : | dnl ========================================================================== | ||
246 : | |||
247 : | AC_MSG_CHECKING(for build extensions) | ||
248 : | SHARED_EXTENSION="" | ||
249 : | STATIC_EXTENSION="" | ||
250 : | OBJECT_EXTENSION="" | ||
251 : | case "$target_os" in | ||
252 : | Isibaar | 2025 | *bsd*|linux*|beos|irix*|solaris*|gnu*) |
253 : | edgomez | 824 | AC_MSG_RESULT([.so .a .o]) |
254 : | STATIC_EXTENSION="a" | ||
255 : | SHARED_EXTENSION="so" | ||
256 : | OBJECT_EXTENSION="o" | ||
257 : | ;; | ||
258 : | edgomez | 1382 | [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) |
259 : | edgomez | 900 | AC_MSG_RESULT([.dll .a .obj]) |
260 : | STATIC_EXTENSION="a" | ||
261 : | edgomez | 824 | SHARED_EXTENSION="dll" |
262 : | OBJECT_EXTENSION="obj" | ||
263 : | ;; | ||
264 : | Isibaar | 2040 | darwin*) |
265 : | edgomez | 1024 | if test x"$macosx_module" = x"yes"; then |
266 : | AC_MSG_RESULT([.so .a .o]) | ||
267 : | SHARED_EXTENSION="so" | ||
268 : | else | ||
269 : | AC_MSG_RESULT([.dynlib .a .o]) | ||
270 : | SHARED_EXTENSION="dylib" | ||
271 : | fi | ||
272 : | edgomez | 824 | STATIC_EXTENSION="a" |
273 : | OBJECT_EXTENSION="o" | ||
274 : | ;; | ||
275 : | *) | ||
276 : | AC_MSG_RESULT([Unknown OS - Using .so .a .o]) | ||
277 : | STATIC_EXTENSION="a" | ||
278 : | SHARED_EXTENSION="so" | ||
279 : | OBJECT_EXTENSION="o" | ||
280 : | ;; | ||
281 : | esac | ||
282 : | |||
283 : | edgomez | 1382 | dnl ========================================================================== |
284 : | dnl | ||
285 : | dnl Determines best options for CC and LD | ||
286 : | dnl - STATIC_LIB, SHARED_LIB, SPECIFIC_CFLAGS, SPECIFIC_LDLAGS | ||
287 : | dnl | ||
288 : | dnl ========================================================================== | ||
289 : | |||
290 : | edgomez | 824 | AC_MSG_CHECKING(for platform specific LDFLAGS/CFLAGS) |
291 : | edgomez | 830 | SPECIFIC_LDFLAGS="" |
292 : | SPECIFIC_CFLAGS="" | ||
293 : | Isibaar | 1875 | ALTIVEC_CFLAGS="" |
294 : | edgomez | 1382 | PRE_SHARED_LIB="" |
295 : | Isibaar | 2042 | SO_API_MAJOR_LINK="" |
296 : | SO_LINK="" | ||
297 : | Isibaar | 2044 | IMPORT_LIB="" |
298 : | edgomez | 824 | case "$target_os" in |
299 : | Isibaar | 2025 | linux*|solaris*|gnu*) |
300 : | edgomez | 1382 | AC_MSG_RESULT([ok]) |
301 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
302 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" | ||
303 : | Isibaar | 2042 | SO_API_MAJOR_LINK="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" |
304 : | SO_LINK="libxvidcore.\$(SHARED_EXTENSION)" | ||
305 : | Skal | 1617 | SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -Wl,--version-script=libxvidcore.ld -lc -lm" |
306 : | SPECIFIC_CFLAGS="-fPIC" | ||
307 : | ;; | ||
308 : | *bsd*|irix*) | ||
309 : | AC_MSG_RESULT([ok]) | ||
310 : | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" | ||
311 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR).\$(API_MINOR)" | ||
312 : | Isibaar | 2042 | SO_API_MAJOR_LINK="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" |
313 : | SO_LINK="libxvidcore.\$(SHARED_EXTENSION)" | ||
314 : | edgomez | 1006 | SPECIFIC_LDFLAGS="-Wl,-soname,libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -shared -lc -lm" |
315 : | edgomez | 830 | SPECIFIC_CFLAGS="-fPIC" |
316 : | edgomez | 824 | ;; |
317 : | Isibaar | 2044 | [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*) |
318 : | edgomez | 1382 | AC_MSG_RESULT([ok]) |
319 : | Isibaar | 2044 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
320 : | SHARED_LIB="cygxvidcore.\$(SHARED_EXTENSION)" | ||
321 : | IMPORT_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(STATIC_EXTENSION)" | ||
322 : | Isibaar | 2033 | SPECIFIC_LDFLAGS="-shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" |
323 : | SPECIFIC_CFLAGS="" | ||
324 : | edgomez | 824 | ;; |
325 : | Isibaar | 2044 | mingw32*|mks*) |
326 : | AC_MSG_RESULT([ok]) | ||
327 : | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" | ||
328 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" | ||
329 : | IMPORT_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(STATIC_EXTENSION)" | ||
330 : | SPECIFIC_LDFLAGS="-shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" | ||
331 : | SPECIFIC_CFLAGS="" | ||
332 : | ;; | ||
333 : | Isibaar | 2040 | darwin*) |
334 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
335 : | SPECIFIC_CFLAGS="-fPIC -fno-common -no-cpp-precomp" | ||
336 : | edgomez | 1024 | if test x"$macosx_module" = x"no"; then |
337 : | AC_MSG_RESULT([dylib options]) | ||
338 : | SHARED_LIB="libxvidcore.\$(API_MAJOR).\$(SHARED_EXTENSION)" | ||
339 : | Isibaar | 1870 | SPECIFIC_LDFLAGS="-Wl,-read_only_relocs,suppress -dynamiclib -flat_namespace -compatibility_version \$(API_MAJOR) -current_version \$(API_MAJOR).\$(API_MINOR) -install_name \$(libdir)/\$(SHARED_LIB)" |
340 : | edgomez | 1024 | else |
341 : | edgomez | 1382 | AC_MSG_RESULT([module options]) |
342 : | PRE_SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)-temp.o" | ||
343 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR)" | ||
344 : | SPECIFIC_LDFLAGS="-r -keep_private_externs -nostdlib && \$(CC) \$(LDFLAGS) \$(PRE_SHARED_LIB) -o libxvidcore.\$(SHARED_EXTENSION).\$(API_MAJOR) -bundle -flat_namespace -undefined suppress" | ||
345 : | edgomez | 1024 | fi |
346 : | edgomez | 824 | ;; |
347 : | beos) | ||
348 : | edgomez | 1382 | AC_MSG_RESULT([ok]) |
349 : | edgomez | 900 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
350 : | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" | ||
351 : | edgomez | 830 | SPECIFIC_LDFLAGS="-nostart" |
352 : | SPECIFIC_CFLAGS="-fPIC" | ||
353 : | edgomez | 824 | ;; |
354 : | *) | ||
355 : | edgomez | 1382 | AC_MSG_RESULT([Unknown Platform (Using default -shared -lc -lm)]) |
356 : | edgomez | 1535 | STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" |
357 : | edgomez | 900 | SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" |
358 : | edgomez | 830 | SPECIFIC_LDFLAGS="" |
359 : | SPECIFIC_CFLAGS="" | ||
360 : | edgomez | 824 | ;; |
361 : | esac | ||
362 : | |||
363 : | edgomez | 1382 | if test x"$PRE_SHARED_LIB" = x; then |
364 : | PRE_SHARED_LIB=$SHARED_LIB | ||
365 : | fi | ||
366 : | |||
367 : | Isibaar | 2044 | if test x"$IMPORT_LIB" = x; then |
368 : | IMPORT_LIB=$SHARED_LIB | ||
369 : | fi | ||
370 : | |||
371 : | edgomez | 824 | dnl ========================================================================== |
372 : | dnl | ||
373 : | edgomez | 1382 | dnl Assembler stuff |
374 : | dnl - AS, AFLAGS, ASSEMBLY_EXTENSION, SOURCES | ||
375 : | edgomez | 824 | dnl |
376 : | dnl ========================================================================== | ||
377 : | |||
378 : | AS="" | ||
379 : | AFLAGS="" | ||
380 : | ASSEMBLY_EXTENSION="" | ||
381 : | GENERIC_SOURCES="SRC_GENERIC" | ||
382 : | ASSEMBLY_SOURCES="" | ||
383 : | |||
384 : | dnl | ||
385 : | dnl IA32 | ||
386 : | dnl | ||
387 : | |||
388 : | edgomez | 1586 | if test "$ARCHITECTURE" = "IA32" -o "$ARCHITECTURE" = "X86_64" ; then |
389 : | edgomez | 824 | |
390 : | dnl | ||
391 : | edgomez | 1535 | dnl Checking for nasm compatible programs |
392 : | edgomez | 824 | dnl |
393 : | |||
394 : | edgomez | 1535 | found_nasm_comp_prog="no" |
395 : | chosen_asm_prog="" | ||
396 : | edgomez | 824 | |
397 : | Isibaar | 1845 | dnl Check for yasm first |
398 : | AC_CHECK_PROG([ac_yasm], [$yasm_prog], [yes], [no], , [yes]) | ||
399 : | if test "$ac_yasm" = "yes" ; then | ||
400 : | dnl | ||
401 : | dnl Checking yasm version | ||
402 : | dnl | ||
403 : | AC_MSG_CHECKING([for yasm version]) | ||
404 : | Isibaar | 1889 | yasm_major=`$yasm_prog --version | head -1 | cut -d '.' -f 1 | cut -d ' ' -f 2` |
405 : | if test -z $yasm_major ; then | ||
406 : | yasm_major=-1 | ||
407 : | Isibaar | 1845 | fi |
408 : | Isibaar | 1889 | AC_MSG_RESULT([$yasm_major]) |
409 : | Isibaar | 1845 | |
410 : | Isibaar | 1866 | dnl Actually, yasm >= 0.7.99.2161 should be ok |
411 : | Isibaar | 1845 | dnl But I'm too lazy to check also the patch version... |
412 : | Isibaar | 1889 | if test "$yasm_major" -lt "$minimum_yasm_major_version" ; then |
413 : | Isibaar | 1845 | AC_MSG_WARN([yasm version is too old]) |
414 : | else | ||
415 : | found_nasm_comp_prog="yes" | ||
416 : | chosen_asm_prog="$yasm_prog" | ||
417 : | fi | ||
418 : | fi | ||
419 : | |||
420 : | Isibaar | 1797 | dnl Check for nasm (not buggy version) |
421 : | Isibaar | 1794 | if test "$found_nasm_comp_prog" = "no" ; then |
422 : | edgomez | 1535 | AC_CHECK_PROG([ac_nasm], [$nasm_prog], [yes], [no], , [yes]) |
423 : | if test "$ac_nasm" = "yes" ; then | ||
424 : | dnl | ||
425 : | Isibaar | 1797 | dnl Checking nasm version |
426 : | edgomez | 1535 | dnl |
427 : | Isibaar | 1797 | AC_MSG_CHECKING([for nasm version]) |
428 : | Isibaar | 1788 | nasm_minor=`$nasm_prog -v | cut -d '.' -f 2 | cut -d ' ' -f 1` |
429 : | nasm_major=`$nasm_prog -v | cut -d '.' -f 1 | cut -d ' ' -f 3` | ||
430 : | if test -z $nasm_minor ; then | ||
431 : | nasm_minor=-1 | ||
432 : | fi | ||
433 : | if test -z $nasm_major ; then | ||
434 : | nasm_major=-1 | ||
435 : | fi | ||
436 : | Isibaar | 1797 | AC_MSG_RESULT([$nasm_major]) |
437 : | edgomez | 824 | |
438 : | Isibaar | 1794 | dnl need nasm 2.x for SSE3/4 and X86_64 |
439 : | if test "$nasm_major" -lt "$minimum_nasm_major_version" ; then | ||
440 : | AC_MSG_WARN([nasm version is too old]) | ||
441 : | edgomez | 1535 | else |
442 : | Isibaar | 1794 | found_nasm_comp_prog="yes" |
443 : | chosen_asm_prog="$nasm_prog" | ||
444 : | edgomez | 1535 | fi |
445 : | edgomez | 824 | fi |
446 : | edgomez | 1535 | fi |
447 : | edgomez | 824 | |
448 : | edgomez | 1535 | dnl |
449 : | dnl Ok now sort what object format we must use | ||
450 : | dnl | ||
451 : | if test "$found_nasm_comp_prog" = "yes" ; then | ||
452 : | AC_MSG_CHECKING([for asm object format]) | ||
453 : | case "$target_os" in | ||
454 : | Isibaar | 2025 | *bsd*|linux*|beos|irix*|solaris*|gnu*) |
455 : | Isibaar | 1797 | if test "$ARCHITECTURE" = "X86_64" ; then |
456 : | AC_MSG_RESULT([elf64]) | ||
457 : | NASM_FORMAT="elf64" | ||
458 : | else | ||
459 : | AC_MSG_RESULT([elf]) | ||
460 : | NASM_FORMAT="elf" | ||
461 : | fi | ||
462 : | edgomez | 1535 | MARK_FUNCS="-DMARK_FUNCS" |
463 : | PREFIX="" | ||
464 : | ;; | ||
465 : | [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) | ||
466 : | Isibaar | 1797 | if test "$ARCHITECTURE" = "X86_64" ; then |
467 : | AC_MSG_RESULT([win64]) | ||
468 : | NASM_FORMAT="win64" | ||
469 : | else | ||
470 : | AC_MSG_RESULT([win32]) | ||
471 : | NASM_FORMAT="win32" | ||
472 : | fi | ||
473 : | Isibaar | 2035 | PREFIX="-DWINDOWS" |
474 : | if test "$GCC" = "yes" ; then | ||
475 : | echo 'int main(void) {return 0;}' > conftest.c | ||
476 : | $CC -S -o conftest conftest.c | ||
477 : | if test `$EGREP -c '_main:' conftest` -eq 0 ; then | ||
478 : | PREFIX="$PREFIX -DNO_PREFIX" | ||
479 : | fi | ||
480 : | rm -f conftest* | ||
481 : | fi | ||
482 : | MARK_FUNCS="" | ||
483 : | edgomez | 1535 | ;; |
484 : | Isibaar | 1768 | *darwin*) |
485 : | Isibaar | 1941 | if test "$ARCHITECTURE" = "X86_64" ; then |
486 : | AC_MSG_RESULT([macho64]) | ||
487 : | NASM_FORMAT="macho64" | ||
488 : | else | ||
489 : | AC_MSG_RESULT([macho32]) | ||
490 : | NASM_FORMAT="macho32" | ||
491 : | fi | ||
492 : | Isibaar | 1768 | PREFIX="-DPREFIX" |
493 : | MARK_FUNCS="" | ||
494 : | ;; | ||
495 : | edgomez | 1535 | esac |
496 : | |||
497 : | AS="$chosen_asm_prog" | ||
498 : | edgomez | 1586 | ASSEMBLY_EXTENSION="asm" |
499 : | Isibaar | 1797 | AFLAGS="-I\$(<D)/ -I../../src/ -f $NASM_FORMAT $PREFIX $MARK_FUNCS" |
500 : | edgomez | 1586 | ASSEMBLY_SOURCES="SRC_${ARCHITECTURE}" |
501 : | if test "$ARCHITECTURE" = "X86_64" ; then | ||
502 : | Isibaar | 1797 | AFLAGS=${AFLAGS}" -DARCH_IS_X86_64" |
503 : | edgomez | 1586 | fi |
504 : | edgomez | 1535 | else |
505 : | AC_MSG_WARN([no correct assembler was found - Compiling generic sources only]) | ||
506 : | ARCHITECTURE="GENERIC" | ||
507 : | edgomez | 824 | fi |
508 : | fi | ||
509 : | |||
510 : | dnl | ||
511 : | dnl PPC | ||
512 : | dnl | ||
513 : | edgomez | 1412 | dnl With the PPC platform we do not use assembly language, we better keep with |
514 : | dnl intrinsic altivec functions and types as they are supported by both Apple | ||
515 : | dnl and GNU gcc with very slight changes to code which can be sumed up by: | ||
516 : | dnl | ||
517 : | dnl Apple: | ||
518 : | Isibaar | 1847 | dnl - compile with the option -arch ppc -faltivec |
519 : | edgomez | 1412 | dnl - define vectors with parentheses vec = (0,0,0,0) |
520 : | dnl GNU | ||
521 : | dnl - compile with -maltivec -mabi=altivec | ||
522 : | dnl - include <altivec.h> before using intrincic | ||
523 : | dnl - define vectors with vec = {0,0,0,0} | ||
524 : | dnl | ||
525 : | dnl * The compile time option will be "injected" into SPECIFIC_CFLAGS variable | ||
526 : | dnl * The need for altivec.h will also be injected into SPECIFIC_CFLAGS through | ||
527 : | dnl a -DHAVE_ALTIVEC_H | ||
528 : | dnl * The vector definition is handled in portab.h thx to | ||
529 : | dnl HAVE_PARENTHESES/BRACES_ALTIVEC_DECL | ||
530 : | dnl | ||
531 : | PPC_ALTIVEC_SOURCES="" | ||
532 : | edgomez | 824 | if test "$ARCHITECTURE" = "PPC" ; then |
533 : | AS="\$(CC)" | ||
534 : | edgomez | 1412 | AFLAGS="" |
535 : | ASSEMBLY_EXTENSION=".s" | ||
536 : | ASSEMBLY_SOURCES="" | ||
537 : | |||
538 : | AC_MSG_CHECKING([for altivec.h]) | ||
539 : | cat > conftest.c << EOF | ||
540 : | #include <altivec.h> | ||
541 : | int main() { return(0); } | ||
542 : | edgomez | 824 | EOF |
543 : | Isibaar | 1847 | if $CC -arch ppc -faltivec -c conftest.c 2>/dev/null 1>/dev/null || \ |
544 : | edgomez | 1412 | $CC -maltivec -mabi=altivec -c conftest.c 2>/dev/null 1>/dev/null ; then |
545 : | edgomez | 824 | AC_MSG_RESULT(yes) |
546 : | edgomez | 1412 | SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_ALTIVEC_H" |
547 : | TEMP_ALTIVEC="-DHAVE_ALTIVEC_H" | ||
548 : | edgomez | 824 | else |
549 : | AC_MSG_RESULT(no) | ||
550 : | edgomez | 1412 | TEMP_ALTIVEC="" |
551 : | edgomez | 824 | fi |
552 : | edgomez | 1412 | |
553 : | AC_MSG_CHECKING([for Altivec compiler support]) | ||
554 : | cat > conftest.c << EOF | ||
555 : | #ifdef HAVE_ALTIVEC_H | ||
556 : | #include <altivec.h> | ||
557 : | #endif | ||
558 : | |||
559 : | int main() | ||
560 : | { | ||
561 : | vector unsigned int vartest2 = (vector unsigned int)(0); | ||
562 : | vector unsigned int vartest3 = (vector unsigned int)(1); | ||
563 : | vartest2 = vec_add(vartest2, vartest3); | ||
564 : | return(0); | ||
565 : | } | ||
566 : | EOF | ||
567 : | Isibaar | 1847 | if $CC $TEMP_ALTIVEC -arch ppc -faltivec -c conftest.c 2>/dev/null 1>/dev/null ; then |
568 : | edgomez | 1412 | AC_MSG_RESULT([yes (Apple)]) |
569 : | Isibaar | 1847 | SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -arch ppc -faltivec -DHAVE_ALTIVEC_PARENTHESES_DECL $TEMP_ALTIVEC" |
570 : | edgomez | 1412 | PPC_ALTIVEC_SOURCES="SRC_PPC_ALTIVEC" |
571 : | else | ||
572 : | cat > conftest.c << EOF | ||
573 : | #ifdef HAVE_ALTIVEC_H | ||
574 : | #include <altivec.h> | ||
575 : | #endif | ||
576 : | |||
577 : | int main() | ||
578 : | { | ||
579 : | vector unsigned int vartest2 = (vector unsigned int){0}; | ||
580 : | vector unsigned int vartest3 = (vector unsigned int){1}; | ||
581 : | vartest2 = vec_add(vartest2, vartest3); | ||
582 : | return(0); | ||
583 : | } | ||
584 : | EOF | ||
585 : | if $CC $TEMP_ALTIVEC -maltivec -mabi=altivec -c conftest.c 2>/dev/null 1>/dev/null ; then | ||
586 : | AC_MSG_RESULT([yes (GNU)]) | ||
587 : | Isibaar | 1875 | SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_ALTIVEC_BRACES_DECL $TEMP_ALTIVEC" |
588 : | edgomez | 1412 | PPC_ALTIVEC_SOURCES="SRC_PPC_ALTIVEC" |
589 : | Isibaar | 1875 | ALTIVEC_CFLAGS="-maltivec -mabi=altivec" |
590 : | edgomez | 1412 | else |
591 : | AC_MSG_RESULT([no (ppc support won't be compiled in)]) | ||
592 : | dnl Only C code can be compiled :-( | ||
593 : | ARCHITECTURE="GENERIC" | ||
594 : | fi | ||
595 : | fi | ||
596 : | |||
597 : | edgomez | 824 | rm -f conftest.* |
598 : | fi | ||
599 : | |||
600 : | dnl | ||
601 : | dnl IA64 | ||
602 : | dnl | ||
603 : | |||
604 : | if test "$ARCHITECTURE" = "IA64" ; then | ||
605 : | AS="\$(CC)" | ||
606 : | AFLAGS="-c" | ||
607 : | ASSEMBLY_EXTENSION="s" | ||
608 : | ASSEMBLY_SOURCES="SRC_IA64" | ||
609 : | edgomez | 830 | |
610 : | case `basename $CC` in | ||
611 : | *ecc*) | ||
612 : | edgomez | 1382 | DCT_IA64_SOURCES="SRC_IA64_IDCT_ECC" |
613 : | edgomez | 830 | |
614 : | dnl If the compiler is ecc, then i don't know its options | ||
615 : | dnl fallback to "no options" | ||
616 : | if test "$force_default_cc_options" = "yes" ; then | ||
617 : | our_cflags_defaults="" | ||
618 : | fi | ||
619 : | ;; | ||
620 : | *) | ||
621 : | edgomez | 1382 | DCT_IA64_SOURCES="SRC_IA64_IDCT_GCC" |
622 : | edgomez | 830 | ;; |
623 : | esac | ||
624 : | |||
625 : | edgomez | 824 | fi |
626 : | |||
627 : | dnl ========================================================================== | ||
628 : | dnl | ||
629 : | dnl Check for header files | ||
630 : | dnl | ||
631 : | dnl ========================================================================== | ||
632 : | |||
633 : | AC_CHECK_HEADERS( | ||
634 : | stdio.h \ | ||
635 : | signal.h \ | ||
636 : | edgomez | 1451 | stdlib.h \ |
637 : | string.h \ | ||
638 : | assert.h \ | ||
639 : | math.h \ | ||
640 : | edgomez | 824 | , , AC_MSG_ERROR(Missing header file)) |
641 : | |||
642 : | dnl ========================================================================== | ||
643 : | dnl | ||
644 : | syskin | 1694 | dnl Check for pthread |
645 : | dnl | ||
646 : | dnl ========================================================================== | ||
647 : | |||
648 : | Isibaar | 1971 | if test x"$pthread" = x"yes" ; then |
649 : | Isibaar | 2039 | case "$target_os" in |
650 : | mingw32*) | ||
651 : | AC_CHECK_HEADER( | ||
652 : | [pthread.h], | ||
653 : | [AC_CHECK_LIB( | ||
654 : | [pthreadGC2], | ||
655 : | [pthread_create], | ||
656 : | [SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD" | ||
657 : | SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthreadGC2"], | ||
658 : | [AC_CHECK_LIB( | ||
659 : | [pthread], | ||
660 : | [pthread_create], | ||
661 : | [SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD" | ||
662 : | SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthread"], | ||
663 : | AC_MSG_WARN(Pthread not supported. No SMP support))])], | ||
664 : | AC_MSG_WARN(Pthread not supported. No SMP support)) | ||
665 : | ;; | ||
666 : | *) | ||
667 : | AC_CHECK_HEADER( | ||
668 : | [pthread.h], | ||
669 : | [AC_CHECK_LIB( | ||
670 : | [pthread], | ||
671 : | [pthread_create], | ||
672 : | [SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS -DHAVE_PTHREAD" | ||
673 : | SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS -lpthread"], | ||
674 : | AC_MSG_WARN(Pthread not supported. No SMP support))], | ||
675 : | AC_MSG_WARN(Pthread not supported. No SMP support)) | ||
676 : | ;; | ||
677 : | esac | ||
678 : | Isibaar | 1971 | else |
679 : | AC_MSG_WARN(Pthread support disabled. No SMP support) | ||
680 : | fi | ||
681 : | syskin | 1694 | |
682 : | dnl ========================================================================== | ||
683 : | dnl | ||
684 : | edgomez | 830 | dnl Now we can set CFLAGS if needed |
685 : | dnl | ||
686 : | dnl ========================================================================== | ||
687 : | |||
688 : | if test "$force_default_cc_options" = "yes" ; then | ||
689 : | CFLAGS="$our_cflags_defaults" | ||
690 : | fi | ||
691 : | |||
692 : | dnl ========================================================================== | ||
693 : | dnl | ||
694 : | edgomez | 1382 | dnl Profiling stuff goes here |
695 : | dnl - adds options to SPECIFIC_CFLAGS, SPECIFIC_LDLAGS | ||
696 : | dnl - removes incompatible options from CFLAGS | ||
697 : | dnl | ||
698 : | dnl ========================================================================== | ||
699 : | |||
700 : | SPECIFIC_LDFLAGS="$SPECIFIC_LDFLAGS $GNU_PROF_LDFLAGS" | ||
701 : | SPECIFIC_CFLAGS="$SPECIFIC_CFLAGS $GNU_PROF_CFLAGS" | ||
702 : | |||
703 : | if test "$enable_gnuprofile" = "yes" ; then | ||
704 : | CFLAGS=`echo $CFLAGS | sed s/'-fomit-frame-pointer'/''/` | ||
705 : | fi | ||
706 : | |||
707 : | dnl ========================================================================== | ||
708 : | Skal | 1615 | dnl Some gcc flags can't be used for gcc >= 3.4.0 |
709 : | dnl ========================================================================== | ||
710 : | |||
711 : | if test "$GCC" = "yes" ; then | ||
712 : | |||
713 : | Isibaar | 2030 | GCC_MAJOR=`$CC -dumpversion | cut -d . -f 1` |
714 : | GCC_MINOR=`$CC -dumpversion | cut -d . -f 2` | ||
715 : | Skal | 1615 | |
716 : | # GCC 4.x | ||
717 : | Skal | 1617 | if test "${GCC_MAJOR}" -gt 3 ; then |
718 : | Skal | 1615 | CFLAGS=`echo $CFLAGS | sed s,"-mcpu","-mtune",g` |
719 : | CFLAGS=`echo $CFLAGS | sed s,'-freduce-all-givs','',g` | ||
720 : | CFLAGS=`echo $CFLAGS | sed s,'-fmove-all-movables','',g` | ||
721 : | CFLAGS=`echo $CFLAGS | sed s,'-fnew-ra','',g` | ||
722 : | CFLAGS=`echo $CFLAGS | sed s,'-fwritable-strings','',g` | ||
723 : | fi | ||
724 : | |||
725 : | # GCC 3.4.x | ||
726 : | Skal | 1617 | if test "${GCC_MAJOR}" -eq 3 && test "${GCC_MINOR}" -gt 3 ; then |
727 : | Skal | 1615 | CFLAGS=`echo $CFLAGS | sed s,"-mcpu","-mtune",g` |
728 : | fi | ||
729 : | fi | ||
730 : | |||
731 : | |||
732 : | dnl ========================================================================== | ||
733 : | edgomez | 1382 | dnl |
734 : | edgomez | 824 | dnl Substitions |
735 : | dnl | ||
736 : | dnl ========================================================================== | ||
737 : | |||
738 : | AC_SUBST(FEATURES) | ||
739 : | AC_SUBST(ARCHITECTURE) | ||
740 : | AC_SUBST(BUS) | ||
741 : | AC_SUBST(ENDIANNESS) | ||
742 : | AC_SUBST(SHARED_EXTENSION) | ||
743 : | AC_SUBST(STATIC_EXTENSION) | ||
744 : | AC_SUBST(OBJECT_EXTENSION) | ||
745 : | AC_SUBST(NASM_FORMAT) | ||
746 : | AC_SUBST(AS) | ||
747 : | AC_SUBST(AFLAGS) | ||
748 : | AC_SUBST(ASSEMBLY_EXTENSION) | ||
749 : | AC_SUBST(GENERIC_SOURCES) | ||
750 : | AC_SUBST(ASSEMBLY_SOURCES) | ||
751 : | AC_SUBST(CC) | ||
752 : | AC_SUBST(CFLAGS) | ||
753 : | Isibaar | 2027 | AC_SUBST(LDFLAGS) |
754 : | edgomez | 830 | AC_SUBST(SPECIFIC_LDFLAGS) |
755 : | AC_SUBST(SPECIFIC_CFLAGS) | ||
756 : | AC_SUBST(DCT_IA64_SOURCES) | ||
757 : | edgomez | 1412 | AC_SUBST(PPC_ALTIVEC_SOURCES) |
758 : | Isibaar | 2042 | AC_SUBST(LN_S) |
759 : | edgomez | 830 | AC_SUBST(RANLIB) |
760 : | Isibaar | 1944 | AC_SUBST(AR) |
761 : | edgomez | 900 | AC_SUBST(API_MAJOR) |
762 : | AC_SUBST(API_MINOR) | ||
763 : | AC_SUBST(STATIC_LIB) | ||
764 : | edgomez | 1382 | AC_SUBST(PRE_SHARED_LIB) |
765 : | Isibaar | 2042 | AC_SUBST(SO_API_MAJOR_LINK) |
766 : | AC_SUBST(SO_LINK) | ||
767 : | edgomez | 900 | AC_SUBST(SHARED_LIB) |
768 : | Isibaar | 2044 | AC_SUBST(IMPORT_LIB) |
769 : | Isibaar | 1875 | AC_SUBST(ALTIVEC_CFLAGS) |
770 : | edgomez | 824 | |
771 : | dnl ========================================================================== | ||
772 : | dnl | ||
773 : | dnl Output files | ||
774 : | dnl | ||
775 : | dnl ========================================================================== | ||
776 : | |||
777 : | AC_CONFIG_FILES(platform.inc) | ||
778 : | |||
779 : | AC_OUTPUT |
No admin address has been configured | ViewVC Help |
Powered by ViewVC 1.0.4 |