This is not a GNU project, so declare it foreign.
[profile/ivi/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 even MICRO 
30 #     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], 17)
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, "sandmann@daimi.au.dk", 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 AM_CONFIG_HEADER(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 AC_PROG_LIBTOOL
75 AC_CHECK_FUNCS([getisax])
76 AC_C_BIGENDIAN
77 AC_C_INLINE
78
79 # Checks for Sun Studio compilers
80 AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
81 AC_CHECK_DECL([__amd64], [AMD64_ABI="yes"], [AMD64_ABI="no"])
82
83 # Default CFLAGS to -O -g rather than just the -g from AC_PROG_CC
84 # if we're using Sun Studio and neither the user nor a config.site
85 # has set CFLAGS.
86 if test $SUNCC = yes &&                 \
87    test "$test_CFLAGS" == "" &&         \
88    test "$CFLAGS" = "-g"
89 then
90   CFLAGS="-O -g"
91 fi
92
93 CFLAGS="$CFLAGS -DPIXMAN_DISABLE_DEPRECATED -DPIXMAN_INTERNAL_API"
94
95
96 # We ignore pixman_major in the version here because the major version should
97 # always be encoded in the actual library name. Ie., the soname is:
98 #
99 #      pixman-$(pixman_major).0.minor.micro
100 #
101 m4_define([lt_current], [pixman_minor])
102 m4_define([lt_revision], [pixman_micro])
103 m4_define([lt_age], [pixman_minor])
104
105 LT_VERSION_INFO="lt_current:lt_revision:lt_age"
106
107 PIXMAN_VERSION_MAJOR=pixman_major()
108 AC_SUBST(PIXMAN_VERSION_MAJOR)
109 PIXMAN_VERSION_MINOR=pixman_minor()
110 AC_SUBST(PIXMAN_VERSION_MINOR)
111 PIXMAN_VERSION_MICRO=pixman_micro()
112 AC_SUBST(PIXMAN_VERSION_MICRO)
113
114 AC_SUBST(LT_VERSION_INFO)
115
116 # Check for dependencies
117 #PKG_CHECK_MODULES(DEP, x11)
118
119 changequote(,)dnl
120 if test "x$GCC" = "xyes"; then
121
122   case " $CFLAGS " in
123   *[\ \ ]-Wall[\ \      ]*) ;;
124   *) CFLAGS="$CFLAGS -Wall" ;;
125   esac 
126
127   case " $CFLAGS " in
128   *[\ \ ]-fno-strict-aliasing[\ \       ]*) ;;
129   *) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
130   esac
131
132 fi changequote([,])dnl
133
134 AC_PATH_PROG(PERL, perl, no)
135 if test "x$PERL" = xno; then
136     AC_MSG_ERROR([Perl is required to build pixman.])
137 fi
138 AC_SUBST(PERL)
139
140 dnl =========================================================================
141 dnl -fvisibility stuff
142
143 have_gcc4=no
144 AC_MSG_CHECKING(for -fvisibility)
145 AC_COMPILE_IFELSE([
146 #if defined(__GNUC__) && (__GNUC__ >= 4)
147 #else
148 error Need GCC 4.0 for visibility
149 #endif
150 int main () { return 0; } 
151 ], have_gcc4=yes)
152
153 if test "x$have_gcc4" = "xyes"; then
154    CFLAGS="$CFLAGS -fvisibility=hidden"
155 fi
156 AC_MSG_RESULT($have_gcc4)
157
158 have_sunstudio8=no
159 AC_MSG_CHECKING([for -xldscope (Sun compilers)])
160 AC_COMPILE_IFELSE([
161 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
162 #else
163 error Need Sun Studio 8 for visibility
164 #endif
165 int main () { return 0; } 
166 ], have_sunstudio8=yes)
167
168 if test "x$have_sunstudio8" = "xyes"; then
169    CFLAGS="$CFLAGS -xldscope=hidden"
170 fi
171 AC_MSG_RESULT($have_sunstudio8)
172
173 dnl ===========================================================================
174 dnl Check for MMX
175
176 if test "x$MMX_CFLAGS" = "x" ; then
177    if test "x$SUNCC" = "xyes"; then
178       # Sun Studio doesn't have an -xarch=mmx flag, so we have to use sse
179       # but if we're building 64-bit, mmx & sse support is on by default and
180       # -xarch=sse throws an error instead
181       if test "$AMD64_ABI" = "no" ; then
182          MMX_CFLAGS="-xarch=sse"
183       fi
184    else
185       MMX_CFLAGS="-mmmx -Winline"
186    fi
187 fi
188
189 have_mmx_intrinsics=no
190 AC_MSG_CHECKING(whether to use MMX intrinsics)
191 xserver_save_CFLAGS=$CFLAGS
192 CFLAGS="$MMX_CFLAGS $CFLAGS"
193 AC_COMPILE_IFELSE([
194 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
195 error "Need GCC >= 3.4 for MMX intrinsics"
196 #endif
197 #include <mmintrin.h>
198 int main () {
199     __m64 v = _mm_cvtsi32_si64 (1);
200     return _mm_cvtsi64_si32 (v);
201 }], have_mmx_intrinsics=yes)
202 CFLAGS=$xserver_save_CFLAGS
203
204 AC_ARG_ENABLE(mmx,
205    [AC_HELP_STRING([--disable-mmx],
206                    [disable MMX fast paths])],
207    [enable_mmx=$enableval], [enable_mmx=auto])
208
209 if test $enable_mmx = no ; then
210    have_mmx_intrinsics=disabled
211 fi
212
213 if test $have_mmx_intrinsics = yes ; then
214    AC_DEFINE(USE_MMX, 1, [use MMX compiler intrinsics])
215 else
216    MMX_CFLAGS=
217 fi
218
219 AC_MSG_RESULT($have_mmx_intrinsics)
220 if test $enable_mmx = yes && test $have_mmx_intrinsics = no ; then
221    AC_MSG_ERROR([MMX intrinsics not detected])
222 fi
223
224 AM_CONDITIONAL(USE_MMX, test $have_mmx_intrinsics = yes)
225
226 dnl ===========================================================================
227 dnl Check for SSE2
228
229 if test "x$SSE2_CFLAGS" = "x" ; then
230    if test "x$SUNCC" = "xyes"; then
231       # SSE2 is enabled by default in the Sun Studio 64-bit environment
232       if test "$AMD64_ABI" = "no" ; then
233          SSE2_CFLAGS="-xarch=sse2"
234       fi
235    else
236       SSE2_CFLAGS="-mmmx -msse2 -Winline"
237    fi
238 fi
239
240 have_sse2_intrinsics=no
241 AC_MSG_CHECKING(whether to use SSE2 intrinsics)
242 xserver_save_CFLAGS=$CFLAGS
243 CFLAGS="$SSE2_CFLAGS $CFLAGS"
244
245 AC_COMPILE_IFELSE([
246 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
247 #   if !defined(__amd64__) && !defined(__x86_64__)
248 #      error "Need GCC >= 4.2 for SSE2 intrinsics on x86"
249 #   endif
250 #endif
251 #include <mmintrin.h>
252 #include <xmmintrin.h>
253 #include <emmintrin.h>
254 int main () {
255     __m128i a, b, c;
256         c = _mm_xor_si128 (a, b);
257     return 0;
258 }], have_sse2_intrinsics=yes)
259 CFLAGS=$xserver_save_CFLAGS
260
261 AC_ARG_ENABLE(sse2,
262    [AC_HELP_STRING([--disable-sse2],
263                    [disable SSE2 fast paths])],
264    [enable_sse2=$enableval], [enable_sse2=auto])
265
266 if test $enable_sse2 = no ; then
267    have_sse2_intrinsics=disabled
268 fi
269
270 if test $have_sse2_intrinsics = yes ; then
271    AC_DEFINE(USE_SSE2, 1, [use SSE2 compiler intrinsics])
272 fi
273
274 AC_MSG_RESULT($have_sse2_intrinsics)
275 if test $enable_sse2 = yes && test $have_sse2_intrinsics = no ; then
276    AC_MSG_ERROR([SSE2 intrinsics not detected])
277 fi
278
279 AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes)
280
281 dnl ===========================================================================
282 dnl Other special flags needed when building code using MMX or SSE instructions
283 case $host_os in
284    solaris*)
285       # When building 32-bit binaries, apply a mapfile to ensure that the
286       # binaries aren't flagged as only able to run on MMX+SSE capable CPUs
287       # since they check at runtime before using those instructions.
288       # Not all linkers grok the mapfile format so we check for that first.
289       if test "$AMD64_ABI" = "no" ; then
290          use_hwcap_mapfile=no
291          AC_MSG_CHECKING(whether to use a hardware capability map file)
292          hwcap_save_LDFLAGS="$LDFLAGS"
293          HWCAP_LDFLAGS='-Wl,-M,$(srcdir)/solaris-hwcap.mapfile'
294          LDFLAGS="$LDFLAGS -Wl,-M,pixman/solaris-hwcap.mapfile"
295          AC_LINK_IFELSE([int main() { return 0; }],
296                         use_hwcap_mapfile=yes,
297                         HWCAP_LDFLAGS="")
298          LDFLAGS="$hwcap_save_LDFLAGS"
299          AC_MSG_RESULT($use_hwcap_mapfile)
300       fi
301       if test "x$MMX_LDFLAGS" = "x" ; then
302          MMX_LDFLAGS="$HWCAP_LDFLAGS"
303       fi
304       if test "x$SSE2_LDFLAGS" = "x" ; then
305          SSE2_LDFLAGS="$HWCAP_LDFLAGS"
306       fi
307       ;;
308 esac
309
310 AC_SUBST(MMX_CFLAGS)
311 AC_SUBST(MMX_LDFLAGS)
312 AC_SUBST(SSE2_CFLAGS)
313 AC_SUBST(SSE2_LDFLAGS)
314
315 dnl ===========================================================================
316 dnl Check for VMX/Altivec
317 if test -n "`$CC -v 2>&1 | grep version | grep Apple`"; then
318     VMX_CFLAGS="-faltivec"
319 else
320     VMX_CFLAGS="-maltivec -mabi=altivec"
321 fi
322
323 have_vmx_intrinsics=no
324 AC_MSG_CHECKING(whether to use VMX/Altivec intrinsics)
325 xserver_save_CFLAGS=$CFLAGS
326 CFLAGS="$VMX_CFLAGS $CFLAGS"
327 AC_COMPILE_IFELSE([
328 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
329 error "Need GCC >= 3.4 for sane altivec support"
330 #endif
331 #include <altivec.h>
332 int main () {
333     vector unsigned int v = vec_splat_u32 (1);
334     v = vec_sub (v, v);
335     return 0;
336 }], have_vmx_intrinsics=yes)
337 CFLAGS=$xserver_save_CFLAGS
338
339 AC_ARG_ENABLE(vmx,
340    [AC_HELP_STRING([--disable-vmx],
341                    [disable VMX fast paths])],
342    [enable_vmx=$enableval], [enable_vmx=auto])
343
344 if test $enable_vmx = no ; then
345    have_vmx_intrinsics=disabled
346 fi
347
348 if test $have_vmx_intrinsics = yes ; then
349    AC_DEFINE(USE_VMX, 1, [use VMX compiler intrinsics])
350 else
351    VMX_CFLAGS=
352 fi
353
354 AC_MSG_RESULT($have_vmx_intrinsics)
355 if test $enable_vmx = yes && test $have_vmx_intrinsics = no ; then
356    AC_MSG_ERROR([VMX intrinsics not detected])
357 fi
358
359 AC_SUBST(VMX_CFLAGS)
360
361 AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
362
363 dnl ===========================================================================
364 dnl Check for ARM SIMD instructions
365 ARM_SIMD_CFLAGS="-mcpu=arm1136j-s"
366
367 have_arm_simd=no
368 AC_MSG_CHECKING(whether to use ARM SIMD assembler)
369 xserver_save_CFLAGS=$CFLAGS
370 CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS"
371 AC_COMPILE_IFELSE([
372 int main () {
373     asm("uqadd8 r1, r1, r2");
374     return 0;
375 }], have_arm_simd=yes)
376 CFLAGS=$xserver_save_CFLAGS
377
378 AC_ARG_ENABLE(arm-simd,
379    [AC_HELP_STRING([--disable-arm-simd],
380                    [disable ARM SIMD fast paths])],
381    [enable_arm_simd=$enableval], [enable_arm_simd=auto])
382
383 if test $enable_arm_simd = no ; then
384    have_arm_simd=disabled
385 fi
386
387 if test $have_arm_simd = yes ; then
388    AC_DEFINE(USE_ARM_SIMD, 1, [use ARM SIMD compiler intrinsics])
389 else
390    ARM_SIMD_CFLAGS=
391 fi
392
393 AC_MSG_RESULT($have_arm_simd)
394 if test $enable_arm_simd = yes && test $have_arm_simd = no ; then
395    AC_MSG_ERROR([ARM SIMD intrinsics not detected])
396 fi
397
398 AC_SUBST(ARM_SIMD_CFLAGS)
399
400 AM_CONDITIONAL(USE_ARM_SIMD, test $have_arm_simd = yes)
401
402 dnl ==========================================================================
403 dnl Check for ARM NEON instructions
404 ARM_NEON_CFLAGS="-mfpu=neon -mcpu=cortex-a8"
405
406 have_arm_neon=no
407 AC_MSG_CHECKING(whether to use ARM NEON)
408 xserver_save_CFLAGS=$CFLAGS
409 CFLAGS="$ARM_NEON_CFLAGS $CFLAGS"
410 AC_COMPILE_IFELSE([
411 #include <arm_neon.h>
412 int main () {
413     uint8x8_t neon_test=vmov_n_u8(0);
414     return 0;
415 }], have_arm_neon=yes)
416 CFLAGS=$xserver_save_CFLAGS
417
418 AC_ARG_ENABLE(arm-neon,
419    [AC_HELP_STRING([--disable-arm-neon],
420                    [disable ARM NEON fast paths])],
421    [enable_arm_neon=$enableval], [enable_arm_neon=auto])
422
423 if test $enable_arm_neon = no ; then
424    have_arm_neon=disabled
425 fi
426
427 if test $have_arm_neon = yes ; then
428    AC_DEFINE(USE_ARM_NEON, 1, [use ARM NEON compiler intrinsics])
429 else
430    ARM_NEON_CFLAGS=
431 fi
432
433 AC_SUBST(ARM_NEON_CFLAGS)
434
435 AM_CONDITIONAL(USE_ARM_NEON, test $have_arm_neon = yes)
436
437 AC_MSG_RESULT($have_arm_neon)
438 if test $enable_arm_neon = yes && test $have_arm_neon = no ; then
439    AC_MSG_ERROR([ARM NEON intrinsics not detected])
440 fi
441
442 dnl =========================================================================================
443 dnl Check for GNU-style inline assembly support
444
445 have_gcc_inline_asm=no
446 AC_MSG_CHECKING(whether to use GNU-style inline assembler)
447 AC_COMPILE_IFELSE([
448 int main () {
449     /* Most modern architectures have a NOP instruction, so this is a fairly generic test. */
450         asm volatile ( "\tnop\n" : : : "cc", "memory" );
451     return 0;
452 }], have_gcc_inline_asm=yes)
453
454 AC_ARG_ENABLE(gcc-inline-asm,
455    [AC_HELP_STRING([--disable-gcc-inline-asm],
456                    [disable GNU-style inline assembler])],
457    [enable_gcc_inline_asm=$enableval], [enable_gcc_inline_asm=auto])
458
459 if test $enable_gcc_inline_asm = no ; then
460    have_gcc_inline_asm=disabled
461 fi
462
463 if test $have_gcc_inline_asm = yes ; then
464    AC_DEFINE(USE_GCC_INLINE_ASM, 1, [use GNU-style inline assembler])
465 fi
466
467 AC_MSG_RESULT($have_gcc_inline_asm)
468 if test $enable_gcc_inline_asm = yes && test $have_gcc_inline_asm = no ; then
469    AC_MSG_ERROR([GNU-style inline assembler not detected])
470 fi
471
472 AM_CONDITIONAL(USE_GCC_INLINE_ASM, test $have_gcc_inline_asm = yes)
473
474 dnl ==============================================
475 dnl Timers
476
477 AC_ARG_ENABLE(timers,
478    [AC_HELP_STRING([--enable-timers],
479                    [enable TIMER_BEGIN and TIMER_END macros [default=no]])],
480    [enable_timers=$enableval], [enable_timers=no])
481
482 if test $enable_timers = yes ; then 
483    AC_DEFINE(PIXMAN_TIMERS, 1, [enable TIMER_BEGIN/TIMER_END macros])
484 fi
485 AC_SUBST(PIXMAN_TIMERS)
486
487 dnl ===================================
488 dnl GTK+
489
490 AC_ARG_ENABLE(gtk,
491    [AC_HELP_STRING([--enable-gtk],
492                    [enable tests using GTK+ [default=auto]])],
493    [enable_gtk=$enableval], [enable_gtk=auto])
494
495 PKG_PROG_PKG_CONFIG
496 if test $enable_gtk = auto ; then
497    PKG_CHECK_EXISTS([gtk+-2.0], [enable_gtk=yes], [enable_gtk=no])
498 fi
499 if test $enable_gtk = yes ; then
500    PKG_CHECK_MODULES(GTK, [gtk+-2.0])
501 fi
502
503 AM_CONDITIONAL(HAVE_GTK, [test "x$enable_gtk" = xyes])
504
505 AC_SUBST(GTK_CFLAGS)
506 AC_SUBST(GTK_LIBS)
507 AC_SUBST(DEP_CFLAGS)
508 AC_SUBST(DEP_LIBS)
509
510 dnl =====================================
511 dnl posix_memalign 
512
513 AC_CHECK_FUNC(posix_memalign, have_posix_memalign=yes, have_posix_memalign=no)
514 if test x$have_posix_memalign = xyes; then
515    AC_DEFINE(HAVE_POSIX_MEMALIGN, 1, [Whether we have posix_memalign()])
516 fi
517
518 AC_OUTPUT([pixman-1.pc
519            pixman-1-uninstalled.pc
520            Makefile
521            pixman/Makefile
522            pixman/pixman-version.h
523            test/Makefile])