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