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