Post release version bump to 37.1
[platform/upstream/pixman.git] / configure.ac
1 dnl  Copyright 2005 Red Hat, Inc.
2 dnl 
3 dnl  Permission to use, copy, modify, distribute, and sell this software and its
4 dnl  documentation for any purpose is hereby granted without fee, provided that
5 dnl  the above copyright notice appear in all copies and that both that
6 dnl  copyright notice and this permission notice appear in supporting
7 dnl  documentation, and that the name of Red Hat not be used in
8 dnl  advertising or publicity pertaining to distribution of the software without
9 dnl  specific, written prior permission.  Red Hat makes no
10 dnl  representations about the suitability of this software for any purpose.  It
11 dnl  is provided "as is" without express or implied warranty.
12 dnl 
13 dnl  RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
14 dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
15 dnl  EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
16 dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
17 dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 dnl  PERFORMANCE OF THIS SOFTWARE.
20 dnl
21 dnl Process this file with autoconf to create configure.
22
23 AC_PREREQ([2.57])
24
25 #   Pixman versioning scheme
26 #
27 #   - The version in git has an odd MICRO version number
28 #
29 #   - Released versions, both development and stable, have an
30 #     even MICRO version number
31 #
32 #   - Released development versions have an odd MINOR number
33 #
34 #   - Released stable versions have an even MINOR number
35 #
36 #   - Versions that break ABI must have a new MAJOR number
37 #
38 #   - If you break the ABI, then at least this must be done:
39 #
40 #        - increment MAJOR
41 #
42 #        - In the first development release where you break ABI, find
43 #          all instances of "pixman-n" and change them to pixman-(n+1)
44 #
45 #          This needs to be done at least in 
46 #                    configure.ac
47 #                    all Makefile.am's
48 #                    pixman-n.pc.in
49 #
50 #      This ensures that binary incompatible versions can be installed
51 #      in parallel.  See http://www106.pair.com/rhp/parallel.html for
52 #      more information
53 #
54
55 m4_define([pixman_major], 0)
56 m4_define([pixman_minor], 37)
57 m4_define([pixman_micro], 1)
58
59 m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
60
61 AC_INIT(pixman, pixman_version, [pixman@lists.freedesktop.org], pixman)
62 AM_INIT_AUTOMAKE([foreign dist-bzip2])
63
64 # Suppress verbose compile lines
65 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
66
67 AC_CONFIG_HEADERS(config.h)
68
69 AC_CANONICAL_HOST
70
71 test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS.
72
73 AC_PROG_CC
74 AM_PROG_AS
75 AC_PROG_LIBTOOL
76 AC_CHECK_FUNCS([getisax])
77 AC_C_BIGENDIAN
78 AC_C_INLINE
79
80 dnl PIXMAN_LINK_WITH_ENV(env-setup, program, true-action, false-action)
81 dnl
82 dnl Compiles and links the given program in the environment setup by env-setup
83 dnl and executes true-action on success and false-action on failure.
84 AC_DEFUN([PIXMAN_LINK_WITH_ENV],[dnl
85         save_CFLAGS="$CFLAGS"
86         save_LDFLAGS="$LDFLAGS"
87         save_LIBS="$LIBS"
88         CFLAGS=""
89         LDFLAGS=""
90         LIBS=""
91         $1
92         CFLAGS="$save_CFLAGS $CFLAGS"
93         LDFLAGS="$save_LDFLAGS $LDFLAGS"
94         LIBS="$save_LIBS $LIBS"
95         AC_LINK_IFELSE(
96                 [AC_LANG_SOURCE([$2])],
97                 [pixman_cc_stderr=`test -f conftest.err && cat conftest.err`
98                  pixman_cc_flag=yes],
99                 [pixman_cc_stderr=`test -f conftest.err && cat conftest.err`
100                  pixman_cc_flag=no])
101
102         if test "x$pixman_cc_stderr" != "x"; then
103                 pixman_cc_flag=no
104         fi
105
106         if test "x$pixman_cc_flag" = "xyes"; then
107                 ifelse([$3], , :, [$3])
108         else
109                 ifelse([$4], , :, [$4])
110         fi
111         CFLAGS="$save_CFLAGS"
112         LDFLAGS="$save_LDFLAGS"
113         LIBS="$save_LIBS"
114 ])
115
116 dnl Find a -Werror for catching warnings.
117 WERROR=
118 for w in -Werror -errwarn; do
119     if test "z$WERROR" = "z"; then
120         AC_MSG_CHECKING([whether the compiler supports $w])
121         PIXMAN_LINK_WITH_ENV(
122                 [CFLAGS=$w],
123                 [int main(int c, char **v) { (void)c; (void)v; return 0; }],
124                 [WERROR=$w; yesno=yes], [yesno=no])
125         AC_MSG_RESULT($yesno)
126     fi
127 done
128
129 dnl PIXMAN_CHECK_CFLAG(flag, [program])
130 dnl  Adds flag to CFLAGS if the given program links without warnings or errors.
131 AC_DEFUN([PIXMAN_CHECK_CFLAG], [dnl
132         AC_MSG_CHECKING([whether the compiler supports $1])
133         PIXMAN_LINK_WITH_ENV(
134                 [CFLAGS="$WERROR $1"],
135                 [$2
136                  int main(int c, char **v) { (void)c; (void)v; return 0; }
137                 ],
138                 [_yesno=yes],
139                 [_yesno=no])
140         if test "x$_yesno" = xyes; then
141            CFLAGS="$CFLAGS $1"
142         fi
143         AC_MSG_RESULT($_yesno)
144 ])
145
146 AC_CHECK_SIZEOF(long)
147
148 # Checks for Sun Studio compilers
149 AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
150 AC_CHECK_DECL([__amd64], [AMD64_ABI="yes"], [AMD64_ABI="no"])
151
152 # Default CFLAGS to -O -g rather than just the -g from AC_PROG_CC
153 # if we're using Sun Studio and neither the user nor a config.site
154 # has set CFLAGS.
155 if test $SUNCC = yes &&                 \
156    test "x$test_CFLAGS" = "x" &&        \
157    test "$CFLAGS" = "-g"
158 then
159   CFLAGS="-O -g"
160 fi
161
162
163 # We ignore pixman_major in the version here because the major version should
164 # always be encoded in the actual library name. Ie., the soname is:
165 #
166 #      pixman-$(pixman_major).0.minor.micro
167 #
168 m4_define([lt_current], [pixman_minor])
169 m4_define([lt_revision], [pixman_micro])
170 m4_define([lt_age], [pixman_minor])
171
172 LT_VERSION_INFO="lt_current:lt_revision:lt_age"
173
174 PIXMAN_VERSION_MAJOR=pixman_major()
175 AC_SUBST(PIXMAN_VERSION_MAJOR)
176 PIXMAN_VERSION_MINOR=pixman_minor()
177 AC_SUBST(PIXMAN_VERSION_MINOR)
178 PIXMAN_VERSION_MICRO=pixman_micro()
179 AC_SUBST(PIXMAN_VERSION_MICRO)
180
181 AC_SUBST(LT_VERSION_INFO)
182
183 # Check for dependencies
184
185 PIXMAN_CHECK_CFLAG([-Wall])
186 PIXMAN_CHECK_CFLAG([-Wdeclaration-after-statement])
187 PIXMAN_CHECK_CFLAG([-Wno-unused-local-typedefs])
188 PIXMAN_CHECK_CFLAG([-fno-strict-aliasing])
189
190 dnl =========================================================================
191 dnl OpenMP for the test suite?
192 dnl
193
194 # Check for OpenMP support only when autoconf support that (require autoconf >=2.62)
195 OPENMP_CFLAGS=
196 m4_ifdef([AC_OPENMP], [AC_OPENMP])
197
198 if test "x$enable_openmp" = "xyes" && test "x$ac_cv_prog_c_openmp" = "xunsupported" ; then
199   AC_MSG_WARN([OpenMP support requested but found unsupported])
200 fi
201
202 dnl May not fail to link without -Wall -Werror added
203 dnl So try to link only when openmp is supported
204 dnl ac_cv_prog_c_openmp is not defined when --disable-openmp is used
205 if test "x$ac_cv_prog_c_openmp" != "xunsupported" && test "x$ac_cv_prog_c_openmp" != "x"; then
206   m4_define([openmp_test_program],[dnl
207   #include <stdio.h>
208
209   extern unsigned int lcg_seed;
210   #pragma omp threadprivate(lcg_seed)
211   unsigned int lcg_seed;
212
213   unsigned function(unsigned a, unsigned b)
214   {
215         lcg_seed ^= b;
216         return ((a + b) ^ a ) + lcg_seed;
217   }
218
219   int main(int argc, char **argv)
220   {
221         int i;
222         int n1 = 0, n2 = argc;
223         unsigned checksum = 0;
224         int verbose = argv != NULL;
225         unsigned (*test_function)(unsigned, unsigned);
226         test_function = function;
227         #pragma omp parallel for reduction(+:checksum) default(none) \
228                                         shared(n1, n2, test_function, verbose)
229         for (i = n1; i < n2; i++)
230         {
231                 unsigned crc = test_function (i, 0);
232                 if (verbose)
233                         printf ("%d: %08X\n", i, crc);
234                 checksum += crc;
235         }
236         printf("%u\n", checksum);
237         return 0;
238   }
239   ])
240
241   PIXMAN_LINK_WITH_ENV(
242         [CFLAGS="$OPENMP_CFLAGS" LDFLAGS="$OPENMP_CFLAGS"],
243         [openmp_test_program],
244         [have_openmp=yes],
245         [have_openmp=no])
246   if test "x$have_openmp" = "xyes" ; then
247     AC_DEFINE(USE_OPENMP, 1, [use OpenMP in the test suite])
248   fi
249 fi
250 AC_SUBST(OPENMP_CFLAGS)
251
252 dnl =========================================================================
253 dnl -fvisibility stuff
254
255 PIXMAN_CHECK_CFLAG([-fvisibility=hidden], [dnl
256 #if defined(__GNUC__) && (__GNUC__ >= 4)
257 #ifdef _WIN32
258 #error Have -fvisibility but it is ignored and generates a warning
259 #endif
260 #else
261 #error Need GCC 4.0 for visibility
262 #endif
263 ])
264
265 PIXMAN_CHECK_CFLAG([-xldscope=hidden], [dnl
266 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
267 #else
268 #error Need Sun Studio 8 for visibility
269 #endif
270 ])
271
272 dnl ===========================================================================
273 dnl Check for Loongson Multimedia Instructions
274
275 if test "x$LS_CFLAGS" = "x" ; then
276     LS_CFLAGS="-march=loongson2f"
277 fi
278
279 have_loongson_mmi=no
280 AC_MSG_CHECKING(whether to use Loongson MMI assembler)
281
282 xserver_save_CFLAGS=$CFLAGS
283 CFLAGS=" $LS_CFLAGS $CFLAGS -I$srcdir"
284 AC_LINK_IFELSE([AC_LANG_SOURCE([[
285 #ifndef __mips_loongson_vector_rev
286 #error "Loongson Multimedia Instructions are only available on Loongson"
287 #endif
288 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
289 #error "Need GCC >= 4.4 for Loongson MMI compilation"
290 #endif
291 #include "pixman/loongson-mmintrin.h"
292 int main () {
293     union {
294         __m64 v;
295         char c[8];
296     } a = { .c = {1, 2, 3, 4, 5, 6, 7, 8} };
297     int b = 4;
298     __m64 c = _mm_srli_pi16 (a.v, b);
299     return 0;
300 }]])], have_loongson_mmi=yes)
301 CFLAGS=$xserver_save_CFLAGS
302
303 AC_ARG_ENABLE(loongson-mmi,
304    [AC_HELP_STRING([--disable-loongson-mmi],
305                    [disable Loongson MMI fast paths])],
306    [enable_loongson_mmi=$enableval], [enable_loongson_mmi=auto])
307
308 if test $enable_loongson_mmi = no ; then
309    have_loongson_mmi=disabled
310 fi
311
312 if test $have_loongson_mmi = yes ; then
313    AC_DEFINE(USE_LOONGSON_MMI, 1, [use Loongson Multimedia Instructions])
314 else
315    LS_CFLAGS=
316 fi
317
318 AC_MSG_RESULT($have_loongson_mmi)
319 if test $enable_loongson_mmi = yes && test $have_loongson_mmi = no ; then
320    AC_MSG_ERROR([Loongson MMI not detected])
321 fi
322
323 AM_CONDITIONAL(USE_LOONGSON_MMI, test $have_loongson_mmi = yes)
324
325 dnl ===========================================================================
326 dnl Check for MMX
327
328 if test "x$MMX_CFLAGS" = "x" ; then
329    if test "x$SUNCC" = "xyes"; then
330       # Sun Studio doesn't have an -xarch=mmx flag, so we have to use sse
331       # but if we're building 64-bit, mmx & sse support is on by default and
332       # -xarch=sse throws an error instead
333       if test "$AMD64_ABI" = "no" ; then
334          MMX_CFLAGS="-xarch=sse"
335       fi
336    else
337       MMX_CFLAGS="-mmmx -Winline"
338    fi
339 fi
340
341 have_mmx_intrinsics=no
342 AC_MSG_CHECKING(whether to use MMX intrinsics)
343 xserver_save_CFLAGS=$CFLAGS
344 CFLAGS="$MMX_CFLAGS $CFLAGS"
345 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
346 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
347 #error "Need GCC >= 3.4 for MMX intrinsics"
348 #endif
349 #include <mmintrin.h>
350 #include <stdint.h>
351
352 /* Check support for block expressions */
353 #define _mm_shuffle_pi16(A, N)                                          \
354     ({                                                                  \
355         __m64 ret;                                                      \
356                                                                         \
357         /* Some versions of clang will choke on K */                    \
358         asm ("pshufw %2, %1, %0\n\t"                                    \
359              : "=y" (ret)                                               \
360              : "y" (A), "K" ((const int8_t)N)                           \
361         );                                                              \
362                                                                         \
363         ret;                                                            \
364     })
365
366 int main () {
367     __m64 v = _mm_cvtsi32_si64 (1);
368     __m64 w;
369
370     w = _mm_shuffle_pi16(v, 5);
371
372     /* Some versions of clang will choke on this */
373     asm ("pmulhuw %1, %0\n\t"
374         : "+y" (w)
375         : "y" (v)
376     );
377
378     return _mm_cvtsi64_si32 (v);
379 }]])], have_mmx_intrinsics=yes)
380 CFLAGS=$xserver_save_CFLAGS
381
382 AC_ARG_ENABLE(mmx,
383    [AC_HELP_STRING([--disable-mmx],
384                    [disable x86 MMX fast paths])],
385    [enable_mmx=$enableval], [enable_mmx=auto])
386
387 if test $enable_mmx = no ; then
388    have_mmx_intrinsics=disabled
389 fi
390
391 if test $have_mmx_intrinsics = yes ; then
392    AC_DEFINE(USE_X86_MMX, 1, [use x86 MMX compiler intrinsics])
393 else
394    MMX_CFLAGS=
395 fi
396
397 AC_MSG_RESULT($have_mmx_intrinsics)
398 if test $enable_mmx = yes && test $have_mmx_intrinsics = no ; then
399    AC_MSG_ERROR([x86 MMX intrinsics not detected])
400 fi
401
402 AM_CONDITIONAL(USE_X86_MMX, test $have_mmx_intrinsics = yes)
403
404 dnl ===========================================================================
405 dnl Check for SSE2
406
407 if test "x$SSE2_CFLAGS" = "x" ; then
408    if test "x$SUNCC" = "xyes"; then
409       # SSE2 is enabled by default in the Sun Studio 64-bit environment
410       if test "$AMD64_ABI" = "no" ; then
411          SSE2_CFLAGS="-xarch=sse2"
412       fi
413    else
414       SSE2_CFLAGS="-msse2 -Winline"
415    fi
416 fi
417
418 have_sse2_intrinsics=no
419 AC_MSG_CHECKING(whether to use SSE2 intrinsics)
420 xserver_save_CFLAGS=$CFLAGS
421 CFLAGS="$SSE2_CFLAGS $CFLAGS"
422
423 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
424 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
425 #   if !defined(__amd64__) && !defined(__x86_64__)
426 #      error "Need GCC >= 4.2 for SSE2 intrinsics on x86"
427 #   endif
428 #endif
429 #include <mmintrin.h>
430 #include <xmmintrin.h>
431 #include <emmintrin.h>
432 int param;
433 int main () {
434     __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
435         c = _mm_xor_si128 (a, b);
436     return _mm_cvtsi128_si32(c);
437 }]])], have_sse2_intrinsics=yes)
438 CFLAGS=$xserver_save_CFLAGS
439
440 AC_ARG_ENABLE(sse2,
441    [AC_HELP_STRING([--disable-sse2],
442                    [disable SSE2 fast paths])],
443    [enable_sse2=$enableval], [enable_sse2=auto])
444
445 if test $enable_sse2 = no ; then
446    have_sse2_intrinsics=disabled
447 fi
448
449 if test $have_sse2_intrinsics = yes ; then
450    AC_DEFINE(USE_SSE2, 1, [use SSE2 compiler intrinsics])
451 fi
452
453 AC_MSG_RESULT($have_sse2_intrinsics)
454 if test $enable_sse2 = yes && test $have_sse2_intrinsics = no ; then
455    AC_MSG_ERROR([SSE2 intrinsics not detected])
456 fi
457
458 AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes)
459
460 dnl ===========================================================================
461 dnl Check for SSSE3
462
463 if test "x$SSSE3_CFLAGS" = "x" ; then
464     SSSE3_CFLAGS="-mssse3 -Winline"
465 fi
466
467 have_ssse3_intrinsics=no
468 AC_MSG_CHECKING(whether to use SSSE3 intrinsics)
469 xserver_save_CFLAGS=$CFLAGS
470 CFLAGS="$SSSE3_CFLAGS $CFLAGS"
471
472 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
473 #include <mmintrin.h>
474 #include <xmmintrin.h>
475 #include <emmintrin.h>
476 #include <tmmintrin.h>
477 int param;
478 int main () {
479     __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
480     c = _mm_maddubs_epi16 (a, b);
481     return _mm_cvtsi128_si32(c);
482 }]])], have_ssse3_intrinsics=yes)
483 CFLAGS=$xserver_save_CFLAGS
484
485 AC_ARG_ENABLE(ssse3,
486    [AC_HELP_STRING([--disable-ssse3],
487                    [disable SSSE3 fast paths])],
488    [enable_ssse3=$enableval], [enable_ssse3=auto])
489
490 if test $enable_ssse3 = no ; then
491    have_ssse3_intrinsics=disabled
492 fi
493
494 if test $have_ssse3_intrinsics = yes ; then
495    AC_DEFINE(USE_SSSE3, 1, [use SSSE3 compiler intrinsics])
496 fi
497
498 AC_MSG_RESULT($have_ssse3_intrinsics)
499 if test $enable_ssse3 = yes && test $have_ssse3_intrinsics = no ; then
500    AC_MSG_ERROR([SSSE3 intrinsics not detected])
501 fi
502
503 AM_CONDITIONAL(USE_SSSE3, test $have_ssse3_intrinsics = yes)
504
505 dnl ===========================================================================
506 dnl Other special flags needed when building code using MMX or SSE instructions
507 case $host_os in
508    solaris*)
509       # When building 32-bit binaries, apply a mapfile to ensure that the
510       # binaries aren't flagged as only able to run on MMX+SSE capable CPUs
511       # since they check at runtime before using those instructions.
512       # Not all linkers grok the mapfile format so we check for that first.
513       if test "$AMD64_ABI" = "no" ; then
514          use_hwcap_mapfile=no
515          AC_MSG_CHECKING(whether to use a hardware capability map file)
516          hwcap_save_LDFLAGS="$LDFLAGS"
517          HWCAP_LDFLAGS='-Wl,-M,$(srcdir)/solaris-hwcap.mapfile'
518          LDFLAGS="$LDFLAGS -Wl,-M,pixman/solaris-hwcap.mapfile"
519          AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
520                         use_hwcap_mapfile=yes,
521                         HWCAP_LDFLAGS="")
522          LDFLAGS="$hwcap_save_LDFLAGS"
523          AC_MSG_RESULT($use_hwcap_mapfile)
524       fi
525       if test "x$MMX_LDFLAGS" = "x" ; then
526          MMX_LDFLAGS="$HWCAP_LDFLAGS"
527       fi
528       if test "x$SSE2_LDFLAGS" = "x" ; then
529          SSE2_LDFLAGS="$HWCAP_LDFLAGS"
530       fi
531       ;;
532 esac
533
534 AC_SUBST(LS_CFLAGS)
535 AC_SUBST(IWMMXT_CFLAGS)
536 AC_SUBST(MMX_CFLAGS)
537 AC_SUBST(MMX_LDFLAGS)
538 AC_SUBST(SSE2_CFLAGS)
539 AC_SUBST(SSE2_LDFLAGS)
540 AC_SUBST(SSSE3_CFLAGS)
541
542 dnl ===========================================================================
543 dnl Check for VMX/Altivec
544 if test -n "`$CC -v 2>&1 | grep version | grep Apple`"; then
545     VMX_CFLAGS="-faltivec"
546 else
547     VMX_CFLAGS="-maltivec -mabi=altivec"
548 fi
549
550 have_vmx_intrinsics=no
551 AC_MSG_CHECKING(whether to use VMX/Altivec intrinsics)
552 xserver_save_CFLAGS=$CFLAGS
553 CFLAGS="$VMX_CFLAGS $CFLAGS"
554 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
555 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
556 #error "Need GCC >= 3.4 for sane altivec support"
557 #endif
558 #include <altivec.h>
559 int main () {
560     vector unsigned int v = vec_splat_u32 (1);
561     v = vec_sub (v, v);
562     return 0;
563 }]])], have_vmx_intrinsics=yes)
564 CFLAGS=$xserver_save_CFLAGS
565
566 AC_ARG_ENABLE(vmx,
567    [AC_HELP_STRING([--disable-vmx],
568                    [disable VMX fast paths])],
569    [enable_vmx=$enableval], [enable_vmx=auto])
570
571 if test $enable_vmx = no ; then
572    have_vmx_intrinsics=disabled
573 fi
574
575 if test $have_vmx_intrinsics = yes ; then
576    AC_DEFINE(USE_VMX, 1, [use VMX compiler intrinsics])
577 else
578    VMX_CFLAGS=
579 fi
580
581 AC_MSG_RESULT($have_vmx_intrinsics)
582 if test $enable_vmx = yes && test $have_vmx_intrinsics = no ; then
583    AC_MSG_ERROR([VMX intrinsics not detected])
584 fi
585
586 AC_SUBST(VMX_CFLAGS)
587
588 AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
589
590 dnl ==========================================================================
591 dnl Check if assembler is gas compatible and supports ARM SIMD instructions
592 have_arm_simd=no
593 AC_MSG_CHECKING(whether to use ARM SIMD assembler)
594 xserver_save_CFLAGS=$CFLAGS
595 CFLAGS="-x assembler-with-cpp $CFLAGS"
596 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
597 .text
598 .arch armv6
599 .object_arch armv4
600 .arm
601 .altmacro
602 #ifndef __ARM_EABI__
603 #error EABI is required (to be sure that calling conventions are compatible)
604 #endif
605 pld [r0]
606 uqadd8 r0, r0, r0]])], have_arm_simd=yes)
607 CFLAGS=$xserver_save_CFLAGS
608
609 AC_ARG_ENABLE(arm-simd,
610    [AC_HELP_STRING([--disable-arm-simd],
611                    [disable ARM SIMD fast paths])],
612    [enable_arm_simd=$enableval], [enable_arm_simd=auto])
613
614 if test $enable_arm_simd = no ; then
615    have_arm_simd=disabled
616 fi
617
618 if test $have_arm_simd = yes ; then
619    AC_DEFINE(USE_ARM_SIMD, 1, [use ARM SIMD assembly optimizations])
620 fi
621
622 AM_CONDITIONAL(USE_ARM_SIMD, test $have_arm_simd = yes)
623
624 AC_MSG_RESULT($have_arm_simd)
625 if test $enable_arm_simd = yes && test $have_arm_simd = no ; then
626    AC_MSG_ERROR([ARM SIMD intrinsics not detected])
627 fi
628
629 dnl ==========================================================================
630 dnl Check if assembler is gas compatible and supports NEON instructions
631 have_arm_neon=no
632 AC_MSG_CHECKING(whether to use ARM NEON assembler)
633 xserver_save_CFLAGS=$CFLAGS
634 CFLAGS="-x assembler-with-cpp $CFLAGS"
635 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
636 .text
637 .fpu neon
638 .arch armv7a
639 .object_arch armv4
640 .eabi_attribute 10, 0
641 .arm
642 .altmacro
643 #ifndef __ARM_EABI__
644 #error EABI is required (to be sure that calling conventions are compatible)
645 #endif
646 pld [r0]
647 vmovn.u16 d0, q0]])], have_arm_neon=yes)
648 CFLAGS=$xserver_save_CFLAGS
649
650 AC_ARG_ENABLE(arm-neon,
651    [AC_HELP_STRING([--disable-arm-neon],
652                    [disable ARM NEON fast paths])],
653    [enable_arm_neon=$enableval], [enable_arm_neon=auto])
654
655 if test $enable_arm_neon = no ; then
656    have_arm_neon=disabled
657 fi
658
659 if test $have_arm_neon = yes ; then
660    AC_DEFINE(USE_ARM_NEON, 1, [use ARM NEON assembly optimizations])
661 fi
662
663 AM_CONDITIONAL(USE_ARM_NEON, test $have_arm_neon = yes)
664
665 AC_MSG_RESULT($have_arm_neon)
666 if test $enable_arm_neon = yes && test $have_arm_neon = no ; then
667    AC_MSG_ERROR([ARM NEON intrinsics not detected])
668 fi
669
670 dnl ===========================================================================
671 dnl Check for IWMMXT
672
673 AC_ARG_ENABLE(arm-iwmmxt,
674    [AC_HELP_STRING([--disable-arm-iwmmxt],
675                    [disable ARM IWMMXT fast paths])],
676    [enable_iwmmxt=$enableval], [enable_iwmmxt=auto])
677
678 AC_ARG_ENABLE(arm-iwmmxt2,
679    [AC_HELP_STRING([--disable-arm-iwmmxt2],
680                    [build ARM IWMMXT fast paths with -march=iwmmxt instead of -march=iwmmxt2])],
681    [enable_iwmmxt2=$enableval], [enable_iwmmxt2=auto])
682
683 if test "x$IWMMXT_CFLAGS" = "x" ; then
684    IWMMXT_CFLAGS="-flax-vector-conversions -Winline -march=iwmmxt"
685    if test $enable_iwmmxt2 != no ; then
686       IWMMXT_CFLAGS="${IWMMXT_CFLAGS}2"
687    fi
688 fi
689
690 have_iwmmxt_intrinsics=no
691 AC_MSG_CHECKING(whether to use ARM IWMMXT intrinsics)
692 xserver_save_CFLAGS=$CFLAGS
693 CFLAGS="$CFLAGS $IWMMXT_CFLAGS"
694 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
695 #ifndef __arm__
696 #error "IWMMXT is only available on ARM"
697 #endif
698 #ifndef __IWMMXT__
699 #error "IWMMXT not enabled (with -march=iwmmxt)"
700 #endif
701 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
702 #error "Need GCC >= 4.8 for IWMMXT intrinsics"
703 #endif
704 #include <mmintrin.h>
705 int main () {
706         union {
707                 __m64 v;
708                 char c[8];
709         } a = { .c = {1, 2, 3, 4, 5, 6, 7, 8} };
710         int b = 4;
711         __m64 c = _mm_srli_si64 (a.v, b);
712 }]])], have_iwmmxt_intrinsics=yes)
713 CFLAGS=$xserver_save_CFLAGS
714
715 if test $enable_iwmmxt = no ; then
716    have_iwmmxt_intrinsics=disabled
717 fi
718
719 if test $have_iwmmxt_intrinsics = yes ; then
720    AC_DEFINE(USE_ARM_IWMMXT, 1, [use ARM IWMMXT compiler intrinsics])
721 else
722    IWMMXT_CFLAGS=
723 fi
724
725 AC_MSG_RESULT($have_iwmmxt_intrinsics)
726 if test $enable_iwmmxt = yes && test $have_iwmmxt_intrinsics = no ; then
727    AC_MSG_ERROR([IWMMXT intrinsics not detected])
728 fi
729
730 AM_CONDITIONAL(USE_ARM_IWMMXT, test $have_iwmmxt_intrinsics = yes)
731
732 dnl ==========================================================================
733 dnl Check if assembler is gas compatible and supports MIPS DSPr2 instructions
734
735 have_mips_dspr2=no
736 AC_MSG_CHECKING(whether to use MIPS DSPr2 assembler)
737 xserver_save_CFLAGS=$CFLAGS
738 CFLAGS="-mdspr2 $CFLAGS"
739
740 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
741 #if !(defined(__mips__) &&  __mips_isa_rev >= 2)
742 #error MIPS DSPr2 is currently only available on MIPS32r2 platforms.
743 #endif
744 int
745 main ()
746 {
747     int c = 0, a = 0, b = 0;
748     __asm__ __volatile__ (
749         "precr.qb.ph %[c], %[a], %[b]          \n\t"
750         : [c] "=r" (c)
751         : [a] "r" (a), [b] "r" (b)
752     );
753     return c;
754 }]])], have_mips_dspr2=yes)
755 CFLAGS=$xserver_save_CFLAGS
756
757 AC_ARG_ENABLE(mips-dspr2,
758    [AC_HELP_STRING([--disable-mips-dspr2],
759                    [disable MIPS DSPr2 fast paths])],
760    [enable_mips_dspr2=$enableval], [enable_mips_dspr2=auto])
761
762 if test $enable_mips_dspr2 = no ; then
763    have_mips_dspr2=disabled
764 fi
765
766 if test $have_mips_dspr2 = yes ; then
767    AC_DEFINE(USE_MIPS_DSPR2, 1, [use MIPS DSPr2 assembly optimizations])
768 fi
769
770 AM_CONDITIONAL(USE_MIPS_DSPR2, test $have_mips_dspr2 = yes)
771
772 AC_MSG_RESULT($have_mips_dspr2)
773 if test $enable_mips_dspr2 = yes && test $have_mips_dspr2 = no ; then
774    AC_MSG_ERROR([MIPS DSPr2 instructions not detected])
775 fi
776
777 dnl =========================================================================================
778 dnl Check for GNU-style inline assembly support
779
780 have_gcc_inline_asm=no
781 AC_MSG_CHECKING(whether to use GNU-style inline assembler)
782 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
783 int main () {
784     /* Most modern architectures have a NOP instruction, so this is a fairly generic test. */
785         asm volatile ( "\tnop\n" : : : "cc", "memory" );
786     return 0;
787 }]])], have_gcc_inline_asm=yes)
788
789 AC_ARG_ENABLE(gcc-inline-asm,
790    [AC_HELP_STRING([--disable-gcc-inline-asm],
791                    [disable GNU-style inline assembler])],
792    [enable_gcc_inline_asm=$enableval], [enable_gcc_inline_asm=auto])
793
794 if test $enable_gcc_inline_asm = no ; then
795    have_gcc_inline_asm=disabled
796 fi
797
798 if test $have_gcc_inline_asm = yes ; then
799    AC_DEFINE(USE_GCC_INLINE_ASM, 1, [use GNU-style inline assembler])
800 fi
801
802 AC_MSG_RESULT($have_gcc_inline_asm)
803 if test $enable_gcc_inline_asm = yes && test $have_gcc_inline_asm = no ; then
804    AC_MSG_ERROR([GNU-style inline assembler not detected])
805 fi
806
807 AM_CONDITIONAL(USE_GCC_INLINE_ASM, test $have_gcc_inline_asm = yes)
808
809 dnl ==============================================
810 dnl Static test programs
811
812 AC_ARG_ENABLE(static-testprogs,
813    [AC_HELP_STRING([--enable-static-testprogs],
814                    [build test programs as static binaries [default=no]])],
815    [enable_static_testprogs=$enableval], [enable_static_testprogs=no])
816
817 TESTPROGS_EXTRA_LDFLAGS=
818 if test "x$enable_static_testprogs" = "xyes" ; then
819    TESTPROGS_EXTRA_LDFLAGS="-all-static"
820 fi
821 AC_SUBST(TESTPROGS_EXTRA_LDFLAGS)
822
823 dnl ==============================================
824 dnl Timers
825
826 AC_ARG_ENABLE(timers,
827    [AC_HELP_STRING([--enable-timers],
828                    [enable TIMER_BEGIN and TIMER_END macros [default=no]])],
829    [enable_timers=$enableval], [enable_timers=no])
830
831 if test $enable_timers = yes ; then 
832    AC_DEFINE(PIXMAN_TIMERS, 1, [enable TIMER_BEGIN/TIMER_END macros])
833 fi
834 AC_SUBST(PIXMAN_TIMERS)
835
836 dnl ===================================
837 dnl gnuplot
838
839 AC_ARG_ENABLE(gnuplot,
840    [AC_HELP_STRING([--enable-gnuplot],
841                    [enable output of filters that can be piped to gnuplot [default=no]])],
842    [enable_gnuplot=$enableval], [enable_gnuplot=no])
843
844 if test $enable_gnuplot = yes ; then
845    AC_DEFINE(PIXMAN_GNUPLOT, 1, [enable output that can be piped to gnuplot])
846 fi
847 AC_SUBST(PIXMAN_GNUPLOT)
848
849 dnl ===================================
850 dnl GTK+
851
852 AC_ARG_ENABLE(gtk,
853    [AC_HELP_STRING([--enable-gtk],
854                    [enable tests using GTK+ [default=auto]])],
855    [enable_gtk=$enableval], [enable_gtk=auto])
856
857 PKG_PROG_PKG_CONFIG
858
859 if test $enable_gtk = yes ; then
860    AC_CHECK_LIB([pixman-1], [pixman_version_string])
861    PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.16 pixman-1])
862 fi
863
864 if test $enable_gtk = auto ; then
865    AC_CHECK_LIB([pixman-1], [pixman_version_string], [enable_gtk=auto], [enable_gtk=no])
866 fi
867
868 if test $enable_gtk = auto ; then
869    PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.16 pixman-1], [enable_gtk=yes], [enable_gtk=no])
870 fi
871
872 AM_CONDITIONAL(HAVE_GTK, [test "x$enable_gtk" = xyes])
873
874 AC_SUBST(GTK_CFLAGS)
875 AC_SUBST(GTK_LIBS)
876
877 dnl =====================================
878 dnl posix_memalign, sigaction, alarm, gettimeofday
879
880 AC_CHECK_FUNC(posix_memalign, have_posix_memalign=yes, have_posix_memalign=no)
881 if test x$have_posix_memalign = xyes; then
882    AC_DEFINE(HAVE_POSIX_MEMALIGN, 1, [Whether we have posix_memalign()])
883 fi
884
885 AC_CHECK_FUNC(sigaction, have_sigaction=yes, have_sigaction=no)
886 if test x$have_sigaction = xyes; then
887    AC_DEFINE(HAVE_SIGACTION, 1, [Whether we have sigaction()])
888 fi
889
890 AC_CHECK_FUNC(alarm, have_alarm=yes, have_alarm=no)
891 if test x$have_alarm = xyes; then
892    AC_DEFINE(HAVE_ALARM, 1, [Whether we have alarm()])
893 fi
894
895 AC_CHECK_HEADER([sys/mman.h],
896    [AC_DEFINE(HAVE_SYS_MMAN_H, [1], [Define to 1 if we have <sys/mman.h>])])
897
898 AC_CHECK_FUNC(mmap, have_mmap=yes, have_mmap=no)
899 if test x$have_mmap = xyes; then
900    AC_DEFINE(HAVE_MMAP, 1, [Whether we have mmap()])
901 fi
902
903 AC_CHECK_FUNC(mprotect, have_mprotect=yes, have_mprotect=no)
904 if test x$have_mprotect = xyes; then
905    AC_DEFINE(HAVE_MPROTECT, 1, [Whether we have mprotect()])
906 fi
907
908 AC_CHECK_FUNC(getpagesize, have_getpagesize=yes, have_getpagesize=no)
909 if test x$have_getpagesize = xyes; then
910    AC_DEFINE(HAVE_GETPAGESIZE, 1, [Whether we have getpagesize()])
911 fi
912
913 AC_CHECK_HEADER([fenv.h],
914    [AC_DEFINE(HAVE_FENV_H, [1], [Define to 1 if we have <fenv.h>])])
915
916 AC_CHECK_LIB(m, feenableexcept, have_feenableexcept=yes, have_feenableexcept=no)
917 if test x$have_feenableexcept = xyes; then
918    AC_DEFINE(HAVE_FEENABLEEXCEPT, 1, [Whether we have feenableexcept()])
919 fi
920
921 AC_CHECK_DECL([FE_DIVBYZERO],
922         [AC_DEFINE(HAVE_FEDIVBYZERO, 1, [Whether we have FE_DIVBYZERO])],
923         [],
924         [[#include <fenv.h>]])
925
926 AC_CHECK_FUNC(gettimeofday, have_gettimeofday=yes, have_gettimeofday=no)
927 AC_CHECK_HEADER(sys/time.h, have_sys_time_h=yes, have_sys_time_h=no)
928 if test x$have_gettimeofday = xyes && test x$have_sys_time_h = xyes; then
929    AC_DEFINE(HAVE_GETTIMEOFDAY, 1, [Whether we have gettimeofday()])
930 fi
931
932 dnl =====================================
933 dnl Check for missing sqrtf() as, e.g., for Solaris 9
934
935 AC_SEARCH_LIBS([sqrtf], [m], [],
936                [AC_DEFINE([sqrtf], [sqrt],
937                           [Define to sqrt if you do not have the `sqrtf' function.])])
938
939 dnl =====================================
940 dnl Thread local storage
941
942 AC_MSG_CHECKING(for thread local storage (TLS) support)
943 AC_CACHE_VAL(ac_cv_tls, [
944     ac_cv_tls=none
945     keywords="__thread __declspec(thread)"
946     for kw in $keywords ; do
947         AC_TRY_COMPILE([
948 #if defined(__MINGW32__) && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
949 #error This MinGW version has broken __thread support
950 #endif
951 #ifdef __OpenBSD__
952 #error OpenBSD has broken __thread support
953 #endif
954
955 int $kw test;], [], [ac_cv_tls=$kw; break])
956     done
957 ])
958 AC_MSG_RESULT($ac_cv_tls)
959
960 if test "$ac_cv_tls" != "none"; then
961     AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [The compiler supported TLS storage class])
962 fi
963
964 dnl
965 dnl posix tls
966 dnl
967
968 m4_define([pthread_test_program],AC_LANG_SOURCE([[dnl
969 #include <stdlib.h>
970 #include <pthread.h>
971
972 static pthread_once_t once_control = PTHREAD_ONCE_INIT;
973 static pthread_key_t key;
974
975 static void
976 make_key (void)
977 {
978     pthread_key_create (&key, NULL);
979 }
980
981 int
982 main ()
983 {
984     void *value = NULL;
985
986     if (pthread_once (&once_control, make_key) != 0)
987     {
988         value = NULL;
989     }
990     else
991     {
992         value = pthread_getspecific (key);
993         if (!value)
994         {
995             value = malloc (100);
996             pthread_setspecific (key, value);
997         }
998     }
999     return 0;
1000 }
1001 ]]))
1002
1003 AC_DEFUN([PIXMAN_CHECK_PTHREAD],[dnl
1004     if test "z$support_for_pthreads" != "zyes"; then
1005         PIXMAN_LINK_WITH_ENV(
1006                 [$1], [pthread_test_program],
1007                 [PTHREAD_CFLAGS="$CFLAGS"
1008                  PTHREAD_LIBS="$LIBS"
1009                  PTHREAD_LDFLAGS="$LDFLAGS"
1010                  support_for_pthreads=yes])
1011     fi
1012 ])
1013
1014 support_for_pthreads=no
1015
1016 AC_MSG_CHECKING(for pthreads)
1017
1018 PIXMAN_CHECK_PTHREAD([CFLAGS="-pthread"; LDFLAGS="-pthread"])
1019 PIXMAN_CHECK_PTHREAD([CFLAGS="-D_REENTRANT"; LIBS="-lpthread"])
1020 PIXMAN_CHECK_PTHREAD([CFLAGS="-D_REENTRANT"; LDFLAGS="-lroot"])
1021     
1022 if test $support_for_pthreads = yes; then
1023     AC_DEFINE([HAVE_PTHREADS], [], [Whether pthreads is supported])
1024     if test $ac_cv_tls = none ; then
1025         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
1026     fi
1027 fi
1028
1029 AC_MSG_RESULT($support_for_pthreads)
1030
1031 AC_SUBST(TOOLCHAIN_SUPPORTS__THREAD)
1032 AC_SUBST(HAVE_PTHREADS)
1033 AC_SUBST(PTHREAD_LDFLAGS)
1034 AC_SUBST(PTHREAD_LIBS)
1035 AC_SUBST(PTHREAD_CFLAGS)
1036
1037 dnl =====================================
1038 dnl __attribute__((constructor))
1039
1040 support_for_attribute_constructor=no
1041
1042 AC_MSG_CHECKING(for __attribute__((constructor)))
1043 AC_LINK_IFELSE([AC_LANG_SOURCE([[
1044 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
1045 /* attribute 'constructor' is supported since gcc 2.7, but some compilers
1046  * may only pretend to be gcc, so let's try to actually use it
1047  */
1048 static int x = 1;
1049 static void __attribute__((constructor)) constructor_function () { x = 0; }
1050 int main (void) { return x; }
1051 #else
1052 #error not gcc or gcc version is older than 2.7
1053 #endif
1054 ]])], support_for_attribute_constructor=yes)
1055
1056 if test x$support_for_attribute_constructor = xyes; then
1057    AC_DEFINE([TOOLCHAIN_SUPPORTS_ATTRIBUTE_CONSTRUCTOR],
1058              [],[Whether the tool chain supports __attribute__((constructor))])
1059 fi
1060
1061 AC_MSG_RESULT($support_for_attribute_constructor)
1062 AC_SUBST(TOOLCHAIN_SUPPORTS_ATTRIBUTE_CONSTRUCTOR)
1063
1064 dnl =====================================
1065 dnl __float128
1066
1067 support_for_float128=no
1068
1069 AC_MSG_CHECKING(for __float128)
1070 AC_LINK_IFELSE([AC_LANG_SOURCE([[
1071 __float128 a = 1.0Q, b = 2.0Q; int main (void) { return a + b; }
1072 ]])], support_for_float128=yes)
1073
1074 if test x$support_for_float128 = xyes; then
1075    AC_DEFINE([HAVE_FLOAT128], [], [Whether the tool chain supports __float128])
1076 fi
1077
1078 AC_MSG_RESULT($support_for_float128)
1079
1080 dnl =====================================
1081 dnl __builtin_clz
1082
1083 support_for_builtin_clz=no
1084
1085 AC_MSG_CHECKING(for __builtin_clz)
1086 AC_LINK_IFELSE([AC_LANG_SOURCE([[
1087 unsigned int x = 11; int main (void) { return __builtin_clz(x); }
1088 ]])], support_for_builtin_clz=yes)
1089
1090 if test x$support_for_builtin_clz = xyes; then
1091    AC_DEFINE([HAVE_BUILTIN_CLZ], [], [Whether the compiler supports __builtin_clz])
1092 fi
1093
1094 AC_MSG_RESULT($support_for_builtin_clz)
1095
1096 dnl =====================================
1097 dnl GCC vector extensions
1098
1099 support_for_gcc_vector_extensions=no
1100
1101 AC_MSG_CHECKING(for GCC vector extensions)
1102 AC_LINK_IFELSE([AC_LANG_SOURCE([[
1103 unsigned int __attribute__ ((vector_size(16))) e, a, b;
1104 int main (void) { e = a - ((b << 27) + (b >> (32 - 27))) + 1; return e[0]; }
1105 ]])], support_for_gcc_vector_extensions=yes)
1106
1107 if test x$support_for_gcc_vector_extensions = xyes; then
1108    AC_DEFINE([HAVE_GCC_VECTOR_EXTENSIONS], [],
1109              [Whether the compiler supports GCC vector extensions])
1110 fi
1111
1112 AC_MSG_RESULT($support_for_gcc_vector_extensions)
1113
1114 dnl ==================
1115 dnl libpng
1116
1117 AC_ARG_ENABLE(libpng, AS_HELP_STRING([--enable-libpng], [Build support for libpng (default: auto)]),
1118                       [have_libpng=$enableval], [have_libpng=auto])
1119
1120 case x$have_libpng in
1121         xyes) PKG_CHECK_MODULES(PNG, [libpng]) ;;
1122         xno) ;;
1123         *) PKG_CHECK_MODULES(PNG, [libpng], have_libpng=yes, have_libpng=no) ;;
1124 esac
1125
1126 if test x$have_libpng = xyes; then
1127     AC_DEFINE([HAVE_LIBPNG], [1], [Whether we have libpng])
1128 fi
1129
1130 AC_SUBST(HAVE_LIBPNG)
1131
1132 AC_OUTPUT([pixman-1.pc
1133            pixman-1-uninstalled.pc
1134            Makefile
1135            pixman/Makefile
1136            pixman/pixman-version.h
1137            demos/Makefile
1138            test/Makefile])
1139
1140 m4_if(m4_eval(pixman_minor % 2), [1], [
1141    echo
1142    echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
1143    echo
1144    echo "      Thanks for testing this development snapshot of pixman. Please"
1145    echo "      report any problems you find, either by sending email to "
1146    echo
1147    echo "          pixman@lists.freedesktop.org"
1148    echo
1149    echo "      or by filing a bug at "
1150    echo
1151    echo "          https://bugs.freedesktop.org/enter_bug.cgi?product=pixman "
1152    echo
1153    echo "      If you are looking for a stable release of pixman, please note "
1154    echo "      that stable releases have _even_ minor version numbers. Ie., "
1155    echo "      pixman-0.]m4_eval(pixman_minor & ~1)[.x are stable releases, whereas pixman-$PIXMAN_VERSION_MAJOR.$PIXMAN_VERSION_MINOR.$PIXMAN_VERSION_MICRO is a "
1156    echo "      development snapshot that may contain bugs and experimental "
1157    echo "      features. "
1158    echo 
1159    echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
1160    echo
1161 ])