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