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