Unbump version number; remove file added to EXTRA_DIST
[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 git version must at all times have an odd MICRO version
28 #     number.
29 #
30 #   - If you add API, increment the MICRO version to the next largest
31 #     odd number.
32 #
33 #   - If you release a version that contains new API, then increment
34 #     MINOR and set MICRO to 0. 
35 #
36 #   - If you release a new version that does not contain new API, then
37 #     increment MICRO to the next even number.
38 #
39 #   - After doing a release, increment MICRO again to make the version 
40 #     number in git odd.
41 #
42 #   - If you break the ABI, then
43 #
44 #        - increment MAJOR
45 #
46 #        - In the first development release where you break ABI, find
47 #          all instances of "pixman-n" and change them to pixman-(n+1)
48 #
49 #          This needs to be done at least in 
50 #                    configure.ac
51 #                    all Makefile.am's
52 #                    pixman-n.pc.in
53 #
54 #      This ensures that binary incompatible versions can be installed
55 #      in parallel.  See http://www106.pair.com/rhp/parallel.html for
56 #      more information
57
58 m4_define([pixman_major], 0)
59 m4_define([pixman_minor], 11)
60 m4_define([pixman_micro], 1)
61
62 m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
63
64 AC_INIT(pixman, pixman_version, "sandmann@daimi.au.dk", pixman)
65 AM_INIT_AUTOMAKE([dist-bzip2])
66
67 AM_CONFIG_HEADER(config.h)
68
69 AC_PROG_CC
70 AC_PROG_LIBTOOL
71 AC_CHECK_FUNCS([getisax])
72 AC_C_BIGENDIAN
73
74
75 # We ignore pixman_major in the version here because the major version should
76 # always be encoded in the actual library name. Ie., the soname is:
77 #
78 #      pixman-$(pixman_major).0.minor.micro
79 #
80 m4_define([lt_current], [pixman_minor])
81 m4_define([lt_revision], [pixman_micro])
82 m4_define([lt_age], [pixman_minor])
83
84 LT_VERSION_INFO="lt_current:lt_revision:lt_age"
85
86 PIXMAN_VERSION_MAJOR=pixman_major()
87 AC_SUBST(PIXMAN_VERSION_MAJOR)
88 PIXMAN_VERSION_MINOR=pixman_minor()
89 AC_SUBST(PIXMAN_VERSION_MINOR)
90 PIXMAN_VERSION_MICRO=pixman_micro()
91 AC_SUBST(PIXMAN_VERSION_MICRO)
92
93 AC_SUBST(LT_VERSION_INFO)
94
95 # Check for dependencies
96 #PKG_CHECK_MODULES(DEP, x11)
97
98 changequote(,)dnl
99 if test "x$GCC" = "xyes"; then
100   case " $CFLAGS " in
101   *[\ \ ]-Wall[\ \      ]*) ;;
102   *) CFLAGS="$CFLAGS -Wall" ;;
103   esac fi changequote([,])dnl
104
105 AC_PATH_PROG(PERL, perl, no)
106 if test "x$PERL" = xno; then
107     AC_MSG_ERROR([Perl is required to build pixman.])
108 fi
109 AC_SUBST(PERL)
110
111 dnl =========================================================================
112 dnl -fvisibility stuff
113
114 have_gcc4=no
115 AC_MSG_CHECKING(for -fvisibility)
116 AC_COMPILE_IFELSE([
117 #if defined(__GNUC__) && (__GNUC__ >= 4)
118 #else
119 #error Need GCC 4.0 for visibility
120 #endif
121 int main () { return 0; } 
122 ], have_gcc4=yes)
123
124 if test "x$have_gcc4" = "xyes"; then
125    CFLAGS="$CFLAGS -fvisibility=hidden"
126 fi
127 AC_MSG_RESULT($have_gcc4)
128
129 dnl ===========================================================================
130 dnl Check for MMX
131
132 MMX_CFLAGS="-mmmx -Winline"
133
134 if test "x$GCC" = "xyes"; then
135     MMX_CFLAGS="$MMX_CFLAGS --param inline-unit-growth=10000 --param large-function-growth=10000"
136 fi
137
138 have_mmx_intrinsics=no
139 AC_MSG_CHECKING(whether to use MMX intrinsics)
140 xserver_save_CFLAGS=$CFLAGS
141 CFLAGS="$CFLAGS $MMX_CFLAGS"
142 AC_COMPILE_IFELSE([
143 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
144 #error "Need GCC >= 3.4 for MMX intrinsics"
145 #endif
146 #include <mmintrin.h>
147 int main () {
148     __m64 v = _mm_cvtsi32_si64 (1);
149     return _mm_cvtsi64_si32 (v);
150 }], have_mmx_intrinsics=yes)
151 CFLAGS=$xserver_save_CFLAGS
152 AC_MSG_RESULT($have_mmx_intrinsics)
153
154 if test $have_mmx_intrinsics = yes ; then
155    AC_DEFINE(USE_MMX, 1, [use MMX compiler intrinsics])
156 else
157    MMX_CFLAGS=
158 fi
159
160 AM_CONDITIONAL(USE_MMX, test $have_mmx_intrinsics = yes)
161
162 dnl =======================================================
163
164 dnl GCC 4.2 when compiling with -msse will generate SSE instructions
165 dnl on its own.  This means anything compiled with -mss can only be
166 dnl run after a runtime check for SSE.  Unfortunately, since we still
167 dnl need to support MMX-but-not-SSE (such as the OLPC), this means we
168 dnl can only use SSE when compiling for x86-64 (where SSE is always
169 dnl supported).
170
171 have_sse_intrinsics=no
172 AC_MSG_CHECKING(whether to use SSE intrinsics)
173 xserver_save_CFLAGS=$CFLAGS
174 CFLAGS="$CFLAGS -msse $MMX_CFLAGS"
175
176 AC_COMPILE_IFELSE([
177 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
178 #error "Need GCC >= 3.4 for SSE intrinsics"
179 #endif
180 #if !defined(__amd64__) && !defined(__x86_64__)
181 #error "Need x86-64 for SSE"
182 #endif
183 #include <mmintrin.h>
184 #include <xmmintrin.h>
185 int main () {
186     __m64 v = _mm_cvtsi32_si64 (1);
187     v = _mm_shuffle_pi16 (v, _MM_SHUFFLE(3, 3, 3, 3));
188     return _mm_cvtsi64_si32 (v);
189 }], have_sse_intrinsics=yes)
190 CFLAGS=$xserver_save_CFLAGS
191 AC_MSG_RESULT($have_sse_intrinsics)
192
193 if test $have_sse_intrinsics = yes ; then
194    AC_DEFINE(USE_SSE, 1, [use SSE compiler intrinsics])
195    MMX_CFLAGS="-msse $MMX_CFLAGS"
196 fi
197
198 AM_CONDITIONAL(USE_SSE, test $have_sse_intrinsics = yes)
199
200
201 dnl ===========================================================================
202 dnl Check for SSE2
203
204 SSE_CFLAGS="-mmmx -msse2 -Winline"
205
206 if test "x$GCC" = "xyes"; then
207     SSE_CFLAGS="$SSE_CFLAGS --param inline-unit-growth=10000 --param large-function-growth=10000 --param  max-inline-insns-single=6000"
208 fi
209
210 have_sse2_intrinsics=no
211 AC_MSG_CHECKING(whether to use SSE2 intrinsics)
212 xserver_save_CFLAGS=$CFLAGS
213 CFLAGS="$CFLAGS -msse2 $SSE_CFLAGS"
214
215 AC_COMPILE_IFELSE([
216 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
217 #error "Need GCC >= 4.2 for SSE2 intrinsics"
218 #endif
219 #include <mmintrin.h>
220 #include <xmmintrin.h>
221 #include <emmintrin.h>
222 int main () {
223     __m128i a, b, c;
224         c = _mm_xor_si128 (a, b);
225     return 0;
226 }], have_sse2_intrinsics=yes)
227 CFLAGS=$xserver_save_CFLAGS
228 AC_MSG_RESULT($have_sse2_intrinsics)
229
230 if test $have_sse2_intrinsics = yes ; then
231    AC_DEFINE(USE_SSE2, 1, [use SSE compiler intrinsics])
232 fi
233
234 AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes)
235
236 dnl ========================================================
237 AC_SUBST(MMX_CFLAGS)
238 AC_SUBST(SSE_CFLAGS)
239
240 dnl Check for VMX/Altivec
241 if test -n "`$CC -v 2>&1 | grep version | grep Apple`"; then
242     VMX_CFLAGS="-faltivec"
243 else
244     VMX_CFLAGS="-maltivec -mabi=altivec"
245 fi
246
247 have_vmx_intrinsics=no
248 AC_MSG_CHECKING(whether to use VMX/Altivec intrinsics)
249 xserver_save_CFLAGS=$CFLAGS
250 CFLAGS="$CFLAGS $VMX_CFLAGS"
251 AC_COMPILE_IFELSE([
252 #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
253 #error "Need GCC >= 3.4 for sane altivec support"
254 #endif
255 #include <altivec.h>
256 int main () {
257     vector unsigned int v = vec_splat_u32 (1);
258     v = vec_sub (v, v);
259     return 0;
260 }], have_vmx_intrinsics=yes)
261 CFLAGS=$xserver_save_CFLAGS
262 AC_MSG_RESULT($have_vmx_intrinsics)
263
264 if test $have_vmx_intrinsics = yes ; then
265    AC_DEFINE(USE_VMX, 1, [use VMX compiler intrinsics])
266 else
267    VMX_CFLAGS=
268 fi
269 AC_SUBST(VMX_CFLAGS)
270
271 AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
272
273 AC_ARG_ENABLE(gtk,
274    [AC_HELP_STRING([--disable-gtk],
275                    [disable tests using GTK+])],
276    [disable_gtk=yes], [disable_gtk=no])
277
278 if test $disable_gtk = no ; then
279    PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no])
280 else
281    HAVE_GTK=no
282 fi
283
284 AM_CONDITIONAL(HAVE_GTK, [test "x$HAVE_GTK" = xyes])
285
286 AC_SUBST(GTK_CFLAGS)
287 AC_SUBST(GTK_LIBS)
288 AC_SUBST(DEP_CFLAGS)
289 AC_SUBST(DEP_LIBS)
290                   
291 AC_OUTPUT([pixman-1.pc
292            Makefile
293            pixman/Makefile
294            pixman/pixman-version.h
295            test/Makefile])