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