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