Merge commit 'origin/gallium-context-transfers-2'
[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'])])
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.15
22 LIBDRM_RADEON_REQUIRED=2.4.17
23 DRI2PROTO_REQUIRED=2.1
24 GLPROTO_REQUIRED=1.4.11
25
26 dnl Check for progs
27 AC_PROG_CPP
28 AC_PROG_CC
29 AC_PROG_CXX
30 AC_CHECK_PROGS([MAKE], [gmake make])
31 AC_PATH_PROG([MKDEP], [makedepend])
32 AC_PATH_PROG([SED], [sed])
33
34 dnl Our fallback install-sh is a symlink to minstall. Use the existing
35 dnl configuration in that case.
36 AC_PROG_INSTALL
37 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
38
39 dnl We need a POSIX shell for parts of the build. Assume we have one
40 dnl in most cases.
41 case "$host_os" in
42 solaris*)
43 # Solaris /bin/sh is too old/non-POSIX compliant
44 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
45 SHELL="$POSIX_SHELL"
46 ;;
47 esac
48
49 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
50 dnl versions are explictly not supported.
51 if test "x$GCC" = xyes; then
52 AC_MSG_CHECKING([whether gcc version is sufficient])
53 major=0
54 minor=0
55
56 GCC_VERSION=`$CC -dumpversion`
57 if test $? -eq 0; then
58 major=`echo $GCC_VERSION | cut -d. -f1`
59 minor=`echo $GCC_VERSION | cut -d. -f1`
60 fi
61
62 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
63 AC_MSG_RESULT([no])
64 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
65 else
66 AC_MSG_RESULT([yes])
67 fi
68 fi
69
70
71 MKDEP_OPTIONS=-fdepend
72 dnl Ask gcc where it's keeping its secret headers
73 if test "x$GCC" = xyes; then
74 for dir in include include-fixed; do
75 GCC_INCLUDES=`$CC -print-file-name=$dir`
76 if test "x$GCC_INCLUDES" != x && \
77 test "$GCC_INCLUDES" != "$dir" && \
78 test -d "$GCC_INCLUDES"; then
79 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
80 fi
81 done
82 fi
83 AC_SUBST([MKDEP_OPTIONS])
84
85 dnl Make sure the pkg-config macros are defined
86 m4_ifndef([PKG_PROG_PKG_CONFIG],
87 [m4_fatal([Could not locate the pkg-config autoconf macros.
88 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
89 are in a different location, try setting the environment variable
90 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
91 PKG_PROG_PKG_CONFIG()
92
93 dnl LIB_DIR - library basename
94 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
95 AC_SUBST([LIB_DIR])
96
97 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
98 _SAVE_LDFLAGS="$LDFLAGS"
99 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
100 AC_SUBST([EXTRA_LIB_PATH])
101
102 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
103 _SAVE_CPPFLAGS="$CPPFLAGS"
104 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
105 AC_SUBST([X11_INCLUDES])
106
107 dnl Compiler macros
108 DEFINES=""
109 AC_SUBST([DEFINES])
110 case "$host_os" in
111 linux*|*-gnu*|gnu*)
112 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
113 ;;
114 solaris*)
115 DEFINES="$DEFINES -DPTHREADS -DSVR4"
116 ;;
117 cygwin*)
118 DEFINES="$DEFINES -DPTHREADS"
119 ;;
120 esac
121
122 dnl Add flags for gcc and g++
123 if test "x$GCC" = xyes; then
124 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
125
126 # Enable -fvisibility=hidden if using a gcc that supports it
127 save_CFLAGS="$CFLAGS"
128 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
129 CFLAGS="$CFLAGS -fvisibility=hidden"
130 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
131 [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]);
132
133 # Work around aliasing bugs - developers should comment this out
134 CFLAGS="$CFLAGS -fno-strict-aliasing"
135 fi
136 if test "x$GXX" = xyes; then
137 CXXFLAGS="$CXXFLAGS -Wall"
138
139 # Work around aliasing bugs - developers should comment this out
140 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
141 fi
142
143 dnl These should be unnecessary, but let the user set them if they want
144 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
145 Default is to use CFLAGS.])
146 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
147 compiler. Default is to use CFLAGS.])
148 AC_SUBST([OPT_FLAGS])
149 AC_SUBST([ARCH_FLAGS])
150
151 dnl
152 dnl Hacks to enable 32 or 64 bit build
153 dnl
154 AC_ARG_ENABLE([32-bit],
155 [AS_HELP_STRING([--enable-32-bit],
156 [build 32-bit libraries @<:@default=auto@:>@])],
157 [enable_32bit="$enableval"],
158 [enable_32bit=auto]
159 )
160 if test "x$enable_32bit" = xyes; then
161 if test "x$GCC" = xyes; then
162 CFLAGS="$CFLAGS -m32"
163 ARCH_FLAGS="$ARCH_FLAGS -m32"
164 fi
165 if test "x$GXX" = xyes; then
166 CXXFLAGS="$CXXFLAGS -m32"
167 fi
168 fi
169 AC_ARG_ENABLE([64-bit],
170 [AS_HELP_STRING([--enable-64-bit],
171 [build 64-bit libraries @<:@default=auto@:>@])],
172 [enable_64bit="$enableval"],
173 [enable_64bit=auto]
174 )
175 if test "x$enable_64bit" = xyes; then
176 if test "x$GCC" = xyes; then
177 CFLAGS="$CFLAGS -m64"
178 fi
179 if test "x$GXX" = xyes; then
180 CXXFLAGS="$CXXFLAGS -m64"
181 fi
182 fi
183
184 dnl
185 dnl shared/static libraries, mimic libtool options
186 dnl
187 AC_ARG_ENABLE([static],
188 [AS_HELP_STRING([--enable-static],
189 [build static libraries @<:@default=disabled@:>@])],
190 [enable_static="$enableval"],
191 [enable_static=no]
192 )
193 case "x$enable_static" in
194 xyes|xno ) ;;
195 x ) enable_static=no ;;
196 * )
197 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
198 ;;
199 esac
200 AC_ARG_ENABLE([shared],
201 [AS_HELP_STRING([--disable-shared],
202 [build shared libraries @<:@default=enabled@:>@])],
203 [enable_shared="$enableval"],
204 [enable_shared=yes]
205 )
206 case "x$enable_shared" in
207 xyes|xno ) ;;
208 x ) enable_shared=yes ;;
209 * )
210 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
211 ;;
212 esac
213
214 dnl Can't have static and shared libraries, default to static if user
215 dnl explicitly requested. If both disabled, set to static since shared
216 dnl was explicitly requirested.
217 case "x$enable_static$enable_shared" in
218 xyesyes )
219 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
220 enable_shared=no
221 ;;
222 xnono )
223 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
224 enable_static=yes
225 ;;
226 esac
227
228 dnl
229 dnl mklib options
230 dnl
231 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
232 if test "$enable_static" = yes; then
233 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
234 fi
235 AC_SUBST([MKLIB_OPTIONS])
236
237 dnl
238 dnl other compiler options
239 dnl
240 AC_ARG_ENABLE([debug],
241 [AS_HELP_STRING([--enable-debug],
242 [use debug compiler flags and macros @<:@default=disabled@:>@])],
243 [enable_debug="$enableval"],
244 [enable_debug=no]
245 )
246 if test "x$enable_debug" = xyes; then
247 DEFINES="$DEFINES -DDEBUG"
248 if test "x$GCC" = xyes; then
249 CFLAGS="$CFLAGS -g"
250 fi
251 if test "x$GXX" = xyes; then
252 CXXFLAGS="$CXXFLAGS -g"
253 fi
254 fi
255
256 dnl
257 dnl library names
258 dnl
259 if test "$enable_static" = yes; then
260 LIB_EXTENSION='a'
261 else
262 case "$host_os" in
263 darwin* )
264 LIB_EXTENSION='dylib' ;;
265 cygwin* )
266 LIB_EXTENSION='dll' ;;
267 aix* )
268 LIB_EXTENSION='a' ;;
269 * )
270 LIB_EXTENSION='so' ;;
271 esac
272 fi
273
274 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
275 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
276 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
277 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
278 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
279 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
280
281 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
282 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
283 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
284 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
285 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
286 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
287
288 AC_SUBST([GL_LIB_NAME])
289 AC_SUBST([GLU_LIB_NAME])
290 AC_SUBST([GLUT_LIB_NAME])
291 AC_SUBST([GLW_LIB_NAME])
292 AC_SUBST([OSMESA_LIB_NAME])
293 AC_SUBST([EGL_LIB_NAME])
294
295 AC_SUBST([GL_LIB_GLOB])
296 AC_SUBST([GLU_LIB_GLOB])
297 AC_SUBST([GLUT_LIB_GLOB])
298 AC_SUBST([GLW_LIB_GLOB])
299 AC_SUBST([OSMESA_LIB_GLOB])
300 AC_SUBST([EGL_LIB_GLOB])
301
302 dnl
303 dnl Arch/platform-specific settings
304 dnl
305 AC_ARG_ENABLE([asm],
306 [AS_HELP_STRING([--disable-asm],
307 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
308 [enable_asm="$enableval"],
309 [enable_asm=yes]
310 )
311 asm_arch=""
312 ASM_FLAGS=""
313 MESA_ASM_SOURCES=""
314 GLAPI_ASM_SOURCES=""
315 AC_MSG_CHECKING([whether to enable assembly])
316 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
317 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
318 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
319 case "$host_cpu" in
320 i?86 | x86_64)
321 enable_asm=no
322 AC_MSG_RESULT([no, cross compiling])
323 ;;
324 esac
325 fi
326 # check for supported arches
327 if test "x$enable_asm" = xyes; then
328 case "$host_cpu" in
329 i?86)
330 case "$host_os" in
331 linux* | *freebsd* | dragonfly*)
332 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
333 ;;
334 esac
335 ;;
336 x86_64)
337 case "$host_os" in
338 linux* | *freebsd* | dragonfly*)
339 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
340 ;;
341 esac
342 ;;
343 powerpc)
344 case "$host_os" in
345 linux*)
346 asm_arch=ppc
347 ;;
348 esac
349 ;;
350 sparc*)
351 case "$host_os" in
352 linux*)
353 asm_arch=sparc
354 ;;
355 esac
356 ;;
357 esac
358
359 case "$asm_arch" in
360 x86)
361 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
362 MESA_ASM_SOURCES='$(X86_SOURCES)'
363 GLAPI_ASM_SOURCES='$(X86_API)'
364 AC_MSG_RESULT([yes, x86])
365 ;;
366 x86_64)
367 ASM_FLAGS="-DUSE_X86_64_ASM"
368 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
369 GLAPI_ASM_SOURCES='$(X86-64_API)'
370 AC_MSG_RESULT([yes, x86_64])
371 ;;
372 ppc)
373 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
374 MESA_ASM_SOURCES='$(PPC_SOURCES)'
375 AC_MSG_RESULT([yes, ppc])
376 ;;
377 sparc)
378 ASM_FLAGS="-DUSE_SPARC_ASM"
379 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
380 GLAPI_ASM_SOURCES='$(SPARC_API)'
381 AC_MSG_RESULT([yes, sparc])
382 ;;
383 *)
384 AC_MSG_RESULT([no, platform not supported])
385 ;;
386 esac
387 fi
388 AC_SUBST([ASM_FLAGS])
389 AC_SUBST([MESA_ASM_SOURCES])
390 AC_SUBST([GLAPI_ASM_SOURCES])
391
392 dnl PIC code macro
393 MESA_PIC_FLAGS
394
395 dnl Check to see if dlopen is in default libraries (like Solaris, which
396 dnl has it in libc), or if libdl is needed to get it.
397 AC_CHECK_FUNC([dlopen], [],
398 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
399
400 dnl See if posix_memalign is available
401 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
402
403 dnl SELinux awareness.
404 AC_ARG_ENABLE([selinux],
405 [AS_HELP_STRING([--enable-selinux],
406 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
407 [MESA_SELINUX="$enableval"],
408 [MESA_SELINUX=no])
409 if test "x$enable_selinux" = "xyes"; then
410 AC_CHECK_HEADER([selinux/selinux.h],[],
411 [AC_MSG_ERROR([SELinux headers not found])])
412 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
413 [AC_MSG_ERROR([SELinux library not found])])
414 SELINUX_LIBS="-lselinux"
415 DEFINES="$DEFINES -DMESA_SELINUX"
416 fi
417
418 dnl
419 dnl Driver configuration. Options are xlib, dri and osmesa right now.
420 dnl More later: fbdev, ...
421 dnl
422 default_driver="xlib"
423
424 case "$host_os" in
425 linux*)
426 case "$host_cpu" in
427 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
428 esac
429 ;;
430 *freebsd* | dragonfly*)
431 case "$host_cpu" in
432 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
433 esac
434 ;;
435 esac
436
437 AC_ARG_WITH([driver],
438 [AS_HELP_STRING([--with-driver=DRIVER],
439 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
440 [mesa_driver="$withval"],
441 [mesa_driver="$default_driver"])
442 dnl Check for valid option
443 case "x$mesa_driver" in
444 xxlib|xdri|xosmesa)
445 ;;
446 *)
447 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
448 ;;
449 esac
450
451 dnl
452 dnl Driver specific build directories
453 dnl
454
455 dnl this variable will be prepended to SRC_DIRS and is not exported
456 CORE_DIRS="glsl mesa"
457
458 SRC_DIRS="glew"
459 GLU_DIRS="sgi"
460 GALLIUM_DIRS="auxiliary drivers state_trackers"
461 GALLIUM_TARGET_DIRS=""
462 GALLIUM_WINSYS_DIRS=""
463 GALLIUM_WINSYS_DRM_DIRS=""
464 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
465 GALLIUM_STATE_TRACKERS_DIRS=""
466
467 case "$mesa_driver" in
468 xlib)
469 DRIVER_DIRS="x11"
470 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
471 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
472 ;;
473 dri)
474 SRC_DIRS="$SRC_DIRS glx"
475 DRIVER_DIRS="dri"
476 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib drm"
477 ;;
478 osmesa)
479 DRIVER_DIRS="osmesa"
480 ;;
481 esac
482 AC_SUBST([SRC_DIRS])
483 AC_SUBST([GLU_DIRS])
484 AC_SUBST([DRIVER_DIRS])
485 AC_SUBST([GALLIUM_DIRS])
486 AC_SUBST([GALLIUM_TARGET_DIRS])
487 AC_SUBST([GALLIUM_WINSYS_DIRS])
488 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
489 AC_SUBST([GALLIUM_DRIVERS_DIRS])
490 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
491
492 dnl
493 dnl User supplied program configuration
494 dnl
495 if test -d "$srcdir/progs/demos"; then
496 default_demos=yes
497 else
498 default_demos=no
499 fi
500 AC_ARG_WITH([demos],
501 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
502 [optional comma delimited demo directories to build
503 @<:@default=auto if source available@:>@])],
504 [with_demos="$withval"],
505 [with_demos="$default_demos"])
506 if test "x$with_demos" = x; then
507 with_demos=no
508 fi
509
510 dnl If $with_demos is yes, directories will be added as libs available
511 PROGRAM_DIRS=""
512 case "$with_demos" in
513 no) ;;
514 yes)
515 # If the driver isn't osmesa, we have libGL and can build xdemos
516 if test "$mesa_driver" != osmesa; then
517 PROGRAM_DIRS="xdemos"
518 fi
519 ;;
520 *)
521 # verify the requested demos directories exist
522 demos=`IFS=,; echo $with_demos`
523 for demo in $demos; do
524 test -d "$srcdir/progs/$demo" || \
525 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
526 done
527 PROGRAM_DIRS="$demos"
528 ;;
529 esac
530
531 dnl
532 dnl Find out if X is available. The variable have_x is set if libX11 is
533 dnl found to mimic AC_PATH_XTRA.
534 dnl
535 if test -n "$PKG_CONFIG"; then
536 AC_MSG_CHECKING([pkg-config files for X11 are available])
537 PKG_CHECK_EXISTS([x11],[
538 x11_pkgconfig=yes
539 have_x=yes
540 ],[
541 x11_pkgconfig=no
542 ])
543 AC_MSG_RESULT([$x11_pkgconfig])
544 else
545 x11_pkgconfig=no
546 fi
547 dnl Use the autoconf macro if no pkg-config files
548 if test "$x11_pkgconfig" = no; then
549 AC_PATH_XTRA
550 fi
551
552 dnl Try to tell the user that the --x-* options are only used when
553 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
554 m4_divert_once([HELP_BEGIN],
555 [These options are only used when the X libraries cannot be found by the
556 pkg-config utility.])
557
558 dnl We need X for xlib and dri, so bomb now if it's not found
559 case "$mesa_driver" in
560 xlib|dri)
561 if test "$no_x" = yes; then
562 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
563 fi
564 ;;
565 esac
566
567 dnl XCB - this is only used for GLX right now
568 AC_ARG_ENABLE([xcb],
569 [AS_HELP_STRING([--enable-xcb],
570 [use XCB for GLX @<:@default=disabled@:>@])],
571 [enable_xcb="$enableval"],
572 [enable_xcb=no])
573 if test "x$enable_xcb" = xyes; then
574 DEFINES="$DEFINES -DUSE_XCB"
575 else
576 enable_xcb=no
577 fi
578
579 dnl
580 dnl libGL configuration per driver
581 dnl
582 case "$mesa_driver" in
583 xlib)
584 if test "$x11_pkgconfig" = yes; then
585 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
586 GL_PC_REQ_PRIV="x11 xext"
587 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
588 GL_LIB_DEPS="$XLIBGL_LIBS"
589 else
590 # should check these...
591 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
592 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
593 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
594 GL_PC_CFLAGS="$X11_INCLUDES"
595 fi
596 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
597 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
598
599 # if static, move the external libraries to the programs
600 # and empty the libraries for libGL
601 if test "$enable_static" = yes; then
602 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
603 GL_LIB_DEPS=""
604 fi
605 ;;
606 dri)
607 # DRI must be shared, I think
608 if test "$enable_static" = yes; then
609 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
610 fi
611
612 # Check for libdrm
613 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
614 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
615 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
616 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
617 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
618
619 # find the DRI deps for libGL
620 if test "$x11_pkgconfig" = yes; then
621 # add xcb modules if necessary
622 dri_modules="x11 xext xxf86vm xdamage xfixes"
623 if test "$enable_xcb" = yes; then
624 dri_modules="$dri_modules x11-xcb xcb-glx"
625 fi
626
627 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
628 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
629 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
630 GL_LIB_DEPS="$DRIGL_LIBS"
631 else
632 # should check these...
633 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
634 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
635 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
636 GL_PC_CFLAGS="$X11_INCLUDES"
637
638 # XCB can only be used from pkg-config
639 if test "$enable_xcb" = yes; then
640 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
641 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
642 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
643 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
644 fi
645 fi
646
647 # need DRM libs, -lpthread, etc.
648 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
649 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
650 ;;
651 osmesa)
652 # No libGL for osmesa
653 GL_LIB_DEPS=""
654 ;;
655 esac
656 AC_SUBST([GL_LIB_DEPS])
657 AC_SUBST([GL_PC_REQ_PRIV])
658 AC_SUBST([GL_PC_LIB_PRIV])
659 AC_SUBST([GL_PC_CFLAGS])
660 AC_SUBST([DRI_PC_REQ_PRIV])
661
662 dnl
663 dnl More X11 setup
664 dnl
665 if test "$mesa_driver" = xlib; then
666 DEFINES="$DEFINES -DUSE_XSHM"
667 fi
668
669 dnl
670 dnl More DRI setup
671 dnl
672 AC_ARG_ENABLE([glx-tls],
673 [AS_HELP_STRING([--enable-glx-tls],
674 [enable TLS support in GLX @<:@default=disabled@:>@])],
675 [GLX_USE_TLS="$enableval"],
676 [GLX_USE_TLS=no])
677 dnl Directory for DRI drivers
678 AC_ARG_WITH([dri-driverdir],
679 [AS_HELP_STRING([--with-dri-driverdir=DIR],
680 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
681 [DRI_DRIVER_INSTALL_DIR="$withval"],
682 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
683 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
684 dnl Extra search path for DRI drivers
685 AC_ARG_WITH([dri-searchpath],
686 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
687 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
688 [DRI_DRIVER_SEARCH_DIR="$withval"],
689 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
690 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
691 dnl Direct rendering or just indirect rendering
692 AC_ARG_ENABLE([driglx-direct],
693 [AS_HELP_STRING([--disable-driglx-direct],
694 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
695 [driglx_direct="$enableval"],
696 [driglx_direct="yes"])
697 dnl Which drivers to build - default is chosen by platform
698 AC_ARG_WITH([dri-drivers],
699 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
700 [comma delimited DRI drivers list, e.g.
701 "swrast,i965,radeon" @<:@default=auto@:>@])],
702 [with_dri_drivers="$withval"],
703 [with_dri_drivers=yes])
704 if test "x$with_dri_drivers" = x; then
705 with_dri_drivers=no
706 fi
707
708 dnl If $with_dri_drivers is yes, directories will be added through
709 dnl platform checks
710 DRI_DIRS=""
711 case "$with_dri_drivers" in
712 no) ;;
713 yes)
714 DRI_DIRS="yes"
715 ;;
716 *)
717 # verify the requested driver directories exist
718 dri_drivers=`IFS=', '; echo $with_dri_drivers`
719 for driver in $dri_drivers; do
720 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
721 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
722 done
723 DRI_DIRS="$dri_drivers"
724 ;;
725 esac
726
727 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
728 if test "$mesa_driver" = dri; then
729 # Use TLS in GLX?
730 if test "x$GLX_USE_TLS" = xyes; then
731 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
732 fi
733
734 # Platform specific settings and drivers to build
735 case "$host_os" in
736 linux*)
737 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
738 if test "x$driglx_direct" = xyes; then
739 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
740 fi
741 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
742
743 case "$host_cpu" in
744 x86_64)
745 # sis is missing because they have not be converted to use
746 # the new interface. i810 are missing because there is no
747 # x86-64 system where they could *ever* be used.
748 if test "x$DRI_DIRS" = "xyes"; then
749 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
750 savage tdfx unichrome swrast"
751 fi
752 ;;
753 powerpc*)
754 # Build only the drivers for cards that exist on PowerPC.
755 # At some point MGA will be added, but not yet.
756 if test "x$DRI_DIRS" = "xyes"; then
757 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
758 fi
759 ;;
760 sparc*)
761 # Build only the drivers for cards that exist on sparc`
762 if test "x$DRI_DIRS" = "xyes"; then
763 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
764 fi
765 ;;
766 esac
767 ;;
768 freebsd* | dragonfly*)
769 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
770 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
771 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
772 if test "x$driglx_direct" = xyes; then
773 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
774 fi
775 if test "x$GXX" = xyes; then
776 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
777 fi
778
779 if test "x$DRI_DIRS" = "xyes"; then
780 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
781 unichrome savage sis swrast"
782 fi
783 ;;
784 gnu*)
785 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
786 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
787 ;;
788 solaris*)
789 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
790 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
791 if test "x$driglx_direct" = xyes; then
792 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
793 fi
794 ;;
795 esac
796
797 # default drivers
798 if test "x$DRI_DIRS" = "xyes"; then
799 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
800 savage sis tdfx unichrome swrast"
801 fi
802
803 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
804
805 # Check for expat
806 EXPAT_INCLUDES=""
807 EXPAT_LIB=-lexpat
808 AC_ARG_WITH([expat],
809 [AS_HELP_STRING([--with-expat=DIR],
810 [expat install directory])],[
811 EXPAT_INCLUDES="-I$withval/include"
812 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
813 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
814 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
815 ])
816 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
817 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
818 [AC_MSG_ERROR([Expat required for DRI.])])
819
820 # put all the necessary libs together
821 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
822 fi
823 AC_SUBST([DRI_DIRS])
824 AC_SUBST([EXPAT_INCLUDES])
825 AC_SUBST([DRI_LIB_DEPS])
826
827 case $DRI_DIRS in
828 *i915*|*i965*)
829 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.19])
830 ;;
831 esac
832
833 case $DRI_DIRS in
834 *radeon*|*r200*|*r300*|*r600*)
835 PKG_CHECK_MODULES([LIBDRM_RADEON],
836 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
837 HAVE_LIBDRM_RADEON=yes,
838 HAVE_LIBDRM_RADEON=no)
839
840 if test "$HAVE_LIBDRM_RADEON" = yes; then
841 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
842 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
843 fi
844 ;;
845 esac
846 AC_SUBST([RADEON_CFLAGS])
847 AC_SUBST([RADEON_LDFLAGS])
848
849
850 dnl
851 dnl OSMesa configuration
852 dnl
853 if test "$mesa_driver" = xlib; then
854 default_gl_osmesa=yes
855 else
856 default_gl_osmesa=no
857 fi
858 AC_ARG_ENABLE([gl-osmesa],
859 [AS_HELP_STRING([--enable-gl-osmesa],
860 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
861 [gl_osmesa="$enableval"],
862 [gl_osmesa="$default_gl_osmesa"])
863 if test "x$gl_osmesa" = xyes; then
864 if test "$mesa_driver" = osmesa; then
865 AC_MSG_ERROR([libGL is not available for OSMesa driver])
866 else
867 DRIVER_DIRS="$DRIVER_DIRS osmesa"
868 fi
869 fi
870
871 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
872 AC_ARG_WITH([osmesa-bits],
873 [AS_HELP_STRING([--with-osmesa-bits=BITS],
874 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
875 [osmesa_bits="$withval"],
876 [osmesa_bits=8])
877 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
878 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
879 osmesa_bits=8
880 fi
881 case "x$osmesa_bits" in
882 x8)
883 OSMESA_LIB=OSMesa
884 ;;
885 x16|x32)
886 OSMESA_LIB="OSMesa$osmesa_bits"
887 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
888 ;;
889 *)
890 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
891 ;;
892 esac
893 AC_SUBST([OSMESA_LIB])
894
895 case "$mesa_driver" in
896 osmesa)
897 # only link libraries with osmesa if shared
898 if test "$enable_static" = no; then
899 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
900 else
901 OSMESA_LIB_DEPS=""
902 fi
903 OSMESA_MESA_DEPS=""
904 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
905 ;;
906 *)
907 # Link OSMesa to libGL otherwise
908 OSMESA_LIB_DEPS=""
909 # only link libraries with osmesa if shared
910 if test "$enable_static" = no; then
911 OSMESA_MESA_DEPS='-l$(GL_LIB)'
912 else
913 OSMESA_MESA_DEPS=""
914 fi
915 OSMESA_PC_REQ="gl"
916 ;;
917 esac
918 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
919 AC_SUBST([OSMESA_LIB_DEPS])
920 AC_SUBST([OSMESA_MESA_DEPS])
921 AC_SUBST([OSMESA_PC_REQ])
922 AC_SUBST([OSMESA_PC_LIB_PRIV])
923
924 dnl
925 dnl EGL configuration
926 dnl
927 AC_ARG_ENABLE([egl],
928 [AS_HELP_STRING([--disable-egl],
929 [disable EGL library @<:@default=enabled@:>@])],
930 [enable_egl="$enableval"],
931 [enable_egl=yes])
932 if test "x$enable_egl" = xyes; then
933 SRC_DIRS="$SRC_DIRS egl"
934 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
935 EGL_DRIVERS_DIRS=""
936 if test "$enable_static" != yes; then
937 # build egl_glx when libGL is built
938 if test "$mesa_driver" != osmesa; then
939 EGL_DRIVERS_DIRS="glx"
940 fi
941
942 # build egl_dri2 when xcb-dri2 is available
943 PKG_CHECK_MODULES([EGL_DRI2], [x11-xcb xcb-dri2 xcb-xfixes libdrm],
944 [have_xcb_dri2=yes],[have_xcb_dri2=no])
945 if test "$have_xcb_dri2" = yes; then
946 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS dri2"
947 fi
948 fi
949
950 if test "$with_demos" = yes; then
951 PROGRAM_DIRS="$PROGRAM_DIRS egl"
952 fi
953 fi
954 AC_SUBST([EGL_LIB_DEPS])
955 AC_SUBST([EGL_DRIVERS_DIRS])
956
957 dnl
958 dnl GLU configuration
959 dnl
960 AC_ARG_ENABLE([glu],
961 [AS_HELP_STRING([--disable-glu],
962 [enable OpenGL Utility library @<:@default=enabled@:>@])],
963 [enable_glu="$enableval"],
964 [enable_glu=yes])
965 if test "x$enable_glu" = xyes; then
966 SRC_DIRS="$SRC_DIRS glu"
967
968 case "$mesa_driver" in
969 osmesa)
970 # If GLU is available and we have libOSMesa (not 16 or 32),
971 # we can build the osdemos
972 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
973 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
974 fi
975
976 # Link libGLU to libOSMesa instead of libGL
977 GLU_LIB_DEPS=""
978 GLU_PC_REQ="osmesa"
979 if test "$enable_static" = no; then
980 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
981 else
982 GLU_MESA_DEPS=""
983 fi
984 ;;
985 *)
986 # If static, empty GLU_LIB_DEPS and add libs for programs to link
987 GLU_PC_REQ="gl"
988 GLU_PC_LIB_PRIV="-lm"
989 if test "$enable_static" = no; then
990 GLU_LIB_DEPS="-lm"
991 GLU_MESA_DEPS='-l$(GL_LIB)'
992 else
993 GLU_LIB_DEPS=""
994 GLU_MESA_DEPS=""
995 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
996 fi
997 ;;
998 esac
999 fi
1000 if test "$enable_static" = no; then
1001 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1002 fi
1003 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1004 AC_SUBST([GLU_LIB_DEPS])
1005 AC_SUBST([GLU_MESA_DEPS])
1006 AC_SUBST([GLU_PC_REQ])
1007 AC_SUBST([GLU_PC_REQ_PRIV])
1008 AC_SUBST([GLU_PC_LIB_PRIV])
1009 AC_SUBST([GLU_PC_CFLAGS])
1010
1011 dnl
1012 dnl GLw configuration
1013 dnl
1014 AC_ARG_ENABLE([glw],
1015 [AS_HELP_STRING([--disable-glw],
1016 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1017 [enable_glw="$enableval"],
1018 [enable_glw=yes])
1019 dnl Don't build GLw on osmesa
1020 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1021 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1022 enable_glw=no
1023 fi
1024 AC_ARG_ENABLE([motif],
1025 [AS_HELP_STRING([--enable-motif],
1026 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1027 [enable_motif="$enableval"],
1028 [enable_motif=no])
1029
1030 if test "x$enable_glw" = xyes; then
1031 SRC_DIRS="$SRC_DIRS glw"
1032 if test "$x11_pkgconfig" = yes; then
1033 PKG_CHECK_MODULES([GLW],[x11 xt])
1034 GLW_PC_REQ_PRIV="x11 xt"
1035 GLW_LIB_DEPS="$GLW_LIBS"
1036 else
1037 # should check these...
1038 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1039 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1040 GLW_PC_CFLAGS="$X11_INCLUDES"
1041 fi
1042
1043 GLW_SOURCES="GLwDrawA.c"
1044 MOTIF_CFLAGS=
1045 if test "x$enable_motif" = xyes; then
1046 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1047 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1048 if test "x$MOTIF_CONFIG" != xno; then
1049 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1050 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1051 else
1052 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1053 [AC_MSG_ERROR([Can't locate Motif headers])])
1054 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1055 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1056 fi
1057 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1058 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1059 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1060 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1061 fi
1062
1063 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1064 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1065 if test "$enable_static" = no; then
1066 GLW_MESA_DEPS='-l$(GL_LIB)'
1067 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1068 else
1069 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1070 GLW_LIB_DEPS=""
1071 GLW_MESA_DEPS=""
1072 fi
1073 fi
1074 AC_SUBST([GLW_LIB_DEPS])
1075 AC_SUBST([GLW_MESA_DEPS])
1076 AC_SUBST([GLW_SOURCES])
1077 AC_SUBST([MOTIF_CFLAGS])
1078 AC_SUBST([GLW_PC_REQ_PRIV])
1079 AC_SUBST([GLW_PC_LIB_PRIV])
1080 AC_SUBST([GLW_PC_CFLAGS])
1081
1082 dnl
1083 dnl GLUT configuration
1084 dnl
1085 if test -f "$srcdir/include/GL/glut.h"; then
1086 default_glut=yes
1087 else
1088 default_glut=no
1089 fi
1090 AC_ARG_ENABLE([glut],
1091 [AS_HELP_STRING([--disable-glut],
1092 [enable GLUT library @<:@default=enabled if source available@:>@])],
1093 [enable_glut="$enableval"],
1094 [enable_glut="$default_glut"])
1095
1096 dnl Can't build glut if GLU not available
1097 if test "x$enable_glu$enable_glut" = xnoyes; then
1098 AC_MSG_WARN([Disabling glut since GLU is disabled])
1099 enable_glut=no
1100 fi
1101 dnl Don't build glut on osmesa
1102 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1103 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1104 enable_glut=no
1105 fi
1106
1107 if test "x$enable_glut" = xyes; then
1108 SRC_DIRS="$SRC_DIRS glut/glx"
1109 GLUT_CFLAGS=""
1110 if test "x$GCC" = xyes; then
1111 GLUT_CFLAGS="-fexceptions"
1112 fi
1113 if test "$x11_pkgconfig" = yes; then
1114 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1115 GLUT_PC_REQ_PRIV="x11 xmu xi"
1116 GLUT_LIB_DEPS="$GLUT_LIBS"
1117 else
1118 # should check these...
1119 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1120 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1121 GLUT_PC_CFLAGS="$X11_INCLUDES"
1122 fi
1123 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1124 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1125
1126 # If glut is available, we can build most programs
1127 if test "$with_demos" = yes; then
1128 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1129 fi
1130
1131 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1132 if test "$enable_static" = no; then
1133 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1134 else
1135 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1136 GLUT_LIB_DEPS=""
1137 GLUT_MESA_DEPS=""
1138 fi
1139 fi
1140 AC_SUBST([GLUT_LIB_DEPS])
1141 AC_SUBST([GLUT_MESA_DEPS])
1142 AC_SUBST([GLUT_CFLAGS])
1143 AC_SUBST([GLUT_PC_REQ_PRIV])
1144 AC_SUBST([GLUT_PC_LIB_PRIV])
1145 AC_SUBST([GLUT_PC_CFLAGS])
1146
1147 dnl
1148 dnl Program library dependencies
1149 dnl Only libm is added here if necessary as the libraries should
1150 dnl be pulled in by the linker
1151 dnl
1152 if test "x$APP_LIB_DEPS" = x; then
1153 case "$host_os" in
1154 solaris*)
1155 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1156 ;;
1157 cygwin*)
1158 APP_LIB_DEPS="-lX11"
1159 ;;
1160 *)
1161 APP_LIB_DEPS="-lm"
1162 ;;
1163 esac
1164 fi
1165 AC_SUBST([APP_LIB_DEPS])
1166 AC_SUBST([PROGRAM_DIRS])
1167
1168 dnl
1169 dnl Gallium configuration
1170 dnl
1171 AC_ARG_ENABLE([gallium],
1172 [AS_HELP_STRING([--disable-gallium],
1173 [build gallium @<:@default=enabled@:>@])],
1174 [enable_gallium="$enableval"],
1175 [enable_gallium=yes])
1176 if test "x$enable_gallium" = xyes; then
1177 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1178 fi
1179
1180 dnl
1181 dnl Gallium state trackers configuration
1182 dnl
1183 AC_ARG_WITH([state-trackers],
1184 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1185 [comma delimited state_trackers list, e.g.
1186 "egl,glx" @<:@default=auto@:>@])],
1187 [with_state_trackers="$withval"],
1188 [with_state_trackers=yes])
1189
1190 case "$with_state_trackers" in
1191 no)
1192 GALLIUM_STATE_TRACKERS_DIRS=""
1193 ;;
1194 yes)
1195 # look at what else is built
1196 case "$mesa_driver" in
1197 xlib)
1198 GALLIUM_STATE_TRACKERS_DIRS=glx
1199 ;;
1200 dri)
1201 GALLIUM_STATE_TRACKERS_DIRS="dri"
1202 if test "x$enable_egl" = xyes; then
1203 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1204 fi
1205 # Have only tested st/xorg on 1.6.0 servers
1206 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1207 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1208 HAVE_XORG="no")
1209 ;;
1210 esac
1211 ;;
1212 *)
1213 # verify the requested state tracker exist
1214 state_trackers=`IFS=', '; echo $with_state_trackers`
1215 for tracker in $state_trackers; do
1216 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1217 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1218
1219 case "$tracker" in
1220 egl)
1221 if test "x$enable_egl" != xyes; then
1222 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1223 fi
1224 ;;
1225 xorg)
1226 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1227 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1228 HAVE_XEXTPROTO_71="no")
1229 ;;
1230 es)
1231 # mesa/es is required to build es state tracker
1232 CORE_DIRS="$CORE_DIRS mesa/es"
1233 ;;
1234 esac
1235 done
1236 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1237 ;;
1238 esac
1239
1240 AC_ARG_WITH([egl-displays],
1241 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1242 [comma delimited native displays libEGL supports, e.g.
1243 "x11,kms" @<:@default=auto@:>@])],
1244 [with_egl_displays="$withval"],
1245 [with_egl_displays=yes])
1246
1247 EGL_DISPLAYS=""
1248 case "$with_egl_displays" in
1249 yes)
1250 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1251 EGL_DISPLAYS="x11"
1252 fi
1253 ;;
1254 *)
1255 if test "x$enable_egl" != xyes; then
1256 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1257 fi
1258 # verify the requested driver directories exist
1259 egl_displays=`IFS=', '; echo $with_egl_displays`
1260 for dpy in $egl_displays; do
1261 test -d "$srcdir/src/gallium/state_trackers/egl/$dpy" || \
1262 AC_MSG_ERROR([EGL display '$dpy' does't exist])
1263 done
1264 EGL_DISPLAYS="$egl_displays"
1265 ;;
1266 esac
1267 AC_SUBST([EGL_DISPLAYS])
1268
1269 AC_ARG_WITH([egl-driver-dir],
1270 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1271 [directory for EGL drivers [[default=${libdir}/egl]]])],
1272 [EGL_DRIVER_INSTALL_DIR="$withval"],
1273 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1274 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1275
1276 AC_ARG_WITH([xorg-driver-dir],
1277 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1278 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1279 [XORG_DRIVER_INSTALL_DIR="$withval"],
1280 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1281 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1282
1283 AC_ARG_WITH([max-width],
1284 [AS_HELP_STRING([--with-max-width=N],
1285 [Maximum framebuffer width (4096)])],
1286 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1287 AS_IF([test "${withval}" -gt "4096"],
1288 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1289 )
1290 AC_ARG_WITH([max-height],
1291 [AS_HELP_STRING([--with-max-height=N],
1292 [Maximum framebuffer height (4096)])],
1293 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1294 AS_IF([test "${withval}" -gt "4096"],
1295 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1296 )
1297
1298 dnl
1299 dnl Gallium SVGA configuration
1300 dnl
1301 AC_ARG_ENABLE([gallium-svga],
1302 [AS_HELP_STRING([--enable-gallium-svga],
1303 [build gallium SVGA @<:@default=disabled@:>@])],
1304 [enable_gallium_svga="$enableval"],
1305 [enable_gallium_svga=auto])
1306 if test "x$enable_gallium_svga" = xyes; then
1307 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1308 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1309 elif test "x$enable_gallium_svga" = xauto; then
1310 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1311 fi
1312
1313 dnl
1314 dnl Gallium Intel configuration
1315 dnl
1316 AC_ARG_ENABLE([gallium-intel],
1317 [AS_HELP_STRING([--enable-gallium-intel],
1318 [build gallium intel @<:@default=disabled@:>@])],
1319 [enable_gallium_intel="$enableval"],
1320 [enable_gallium_intel=auto])
1321 if test "x$enable_gallium_intel" = xyes; then
1322 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1323 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1324 elif test "x$enable_gallium_intel" = xauto; then
1325 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1326 fi
1327
1328 dnl
1329 dnl Gallium Radeon configuration
1330 dnl
1331 AC_ARG_ENABLE([gallium-radeon],
1332 [AS_HELP_STRING([--enable-gallium-radeon],
1333 [build gallium radeon @<:@default=disabled@:>@])],
1334 [enable_gallium_radeon="$enableval"],
1335 [enable_gallium_radeon=auto])
1336 if test "x$enable_gallium_radeon" = xyes; then
1337 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1338 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1339 elif test "x$enable_gallium_radeon" = xauto; then
1340 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1341 fi
1342
1343 dnl
1344 dnl Gallium Nouveau configuration
1345 dnl
1346 AC_ARG_ENABLE([gallium-nouveau],
1347 [AS_HELP_STRING([--enable-gallium-nouveau],
1348 [build gallium nouveau @<:@default=disabled@:>@])],
1349 [enable_gallium_nouveau="$enableval"],
1350 [enable_gallium_nouveau=no])
1351 if test "x$enable_gallium_nouveau" = xyes; then
1352 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1353 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv40 nv50"
1354 fi
1355
1356 dnl
1357 dnl Gallium swrast configuration
1358 dnl
1359 AC_ARG_ENABLE([gallium-swrast],
1360 [AS_HELP_STRING([--enable-gallium-swrast],
1361 [build gallium swrast @<:@default=disabled@:>@])],
1362 [enable_gallium_swrast="$enableval"],
1363 [enable_gallium_swrast=auto])
1364 if test "x$enable_gallium_swrast" = xyes; then
1365 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS swrast"
1366 fi
1367
1368 dnl prepend CORE_DIRS to SRC_DIRS
1369 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1370
1371 dnl Restore LDFLAGS and CPPFLAGS
1372 LDFLAGS="$_SAVE_LDFLAGS"
1373 CPPFLAGS="$_SAVE_CPPFLAGS"
1374
1375 dnl Substitute the config
1376 AC_CONFIG_FILES([configs/autoconf])
1377
1378 dnl Replace the configs/current symlink
1379 AC_CONFIG_COMMANDS([configs],[
1380 if test -f configs/current || test -L configs/current; then
1381 rm -f configs/current
1382 fi
1383 ln -s autoconf configs/current
1384 ])
1385
1386 AC_OUTPUT
1387
1388 dnl
1389 dnl Output some configuration info for the user
1390 dnl
1391 echo ""
1392 echo " prefix: $prefix"
1393 echo " exec_prefix: $exec_prefix"
1394 echo " libdir: $libdir"
1395 echo " includedir: $includedir"
1396
1397 dnl Driver info
1398 echo ""
1399 echo " Driver: $mesa_driver"
1400 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1401 echo " OSMesa: lib$OSMESA_LIB"
1402 else
1403 echo " OSMesa: no"
1404 fi
1405 if test "$mesa_driver" = dri; then
1406 # cleanup the drivers var
1407 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1408 if test "x$DRI_DIRS" = x; then
1409 echo " DRI drivers: no"
1410 else
1411 echo " DRI drivers: $dri_dirs"
1412 fi
1413 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1414 fi
1415 echo " Use XCB: $enable_xcb"
1416
1417 echo ""
1418 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1419 echo " Gallium: yes"
1420 echo " Gallium dirs: $GALLIUM_DIRS"
1421 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1422 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1423 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1424 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1425 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1426 else
1427 echo " Gallium: no"
1428 fi
1429
1430 dnl Libraries
1431 echo ""
1432 echo " Shared libs: $enable_shared"
1433 echo " Static libs: $enable_static"
1434 if test "$enable_egl" = yes; then
1435 echo " EGL: $EGL_DRIVERS_DIRS"
1436 else
1437 echo " EGL: no"
1438 fi
1439 echo " GLU: $enable_glu"
1440 echo " GLw: $enable_glw (Motif: $enable_motif)"
1441 echo " glut: $enable_glut"
1442
1443 dnl Programs
1444 # cleanup the programs var for display
1445 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1446 if test "x$program_dirs" = x; then
1447 echo " Demos: no"
1448 else
1449 echo " Demos: $program_dirs"
1450 fi
1451
1452 dnl Compiler options
1453 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1454 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1455 $SED 's/^ *//;s/ */ /;s/ *$//'`
1456 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1457 $SED 's/^ *//;s/ */ /;s/ *$//'`
1458 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1459 echo ""
1460 echo " CFLAGS: $cflags"
1461 echo " CXXFLAGS: $cxxflags"
1462 echo " Macros: $defines"
1463
1464 echo ""
1465 echo " Run '${MAKE-make}' to build Mesa"
1466 echo ""