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