configure.ac: remove deprecated EGL options
[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 Options for APIs
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([openvg],
527 [AS_HELP_STRING([--enable-openvg],
528 [enable support for OpenVG API @<:@default=no@:>@])],
529 [enable_openvg="$enableval"],
530 [enable_openvg=no])
531 AC_ARG_ENABLE([xorg],
532 [AS_HELP_STRING([--enable-xorg],
533 [enable support for X.Org DDX API @<:@default=no@:>@])],
534 [enable_xorg="$enableval"],
535 [enable_xorg=no])
536 AC_ARG_ENABLE([d3d1x],
537 [AS_HELP_STRING([--enable-d3d1x],
538 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
539 [enable_d3d1x="$enableval"],
540 [enable_d3d1x=no])
541 AC_ARG_ENABLE([egl],
542 [AS_HELP_STRING([--disable-egl],
543 [disable EGL library @<:@default=enabled@:>@])],
544 [enable_egl="$enableval"],
545 [enable_egl=yes])
546 AC_ARG_ENABLE([gallium_egl],
547 [AS_HELP_STRING([--enable-gallium-egl],
548 [enable optional EGL state tracker (not required
549 for EGL support in Gallium with OpenGL and OpenGL ES)
550 @<:@default=disable@:>@])],
551 [enable_gallium_egl="$enableval"],
552 [enable_gallium_egl=no])
553
554 # Option for Gallium drivers
555 GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
556
557 AC_ARG_WITH([gallium-drivers],
558 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
559 [comma delimited Gallium drivers list, e.g.
560 "i915,i965,nouveau,r300,r600,svga,swrast"
561 @<:@default=r300,r600,swrast@:>@])],
562 [with_gallium_drivers="$withval"],
563 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
564
565 if test "x$enable_opengl" = xno -a \
566 "x$enable_gles1" = xno -a \
567 "x$enable_gles2" = xno -a \
568 "x$enable_openvg" = xno -a \
569 "x$enable_xorg" = xno -a \
570 "x$enable_d3d1x" = xno; then
571 AC_MSG_ERROR([at least one API should be enabled])
572 fi
573
574 API_DEFINES=""
575 if test "x$enable_opengl" = xno; then
576 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
577 else
578 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
579 fi
580 if test "x$enable_gles1" = xyes; then
581 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
582 fi
583 if test "x$enable_gles2" = xyes; then
584 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
585 fi
586 AC_SUBST([API_DEFINES])
587
588 AC_ARG_ENABLE([shared-glapi],
589 [AS_HELP_STRING([--enable-shared-glapi],
590 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
591 [enable_shared_glapi="$enableval"],
592 [enable_shared_glapi=no])
593
594 SHARED_GLAPI="0"
595 if test "x$enable_shared_glapi" = xyes; then
596 SHARED_GLAPI="1"
597 fi
598 AC_SUBST([SHARED_GLAPI])
599
600 dnl
601 dnl Driver configuration. Options are xlib, dri and osmesa right now.
602 dnl More later: fbdev, ...
603 dnl
604 default_driver="xlib"
605
606 case "$host_os" in
607 linux*)
608 case "$host_cpu" in
609 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
610 esac
611 ;;
612 *freebsd* | dragonfly* | *netbsd*)
613 case "$host_cpu" in
614 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
615 esac
616 ;;
617 esac
618
619 if test "x$enable_opengl" = xno; then
620 default_driver="no"
621 fi
622
623 AC_ARG_WITH([driver],
624 [AS_HELP_STRING([--with-driver=DRIVER],
625 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
626 [mesa_driver="$withval"],
627 [mesa_driver="$default_driver"])
628 dnl Check for valid option
629 case "x$mesa_driver" in
630 xxlib|xdri|xosmesa)
631 if test "x$enable_opengl" = xno; then
632 AC_MSG_ERROR([Driver '$mesa_driver' requires OpenGL enabled])
633 fi
634 ;;
635 xno)
636 ;;
637 *)
638 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
639 ;;
640 esac
641
642 dnl
643 dnl Driver specific build directories
644 dnl
645
646 dnl this variable will be prepended to SRC_DIRS and is not exported
647 CORE_DIRS=""
648
649 SRC_DIRS=""
650 GLU_DIRS="sgi"
651 GALLIUM_DIRS="auxiliary drivers state_trackers"
652 GALLIUM_TARGET_DIRS=""
653 GALLIUM_WINSYS_DIRS="sw"
654 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug noop identity"
655 GALLIUM_STATE_TRACKERS_DIRS=""
656
657 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
658 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
659 x*yes*)
660 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
661 ;;
662 esac
663
664 # build glapi if OpenGL is enabled
665 if test "x$enable_opengl" = xyes; then
666 CORE_DIRS="$CORE_DIRS mapi/glapi"
667 fi
668
669 # build es1api if OpenGL ES 1.x is enabled
670 if test "x$enable_gles1" = xyes; then
671 CORE_DIRS="$CORE_DIRS mapi/es1api"
672 fi
673
674 # build es2api if OpenGL ES 2.x is enabled
675 if test "x$enable_gles2" = xyes; then
676 CORE_DIRS="$CORE_DIRS mapi/es2api"
677 fi
678
679 # build glsl and mesa if OpenGL or OpenGL ES is enabled
680 case "x$enable_opengl$enable_gles1$enable_gles2" in
681 x*yes*)
682 CORE_DIRS="$CORE_DIRS glsl mesa"
683 ;;
684 esac
685
686 case "$mesa_driver" in
687 xlib)
688 DRIVER_DIRS="x11"
689 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
690 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
691 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
692 ;;
693 dri)
694 SRC_DIRS="$SRC_DIRS glx"
695 DRIVER_DIRS="dri"
696 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
697 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
698 HAVE_ST_DRI="yes"
699 ;;
700 osmesa)
701 DRIVER_DIRS="osmesa"
702 ;;
703 no)
704 DRIVER_DRIS=""
705 ;;
706 esac
707 AC_SUBST([SRC_DIRS])
708 AC_SUBST([GLU_DIRS])
709 AC_SUBST([DRIVER_DIRS])
710 AC_SUBST([GALLIUM_DIRS])
711 AC_SUBST([GALLIUM_TARGET_DIRS])
712 AC_SUBST([GALLIUM_WINSYS_DIRS])
713 AC_SUBST([GALLIUM_DRIVERS_DIRS])
714 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
715 AC_SUBST([MESA_LLVM])
716
717 dnl
718 dnl Find out if X is available. The variable have_x is set if libX11 is
719 dnl found to mimic AC_PATH_XTRA.
720 dnl
721 if test -n "$PKG_CONFIG"; then
722 AC_MSG_CHECKING([pkg-config files for X11 are available])
723 PKG_CHECK_EXISTS([x11],[
724 x11_pkgconfig=yes
725 have_x=yes
726 ],[
727 x11_pkgconfig=no
728 ])
729 AC_MSG_RESULT([$x11_pkgconfig])
730 else
731 x11_pkgconfig=no
732 fi
733 dnl Use the autoconf macro if no pkg-config files
734 if test "$x11_pkgconfig" = yes; then
735 PKG_CHECK_MODULES([X11], [x11])
736 else
737 AC_PATH_XTRA
738 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
739 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
740 AC_SUBST([X11_CFLAGS])
741 AC_SUBST([X11_LIBS])
742 fi
743
744 dnl Try to tell the user that the --x-* options are only used when
745 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
746 m4_divert_once([HELP_BEGIN],
747 [These options are only used when the X libraries cannot be found by the
748 pkg-config utility.])
749
750 dnl We need X for xlib and dri, so bomb now if it's not found
751 case "$mesa_driver" in
752 xlib|dri)
753 if test "$no_x" = yes; then
754 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
755 fi
756 ;;
757 esac
758
759 dnl XCB - this is only used for GLX right now
760 AC_ARG_ENABLE([xcb],
761 [AS_HELP_STRING([--enable-xcb],
762 [use XCB for GLX @<:@default=disabled@:>@])],
763 [enable_xcb="$enableval"],
764 [enable_xcb=no])
765 if test "x$enable_xcb" = xyes; then
766 DEFINES="$DEFINES -DUSE_XCB"
767 else
768 enable_xcb=no
769 fi
770
771 dnl Direct rendering or just indirect rendering
772 case "$host_os" in
773 gnu*)
774 dnl Disable by default on GNU/Hurd
775 driglx_direct_default="no"
776 ;;
777 cygwin*)
778 dnl Disable by default on cygwin
779 driglx_direct_default="no"
780 ;;
781 *)
782 driglx_direct_default="yes"
783 ;;
784 esac
785 AC_ARG_ENABLE([driglx-direct],
786 [AS_HELP_STRING([--disable-driglx-direct],
787 [enable direct rendering in GLX and EGL for DRI \
788 @<:@default=auto@:>@])],
789 [driglx_direct="$enableval"],
790 [driglx_direct="$driglx_direct_default"])
791
792 dnl
793 dnl libGL configuration per driver
794 dnl
795 case "$mesa_driver" in
796 xlib)
797 if test "$x11_pkgconfig" = yes; then
798 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
799 GL_PC_REQ_PRIV="x11 xext"
800 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
801 GL_LIB_DEPS="$XLIBGL_LIBS"
802 else
803 # should check these...
804 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
805 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
806 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
807 GL_PC_CFLAGS="$X11_INCLUDES"
808 fi
809 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
810 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
811
812 # if static, move the external libraries to the programs
813 # and empty the libraries for libGL
814 if test "$enable_static" = yes; then
815 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
816 GL_LIB_DEPS=""
817 fi
818 ;;
819 dri|no) # these checks are still desired when there is no mesa_driver
820 # DRI must be shared, I think
821 if test "$enable_static" = yes; then
822 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
823 fi
824
825 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
826 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
827 DRI_PC_REQ_PRIV=""
828
829 if test x"$driglx_direct" = xyes; then
830 # Check for libdrm
831 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
832 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
833 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
834 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
835 fi
836
837 # find the DRI deps for libGL
838 if test "$x11_pkgconfig" = yes; then
839 dri_modules="x11 xext xdamage xfixes"
840
841 # add xf86vidmode if available
842 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
843 if test "$HAVE_XF86VIDMODE" = yes ; then
844 dri_modules="$dri_modules xxf86vm"
845 fi
846
847 # add xcb modules if necessary
848 if test "$enable_xcb" = yes; then
849 dri_modules="$dri_modules x11-xcb xcb-glx"
850 fi
851
852 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
853 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
854 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
855 GL_LIB_DEPS="$DRIGL_LIBS"
856 else
857 # should check these...
858 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
859 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
860 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
861 GL_PC_CFLAGS="$X11_INCLUDES"
862
863 # XCB can only be used from pkg-config
864 if test "$enable_xcb" = yes; then
865 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
866 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
867 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
868 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
869 fi
870 fi
871
872 # need DRM libs, -lpthread, etc.
873 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
874 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
875 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
876 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
877 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
878 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
879 ;;
880 osmesa)
881 # No libGL for osmesa
882 GL_LIB_DEPS=""
883 ;;
884 esac
885 AC_SUBST([GL_LIB_DEPS])
886 AC_SUBST([GL_PC_REQ_PRIV])
887 AC_SUBST([GL_PC_LIB_PRIV])
888 AC_SUBST([GL_PC_CFLAGS])
889 AC_SUBST([DRI_PC_REQ_PRIV])
890 AC_SUBST([GLESv1_CM_LIB_DEPS])
891 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
892 AC_SUBST([GLESv2_LIB_DEPS])
893 AC_SUBST([GLESv2_PC_LIB_PRIV])
894
895 GLAPI_LIB_DEPS="-lpthread"
896 AC_SUBST([GLAPI_LIB_DEPS])
897
898
899 dnl Setup default DRI CFLAGS
900 DRI_CFLAGS='$(CFLAGS)'
901 DRI_CXXFLAGS='$(CXXFLAGS)'
902 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
903 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
904
905 AC_ARG_ENABLE([shared-dricore],
906 [AS_HELP_STRING([--enable-shared-dricore],
907 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
908 [enable_dricore="$enableval"],
909 [enable_dricore=no])
910 if test "$mesa_driver" = dri ; then
911 if test "$enable_dricore" = yes ; then
912 if test "$GCC$GXX" != yesyes ; then
913 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
914 enable_dricore=no
915 else
916 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
917 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
918 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
919 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
920 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
921 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
922 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
923 fi
924 fi
925 fi
926 AC_SUBST([DRICORE_LIBS])
927 AC_SUBST([DRICORE_GLSL_LIBS])
928 AC_SUBST([DRICORE_LIB_DEPS])
929 AC_SUBST([DRI_CXXFLAGS])
930 AC_SUBST([DRI_CFLAGS])
931 AC_SUBST([MESA_MODULES])
932
933 AC_SUBST([HAVE_XF86VIDMODE])
934
935 PKG_CHECK_MODULES([LIBDRM_RADEON],
936 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
937 HAVE_LIBDRM_RADEON=yes,
938 HAVE_LIBDRM_RADEON=no)
939
940 dnl
941 dnl More X11 setup
942 dnl
943 if test "$mesa_driver" = xlib; then
944 DEFINES="$DEFINES -DUSE_XSHM"
945 fi
946
947 dnl
948 dnl TLS detection
949 dnl
950
951 AC_ARG_ENABLE([glx-tls],
952 [AS_HELP_STRING([--enable-glx-tls],
953 [enable TLS support in GLX @<:@default=disabled@:>@])],
954 [GLX_USE_TLS="$enableval"],
955 [GLX_USE_TLS=no])
956 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
957
958 AS_IF([test "x$GLX_USE_TLS" = xyes],
959 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
960
961 dnl
962 dnl More DRI setup
963 dnl
964 dnl Directory for DRI drivers
965 AC_ARG_WITH([dri-driverdir],
966 [AS_HELP_STRING([--with-dri-driverdir=DIR],
967 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
968 [DRI_DRIVER_INSTALL_DIR="$withval"],
969 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
970 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
971 dnl Extra search path for DRI drivers
972 AC_ARG_WITH([dri-searchpath],
973 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
974 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
975 [DRI_DRIVER_SEARCH_DIR="$withval"],
976 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
977 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
978 dnl Which drivers to build - default is chosen by platform
979 AC_ARG_WITH([dri-drivers],
980 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
981 [comma delimited DRI drivers list, e.g.
982 "swrast,i965,radeon" @<:@default=auto@:>@])],
983 [with_dri_drivers="$withval"],
984 [with_dri_drivers=yes])
985 if test "x$with_dri_drivers" = x; then
986 with_dri_drivers=no
987 fi
988
989 dnl If $with_dri_drivers is yes, directories will be added through
990 dnl platform checks
991 DRI_DIRS=""
992 case "$with_dri_drivers" in
993 no) ;;
994 yes)
995 DRI_DIRS="yes"
996 ;;
997 *)
998 # verify the requested driver directories exist
999 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1000 for driver in $dri_drivers; do
1001 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1002 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1003 done
1004 DRI_DIRS="$dri_drivers"
1005 ;;
1006 esac
1007
1008 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1009 if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
1010 # Platform specific settings and drivers to build
1011 case "$host_os" in
1012 linux*)
1013 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1014 if test "x$driglx_direct" = xyes; then
1015 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1016 fi
1017 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1018
1019 case "$host_cpu" in
1020 x86_64)
1021 # sis is missing because they have not be converted to use
1022 # the new interface. i810 are missing because there is no
1023 # x86-64 system where they could *ever* be used.
1024 if test "x$DRI_DIRS" = "xyes"; then
1025 DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1026 radeon savage tdfx unichrome swrast"
1027 fi
1028 ;;
1029 powerpc*)
1030 # Build only the drivers for cards that exist on PowerPC.
1031 # At some point MGA will be added, but not yet.
1032 if test "x$DRI_DIRS" = "xyes"; then
1033 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
1034 fi
1035 ;;
1036 sparc*)
1037 # Build only the drivers for cards that exist on sparc`
1038 if test "x$DRI_DIRS" = "xyes"; then
1039 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
1040 fi
1041 ;;
1042 esac
1043 ;;
1044 freebsd* | dragonfly* | *netbsd*)
1045 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1046 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1047 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1048 if test "x$driglx_direct" = xyes; then
1049 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1050 fi
1051
1052 if test "x$DRI_DIRS" = "xyes"; then
1053 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1054 radeon tdfx unichrome savage sis swrast"
1055 fi
1056 ;;
1057 gnu*)
1058 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1059 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1060 ;;
1061 solaris*)
1062 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1063 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1064 if test "x$driglx_direct" = xyes; then
1065 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1066 fi
1067 ;;
1068 cygwin*)
1069 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1070 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1071 if test "x$driglx_direct" = xyes; then
1072 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1073 fi
1074 if test "x$DRI_DIRS" = "xyes"; then
1075 DRI_DIRS="swrast"
1076 fi
1077 ;;
1078 esac
1079
1080 # default drivers
1081 if test "x$DRI_DIRS" = "xyes"; then
1082 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
1083 savage sis tdfx unichrome swrast"
1084 fi
1085
1086 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1087
1088 # Check for expat
1089 if test "$mesa_driver" = dri; then
1090 EXPAT_INCLUDES=""
1091 EXPAT_LIB=-lexpat
1092 AC_ARG_WITH([expat],
1093 [AS_HELP_STRING([--with-expat=DIR],
1094 [expat install directory])],[
1095 EXPAT_INCLUDES="-I$withval/include"
1096 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1097 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1098 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1099 ])
1100 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1101 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1102 [AC_MSG_ERROR([Expat required for DRI.])])
1103 fi
1104
1105 # put all the necessary libs together, including possibly libdricore
1106 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1107 fi
1108 AC_SUBST([DRI_DIRS])
1109 AC_SUBST([EXPAT_INCLUDES])
1110 AC_SUBST([DRI_LIB_DEPS])
1111
1112 case $DRI_DIRS in
1113 *i915*|*i965*)
1114 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1115 ;;
1116 esac
1117
1118 case $DRI_DIRS in
1119 *nouveau*)
1120 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1121 ;;
1122 esac
1123
1124 case $DRI_DIRS in
1125 *radeon*|*r200*|*r300*|*r600*)
1126 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1127 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1128 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1129 fi
1130 ;;
1131 esac
1132 AC_SUBST([RADEON_CFLAGS])
1133 AC_SUBST([RADEON_LDFLAGS])
1134
1135
1136 dnl
1137 dnl OSMesa configuration
1138 dnl
1139 if test "$mesa_driver" = xlib; then
1140 default_gl_osmesa=yes
1141 else
1142 default_gl_osmesa=no
1143 fi
1144 AC_ARG_ENABLE([gl-osmesa],
1145 [AS_HELP_STRING([--enable-gl-osmesa],
1146 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
1147 [gl_osmesa="$enableval"],
1148 [gl_osmesa="$default_gl_osmesa"])
1149 if test "x$gl_osmesa" = xyes; then
1150 if test "x$enable_opengl" = xno; then
1151 AC_MSG_ERROR([OpenGL is not available for OSMesa driver])
1152 fi
1153 if test "$mesa_driver" = osmesa; then
1154 AC_MSG_ERROR([libGL is not available for OSMesa driver])
1155 else
1156 DRIVER_DIRS="$DRIVER_DIRS osmesa"
1157 fi
1158 fi
1159
1160 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1161 AC_ARG_WITH([osmesa-bits],
1162 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1163 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1164 [osmesa_bits="$withval"],
1165 [osmesa_bits=8])
1166 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
1167 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
1168 osmesa_bits=8
1169 fi
1170 case "x$osmesa_bits" in
1171 x8)
1172 OSMESA_LIB=OSMesa
1173 ;;
1174 x16|x32)
1175 OSMESA_LIB="OSMesa$osmesa_bits"
1176 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1177 ;;
1178 *)
1179 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1180 ;;
1181 esac
1182 AC_SUBST([OSMESA_LIB])
1183
1184 case "$DRIVER_DIRS" in
1185 *osmesa*)
1186 # only link libraries with osmesa if shared
1187 if test "$enable_static" = no; then
1188 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1189 else
1190 OSMESA_LIB_DEPS=""
1191 fi
1192 OSMESA_MESA_DEPS=""
1193 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1194 ;;
1195 esac
1196 AC_SUBST([OSMESA_LIB_DEPS])
1197 AC_SUBST([OSMESA_MESA_DEPS])
1198 AC_SUBST([OSMESA_PC_REQ])
1199 AC_SUBST([OSMESA_PC_LIB_PRIV])
1200
1201 dnl
1202 dnl EGL configuration
1203 dnl
1204 EGL_CLIENT_APIS=""
1205
1206 if test "x$enable_egl" = xno; then
1207 if test "x$mesa_driver" = xno; then
1208 AC_MSG_ERROR([cannot disable EGL when there is no mesa driver])
1209 fi
1210 fi
1211 if test "x$enable_egl" = xyes; then
1212 SRC_DIRS="$SRC_DIRS egl"
1213 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1214 EGL_DRIVERS_DIRS=""
1215
1216 if test "$enable_static" != yes; then
1217 # build egl_glx when libGL is built
1218 if test "$mesa_driver" = xlib -o "$mesa_driver" = dri; then
1219 EGL_DRIVERS_DIRS="glx"
1220 fi
1221
1222 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1223 [have_libudev=yes],[have_libudev=no])
1224 if test "$have_libudev" = yes; then
1225 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1226 fi
1227 if test "$mesa_driver" = dri; then
1228 # build egl_dri2 when xcb-dri2 is available
1229 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1230 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1231
1232 if test "$have_xcb_dri2" = yes; then
1233 EGL_DRIVER_DRI2=dri2
1234 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1235 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1236 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1237 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1238 fi
1239 fi
1240
1241 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1242 fi
1243 fi
1244 AC_SUBST([EGL_LIB_DEPS])
1245 AC_SUBST([EGL_DRIVERS_DIRS])
1246
1247 dnl
1248 dnl EGL Gallium configuration
1249 dnl
1250 if test "x$enable_gallium_egl" = xyes; then
1251 if test "x$with_gallium_drivers" = x; then
1252 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1253 fi
1254 if test "x$enable_egl" = xno; then
1255 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1256 fi
1257
1258 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1259 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1260 HAVE_ST_EGL="yes"
1261 fi
1262
1263 dnl
1264 dnl X.Org DDX configuration
1265 dnl
1266 if test "x$enable_xorg" = xyes; then
1267 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1268 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1269 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1270 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1271 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1272 HAVE_XEXTPROTO_71="no")
1273 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1274 HAVE_ST_XORG=yes
1275 fi
1276
1277 dnl
1278 dnl OpenVG configuration
1279 dnl
1280 VG_LIB_DEPS=""
1281
1282 if test "x$enable_openvg" = xyes; then
1283 if test "x$enable_egl" = xno; then
1284 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1285 fi
1286 if test "x$with_gallium_drivers" = x; then
1287 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1288 fi
1289 if test "x$enable_gallium_egl" = xno; then
1290 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1291 fi
1292
1293 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1294 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1295 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1296 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1297 HAVE_ST_VEGA=yes
1298 fi
1299
1300 dnl
1301 dnl D3D1X configuration
1302 dnl
1303
1304 if test "x$enable_d3d1x" = xyes; then
1305 if test "x$with_gallium_drivers" = x; then
1306 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1307 fi
1308
1309 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1310 HAVE_ST_D3D1X=yes
1311 fi
1312
1313 dnl
1314 dnl GLU configuration
1315 dnl
1316 AC_ARG_ENABLE([glu],
1317 [AS_HELP_STRING([--disable-glu],
1318 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1319 [enable_glu="$enableval"],
1320 [enable_glu=yes])
1321
1322 if test "x$enable_glu" = xyes -a "x$mesa_driver" = xno; then
1323 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1324 enable_glu=no
1325 fi
1326
1327 if test "x$enable_glu" = xyes; then
1328 SRC_DIRS="$SRC_DIRS glu"
1329
1330 case "$mesa_driver" in
1331 osmesa)
1332 # Link libGLU to libOSMesa instead of libGL
1333 GLU_LIB_DEPS=""
1334 GLU_PC_REQ="osmesa"
1335 if test "$enable_static" = no; then
1336 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1337 else
1338 GLU_MESA_DEPS=""
1339 fi
1340 ;;
1341 *)
1342 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1343 GLU_PC_REQ="gl"
1344 GLU_PC_LIB_PRIV="-lm"
1345 if test "$enable_static" = no; then
1346 GLU_LIB_DEPS="-lm"
1347 GLU_MESA_DEPS='-l$(GL_LIB)'
1348 else
1349 GLU_LIB_DEPS=""
1350 GLU_MESA_DEPS=""
1351 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1352 fi
1353 ;;
1354 esac
1355 fi
1356 if test "$enable_static" = no; then
1357 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1358 fi
1359 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1360 AC_SUBST([GLU_LIB_DEPS])
1361 AC_SUBST([GLU_MESA_DEPS])
1362 AC_SUBST([GLU_PC_REQ])
1363 AC_SUBST([GLU_PC_REQ_PRIV])
1364 AC_SUBST([GLU_PC_LIB_PRIV])
1365 AC_SUBST([GLU_PC_CFLAGS])
1366
1367 dnl
1368 dnl GLw configuration
1369 dnl
1370 AC_ARG_ENABLE([glw],
1371 [AS_HELP_STRING([--disable-glw],
1372 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1373 [enable_glw="$enableval"],
1374 [enable_glw=yes])
1375 dnl Don't build GLw on osmesa
1376 if test "x$enable_glw" = xyes; then
1377 case "$mesa_driver" in
1378 osmesa|no)
1379 AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
1380 enable_glw=no
1381 ;;
1382 esac
1383 fi
1384 AC_ARG_ENABLE([motif],
1385 [AS_HELP_STRING([--enable-motif],
1386 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1387 [enable_motif="$enableval"],
1388 [enable_motif=no])
1389
1390 if test "x$enable_glw" = xyes; then
1391 SRC_DIRS="$SRC_DIRS glw"
1392 if test "$x11_pkgconfig" = yes; then
1393 PKG_CHECK_MODULES([GLW],[x11 xt])
1394 GLW_PC_REQ_PRIV="x11 xt"
1395 GLW_LIB_DEPS="$GLW_LIBS"
1396 else
1397 # should check these...
1398 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1399 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1400 GLW_PC_CFLAGS="$X11_INCLUDES"
1401 fi
1402
1403 GLW_SOURCES="GLwDrawA.c"
1404 MOTIF_CFLAGS=
1405 if test "x$enable_motif" = xyes; then
1406 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1407 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1408 if test "x$MOTIF_CONFIG" != xno; then
1409 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1410 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1411 else
1412 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1413 [AC_MSG_ERROR([Can't locate Motif headers])])
1414 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1415 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1416 fi
1417 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1418 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1419 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1420 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1421 fi
1422
1423 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1424 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1425 if test "$enable_static" = no; then
1426 GLW_MESA_DEPS='-l$(GL_LIB)'
1427 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1428 else
1429 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1430 GLW_LIB_DEPS=""
1431 GLW_MESA_DEPS=""
1432 fi
1433 fi
1434 AC_SUBST([GLW_LIB_DEPS])
1435 AC_SUBST([GLW_MESA_DEPS])
1436 AC_SUBST([GLW_SOURCES])
1437 AC_SUBST([MOTIF_CFLAGS])
1438 AC_SUBST([GLW_PC_REQ_PRIV])
1439 AC_SUBST([GLW_PC_LIB_PRIV])
1440 AC_SUBST([GLW_PC_CFLAGS])
1441
1442 dnl
1443 dnl GLUT configuration
1444 dnl
1445 if test -f "$srcdir/include/GL/glut.h"; then
1446 default_glut=yes
1447 else
1448 default_glut=no
1449 fi
1450 AC_ARG_ENABLE([glut],
1451 [AS_HELP_STRING([--disable-glut],
1452 [enable GLUT library @<:@default=enabled if source available@:>@])],
1453 [enable_glut="$enableval"],
1454 [enable_glut="$default_glut"])
1455
1456 dnl Don't build glut on osmesa
1457 if test "x$enable_glut" = xyes; then
1458 case "$mesa_driver" in
1459 osmesa|no)
1460 AC_MSG_NOTICE([Disabling glut since there is no OpenGL driver])
1461 enable_glut=no
1462 ;;
1463 esac
1464 fi
1465 dnl Can't build glut if GLU not available
1466 if test "x$enable_glu$enable_glut" = xnoyes; then
1467 AC_MSG_WARN([Disabling glut since GLU is disabled])
1468 enable_glut=no
1469 fi
1470
1471 if test "x$enable_glut" = xyes; then
1472 SRC_DIRS="$SRC_DIRS glut/glx"
1473 if test "$x11_pkgconfig" = yes; then
1474 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1475 GLUT_PC_REQ_PRIV="x11 xmu xi"
1476 GLUT_LIB_DEPS="$GLUT_LIBS"
1477 else
1478 # should check these...
1479 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1480 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1481 GLUT_PC_CFLAGS="$X11_INCLUDES"
1482 fi
1483 if test "x$GCC" = xyes; then
1484 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1485 fi
1486 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1487 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1488
1489 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1490 if test "$enable_static" = no; then
1491 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1492 else
1493 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1494 GLUT_LIB_DEPS=""
1495 GLUT_MESA_DEPS=""
1496 fi
1497 fi
1498 AC_SUBST([GLUT_LIB_DEPS])
1499 AC_SUBST([GLUT_MESA_DEPS])
1500 AC_SUBST([GLUT_CFLAGS])
1501 AC_SUBST([GLUT_PC_REQ_PRIV])
1502 AC_SUBST([GLUT_PC_LIB_PRIV])
1503 AC_SUBST([GLUT_PC_CFLAGS])
1504
1505 dnl
1506 dnl Program library dependencies
1507 dnl Only libm is added here if necessary as the libraries should
1508 dnl be pulled in by the linker
1509 dnl
1510 if test "x$APP_LIB_DEPS" = x; then
1511 case "$host_os" in
1512 solaris*)
1513 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1514 ;;
1515 cygwin*)
1516 APP_LIB_DEPS="-lX11"
1517 ;;
1518 *)
1519 APP_LIB_DEPS="-lm"
1520 ;;
1521 esac
1522 fi
1523 AC_SUBST([APP_LIB_DEPS])
1524 AC_SUBST([PROGRAM_DIRS])
1525
1526 dnl
1527 dnl Gallium configuration
1528 dnl
1529 if test "x$with_gallium_drivers" != x; then
1530 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1531 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1532 else
1533 LLVM_CONFIG=no
1534 fi
1535
1536 AC_SUBST([LLVM_CFLAGS])
1537 AC_SUBST([LLVM_LIBS])
1538 AC_SUBST([LLVM_LDFLAGS])
1539 AC_SUBST([LLVM_VERSION])
1540
1541
1542
1543 case "x$enable_opengl$enable_gles1$enable_gles2" in
1544 x*yes*)
1545 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1546 ;;
1547 esac
1548
1549 AC_SUBST([VG_LIB_DEPS])
1550 AC_SUBST([EGL_CLIENT_APIS])
1551
1552 AC_ARG_WITH([egl-platforms],
1553 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1554 [comma delimited native platforms libEGL supports, e.g.
1555 "x11,drm" @<:@default=auto@:>@])],
1556 [with_egl_platforms="$withval"],
1557 [with_egl_platforms=yes])
1558
1559 EGL_PLATFORMS=""
1560 WAYLAND_EGL_LIB_DEPS=""
1561
1562 case "$with_egl_platforms" in
1563 yes)
1564 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1565 EGL_PLATFORMS="x11"
1566 if test "$mesa_driver" = dri; then
1567 EGL_PLATFORMS="$EGL_PLATFORMS drm"
1568 fi
1569 fi
1570 ;;
1571 *)
1572 if test "x$enable_egl" != xyes; then
1573 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1574 fi
1575 # verify the requested driver directories exist
1576 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1577 for plat in $egl_platforms; do
1578 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1579 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1580 if test "$plat" = "fbdev"; then
1581 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1582 fi
1583 if test "$plat" = "wayland"; then
1584 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1585 [AC_MSG_ERROR([cannot find libwayland-client])])
1586 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1587 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1588 fi
1589 done
1590 EGL_PLATFORMS="$egl_platforms"
1591 ;;
1592 esac
1593 AC_SUBST([EGL_PLATFORMS])
1594
1595 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1596 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1597 WAYLAND_EGL_PC_LIB_PRIV=
1598 WAYLAND_EGL_PC_CFLAGS=
1599
1600 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1601 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1602 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1603
1604
1605 AC_ARG_WITH([egl-driver-dir],
1606 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1607 [directory for EGL drivers [[default=${libdir}/egl]]])],
1608 [EGL_DRIVER_INSTALL_DIR="$withval"],
1609 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1610 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1611
1612 AC_ARG_WITH([xorg-driver-dir],
1613 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1614 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1615 [XORG_DRIVER_INSTALL_DIR="$withval"],
1616 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1617 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1618
1619 AC_ARG_WITH([max-width],
1620 [AS_HELP_STRING([--with-max-width=N],
1621 [Maximum framebuffer width (4096)])],
1622 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1623 AS_IF([test "${withval}" -gt "4096"],
1624 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1625 )
1626 AC_ARG_WITH([max-height],
1627 [AS_HELP_STRING([--with-max-height=N],
1628 [Maximum framebuffer height (4096)])],
1629 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1630 AS_IF([test "${withval}" -gt "4096"],
1631 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1632 )
1633
1634 dnl
1635 dnl Gallium LLVM
1636 dnl
1637 AC_ARG_ENABLE([gallium-llvm],
1638 [AS_HELP_STRING([--enable-gallium-llvm],
1639 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1640 [enable_gallium_llvm="$enableval"],
1641 [enable_gallium_llvm=auto])
1642 if test "x$with_gallium_drivers" = x; then
1643 enable_gallium_llvm=no
1644 fi
1645 if test "x$enable_gallium_llvm" = xauto; then
1646 case "$host_cpu" in
1647 i*86|x86_64) enable_gallium_llvm=yes;;
1648 esac
1649 fi
1650 if test "x$enable_gallium_llvm" = xyes; then
1651 if test "x$LLVM_CONFIG" != xno; then
1652 LLVM_VERSION=`$LLVM_CONFIG --version`
1653 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
1654 LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1655
1656 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1657 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1658 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1659 MESA_LLVM=1
1660 else
1661 MESA_LLVM=0
1662 fi
1663 else
1664 MESA_LLVM=0
1665 fi
1666
1667 dnl
1668 dnl Gallium helper functions
1669 dnl
1670 gallium_check_st() {
1671 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1672 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1673 fi
1674 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1675 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1676 fi
1677 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1678 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1679 fi
1680 }
1681
1682 gallium_require_llvm() {
1683 if test "x$MESA_LLVM" = x0; then
1684 case "$host_cpu" in
1685 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1686 esac
1687 fi
1688 }
1689
1690 dnl Gallium drivers
1691 if test "x$with_gallium_drivers" != x; then
1692 # This is for compile-testing
1693 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965 r300 svga"
1694 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1695
1696 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1697 for driver in $gallium_drivers; do
1698 case "x$driver" in
1699 xsvga)
1700 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1701 ;;
1702 xi915)
1703 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1704 ;;
1705 xi965)
1706 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1707 ;;
1708 xr300)
1709 gallium_require_llvm "Gallium R300"
1710 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300"
1711 ;;
1712 xr600)
1713 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1714 gallium_check_st "r600/drm" "dri-r600"
1715 ;;
1716 xnouveau)
1717 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1718 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1719 ;;
1720 xswrast)
1721 if test "x$HAVE_ST_DRI" = xyes; then
1722 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1723 fi
1724 ;;
1725 *)
1726 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1727 ;;
1728 esac
1729 done
1730 fi
1731
1732 dnl prepend CORE_DIRS to SRC_DIRS
1733 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1734
1735 dnl Restore LDFLAGS and CPPFLAGS
1736 LDFLAGS="$_SAVE_LDFLAGS"
1737 CPPFLAGS="$_SAVE_CPPFLAGS"
1738
1739 dnl Substitute the config
1740 AC_CONFIG_FILES([configs/autoconf])
1741
1742 dnl Replace the configs/current symlink
1743 AC_CONFIG_COMMANDS([configs],[
1744 if test -f configs/current || test -L configs/current; then
1745 rm -f configs/current
1746 fi
1747 ln -s autoconf configs/current
1748 ])
1749
1750 AC_OUTPUT
1751
1752 dnl
1753 dnl Output some configuration info for the user
1754 dnl
1755 echo ""
1756 echo " prefix: $prefix"
1757 echo " exec_prefix: $exec_prefix"
1758 echo " libdir: $libdir"
1759 echo " includedir: $includedir"
1760
1761 dnl API info
1762 echo ""
1763 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1764 echo " OpenVG: $enable_openvg"
1765
1766 dnl Driver info
1767 echo ""
1768 echo " Driver: $mesa_driver"
1769 if test "$mesa_driver" != no; then
1770 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1771 echo " OSMesa: lib$OSMESA_LIB"
1772 else
1773 echo " OSMesa: no"
1774 fi
1775 if test "$mesa_driver" = dri; then
1776 # cleanup the drivers var
1777 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1778 if test "x$DRI_DIRS" = x; then
1779 echo " DRI drivers: no"
1780 else
1781 echo " DRI drivers: $dri_dirs"
1782 fi
1783 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1784 echo " Use XCB: $enable_xcb"
1785 echo " Shared dricore: $enable_dricore"
1786 fi
1787 fi
1788 echo ""
1789 echo " GLU: $enable_glu"
1790 echo " GLw: $enable_glw (Motif: $enable_motif)"
1791 echo " glut: $enable_glut"
1792
1793 dnl EGL
1794 echo ""
1795 echo " EGL: $enable_egl"
1796 if test "$enable_egl" = yes; then
1797 echo " EGL platforms: $EGL_PLATFORMS"
1798
1799 egl_drivers=""
1800 for d in $EGL_DRIVERS_DIRS; do
1801 egl_drivers="$egl_drivers builtin:egl_$d"
1802 done
1803
1804 if test "x$HAVE_ST_EGL" = xyes; then
1805 echo " EGL drivers: ${egl_drivers} egl_gallium"
1806 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
1807 else
1808 echo " EGL drivers: $egl_drivers"
1809 fi
1810 fi
1811
1812 echo ""
1813 if test "x$MESA_LLVM" = x1; then
1814 echo " llvm: yes"
1815 echo " llvm-config: $LLVM_CONFIG"
1816 echo " llvm-version: $LLVM_VERSION"
1817 else
1818 echo " llvm: no"
1819 fi
1820
1821 echo ""
1822 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1823 echo " Gallium: yes"
1824 echo " Gallium dirs: $GALLIUM_DIRS"
1825 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1826 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1827 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1828 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1829 else
1830 echo " Gallium: no"
1831 fi
1832
1833 dnl Libraries
1834 echo ""
1835 echo " Shared libs: $enable_shared"
1836 echo " Static libs: $enable_static"
1837
1838 dnl Compiler options
1839 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1840 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1841 $SED 's/^ *//;s/ */ /;s/ *$//'`
1842 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1843 $SED 's/^ *//;s/ */ /;s/ *$//'`
1844 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1845 echo ""
1846 echo " CFLAGS: $cflags"
1847 echo " CXXFLAGS: $cxxflags"
1848 echo " Macros: $defines"
1849 echo ""
1850 echo " PYTHON2: $PYTHON2"
1851
1852 echo ""
1853 echo " Run '${MAKE-make}' to build Mesa"
1854 echo ""