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