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