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