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