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