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