sync with tizen_2.2
[sdk/emulator/qemu.git] / gl / mesa / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ([2.60])
4
5 dnl Versioning - scrape the version from configs/default
6 m4_define([mesa_version],
7     [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
8 m4_ifval(mesa_version,,
9     [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
10
11 dnl Tell the user about autoconf.html in the --help output
12 m4_divert_once([HELP_END], [
13 See docs/autoconf.html for more details on the options for Mesa.])
14
15 AC_INIT([Mesa],[mesa_version],
16     [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17 AC_CONFIG_AUX_DIR([bin])
18 AC_CANONICAL_HOST
19 AM_INIT_AUTOMAKE([foreign])
20
21 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
22 USER_CFLAGS="$CFLAGS"
23 USER_CXXFLAGS="$CXXFLAGS"
24
25 dnl Versions for external dependencies
26 LIBDRM_REQUIRED=2.4.24
27 LIBDRM_RADEON_REQUIRED=2.4.24
28 LIBDRM_INTEL_REQUIRED=2.4.30
29 LIBDRM_NOUVEAU_REQUIRED=0.6
30 DRI2PROTO_REQUIRED=2.6
31 GLPROTO_REQUIRED=1.4.14
32 LIBDRM_XORG_REQUIRED=2.4.24
33 LIBKMS_XORG_REQUIRED=1.0.0
34
35 dnl Check for progs
36 AC_PROG_CPP
37 AC_PROG_CC
38 AC_PROG_CXX
39 AC_CHECK_PROGS([MAKE], [gmake make])
40 AC_CHECK_PROGS([PYTHON2], [python2 python])
41 AC_PROG_SED
42 AC_PATH_PROG([MKDEP], [makedepend])
43
44 if test "x$MKDEP" = "x"; then
45     AC_MSG_ERROR([makedepend is required to build Mesa])
46 fi
47
48 AC_PATH_PROG([FLEX], [flex])
49 test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
50
51 AC_PATH_PROG([BISON], [bison])
52 test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
53
54 dnl Our fallback install-sh is a symlink to minstall. Use the existing
55 dnl configuration in that case.
56 AC_PROG_INSTALL
57 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
58
59 dnl We need a POSIX shell for parts of the build. Assume we have one
60 dnl in most cases.
61 case "$host_os" in
62 solaris*)
63     # Solaris /bin/sh is too old/non-POSIX compliant
64     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
65     SHELL="$POSIX_SHELL"
66     ;;
67 esac
68
69 AC_PATH_PROG([GTESTCONFIG], [gtest-config])
70 if test "x$GTESTCONFIG" != "x"; then
71     GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
72     GTEST_LIBS=`gtest-config --ldflags --libs`
73     AC_SUBST([GTEST_CFLAGS])
74     AC_SUBST([GTEST_LIBS])
75     HAVE_GTEST=yes
76 else
77     HAVE_GTEST=no
78 fi
79 AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
80
81 dnl clang is mostly GCC-compatible, but its version is much lower,
82 dnl so we have to check for it.
83 AC_MSG_CHECKING([if compiling with clang])
84
85 AC_COMPILE_IFELSE(
86 [AC_LANG_PROGRAM([], [[
87 #ifndef __clang__
88        not clang
89 #endif
90 ]])],
91 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
92
93 AC_MSG_RESULT([$acv_mesa_CLANG])
94
95 dnl If we're using GCC, make sure that it is at least version 3.3.0.  Older
96 dnl versions are explictly not supported.
97 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
98     AC_MSG_CHECKING([whether gcc version is sufficient])
99     major=0
100     minor=0
101
102     GCC_VERSION=`$CC -dumpversion`
103     if test $? -eq 0; then
104         major=`echo $GCC_VERSION | cut -d. -f1`
105         minor=`echo $GCC_VERSION | cut -d. -f2`
106     fi
107
108     if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
109         AC_MSG_RESULT([no])
110         AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
111     else
112         AC_MSG_RESULT([yes])
113     fi
114 fi
115
116
117 MKDEP_OPTIONS=-fdepend
118 dnl Ask gcc where it's keeping its secret headers
119 if test "x$GCC" = xyes; then
120     for dir in include include-fixed; do
121         GCC_INCLUDES=`$CC -print-file-name=$dir`
122         if test "x$GCC_INCLUDES" != x && \
123            test "$GCC_INCLUDES" != "$dir" && \
124            test -d "$GCC_INCLUDES"; then
125             MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
126         fi
127     done
128 fi
129 AC_SUBST([MKDEP_OPTIONS])
130
131 dnl Make sure the pkg-config macros are defined
132 m4_ifndef([PKG_PROG_PKG_CONFIG],
133     [m4_fatal([Could not locate the pkg-config autoconf macros.
134   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
135   are in a different location, try setting the environment variable
136   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
137 PKG_PROG_PKG_CONFIG()
138
139 dnl LIB_DIR - library basename
140 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
141 AC_SUBST([LIB_DIR])
142
143 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
144 _SAVE_LDFLAGS="$LDFLAGS"
145 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
146 AC_SUBST([EXTRA_LIB_PATH])
147
148 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
149 _SAVE_CPPFLAGS="$CPPFLAGS"
150 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
151 AC_SUBST([X11_INCLUDES])
152
153 dnl Compiler macros
154 DEFINES=""
155 AC_SUBST([DEFINES])
156 case "$host_os" in
157 linux*|*-gnu*|gnu*)
158     DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
159     ;;
160 solaris*)
161     DEFINES="$DEFINES -DPTHREADS -DSVR4"
162     ;;
163 cygwin*)
164     DEFINES="$DEFINES -DPTHREADS"
165     ;;
166 esac
167
168 dnl Add flags for gcc and g++
169 if test "x$GCC" = xyes; then
170     CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
171
172     # Enable -fvisibility=hidden if using a gcc that supports it
173     save_CFLAGS="$CFLAGS"
174     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
175     VISIBILITY_CFLAGS="-fvisibility=hidden"
176     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
177     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
178                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
179
180     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
181     CFLAGS=$save_CFLAGS
182
183     # Work around aliasing bugs - developers should comment this out
184     CFLAGS="$CFLAGS -fno-strict-aliasing"
185
186     # gcc's builtin memcmp is slower than glibc's
187     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
188     CFLAGS="$CFLAGS -fno-builtin-memcmp"
189 fi
190 if test "x$GXX" = xyes; then
191     CXXFLAGS="$CXXFLAGS -Wall"
192
193     # Enable -fvisibility=hidden if using a gcc that supports it
194     save_CXXFLAGS="$CXXFLAGS"
195     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
196     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
197     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
198     AC_LANG_PUSH([C++])
199     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
200                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
201     AC_LANG_POP([C++])
202
203     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
204     CXXFLAGS=$save_CXXFLAGS
205
206     # Work around aliasing bugs - developers should comment this out
207     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
208
209     # gcc's builtin memcmp is slower than glibc's
210     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
211     CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
212 fi
213
214 dnl even if the compiler appears to support it, using visibility attributes isn't
215 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
216 case "$host_os" in
217 cygwin*)
218     VISIBILITY_CFLAGS=""
219     VISIBILITY_CXXFLAGS=""
220     ;;
221 esac
222
223 AC_SUBST([VISIBILITY_CFLAGS])
224 AC_SUBST([VISIBILITY_CXXFLAGS])
225
226 dnl These should be unnecessary, but let the user set them if they want
227 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
228     Default is to use CFLAGS.])
229 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
230     compiler. Default is to use CFLAGS.])
231 AC_SUBST([OPT_FLAGS])
232 AC_SUBST([ARCH_FLAGS])
233
234 dnl
235 dnl Hacks to enable 32 or 64 bit build
236 dnl
237 AC_ARG_ENABLE([32-bit],
238     [AS_HELP_STRING([--enable-32-bit],
239         [build 32-bit libraries @<:@default=auto@:>@])],
240     [enable_32bit="$enableval"],
241     [enable_32bit=auto]
242 )
243 if test "x$enable_32bit" = xyes; then
244     if test "x$GCC" = xyes; then
245         CFLAGS="$CFLAGS -m32"
246         ARCH_FLAGS="$ARCH_FLAGS -m32"
247     fi
248     if test "x$GXX" = xyes; then
249         CXXFLAGS="$CXXFLAGS -m32"
250     fi
251 fi
252 AC_ARG_ENABLE([64-bit],
253     [AS_HELP_STRING([--enable-64-bit],
254         [build 64-bit libraries @<:@default=auto@:>@])],
255     [enable_64bit="$enableval"],
256     [enable_64bit=auto]
257 )
258 if test "x$enable_64bit" = xyes; then
259     if test "x$GCC" = xyes; then
260         CFLAGS="$CFLAGS -m64"
261     fi
262     if test "x$GXX" = xyes; then
263         CXXFLAGS="$CXXFLAGS -m64"
264     fi
265 fi
266
267 dnl
268 dnl shared/static libraries, mimic libtool options
269 dnl
270 AC_ARG_ENABLE([static],
271     [AS_HELP_STRING([--enable-static],
272         [build static libraries @<:@default=disabled@:>@])],
273     [enable_static="$enableval"],
274     [enable_static=no]
275 )
276 case "x$enable_static" in
277 xyes|xno ) ;;
278 x ) enable_static=no ;;
279 * )
280     AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
281     ;;
282 esac
283 AC_ARG_ENABLE([shared],
284     [AS_HELP_STRING([--disable-shared],
285         [build shared libraries @<:@default=enabled@:>@])],
286     [enable_shared="$enableval"],
287     [enable_shared=yes]
288 )
289 case "x$enable_shared" in
290 xyes|xno ) ;;
291 x ) enable_shared=yes ;;
292 * )
293     AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
294     ;;
295 esac
296
297 dnl Can't have static and shared libraries, default to static if user
298 dnl explicitly requested. If both disabled, set to static since shared
299 dnl was explicitly requirested.
300 case "x$enable_static$enable_shared" in
301 xyesyes )
302     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
303     enable_shared=no
304     ;;
305 xnono )
306     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
307     enable_static=yes
308     ;;
309 esac
310
311 dnl
312 dnl mklib options
313 dnl
314 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
315 if test "$enable_static" = yes; then
316     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
317 fi
318 AC_SUBST([MKLIB_OPTIONS])
319
320 dnl
321 dnl other compiler options
322 dnl
323 AC_ARG_ENABLE([debug],
324     [AS_HELP_STRING([--enable-debug],
325         [use debug compiler flags and macros @<:@default=disabled@:>@])],
326     [enable_debug="$enableval"],
327     [enable_debug=no]
328 )
329 if test "x$enable_debug" = xyes; then
330     DEFINES="$DEFINES -DDEBUG"
331     if test "x$GCC" = xyes; then
332         CFLAGS="$CFLAGS -g"
333     fi
334     if test "x$GXX" = xyes; then
335         CXXFLAGS="$CXXFLAGS -g"
336     fi
337 fi
338
339 dnl
340 dnl library names
341 dnl
342 LIB_PREFIX_GLOB='lib'
343 LIB_VERSION_SEPARATOR='.'
344 if test "$enable_static" = yes; then
345     LIB_EXTENSION='a'
346 else
347     case "$host_os" in
348     darwin* )
349         LIB_EXTENSION='dylib' ;;
350     cygwin* )
351         dnl prefix can be 'cyg' or 'lib'
352         LIB_PREFIX_GLOB='???'
353         LIB_VERSION_SEPARATOR='-'
354         LIB_EXTENSION='dll' ;;
355     aix* )
356         LIB_EXTENSION='a' ;;
357     * )
358         LIB_EXTENSION='so' ;;
359     esac
360 fi
361
362 dnl
363 dnl Mangled Mesa support
364 dnl
365 AC_ARG_ENABLE([mangling],
366   [AS_HELP_STRING([--enable-mangling],
367     [enable mangled symbols and library name @<:@default=disabled@:>@])],
368   [enable_mangling="${enableval}"],
369   [enable_mangling=no]
370 )
371 GL_LIB="GL"
372 GLU_LIB="GLU"
373 OSMESA_LIB="OSMesa"
374 if test "x${enable_mangling}" = "xyes" ; then
375   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
376   GL_LIB="MangledGL"
377   GLU_LIB="MangledGLU"
378   OSMESA_LIB="MangledOSMesa"
379 fi
380 AC_SUBST([GL_LIB])
381 AC_SUBST([GLU_LIB])
382 AC_SUBST([OSMESA_LIB])
383
384 dnl
385 dnl potentially-infringing-but-nobody-knows-for-sure stuff
386 dnl
387 AC_ARG_ENABLE([texture-float],
388     [AS_HELP_STRING([--enable-texture-float],
389         [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
390     [enable_texture_float="$enableval"],
391     [enable_texture_float=no]
392 )
393 if test "x$enable_texture_float" = xyes; then
394     AC_MSG_WARN([Floating-point textures enabled.])
395     AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
396     DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
397 fi
398
399 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
400 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
401 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
402 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
403 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
404 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
405 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
406 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
407 WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
408 GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
409
410 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
412 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
413 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
414 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
415 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
416 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
417 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
418 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419 WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
420 GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
421
422 AC_SUBST([GL_LIB_NAME])
423 AC_SUBST([GLU_LIB_NAME])
424 AC_SUBST([OSMESA_LIB_NAME])
425 AC_SUBST([EGL_LIB_NAME])
426 AC_SUBST([GLESv1_CM_LIB_NAME])
427 AC_SUBST([GLESv2_LIB_NAME])
428 AC_SUBST([VG_LIB_NAME])
429 AC_SUBST([GLAPI_LIB_NAME])
430 AC_SUBST([WAYLAND_EGL_LIB_NAME])
431 AC_SUBST([GBM_LIB_NAME])
432
433 AC_SUBST([GL_LIB_GLOB])
434 AC_SUBST([GLU_LIB_GLOB])
435 AC_SUBST([OSMESA_LIB_GLOB])
436 AC_SUBST([EGL_LIB_GLOB])
437 AC_SUBST([GLESv1_CM_LIB_GLOB])
438 AC_SUBST([GLESv2_LIB_GLOB])
439 AC_SUBST([VG_LIB_GLOB])
440 AC_SUBST([GLAPI_LIB_GLOB])
441 AC_SUBST([WAYLAND_EGL_LIB_GLOB])
442 AC_SUBST([GBM_LIB_GLOB])
443
444 dnl
445 dnl Arch/platform-specific settings
446 dnl
447 AC_ARG_ENABLE([asm],
448     [AS_HELP_STRING([--disable-asm],
449         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
450     [enable_asm="$enableval"],
451     [enable_asm=yes]
452 )
453 asm_arch=""
454 ASM_FLAGS=""
455 MESA_ASM_SOURCES=""
456 GLAPI_ASM_SOURCES=""
457 AC_MSG_CHECKING([whether to enable assembly])
458 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
459 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
460 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
461     case "$host_cpu" in
462     i?86 | x86_64)
463         enable_asm=no
464         AC_MSG_RESULT([no, cross compiling])
465         ;;
466     esac
467 fi
468 # check for supported arches
469 if test "x$enable_asm" = xyes; then
470     case "$host_cpu" in
471     i?86)
472         case "$host_os" in
473         linux* | *freebsd* | dragonfly* | *netbsd*)
474             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
475             ;;
476         esac
477         ;;
478     x86_64)
479         case "$host_os" in
480         linux* | *freebsd* | dragonfly* | *netbsd*)
481             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
482             ;;
483         esac
484         ;;
485     powerpc)
486         case "$host_os" in
487         linux*)
488             asm_arch=ppc
489             ;;
490         esac
491         ;;
492     sparc*)
493         case "$host_os" in
494         linux*)
495             asm_arch=sparc
496             ;;
497         esac
498         ;;
499     esac
500
501     case "$asm_arch" in
502     x86)
503         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
504         MESA_ASM_SOURCES='$(X86_SOURCES)'
505         GLAPI_ASM_SOURCES='$(X86_API)'
506         AC_MSG_RESULT([yes, x86])
507         ;;
508     x86_64)
509         ASM_FLAGS="-DUSE_X86_64_ASM"
510         MESA_ASM_SOURCES='$(X86-64_SOURCES)'
511         GLAPI_ASM_SOURCES='$(X86-64_API)'
512         AC_MSG_RESULT([yes, x86_64])
513         ;;
514     ppc)
515         ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
516         MESA_ASM_SOURCES='$(PPC_SOURCES)'
517         AC_MSG_RESULT([yes, ppc])
518         ;;
519     sparc)
520         ASM_FLAGS="-DUSE_SPARC_ASM"
521         MESA_ASM_SOURCES='$(SPARC_SOURCES)'
522         GLAPI_ASM_SOURCES='$(SPARC_API)'
523         AC_MSG_RESULT([yes, sparc])
524         ;;
525     *)
526         AC_MSG_RESULT([no, platform not supported])
527         ;;
528     esac
529 fi
530 AC_SUBST([ASM_FLAGS])
531 AC_SUBST([MESA_ASM_SOURCES])
532 AC_SUBST([GLAPI_ASM_SOURCES])
533
534 dnl PIC code macro
535 MESA_PIC_FLAGS
536
537 dnl Check to see if dlopen is in default libraries (like Solaris, which
538 dnl has it in libc), or if libdl is needed to get it.
539 AC_CHECK_FUNC([dlopen], [],
540     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
541 AC_SUBST([DLOPEN_LIBS])
542
543 dnl See if posix_memalign is available
544 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
545
546 dnl SELinux awareness.
547 AC_ARG_ENABLE([selinux],
548     [AS_HELP_STRING([--enable-selinux],
549         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
550     [MESA_SELINUX="$enableval"],
551     [MESA_SELINUX=no])
552 if test "x$enable_selinux" = "xyes"; then
553     AC_CHECK_HEADER([selinux/selinux.h],[],
554                     [AC_MSG_ERROR([SELinux headers not found])])
555     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
556                  [AC_MSG_ERROR([SELinux library not found])])
557     SELINUX_LIBS="-lselinux"
558     DEFINES="$DEFINES -DMESA_SELINUX"
559 fi
560
561 dnl Options for APIs
562 AC_ARG_ENABLE([opengl],
563     [AS_HELP_STRING([--disable-opengl],
564         [disable support for standard OpenGL API @<:@default=no@:>@])],
565     [enable_opengl="$enableval"],
566     [enable_opengl=yes])
567 AC_ARG_ENABLE([gles1],
568     [AS_HELP_STRING([--enable-gles1],
569         [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
570     [enable_gles1="$enableval"],
571     [enable_gles1=no])
572 AC_ARG_ENABLE([gles2],
573     [AS_HELP_STRING([--enable-gles2],
574         [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
575     [enable_gles2="$enableval"],
576     [enable_gles2=no])
577 AC_ARG_ENABLE([openvg],
578     [AS_HELP_STRING([--enable-openvg],
579         [enable support for OpenVG API @<:@default=no@:>@])],
580     [enable_openvg="$enableval"],
581     [enable_openvg=no])
582
583 AC_ARG_ENABLE([dri],
584     [AS_HELP_STRING([--enable-dri],
585         [enable DRI modules @<:@default=auto@:>@])],
586     [enable_dri="$enableval"],
587     [enable_dri=auto])
588 AC_ARG_ENABLE([glx],
589     [AS_HELP_STRING([--enable-glx],
590         [enable GLX library @<:@default=auto@:>@])],
591     [enable_glx="$enableval"],
592     [enable_glx=auto])
593 AC_ARG_ENABLE([osmesa],
594     [AS_HELP_STRING([--enable-osmesa],
595         [enable OSMesa library @<:@default=auto@:>@])],
596     [enable_osmesa="$enableval"],
597     [enable_osmesa=auto])
598 AC_ARG_ENABLE([egl],
599     [AS_HELP_STRING([--disable-egl],
600         [disable EGL library @<:@default=enabled@:>@])],
601     [enable_egl="$enableval"],
602     [enable_egl=yes])
603
604 AC_ARG_ENABLE([xorg],
605     [AS_HELP_STRING([--enable-xorg],
606         [enable support for X.Org DDX API @<:@default=no@:>@])],
607     [enable_xorg="$enableval"],
608     [enable_xorg=no])
609 AC_ARG_ENABLE([xa],
610     [AS_HELP_STRING([--enable-xa],
611         [enable build of the XA X Acceleration API @<:@default=no@:>@])],
612     [enable_xa="$enableval"],
613     [enable_xa=no])
614 AC_ARG_ENABLE([d3d1x],
615     [AS_HELP_STRING([--enable-d3d1x],
616         [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
617     [enable_d3d1x="$enableval"],
618     [enable_d3d1x=no])
619 AC_ARG_ENABLE([gbm],
620    [AS_HELP_STRING([--enable-gbm],
621          [enable gbm library @<:@default=auto@:>@])],
622    [enable_gbm="$enableval"],
623    [enable_gbm=auto])
624
625 AC_ARG_ENABLE([xvmc],
626    [AS_HELP_STRING([--enable-xvmc],
627          [enable xvmc library @<:@default=auto@:>@])],
628    [enable_xvmc="$enableval"],
629    [enable_xvmc=auto])
630 AC_ARG_ENABLE([vdpau],
631    [AS_HELP_STRING([--enable-vdpau],
632          [enable vdpau library @<:@default=auto@:>@])],
633    [enable_vdpau="$enableval"],
634    [enable_vdpau=auto])
635 AC_ARG_ENABLE([va],
636    [AS_HELP_STRING([--enable-va],
637          [enable va library @<:@default=auto@:>@])],
638    [enable_va="$enableval"],
639    [enable_va=auto])
640
641 AC_ARG_ENABLE([xlib_glx],
642     [AS_HELP_STRING([--enable-xlib-glx],
643         [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
644     [enable_xlib_glx="$enableval"],
645     [enable_xlib_glx=auto])
646 AC_ARG_ENABLE([gallium_egl],
647     [AS_HELP_STRING([--enable-gallium-egl],
648         [enable optional EGL state tracker (not required
649          for EGL support in Gallium with OpenGL and OpenGL ES)
650          @<:@default=disable@:>@])],
651     [enable_gallium_egl="$enableval"],
652     [enable_gallium_egl=no])
653 AC_ARG_ENABLE([gallium_gbm],
654     [AS_HELP_STRING([--enable-gallium-gbm],
655         [enable optional gbm state tracker (not required for
656          gbm support in Gallium)
657          @<:@default=auto@:>@])],
658     [enable_gallium_gbm="$enableval"],
659     [enable_gallium_gbm=auto])
660
661 # Option for Gallium drivers
662 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
663
664 AC_ARG_WITH([gallium-drivers],
665     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
666         [comma delimited Gallium drivers list, e.g.
667         "i915,nouveau,r300,r600,svga,swrast"
668         @<:@default=r300,r600,swrast@:>@])],
669     [with_gallium_drivers="$withval"],
670     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
671
672 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
673 # here so that the script doesn't choke on an unknown driver name later.
674 case "$with_gallium_drivers" in
675     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
676     no) with_gallium_drivers='' ;;
677 esac
678
679 if test "x$enable_opengl" = xno -a \
680         "x$enable_gles1" = xno -a \
681         "x$enable_gles2" = xno -a \
682         "x$enable_openvg" = xno -a \
683         "x$enable_xorg" = xno -a \
684         "x$enable_xa" = xno -a \
685         "x$enable_d3d1x" = xno -a \
686         "x$enable_xvmc" = xno -a \
687         "x$enable_vdpau" = xno -a \
688         "x$enable_va" = xno; then
689     AC_MSG_ERROR([at least one API should be enabled])
690 fi
691
692 API_DEFINES=""
693 if test "x$enable_opengl" = xno; then
694     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
695 else
696     API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
697 fi
698 if test "x$enable_gles1" = xyes; then
699     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
700 fi
701 if test "x$enable_gles2" = xyes; then
702     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
703 fi
704 AC_SUBST([API_DEFINES])
705
706 AC_ARG_ENABLE([shared-glapi],
707     [AS_HELP_STRING([--enable-shared-glapi],
708         [EXPERIMENTAL.  Enable shared glapi for OpenGL @<:@default=no@:>@])],
709     [enable_shared_glapi="$enableval"],
710     [enable_shared_glapi=no])
711
712 SHARED_GLAPI="0"
713 if test "x$enable_shared_glapi" = xyes; then
714     SHARED_GLAPI="1"
715 fi
716 AC_SUBST([SHARED_GLAPI])
717
718 dnl
719 dnl Driver configuration. Options are xlib, dri and osmesa right now.
720 dnl More later: fbdev, ...
721 dnl
722 default_driver="xlib"
723
724 case "$host_os" in
725 linux*)
726     case "$host_cpu" in
727     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
728     esac
729     ;;
730 *freebsd* | dragonfly* | *netbsd*)
731     case "$host_cpu" in
732     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
733     esac
734     ;;
735 esac
736
737 if test "x$enable_opengl" = xno; then
738     default_driver="no"
739 fi
740
741 AC_ARG_WITH([driver],
742     [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
743     [mesa_driver="$withval"],
744     [mesa_driver=auto])
745 dnl Check for valid option
746 case "x$mesa_driver" in
747 xxlib|xdri|xosmesa|xno)
748     if test "x$enable_dri" != xauto -o \
749             "x$enable_glx" != xauto -o \
750             "x$enable_osmesa" != xauto -o \
751             "x$enable_xlib_glx" != xauto; then
752         AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
753     fi
754     ;;
755 xauto)
756     mesa_driver="$default_driver"
757     ;;
758 *)
759     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
760     ;;
761 esac
762
763 # map $mesa_driver to APIs
764 if test "x$enable_dri" = xauto; then
765     case "x$mesa_driver" in
766     xdri) enable_dri=yes ;;
767     *)    enable_dri=no ;;
768     esac
769 fi
770
771 if test "x$enable_glx" = xauto; then
772     case "x$mesa_driver" in
773     xdri|xxlib) enable_glx=yes ;;
774     *)          enable_glx=no ;;
775     esac
776 fi
777
778 if test "x$enable_osmesa" = xauto; then
779     case "x$mesa_driver" in
780     xxlib|xosmesa) enable_osmesa=yes ;;
781     *)             enable_osmesa=no ;;
782     esac
783 fi
784
785 if test "x$enable_xlib_glx" = xauto; then
786     case "x$mesa_driver" in
787     xxlib) enable_xlib_glx=yes ;;
788     *)     enable_xlib_glx=no ;;
789     esac
790 fi
791
792 if test "x$enable_glx" = xno; then
793     enable_xlib_glx=no
794 fi
795
796 dnl
797 dnl Driver specific build directories
798 dnl
799
800 dnl this variable will be prepended to SRC_DIRS and is not exported
801 CORE_DIRS=""
802
803 SRC_DIRS=""
804 GLU_DIRS="sgi"
805 GALLIUM_DIRS="auxiliary drivers state_trackers"
806 GALLIUM_TARGET_DIRS=""
807 GALLIUM_WINSYS_DIRS="sw"
808 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
809 GALLIUM_STATE_TRACKERS_DIRS=""
810
811 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
812 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
813 x*yes*)
814     CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
815     ;;
816 esac
817
818 # build glapi if OpenGL is enabled
819 if test "x$enable_opengl" = xyes; then
820     CORE_DIRS="$CORE_DIRS mapi/glapi"
821 fi
822
823 # build es1api if OpenGL ES 1.x is enabled
824 if test "x$enable_gles1" = xyes; then
825     CORE_DIRS="$CORE_DIRS mapi/es1api"
826 fi
827
828 # build es2api if OpenGL ES 2.x is enabled
829 if test "x$enable_gles2" = xyes; then
830     CORE_DIRS="$CORE_DIRS mapi/es2api"
831 fi
832
833 # build glsl and mesa if OpenGL or OpenGL ES is enabled
834 case "x$enable_opengl$enable_gles1$enable_gles2" in
835 x*yes*)
836     CORE_DIRS="$CORE_DIRS glsl mesa"
837     ;;
838 esac
839
840 case "x$enable_glx$enable_xlib_glx" in
841 xyesyes)
842     DRIVER_DIRS="$DRIVER_DIRS x11"
843     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
844     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
845     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
846     HAVE_WINSYS_XLIB="yes"
847     ;;
848 xyesno)
849     # DRI-based GLX
850     SRC_DIRS="$SRC_DIRS glx"
851     ;;
852 esac
853
854 if test "x$enable_dri" = xyes; then
855     DRIVER_DIRS="$DRIVER_DIRS dri"
856
857     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
858     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
859     HAVE_ST_DRI="yes"
860 fi
861
862 if test "x$enable_osmesa" = xyes; then
863     # the empty space matters for osmesa... (see src/mesa/Makefile)
864     if test -n "$DRIVER_DIRS"; then
865         DRIVER_DIRS="$DRIVER_DIRS osmesa"
866     else
867         DRIVER_DIRS="osmesa"
868     fi
869 fi
870
871 AC_SUBST([SRC_DIRS])
872 AC_SUBST([GLU_DIRS])
873 AC_SUBST([DRIVER_DIRS])
874 AC_SUBST([GALLIUM_DIRS])
875 AC_SUBST([GALLIUM_TARGET_DIRS])
876 AC_SUBST([GALLIUM_WINSYS_DIRS])
877 AC_SUBST([GALLIUM_DRIVERS_DIRS])
878 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
879 AC_SUBST([MESA_LLVM])
880
881 # Check for libdrm
882 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
883                   [have_libdrm=yes], [have_libdrm=no])
884
885 if test "x$enable_dri" = xyes; then
886     # DRI must be shared, I think
887     if test "$enable_static" = yes; then
888         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
889     fi
890
891     # not a hard requirement as swrast does not depend on it
892     if test "x$have_libdrm" = xyes; then
893         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
894     fi
895 fi
896
897 dnl
898 dnl Find out if X is available. The variable have_x is set if libX11 is
899 dnl found to mimic AC_PATH_XTRA.
900 dnl
901 if test -n "$PKG_CONFIG"; then
902     AC_MSG_CHECKING([pkg-config files for X11 are available])
903     PKG_CHECK_EXISTS([x11],[
904         x11_pkgconfig=yes
905         have_x=yes
906         ],[
907         x11_pkgconfig=no
908     ])
909     AC_MSG_RESULT([$x11_pkgconfig])
910 else
911     x11_pkgconfig=no
912 fi
913 dnl Use the autoconf macro if no pkg-config files
914 if test "$x11_pkgconfig" = yes; then
915     PKG_CHECK_MODULES([X11], [x11])
916 else
917     AC_PATH_XTRA
918     test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
919     test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
920     AC_SUBST([X11_CFLAGS])
921     AC_SUBST([X11_LIBS])
922 fi
923
924 dnl Try to tell the user that the --x-* options are only used when
925 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
926 m4_divert_once([HELP_BEGIN],
927 [These options are only used when the X libraries cannot be found by the
928 pkg-config utility.])
929
930 dnl We need X for xlib and dri, so bomb now if it's not found
931 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
932     AC_MSG_ERROR([X11 development libraries needed for GLX])
933 fi
934
935 if test "x$enable_glx" = xyes; then
936     DEFINES="$DEFINES -DUSE_XCB"
937 fi
938
939 dnl Direct rendering or just indirect rendering
940 case "$host_os" in
941 gnu*)
942     dnl Disable by default on GNU/Hurd
943     driglx_direct_default="no"
944     ;;
945 cygwin*)
946     dnl Disable by default on cygwin
947     driglx_direct_default="no"
948     ;;
949 *)
950     driglx_direct_default="yes"
951     ;;
952 esac
953 AC_ARG_ENABLE([driglx-direct],
954     [AS_HELP_STRING([--disable-driglx-direct],
955         [enable direct rendering in GLX and EGL for DRI \
956             @<:@default=auto@:>@])],
957     [driglx_direct="$enableval"],
958     [driglx_direct="$driglx_direct_default"])
959
960 dnl
961 dnl libGL configuration per driver
962 dnl
963 case "x$enable_glx$enable_xlib_glx" in
964 xyesyes)
965     # Xlib-based GLX
966     if test "$x11_pkgconfig" = yes; then
967         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
968         GL_PC_REQ_PRIV="x11 xext"
969         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
970         GL_LIB_DEPS="$XLIBGL_LIBS"
971     else
972         # should check these...
973         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
974         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
975         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
976         GL_PC_CFLAGS="$X11_INCLUDES"
977     fi
978     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
979     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
980     ;;
981 xyesno)
982     # DRI-based GLX
983     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
984     GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
985     if test x"$driglx_direct" = xyes; then
986         if test "x$have_libdrm" != xyes; then
987             AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
988         fi
989         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
990         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
991     fi
992
993     # find the DRI deps for libGL
994     if test "$x11_pkgconfig" = yes; then
995         dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
996
997         # add xf86vidmode if available
998         PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
999         if test "$HAVE_XF86VIDMODE" = yes ; then
1000             dri_modules="$dri_modules xxf86vm"
1001         fi
1002
1003         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1004         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1005         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1006         GL_LIB_DEPS="$DRIGL_LIBS"
1007     else
1008         # should check these...
1009         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
1010         if test "x$HAVE_XF86VIDMODE" == xyes; then
1011            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1012         else
1013            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1014         fi
1015         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1016         GL_PC_CFLAGS="$X11_INCLUDES"
1017
1018         # XCB can only be used from pkg-config
1019         PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1020         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1021         X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1022         GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1023     fi
1024
1025     # Check to see if the xcb-glx library is new enough to support
1026     # GLX_ARB_create_context.  This bit of hackery is necessary until XCB 1.8
1027     # is released.
1028     save_CPPFLAGS="$CPPFLAGS"
1029     save_LDFLAGS="$LDFLAGS"
1030     CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1031     LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1032     AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1033         [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1034         [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1035     CPPFLAGS="$save_CPPFLAGS"
1036     LDFLAGS="$save_LDFLAGS"
1037
1038     if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1039         X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1040     fi
1041
1042     # need DRM libs, -lpthread, etc.
1043     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1044     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1045     ;;
1046 esac
1047
1048 # This is outside the case (above) so that it is invoked even for non-GLX
1049 # builds.
1050 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1051     test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1052
1053 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1054 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1055 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1056 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1057
1058 AC_SUBST([GL_LIB_DEPS])
1059 AC_SUBST([GL_PC_REQ_PRIV])
1060 AC_SUBST([GL_PC_LIB_PRIV])
1061 AC_SUBST([GL_PC_CFLAGS])
1062 AC_SUBST([DRI_PC_REQ_PRIV])
1063 AC_SUBST([GLESv1_CM_LIB_DEPS])
1064 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1065 AC_SUBST([GLESv2_LIB_DEPS])
1066 AC_SUBST([GLESv2_PC_LIB_PRIV])
1067
1068 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1069 AC_SUBST([GLAPI_LIB_DEPS])
1070
1071
1072 dnl Setup default DRI CFLAGS
1073 DRI_CFLAGS='$(CFLAGS)'
1074 DRI_CXXFLAGS='$(CXXFLAGS)'
1075 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1076 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1077
1078 AC_ARG_ENABLE([shared-dricore],
1079     [AS_HELP_STRING([--enable-shared-dricore],
1080         [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1081     [enable_dricore="$enableval"],
1082     [enable_dricore=no])
1083 if test "x$enable_dri" = xyes ; then
1084    if test "$enable_dricore" = yes ; then
1085       if test "$GCC$GXX" != yesyes ; then
1086          AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling.  Disabling shared dricore])
1087          enable_dricore=no
1088       else
1089          DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1090          DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1091          DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1092          DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1093          DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1094          DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1095          MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1096       fi
1097    fi
1098 fi
1099 AC_SUBST([DRICORE_LIBS])
1100 AC_SUBST([DRICORE_GLSL_LIBS])
1101 AC_SUBST([DRICORE_LIB_DEPS])
1102 AC_SUBST([DRI_CXXFLAGS])
1103 AC_SUBST([DRI_CFLAGS])
1104 AC_SUBST([MESA_MODULES])
1105
1106 AC_SUBST([HAVE_XF86VIDMODE])
1107
1108 dnl
1109 dnl More GLX setup
1110 dnl
1111 case "x$enable_glx$enable_xlib_glx" in
1112 xyesyes)
1113     DEFINES="$DEFINES -DUSE_XSHM"
1114     ;;
1115 xyesno)
1116     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1117     if test "x$driglx_direct" = xyes; then
1118         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1119     fi
1120     ;;
1121 esac
1122
1123 dnl
1124 dnl TLS detection
1125 dnl
1126
1127 AC_ARG_ENABLE([glx-tls],
1128     [AS_HELP_STRING([--enable-glx-tls],
1129         [enable TLS support in GLX @<:@default=disabled@:>@])],
1130     [GLX_USE_TLS="$enableval"],
1131     [GLX_USE_TLS=no])
1132 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1133
1134 AS_IF([test "x$GLX_USE_TLS" = xyes],
1135       [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1136
1137 dnl
1138 dnl More DRI setup
1139 dnl
1140 dnl Directory for DRI drivers
1141 AC_ARG_WITH([dri-driverdir],
1142     [AS_HELP_STRING([--with-dri-driverdir=DIR],
1143         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1144     [DRI_DRIVER_INSTALL_DIR="$withval"],
1145     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1146 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1147 dnl Extra search path for DRI drivers
1148 AC_ARG_WITH([dri-searchpath],
1149     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1150         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1151     [DRI_DRIVER_SEARCH_DIR="$withval"],
1152     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1153 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1154 dnl Which drivers to build - default is chosen by platform
1155 AC_ARG_WITH([dri-drivers],
1156     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1157         [comma delimited DRI drivers list, e.g.
1158         "swrast,i965,radeon" @<:@default=auto@:>@])],
1159     [with_dri_drivers="$withval"],
1160     [with_dri_drivers=yes])
1161 if test "x$with_dri_drivers" = x; then
1162     with_dri_drivers=no
1163 fi
1164
1165 dnl If $with_dri_drivers is yes, directories will be added through
1166 dnl platform checks
1167 DRI_DIRS=""
1168 case "$with_dri_drivers" in
1169 no) ;;
1170 yes)
1171     # classic DRI drivers require FEATURE_GL to build
1172     if test "x$enable_opengl" = xyes; then
1173         DRI_DIRS="yes"
1174     fi
1175     ;;
1176 *)
1177     # verify the requested driver directories exist
1178     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1179     for driver in $dri_drivers; do
1180         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1181             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1182     done
1183     DRI_DIRS="$dri_drivers"
1184     if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1185         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1186     fi
1187     ;;
1188 esac
1189
1190 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1191 if test "x$enable_dri" = xyes; then
1192     # Platform specific settings and drivers to build
1193     case "$host_os" in
1194     linux*)
1195         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1196         DEFINES="$DEFINES -DHAVE_ALIAS"
1197
1198         case "$host_cpu" in
1199         x86_64)
1200             if test "x$DRI_DIRS" = "xyes"; then
1201                 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1202             fi
1203             ;;
1204         powerpc*)
1205             # Build only the drivers for cards that exist on PowerPC.
1206             if test "x$DRI_DIRS" = "xyes"; then
1207                 DRI_DIRS="r200 radeon swrast"
1208             fi
1209             ;;
1210         sparc*)
1211             # Build only the drivers for cards that exist on sparc
1212             if test "x$DRI_DIRS" = "xyes"; then
1213                 DRI_DIRS="r200 radeon swrast"
1214             fi
1215             ;;
1216         esac
1217         ;;
1218     freebsd* | dragonfly* | *netbsd*)
1219         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1220         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1221
1222         if test "x$DRI_DIRS" = "xyes"; then
1223             DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1224         fi
1225         ;;
1226     gnu*)
1227         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1228         DEFINES="$DEFINES -DHAVE_ALIAS"
1229         ;;
1230     solaris*)
1231         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1232         ;;
1233     cygwin*)
1234         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1235         if test "x$DRI_DIRS" = "xyes"; then
1236             DRI_DIRS="swrast"
1237         fi
1238         ;;
1239     esac
1240
1241     # default drivers
1242     if test "x$DRI_DIRS" = "xyes"; then
1243         DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1244     fi
1245
1246     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1247
1248     # Check for expat
1249     if test "x$enable_dri" = xyes; then
1250         EXPAT_INCLUDES=""
1251         EXPAT_LIB=-lexpat
1252         AC_ARG_WITH([expat],
1253             [AS_HELP_STRING([--with-expat=DIR],
1254                 [expat install directory])],[
1255             EXPAT_INCLUDES="-I$withval/include"
1256             CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1257             LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1258             EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1259             ])
1260         AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1261         AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1262             [AC_MSG_ERROR([Expat required for DRI.])])
1263     fi
1264
1265     # libdrm is required for all except swrast
1266     if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1267         if test "x$have_libdrm" != xyes; then
1268             AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1269         fi
1270     fi
1271
1272     # put all the necessary libs together, including possibly libdricore
1273     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1274 fi
1275 AC_SUBST([DRI_DIRS])
1276 AC_SUBST([EXPAT_INCLUDES])
1277 AC_SUBST([DRI_LIB_DEPS])
1278
1279 case $DRI_DIRS in
1280 *i915*|*i965*)
1281     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1282     ;;
1283 esac
1284
1285 case $DRI_DIRS in
1286 *nouveau*)
1287     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1288     ;;
1289 esac
1290
1291 case $DRI_DIRS in
1292 *radeon*|*r200*)
1293     PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1294     ;;
1295 esac
1296
1297
1298 dnl
1299 dnl OSMesa configuration
1300 dnl
1301
1302 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1303 AC_ARG_WITH([osmesa-bits],
1304     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1305         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1306     [osmesa_bits="$withval"],
1307     [osmesa_bits=8])
1308 if test "x$osmesa_bits" != x8; then
1309     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1310         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1311         osmesa_bits=8
1312     fi
1313 fi
1314 case "x$osmesa_bits" in
1315 x8)
1316     OSMESA_LIB="${OSMESA_LIB}"
1317     ;;
1318 x16|x32)
1319     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1320     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1321     ;;
1322 *)
1323     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1324     ;;
1325 esac
1326
1327 if test "x$enable_osmesa" = xyes; then
1328     # only link libraries with osmesa if shared
1329     if test "$enable_static" = no; then
1330         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1331     else
1332         OSMESA_LIB_DEPS=""
1333     fi
1334     OSMESA_MESA_DEPS=""
1335     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1336 fi
1337 AC_SUBST([OSMESA_LIB_DEPS])
1338 AC_SUBST([OSMESA_MESA_DEPS])
1339 AC_SUBST([OSMESA_PC_REQ])
1340 AC_SUBST([OSMESA_PC_LIB_PRIV])
1341
1342 dnl
1343 dnl gbm configuration
1344 dnl
1345 if test "x$enable_gbm" = xauto; then
1346     case "$with_egl_platforms" in
1347         *drm*)
1348             enable_gbm=yes ;;
1349          *)
1350             enable_gbm=no ;;
1351     esac
1352 fi
1353 if test "x$enable_gbm" = xyes; then
1354     SRC_DIRS="$SRC_DIRS gbm"
1355     GBM_BACKEND_DIRS=""
1356
1357     PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1358                       AC_MSG_ERROR([gbm needs udev]))
1359     GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1360
1361     if test "x$enable_dri" = xyes; then
1362         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1363         if test "$SHARED_GLAPI" -eq 0; then
1364             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1365         fi
1366     fi
1367 fi
1368 AC_SUBST([GBM_LIB_DEPS])
1369 AC_SUBST([GBM_BACKEND_DIRS])
1370 GBM_PC_REQ_PRIV="libudev"
1371 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1372 GBM_PC_CFLAGS=
1373 AC_SUBST([GBM_PC_REQ_PRIV])
1374 AC_SUBST([GBM_PC_LIB_PRIV])
1375 AC_SUBST([GBM_PC_CFLAGS])
1376
1377 dnl
1378 dnl EGL configuration
1379 dnl
1380 EGL_CLIENT_APIS=""
1381
1382 if test "x$enable_egl" = xyes; then
1383     SRC_DIRS="$SRC_DIRS egl"
1384     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1385     EGL_DRIVERS_DIRS=""
1386
1387     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1388
1389     if test "$enable_static" != yes; then
1390         # build egl_glx when libGL is built
1391         if test "x$enable_glx" = xyes; then
1392             EGL_DRIVERS_DIRS="glx"
1393         fi
1394
1395         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1396                           [have_libudev=yes],[have_libudev=no])
1397         if test "$have_libudev" = yes; then
1398             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1399         fi
1400         if test "x$enable_dri" = xyes; then
1401             # build egl_dri2 when xcb-dri2 is available
1402             PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1403                           [have_xcb_dri2=yes],[have_xcb_dri2=no])
1404             
1405             if test "$have_xcb_dri2" = yes; then
1406                 EGL_DRIVER_DRI2=dri2
1407                 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1408                 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1409                 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1410                           [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1411             fi
1412         fi
1413
1414         EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1415     fi
1416 fi
1417 AC_SUBST([EGL_LIB_DEPS])
1418 AC_SUBST([EGL_DRIVERS_DIRS])
1419
1420 dnl
1421 dnl EGL Gallium configuration
1422 dnl
1423 if test "x$enable_gallium_egl" = xyes; then
1424     if test "x$with_gallium_drivers" = x; then
1425         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1426     fi
1427     if test "x$enable_egl" = xno; then
1428         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1429     fi
1430     if test "x$have_libdrm" != xyes; then
1431         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1432     fi
1433
1434     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1435     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1436     HAVE_ST_EGL="yes"
1437 fi
1438
1439 dnl
1440 dnl gbm Gallium configuration
1441 dnl
1442 if test "x$enable_gallium_gbm" = xauto; then
1443     case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1444         yesyesyes*drm*)
1445             enable_gallium_gbm=yes ;;
1446          *)
1447             enable_gallium_gbm=no ;;
1448     esac
1449 fi
1450 if test "x$enable_gallium_gbm" = xyes; then
1451     if test "x$with_gallium_drivers" = x; then
1452         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1453     fi
1454     if test "x$enable_gbm" = xno; then
1455         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1456     fi
1457     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1458     if test "x$enable_dri" = xno; then
1459         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1460     fi
1461
1462     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1463     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1464     HAVE_ST_GBM="yes"
1465 fi
1466
1467 dnl
1468 dnl X.Org DDX configuration
1469 dnl
1470 if test "x$enable_xorg" = xyes; then
1471     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1472     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1473     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1474     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1475         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1476         HAVE_XEXTPROTO_71="no")
1477     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1478     HAVE_ST_XORG=yes
1479 fi
1480
1481 dnl
1482 dnl XA configuration
1483 dnl
1484 if test "x$enable_xa" = xyes; then
1485 AC_PROG_AWK
1486 AC_PROG_GREP
1487 AC_CHECK_PROG(NM, nm, "nm")
1488 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1489 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1490 enable_xa=no
1491 fi
1492 fi
1493 if test "x$enable_xa" = xyes; then
1494     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1495     HAVE_ST_XA=yes
1496     AC_SUBST(AWK)
1497     AC_SUBST(GREP)
1498     AC_SUBST(NM)
1499 fi
1500
1501 dnl
1502 dnl OpenVG configuration
1503 dnl
1504 VG_LIB_DEPS=""
1505
1506 if test "x$enable_openvg" = xyes; then
1507     if test "x$enable_egl" = xno; then
1508         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1509     fi
1510     if test "x$with_gallium_drivers" = x; then
1511         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1512     fi
1513     if test "x$enable_gallium_egl" = xno; then
1514         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1515     fi
1516
1517     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1518     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1519     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1520     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1521     HAVE_ST_VEGA=yes
1522 fi
1523
1524 dnl
1525 dnl D3D1X configuration
1526 dnl
1527
1528 if test "x$enable_d3d1x" = xyes; then
1529     if test "x$with_gallium_drivers" = x; then
1530         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1531     fi
1532
1533     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1534     HAVE_ST_D3D1X=yes
1535 fi
1536
1537 dnl
1538 dnl Gallium G3DVL configuration
1539 dnl
1540 AC_ARG_ENABLE([gallium-g3dvl],
1541     [AS_HELP_STRING([--enable-gallium-g3dvl],
1542         [build gallium g3dvl @<:@default=disabled@:>@])],
1543     [enable_gallium_g3dvl="$enableval"],
1544     [enable_gallium_g3dvl=no])
1545 if test "x$enable_gallium_g3dvl" = xyes; then
1546     if test "x$with_gallium_drivers" = x; then
1547         AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1548     fi
1549
1550     if test "x$enable_xvmc" = xauto; then
1551         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1552     fi
1553
1554     if test "x$enable_vdpau" = xauto; then
1555         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1556     fi
1557
1558     if test "x$enable_va" = xauto; then
1559         #don't enable vaapi state tracker even if package exists
1560         #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1561         enable_va=no
1562     fi
1563 fi
1564
1565 if test "x$enable_xvmc" = xyes; then
1566     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6])
1567     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1568     HAVE_ST_XVMC="yes"
1569 fi
1570
1571 if test "x$enable_vdpau" = xyes; then
1572     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
1573     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1574     HAVE_ST_VDPAU="yes"
1575 fi
1576
1577 if test "x$enable_va" = xyes; then
1578     PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1579     AC_MSG_WARN([vaapi state tracker currently unmaintained])
1580     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1581     HAVE_ST_VA="yes"
1582 fi
1583
1584 dnl
1585 dnl GLU configuration
1586 dnl
1587 AC_ARG_ENABLE([glu],
1588     [AS_HELP_STRING([--disable-glu],
1589         [enable OpenGL Utility library @<:@default=enabled@:>@])],
1590     [enable_glu="$enableval"],
1591     [enable_glu=yes])
1592
1593 if test "x$enable_glu" = xyes; then
1594     if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1595         AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1596         enable_glu=no
1597     fi
1598 fi
1599
1600 if test "x$enable_glu" = xyes; then
1601     SRC_DIRS="$SRC_DIRS glu"
1602
1603     if test "x$enable_glx" = xno; then
1604         # Link libGLU to libOSMesa instead of libGL
1605         GLU_LIB_DEPS=""
1606         GLU_PC_REQ="osmesa"
1607         if test "$enable_static" = no; then
1608             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1609         else
1610             GLU_MESA_DEPS=""
1611         fi
1612     else
1613         # If static, empty GLU_LIB_DEPS and add libs for programs to link
1614         GLU_PC_REQ="gl"
1615         GLU_PC_LIB_PRIV="-lm"
1616         if test "$enable_static" = no; then
1617             GLU_LIB_DEPS="-lm"
1618             GLU_MESA_DEPS='-l$(GL_LIB)'
1619         else
1620             GLU_LIB_DEPS=""
1621             GLU_MESA_DEPS=""
1622         fi
1623     fi
1624 fi
1625 if test "$enable_static" = no; then
1626     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1627 fi
1628 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1629 AC_SUBST([GLU_LIB_DEPS])
1630 AC_SUBST([GLU_MESA_DEPS])
1631 AC_SUBST([GLU_PC_REQ])
1632 AC_SUBST([GLU_PC_REQ_PRIV])
1633 AC_SUBST([GLU_PC_LIB_PRIV])
1634 AC_SUBST([GLU_PC_CFLAGS])
1635
1636 AC_SUBST([PROGRAM_DIRS])
1637
1638 dnl
1639 dnl Gallium configuration
1640 dnl
1641 if test "x$with_gallium_drivers" != x; then
1642     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1643 fi
1644
1645 AC_SUBST([LLVM_CFLAGS])
1646 AC_SUBST([LLVM_LIBS])
1647 AC_SUBST([LLVM_LDFLAGS])
1648 AC_SUBST([LLVM_VERSION])
1649
1650 case "x$enable_opengl$enable_gles1$enable_gles2" in
1651 x*yes*)
1652     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1653     ;;
1654 esac
1655
1656 AC_SUBST([VG_LIB_DEPS])
1657 AC_SUBST([EGL_CLIENT_APIS])
1658
1659 AC_ARG_WITH([egl-platforms],
1660     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1661         [comma delimited native platforms libEGL supports, e.g.
1662         "x11,drm" @<:@default=auto@:>@])],
1663     [with_egl_platforms="$withval"],
1664     [with_egl_platforms=yes])
1665
1666 EGL_PLATFORMS=""
1667 WAYLAND_EGL_LIB_DEPS=""
1668
1669 case "$with_egl_platforms" in
1670 yes)
1671     if test "x$enable_egl" = xyes; then
1672         EGL_PLATFORMS="x11"
1673     fi
1674     ;;
1675 *)
1676     if test "x$enable_egl" != xyes; then
1677         AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1678     fi
1679     # verify the requested driver directories exist
1680     egl_platforms=`IFS=', '; echo $with_egl_platforms`
1681     for plat in $egl_platforms; do
1682         test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1683             AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1684         if test "$plat" = "fbdev"; then
1685                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1686         fi
1687         if test "$plat" = "null"; then
1688                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1689         fi
1690         if test "$plat" = "wayland"; then
1691                 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1692                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1693                 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1694                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1695         fi
1696         if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1697                 AC_MSG_ERROR([EGL platform drm needs gbm])
1698         fi
1699         case "$plat$have_libudev" in
1700                 waylandno|drmno)
1701                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1702         esac
1703     done
1704     EGL_PLATFORMS="$egl_platforms"
1705     ;;
1706 esac
1707 AC_SUBST([EGL_PLATFORMS])
1708
1709 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1710 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1711 WAYLAND_EGL_PC_LIB_PRIV=
1712 WAYLAND_EGL_PC_CFLAGS=
1713
1714 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1715 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1716 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1717
1718
1719 AC_ARG_WITH([egl-driver-dir],
1720     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1721                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1722     [EGL_DRIVER_INSTALL_DIR="$withval"],
1723     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1724 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1725
1726 AC_ARG_WITH([xorg-driver-dir],
1727     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1728                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1729     [XORG_DRIVER_INSTALL_DIR="$withval"],
1730     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1731 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1732
1733 AC_ARG_WITH([max-width],
1734     [AS_HELP_STRING([--with-max-width=N],
1735                     [Maximum framebuffer width (4096)])],
1736     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1737      AS_IF([test "${withval}" -gt "4096"],
1738            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1739 )
1740 AC_ARG_WITH([max-height],
1741     [AS_HELP_STRING([--with-max-height=N],
1742                     [Maximum framebuffer height (4096)])],
1743     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1744      AS_IF([test "${withval}" -gt "4096"],
1745            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1746 )
1747
1748 dnl
1749 dnl Gallium LLVM
1750 dnl
1751 AC_ARG_ENABLE([gallium-llvm],
1752     [AS_HELP_STRING([--enable-gallium-llvm],
1753         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1754     [enable_gallium_llvm="$enableval"],
1755     [enable_gallium_llvm=auto])
1756 if test "x$with_gallium_drivers" = x; then
1757     enable_gallium_llvm=no
1758 fi
1759 if test "x$enable_gallium_llvm" = xauto; then
1760     case "$host_cpu" in
1761     i*86|x86_64) enable_gallium_llvm=yes;;
1762     esac
1763 fi
1764 if test "x$enable_gallium_llvm" = xyes; then
1765     AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1766
1767     if test "x$LLVM_CONFIG" != xno; then
1768         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1769         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
1770         LLVM_LIBS="`$LLVM_CONFIG --libs`"
1771
1772         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1773         DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1774         MESA_LLVM=1
1775     else
1776         MESA_LLVM=0
1777     fi
1778 else
1779     MESA_LLVM=0
1780 fi
1781
1782 dnl Directory for VDPAU libs
1783 AC_ARG_WITH([vdpau-libdir],
1784     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1785         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1786     [VDPAU_LIB_INSTALL_DIR="$withval"],
1787     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1788 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1789
1790 dnl Directory for VA libs
1791 AC_ARG_WITH([va-libdir],
1792     [AS_HELP_STRING([--with-va-libdir=DIR],
1793         [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1794     [VA_LIB_INSTALL_DIR="$withval"],
1795     [VA_LIB_INSTALL_DIR='${libdir}/va'])
1796 AC_SUBST([VA_LIB_INSTALL_DIR])
1797
1798 dnl
1799 dnl Gallium helper functions
1800 dnl
1801 gallium_check_st() {
1802     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1803          test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1804          test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1805          if test "x$have_libdrm" != xyes; then
1806             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1807          fi
1808          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1809     fi
1810     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1811          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1812     fi
1813     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1814          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1815     fi
1816     if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1817          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1818     fi
1819     if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1820          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1821          NEED_G3DVL_DRI="yes"
1822     fi
1823     if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1824          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1825          NEED_G3DVL_DRI="yes"
1826     fi
1827     if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1828          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1829          NEED_G3DVL_DRI="yes"
1830     fi
1831 }
1832
1833 gallium_require_llvm() {
1834     if test "x$MESA_LLVM" = x0; then
1835         case "$host_cpu" in
1836         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1837         esac
1838     fi
1839 }
1840
1841 dnl Gallium drivers
1842 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1843 if test "x$with_gallium_drivers" != x; then
1844     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1845     for driver in $gallium_drivers; do
1846         case "x$driver" in
1847         xsvga)
1848             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1849             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1850             ;;
1851         xi915)
1852             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1853             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1854             if test "x$MESA_LLVM" = x1; then
1855                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1856             fi
1857             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1858             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1859             ;;
1860         xr300)
1861             gallium_require_llvm "Gallium R300"
1862             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1863             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1864             ;;
1865         xr600)
1866             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1867             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1868             ;;
1869         xnouveau)
1870             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1871             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1872             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1873             ;;
1874         xswrast)
1875             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1876             if test "x$MESA_LLVM" = x1; then
1877                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1878             fi
1879
1880             if test "x$HAVE_ST_DRI" = xyes; then
1881                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1882             fi
1883             if test "x$HAVE_ST_VDPAU" = xyes; then
1884                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1885             fi
1886             if test "x$HAVE_ST_XVMC" = xyes; then
1887                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1888             fi
1889             if test "x$HAVE_ST_VA" = xyes; then
1890                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1891             fi
1892             if test "x$HAVE_ST_VDPAU" = xyes ||
1893                test "x$HAVE_ST_XVMC" = xyes ||
1894                test "x$HAVE_ST_VA" = xyes; then
1895                if test "x$HAVE_WINSYS_XLIB" != xyes; then
1896                   GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1897                fi
1898             fi
1899             ;;
1900         *)
1901             AC_MSG_ERROR([Unknown Gallium driver: $driver])
1902             ;;
1903         esac
1904     done
1905 fi
1906
1907 if test "x$NEED_G3DVL_DRI" = xyes; then
1908     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1909 fi
1910
1911 dnl prepend CORE_DIRS to SRC_DIRS
1912 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1913
1914 dnl Restore LDFLAGS and CPPFLAGS
1915 LDFLAGS="$_SAVE_LDFLAGS"
1916 CPPFLAGS="$_SAVE_CPPFLAGS"
1917
1918 dnl Add user CFLAGS and CXXFLAGS
1919 CFLAGS="$CFLAGS $USER_CFLAGS"
1920 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1921
1922 dnl Substitute the config
1923 AC_CONFIG_FILES([configs/autoconf
1924                 tests/Makefile
1925                 tests/glx/Makefile])
1926
1927 dnl Replace the configs/current symlink
1928 AC_CONFIG_COMMANDS([configs],[
1929 if test -f configs/current || test -L configs/current; then
1930     rm -f configs/current
1931 fi
1932 ln -s autoconf configs/current
1933 ])
1934
1935 dnl Sort the dirs alphabetically
1936 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1937 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1938 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1939 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1940
1941 AC_OUTPUT
1942
1943 dnl
1944 dnl Output some configuration info for the user
1945 dnl
1946 echo ""
1947 echo "        prefix:          $prefix"
1948 echo "        exec_prefix:     $exec_prefix"
1949 echo "        libdir:          $libdir"
1950 echo "        includedir:      $includedir"
1951
1952 dnl API info
1953 echo ""
1954 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1955 echo "        OpenVG:          $enable_openvg"
1956
1957 dnl Driver info
1958 echo ""
1959 if test "x$enable_osmesa" != xno; then
1960         echo "        OSMesa:          lib$OSMESA_LIB"
1961 else
1962         echo "        OSMesa:          no"
1963 fi
1964
1965 if test "x$enable_dri" != xno; then
1966         # cleanup the drivers var
1967         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1968         if test "x$DRI_DIRS" = x; then
1969             echo "        DRI drivers:     no"
1970         else
1971             echo "        DRI drivers:     $dri_dirs"
1972         fi
1973         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1974         echo "        Shared dricore:  $enable_dricore"
1975 fi
1976
1977 case "x$enable_glx$enable_xlib_glx" in
1978 xyesyes)
1979     echo "        GLX:             Xlib-based"
1980     ;;
1981 xyesno)
1982     echo "        GLX:             DRI-based"
1983     ;;
1984 *)
1985     echo "        GLX:             $enable_glx"
1986     ;;
1987 esac
1988
1989 echo ""
1990 echo "        GLU:             $enable_glu"
1991
1992 dnl EGL
1993 echo ""
1994 echo "        EGL:             $enable_egl"
1995 if test "$enable_egl" = yes; then
1996     echo "        EGL platforms:   $EGL_PLATFORMS"
1997
1998     egl_drivers=""
1999     for d in $EGL_DRIVERS_DIRS; do
2000         egl_drivers="$egl_drivers builtin:egl_$d"
2001     done
2002
2003     if test "x$HAVE_ST_EGL" = xyes; then
2004         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2005         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2006     else
2007         echo "        EGL drivers:    $egl_drivers"
2008     fi
2009 fi
2010
2011 echo ""
2012 if test "x$MESA_LLVM" = x1; then
2013     echo "        llvm:            yes"
2014     echo "        llvm-config:     $LLVM_CONFIG"
2015     echo "        llvm-version:    $LLVM_VERSION"
2016 else
2017     echo "        llvm:            no"
2018 fi
2019
2020 echo ""
2021 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2022     echo "        Gallium:         yes"
2023     echo "        Gallium dirs:    $GALLIUM_DIRS"
2024     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2025     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2026     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2027     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2028 else
2029     echo "        Gallium:         no"
2030 fi
2031
2032
2033 dnl Libraries
2034 echo ""
2035 echo "        Shared libs:     $enable_shared"
2036 echo "        Static libs:     $enable_static"
2037
2038 dnl Compiler options
2039 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2040 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2041     $SED 's/^ *//;s/  */ /;s/ *$//'`
2042 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2043     $SED 's/^ *//;s/  */ /;s/ *$//'`
2044 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2045 echo ""
2046 echo "        CFLAGS:          $cflags"
2047 echo "        CXXFLAGS:        $cxxflags"
2048 echo "        Macros:          $defines"
2049 echo ""
2050 echo "        PYTHON2:         $PYTHON2"
2051
2052 echo ""
2053 echo "        Run '${MAKE-make}' to build Mesa"
2054 echo ""