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