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