Merge branch '7.8'
[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_WINSYS_DIRS=""
462 GALLIUM_WINSYS_DRM_DIRS=""
463 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
464 GALLIUM_STATE_TRACKERS_DIRS=""
465
466 case "$mesa_driver" in
467 xlib)
468 DRIVER_DIRS="x11"
469 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
470 ;;
471 dri)
472 SRC_DIRS="$SRC_DIRS glx"
473 DRIVER_DIRS="dri"
474 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
475 ;;
476 osmesa)
477 DRIVER_DIRS="osmesa"
478 ;;
479 esac
480 AC_SUBST([SRC_DIRS])
481 AC_SUBST([GLU_DIRS])
482 AC_SUBST([DRIVER_DIRS])
483 AC_SUBST([GALLIUM_DIRS])
484 AC_SUBST([GALLIUM_WINSYS_DIRS])
485 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
486 AC_SUBST([GALLIUM_DRIVERS_DIRS])
487 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
488
489 dnl
490 dnl User supplied program configuration
491 dnl
492 if test -d "$srcdir/progs/demos"; then
493 default_demos=yes
494 else
495 default_demos=no
496 fi
497 AC_ARG_WITH([demos],
498 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
499 [optional comma delimited demo directories to build
500 @<:@default=auto if source available@:>@])],
501 [with_demos="$withval"],
502 [with_demos="$default_demos"])
503 if test "x$with_demos" = x; then
504 with_demos=no
505 fi
506
507 dnl If $with_demos is yes, directories will be added as libs available
508 PROGRAM_DIRS=""
509 case "$with_demos" in
510 no) ;;
511 yes)
512 # If the driver isn't osmesa, we have libGL and can build xdemos
513 if test "$mesa_driver" != osmesa; then
514 PROGRAM_DIRS="xdemos"
515 fi
516 ;;
517 *)
518 # verify the requested demos directories exist
519 demos=`IFS=,; echo $with_demos`
520 for demo in $demos; do
521 test -d "$srcdir/progs/$demo" || \
522 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
523 done
524 PROGRAM_DIRS="$demos"
525 ;;
526 esac
527
528 dnl
529 dnl Find out if X is available. The variable have_x is set if libX11 is
530 dnl found to mimic AC_PATH_XTRA.
531 dnl
532 if test -n "$PKG_CONFIG"; then
533 AC_MSG_CHECKING([pkg-config files for X11 are available])
534 PKG_CHECK_EXISTS([x11],[
535 x11_pkgconfig=yes
536 have_x=yes
537 ],[
538 x11_pkgconfig=no
539 ])
540 AC_MSG_RESULT([$x11_pkgconfig])
541 else
542 x11_pkgconfig=no
543 fi
544 dnl Use the autoconf macro if no pkg-config files
545 if test "$x11_pkgconfig" = no; then
546 AC_PATH_XTRA
547 fi
548
549 dnl Try to tell the user that the --x-* options are only used when
550 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
551 m4_divert_once([HELP_BEGIN],
552 [These options are only used when the X libraries cannot be found by the
553 pkg-config utility.])
554
555 dnl We need X for xlib and dri, so bomb now if it's not found
556 case "$mesa_driver" in
557 xlib|dri)
558 if test "$no_x" = yes; then
559 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
560 fi
561 ;;
562 esac
563
564 dnl XCB - this is only used for GLX right now
565 AC_ARG_ENABLE([xcb],
566 [AS_HELP_STRING([--enable-xcb],
567 [use XCB for GLX @<:@default=disabled@:>@])],
568 [enable_xcb="$enableval"],
569 [enable_xcb=no])
570 if test "x$enable_xcb" = xyes; then
571 DEFINES="$DEFINES -DUSE_XCB"
572 else
573 enable_xcb=no
574 fi
575
576 dnl
577 dnl libGL configuration per driver
578 dnl
579 case "$mesa_driver" in
580 xlib)
581 if test "$x11_pkgconfig" = yes; then
582 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
583 GL_PC_REQ_PRIV="x11 xext"
584 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
585 GL_LIB_DEPS="$XLIBGL_LIBS"
586 else
587 # should check these...
588 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
589 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
590 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
591 GL_PC_CFLAGS="$X11_INCLUDES"
592 fi
593 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
594 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
595
596 # if static, move the external libraries to the programs
597 # and empty the libraries for libGL
598 if test "$enable_static" = yes; then
599 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
600 GL_LIB_DEPS=""
601 fi
602 ;;
603 dri)
604 # DRI must be shared, I think
605 if test "$enable_static" = yes; then
606 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
607 fi
608
609 # Check for libdrm
610 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
611 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
612 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
613 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
614 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
615
616 # find the DRI deps for libGL
617 if test "$x11_pkgconfig" = yes; then
618 # add xcb modules if necessary
619 dri_modules="x11 xext xxf86vm xdamage xfixes"
620 if test "$enable_xcb" = yes; then
621 dri_modules="$dri_modules x11-xcb xcb-glx"
622 fi
623
624 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
625 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
626 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
627 GL_LIB_DEPS="$DRIGL_LIBS"
628 else
629 # should check these...
630 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
631 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
632 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
633 GL_PC_CFLAGS="$X11_INCLUDES"
634
635 # XCB can only be used from pkg-config
636 if test "$enable_xcb" = yes; then
637 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
638 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
639 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
640 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
641 fi
642 fi
643
644 # need DRM libs, -lpthread, etc.
645 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
646 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
647 ;;
648 osmesa)
649 # No libGL for osmesa
650 GL_LIB_DEPS=""
651 ;;
652 esac
653 AC_SUBST([GL_LIB_DEPS])
654 AC_SUBST([GL_PC_REQ_PRIV])
655 AC_SUBST([GL_PC_LIB_PRIV])
656 AC_SUBST([GL_PC_CFLAGS])
657 AC_SUBST([DRI_PC_REQ_PRIV])
658
659 dnl
660 dnl More X11 setup
661 dnl
662 if test "$mesa_driver" = xlib; then
663 DEFINES="$DEFINES -DUSE_XSHM"
664 fi
665
666 dnl
667 dnl More DRI setup
668 dnl
669 AC_ARG_ENABLE([glx-tls],
670 [AS_HELP_STRING([--enable-glx-tls],
671 [enable TLS support in GLX @<:@default=disabled@:>@])],
672 [GLX_USE_TLS="$enableval"],
673 [GLX_USE_TLS=no])
674 dnl Directory for DRI drivers
675 AC_ARG_WITH([dri-driverdir],
676 [AS_HELP_STRING([--with-dri-driverdir=DIR],
677 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
678 [DRI_DRIVER_INSTALL_DIR="$withval"],
679 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
680 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
681 dnl Extra search path for DRI drivers
682 AC_ARG_WITH([dri-searchpath],
683 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
684 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
685 [DRI_DRIVER_SEARCH_DIR="$withval"],
686 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
687 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
688 dnl Direct rendering or just indirect rendering
689 AC_ARG_ENABLE([driglx-direct],
690 [AS_HELP_STRING([--disable-driglx-direct],
691 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
692 [driglx_direct="$enableval"],
693 [driglx_direct="yes"])
694 dnl Which drivers to build - default is chosen by platform
695 AC_ARG_WITH([dri-drivers],
696 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
697 [comma delimited DRI drivers list, e.g.
698 "swrast,i965,radeon" @<:@default=auto@:>@])],
699 [with_dri_drivers="$withval"],
700 [with_dri_drivers=yes])
701 if test "x$with_dri_drivers" = x; then
702 with_dri_drivers=no
703 fi
704
705 dnl If $with_dri_drivers is yes, directories will be added through
706 dnl platform checks
707 DRI_DIRS=""
708 case "$with_dri_drivers" in
709 no) ;;
710 yes)
711 DRI_DIRS="yes"
712 ;;
713 *)
714 # verify the requested driver directories exist
715 dri_drivers=`IFS=', '; echo $with_dri_drivers`
716 for driver in $dri_drivers; do
717 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
718 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
719 done
720 DRI_DIRS="$dri_drivers"
721 ;;
722 esac
723
724 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
725 if test "$mesa_driver" = dri; then
726 # Use TLS in GLX?
727 if test "x$GLX_USE_TLS" = xyes; then
728 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
729 fi
730
731 # Platform specific settings and drivers to build
732 case "$host_os" in
733 linux*)
734 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
735 if test "x$driglx_direct" = xyes; then
736 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
737 fi
738 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
739
740 case "$host_cpu" in
741 x86_64)
742 # sis is missing because they have not be converted to use
743 # the new interface. i810 are missing because there is no
744 # x86-64 system where they could *ever* be used.
745 if test "x$DRI_DIRS" = "xyes"; then
746 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
747 savage tdfx unichrome swrast"
748 fi
749 ;;
750 powerpc*)
751 # Build only the drivers for cards that exist on PowerPC.
752 # At some point MGA will be added, but not yet.
753 if test "x$DRI_DIRS" = "xyes"; then
754 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
755 fi
756 ;;
757 sparc*)
758 # Build only the drivers for cards that exist on sparc`
759 if test "x$DRI_DIRS" = "xyes"; then
760 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
761 fi
762 ;;
763 esac
764 ;;
765 freebsd* | dragonfly*)
766 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
767 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
768 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
769 if test "x$driglx_direct" = xyes; then
770 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
771 fi
772 if test "x$GXX" = xyes; then
773 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
774 fi
775
776 if test "x$DRI_DIRS" = "xyes"; then
777 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
778 unichrome savage sis swrast"
779 fi
780 ;;
781 gnu*)
782 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
783 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
784 ;;
785 solaris*)
786 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
787 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
788 if test "x$driglx_direct" = xyes; then
789 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
790 fi
791 ;;
792 esac
793
794 # default drivers
795 if test "x$DRI_DIRS" = "xyes"; then
796 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
797 savage sis tdfx unichrome swrast"
798 fi
799
800 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
801
802 # Check for expat
803 EXPAT_INCLUDES=""
804 EXPAT_LIB=-lexpat
805 AC_ARG_WITH([expat],
806 [AS_HELP_STRING([--with-expat=DIR],
807 [expat install directory])],[
808 EXPAT_INCLUDES="-I$withval/include"
809 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
810 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
811 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
812 ])
813 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
814 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
815 [AC_MSG_ERROR([Expat required for DRI.])])
816
817 # put all the necessary libs together
818 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
819 fi
820 AC_SUBST([DRI_DIRS])
821 AC_SUBST([EXPAT_INCLUDES])
822 AC_SUBST([DRI_LIB_DEPS])
823
824 case $DRI_DIRS in
825 *i915*|*i965*)
826 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.19])
827 ;;
828 esac
829
830 case $DRI_DIRS in
831 *radeon*|*r200*|*r300*|*r600*)
832 PKG_CHECK_MODULES([LIBDRM_RADEON],
833 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
834 HAVE_LIBDRM_RADEON=yes,
835 HAVE_LIBDRM_RADEON=no)
836
837 if test "$HAVE_LIBDRM_RADEON" = yes; then
838 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
839 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
840 fi
841 ;;
842 esac
843 AC_SUBST([RADEON_CFLAGS])
844 AC_SUBST([RADEON_LDFLAGS])
845
846
847 dnl
848 dnl OSMesa configuration
849 dnl
850 if test "$mesa_driver" = xlib; then
851 default_gl_osmesa=yes
852 else
853 default_gl_osmesa=no
854 fi
855 AC_ARG_ENABLE([gl-osmesa],
856 [AS_HELP_STRING([--enable-gl-osmesa],
857 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
858 [gl_osmesa="$enableval"],
859 [gl_osmesa="$default_gl_osmesa"])
860 if test "x$gl_osmesa" = xyes; then
861 if test "$mesa_driver" = osmesa; then
862 AC_MSG_ERROR([libGL is not available for OSMesa driver])
863 else
864 DRIVER_DIRS="$DRIVER_DIRS osmesa"
865 fi
866 fi
867
868 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
869 AC_ARG_WITH([osmesa-bits],
870 [AS_HELP_STRING([--with-osmesa-bits=BITS],
871 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
872 [osmesa_bits="$withval"],
873 [osmesa_bits=8])
874 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
875 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
876 osmesa_bits=8
877 fi
878 case "x$osmesa_bits" in
879 x8)
880 OSMESA_LIB=OSMesa
881 ;;
882 x16|x32)
883 OSMESA_LIB="OSMesa$osmesa_bits"
884 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
885 ;;
886 *)
887 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
888 ;;
889 esac
890 AC_SUBST([OSMESA_LIB])
891
892 case "$mesa_driver" in
893 osmesa)
894 # only link libraries with osmesa if shared
895 if test "$enable_static" = no; then
896 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
897 else
898 OSMESA_LIB_DEPS=""
899 fi
900 OSMESA_MESA_DEPS=""
901 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
902 ;;
903 *)
904 # Link OSMesa to libGL otherwise
905 OSMESA_LIB_DEPS=""
906 # only link libraries with osmesa if shared
907 if test "$enable_static" = no; then
908 OSMESA_MESA_DEPS='-l$(GL_LIB)'
909 else
910 OSMESA_MESA_DEPS=""
911 fi
912 OSMESA_PC_REQ="gl"
913 ;;
914 esac
915 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
916 AC_SUBST([OSMESA_LIB_DEPS])
917 AC_SUBST([OSMESA_MESA_DEPS])
918 AC_SUBST([OSMESA_PC_REQ])
919 AC_SUBST([OSMESA_PC_LIB_PRIV])
920
921 dnl
922 dnl EGL configuration
923 dnl
924 AC_ARG_ENABLE([egl],
925 [AS_HELP_STRING([--disable-egl],
926 [disable EGL library @<:@default=enabled@:>@])],
927 [enable_egl="$enableval"],
928 [enable_egl=yes])
929 if test "x$enable_egl" = xyes; then
930 SRC_DIRS="$SRC_DIRS egl"
931 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
932 EGL_DRIVERS_DIRS=""
933 if test "$enable_static" != yes; then
934 # build egl_glx when libGL is built
935 if test "$mesa_driver" != osmesa; then
936 EGL_DRIVERS_DIRS="glx"
937 fi
938
939 # build egl_dri2 when xcb-dri2 is available
940 PKG_CHECK_MODULES([EGL_DRI2], [x11-xcb xcb-dri2 xcb-xfixes libdrm],
941 [have_xcb_dri2=yes],[have_xcb_dri2=no])
942 if test "$have_xcb_dri2" = yes; then
943 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS dri2"
944 fi
945 fi
946
947 if test "$with_demos" = yes; then
948 PROGRAM_DIRS="$PROGRAM_DIRS egl"
949 fi
950 fi
951 AC_SUBST([EGL_LIB_DEPS])
952 AC_SUBST([EGL_DRIVERS_DIRS])
953
954 dnl
955 dnl GLU configuration
956 dnl
957 AC_ARG_ENABLE([glu],
958 [AS_HELP_STRING([--disable-glu],
959 [enable OpenGL Utility library @<:@default=enabled@:>@])],
960 [enable_glu="$enableval"],
961 [enable_glu=yes])
962 if test "x$enable_glu" = xyes; then
963 SRC_DIRS="$SRC_DIRS glu"
964
965 case "$mesa_driver" in
966 osmesa)
967 # If GLU is available and we have libOSMesa (not 16 or 32),
968 # we can build the osdemos
969 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
970 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
971 fi
972
973 # Link libGLU to libOSMesa instead of libGL
974 GLU_LIB_DEPS=""
975 GLU_PC_REQ="osmesa"
976 if test "$enable_static" = no; then
977 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
978 else
979 GLU_MESA_DEPS=""
980 fi
981 ;;
982 *)
983 # If static, empty GLU_LIB_DEPS and add libs for programs to link
984 GLU_PC_REQ="gl"
985 GLU_PC_LIB_PRIV="-lm"
986 if test "$enable_static" = no; then
987 GLU_LIB_DEPS="-lm"
988 GLU_MESA_DEPS='-l$(GL_LIB)'
989 else
990 GLU_LIB_DEPS=""
991 GLU_MESA_DEPS=""
992 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
993 fi
994 ;;
995 esac
996 fi
997 if test "$enable_static" = no; then
998 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
999 fi
1000 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1001 AC_SUBST([GLU_LIB_DEPS])
1002 AC_SUBST([GLU_MESA_DEPS])
1003 AC_SUBST([GLU_PC_REQ])
1004 AC_SUBST([GLU_PC_REQ_PRIV])
1005 AC_SUBST([GLU_PC_LIB_PRIV])
1006 AC_SUBST([GLU_PC_CFLAGS])
1007
1008 dnl
1009 dnl GLw configuration
1010 dnl
1011 AC_ARG_ENABLE([glw],
1012 [AS_HELP_STRING([--disable-glw],
1013 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1014 [enable_glw="$enableval"],
1015 [enable_glw=yes])
1016 dnl Don't build GLw on osmesa
1017 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1018 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1019 enable_glw=no
1020 fi
1021 AC_ARG_ENABLE([motif],
1022 [AS_HELP_STRING([--enable-motif],
1023 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1024 [enable_motif="$enableval"],
1025 [enable_motif=no])
1026
1027 if test "x$enable_glw" = xyes; then
1028 SRC_DIRS="$SRC_DIRS glw"
1029 if test "$x11_pkgconfig" = yes; then
1030 PKG_CHECK_MODULES([GLW],[x11 xt])
1031 GLW_PC_REQ_PRIV="x11 xt"
1032 GLW_LIB_DEPS="$GLW_LIBS"
1033 else
1034 # should check these...
1035 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1036 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1037 GLW_PC_CFLAGS="$X11_INCLUDES"
1038 fi
1039
1040 GLW_SOURCES="GLwDrawA.c"
1041 MOTIF_CFLAGS=
1042 if test "x$enable_motif" = xyes; then
1043 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1044 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1045 if test "x$MOTIF_CONFIG" != xno; then
1046 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1047 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1048 else
1049 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1050 [AC_MSG_ERROR([Can't locate Motif headers])])
1051 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1052 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1053 fi
1054 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1055 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1056 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1057 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1058 fi
1059
1060 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1061 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1062 if test "$enable_static" = no; then
1063 GLW_MESA_DEPS='-l$(GL_LIB)'
1064 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1065 else
1066 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1067 GLW_LIB_DEPS=""
1068 GLW_MESA_DEPS=""
1069 fi
1070 fi
1071 AC_SUBST([GLW_LIB_DEPS])
1072 AC_SUBST([GLW_MESA_DEPS])
1073 AC_SUBST([GLW_SOURCES])
1074 AC_SUBST([MOTIF_CFLAGS])
1075 AC_SUBST([GLW_PC_REQ_PRIV])
1076 AC_SUBST([GLW_PC_LIB_PRIV])
1077 AC_SUBST([GLW_PC_CFLAGS])
1078
1079 dnl
1080 dnl GLUT configuration
1081 dnl
1082 if test -f "$srcdir/include/GL/glut.h"; then
1083 default_glut=yes
1084 else
1085 default_glut=no
1086 fi
1087 AC_ARG_ENABLE([glut],
1088 [AS_HELP_STRING([--disable-glut],
1089 [enable GLUT library @<:@default=enabled if source available@:>@])],
1090 [enable_glut="$enableval"],
1091 [enable_glut="$default_glut"])
1092
1093 dnl Can't build glut if GLU not available
1094 if test "x$enable_glu$enable_glut" = xnoyes; then
1095 AC_MSG_WARN([Disabling glut since GLU is disabled])
1096 enable_glut=no
1097 fi
1098 dnl Don't build glut on osmesa
1099 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1100 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1101 enable_glut=no
1102 fi
1103
1104 if test "x$enable_glut" = xyes; then
1105 SRC_DIRS="$SRC_DIRS glut/glx"
1106 GLUT_CFLAGS=""
1107 if test "x$GCC" = xyes; then
1108 GLUT_CFLAGS="-fexceptions"
1109 fi
1110 if test "$x11_pkgconfig" = yes; then
1111 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1112 GLUT_PC_REQ_PRIV="x11 xmu xi"
1113 GLUT_LIB_DEPS="$GLUT_LIBS"
1114 else
1115 # should check these...
1116 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1117 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1118 GLUT_PC_CFLAGS="$X11_INCLUDES"
1119 fi
1120 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1121 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1122
1123 # If glut is available, we can build most programs
1124 if test "$with_demos" = yes; then
1125 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1126 fi
1127
1128 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1129 if test "$enable_static" = no; then
1130 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1131 else
1132 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1133 GLUT_LIB_DEPS=""
1134 GLUT_MESA_DEPS=""
1135 fi
1136 fi
1137 AC_SUBST([GLUT_LIB_DEPS])
1138 AC_SUBST([GLUT_MESA_DEPS])
1139 AC_SUBST([GLUT_CFLAGS])
1140 AC_SUBST([GLUT_PC_REQ_PRIV])
1141 AC_SUBST([GLUT_PC_LIB_PRIV])
1142 AC_SUBST([GLUT_PC_CFLAGS])
1143
1144 dnl
1145 dnl Program library dependencies
1146 dnl Only libm is added here if necessary as the libraries should
1147 dnl be pulled in by the linker
1148 dnl
1149 if test "x$APP_LIB_DEPS" = x; then
1150 case "$host_os" in
1151 solaris*)
1152 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1153 ;;
1154 cygwin*)
1155 APP_LIB_DEPS="-lX11"
1156 ;;
1157 *)
1158 APP_LIB_DEPS="-lm"
1159 ;;
1160 esac
1161 fi
1162 AC_SUBST([APP_LIB_DEPS])
1163 AC_SUBST([PROGRAM_DIRS])
1164
1165 dnl
1166 dnl Gallium configuration
1167 dnl
1168 AC_ARG_ENABLE([gallium],
1169 [AS_HELP_STRING([--disable-gallium],
1170 [build gallium @<:@default=enabled@:>@])],
1171 [enable_gallium="$enableval"],
1172 [enable_gallium=yes])
1173 if test "x$enable_gallium" = xyes; then
1174 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1175 fi
1176
1177 dnl
1178 dnl Gallium state trackers configuration
1179 dnl
1180 AC_ARG_WITH([state-trackers],
1181 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1182 [comma delimited state_trackers list, e.g.
1183 "egl,glx" @<:@default=auto@:>@])],
1184 [with_state_trackers="$withval"],
1185 [with_state_trackers=yes])
1186
1187 case "$with_state_trackers" in
1188 no)
1189 GALLIUM_STATE_TRACKERS_DIRS=""
1190 ;;
1191 yes)
1192 # look at what else is built
1193 case "$mesa_driver" in
1194 xlib)
1195 GALLIUM_STATE_TRACKERS_DIRS=glx
1196 ;;
1197 dri)
1198 GALLIUM_STATE_TRACKERS_DIRS="dri"
1199 if test "x$enable_egl" = xyes; then
1200 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1201 fi
1202 # Have only tested st/xorg on 1.6.0 servers
1203 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1204 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1205 HAVE_XORG="no")
1206 ;;
1207 esac
1208 ;;
1209 *)
1210 # verify the requested state tracker exist
1211 state_trackers=`IFS=', '; echo $with_state_trackers`
1212 for tracker in $state_trackers; do
1213 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1214 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1215
1216 case "$tracker" in
1217 egl)
1218 if test "x$enable_egl" != xyes; then
1219 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1220 fi
1221 ;;
1222 xorg)
1223 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1224 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1225 HAVE_XEXTPROTO_71="no")
1226 ;;
1227 es)
1228 # mesa/es is required to build es state tracker
1229 CORE_DIRS="$CORE_DIRS mesa/es"
1230 ;;
1231 esac
1232 done
1233 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1234 ;;
1235 esac
1236
1237 AC_ARG_WITH([egl-displays],
1238 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1239 [comma delimited native displays libEGL supports, e.g.
1240 "x11,kms" @<:@default=auto@:>@])],
1241 [with_egl_displays="$withval"],
1242 [with_egl_displays=yes])
1243
1244 EGL_DISPLAYS=""
1245 case "$with_egl_displays" in
1246 yes)
1247 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1248 EGL_DISPLAYS="x11"
1249 fi
1250 ;;
1251 *)
1252 if test "x$enable_egl" != xyes; then
1253 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1254 fi
1255 # verify the requested driver directories exist
1256 egl_displays=`IFS=', '; echo $with_egl_displays`
1257 for dpy in $egl_displays; do
1258 test -d "$srcdir/src/gallium/state_trackers/egl/$dpy" || \
1259 AC_MSG_ERROR([EGL display '$dpy' does't exist])
1260 done
1261 EGL_DISPLAYS="$egl_displays"
1262 ;;
1263 esac
1264 AC_SUBST([EGL_DISPLAYS])
1265
1266 AC_ARG_WITH([egl-driver-dir],
1267 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1268 [directory for EGL drivers [[default=${libdir}/egl]]])],
1269 [EGL_DRIVER_INSTALL_DIR="$withval"],
1270 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1271 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1272
1273 AC_ARG_WITH([xorg-driver-dir],
1274 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1275 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1276 [XORG_DRIVER_INSTALL_DIR="$withval"],
1277 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1278 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1279
1280 AC_ARG_WITH([max-width],
1281 [AS_HELP_STRING([--with-max-width=N],
1282 [Maximum framebuffer width (4096)])],
1283 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1284 AS_IF([test "${withval}" -gt "4096"],
1285 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1286 )
1287 AC_ARG_WITH([max-height],
1288 [AS_HELP_STRING([--with-max-height=N],
1289 [Maximum framebuffer height (4096)])],
1290 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1291 AS_IF([test "${withval}" -gt "4096"],
1292 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1293 )
1294
1295 dnl
1296 dnl Gallium SVGA configuration
1297 dnl
1298 AC_ARG_ENABLE([gallium-svga],
1299 [AS_HELP_STRING([--enable-gallium-svga],
1300 [build gallium SVGA @<:@default=disabled@:>@])],
1301 [enable_gallium_svga="$enableval"],
1302 [enable_gallium_svga=auto])
1303 if test "x$enable_gallium_svga" = xyes; then
1304 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1305 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1306 elif test "x$enable_gallium_svga" = xauto; then
1307 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1308 fi
1309
1310 dnl
1311 dnl Gallium Intel configuration
1312 dnl
1313 AC_ARG_ENABLE([gallium-intel],
1314 [AS_HELP_STRING([--enable-gallium-intel],
1315 [build gallium intel @<:@default=disabled@:>@])],
1316 [enable_gallium_intel="$enableval"],
1317 [enable_gallium_intel=auto])
1318 if test "x$enable_gallium_intel" = xyes; then
1319 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1320 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1321 elif test "x$enable_gallium_intel" = xauto; then
1322 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1323 fi
1324
1325 dnl
1326 dnl Gallium Radeon configuration
1327 dnl
1328 AC_ARG_ENABLE([gallium-radeon],
1329 [AS_HELP_STRING([--enable-gallium-radeon],
1330 [build gallium radeon @<:@default=disabled@:>@])],
1331 [enable_gallium_radeon="$enableval"],
1332 [enable_gallium_radeon=auto])
1333 if test "x$enable_gallium_radeon" = xyes; then
1334 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1335 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1336 elif test "x$enable_gallium_radeon" = xauto; then
1337 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1338 fi
1339
1340 dnl
1341 dnl Gallium Nouveau configuration
1342 dnl
1343 AC_ARG_ENABLE([gallium-nouveau],
1344 [AS_HELP_STRING([--enable-gallium-nouveau],
1345 [build gallium nouveau @<:@default=disabled@:>@])],
1346 [enable_gallium_nouveau="$enableval"],
1347 [enable_gallium_nouveau=no])
1348 if test "x$enable_gallium_nouveau" = xyes; then
1349 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1350 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv40 nv50"
1351 fi
1352
1353 dnl
1354 dnl Gallium swrast configuration
1355 dnl
1356 AC_ARG_ENABLE([gallium-swrast],
1357 [AS_HELP_STRING([--enable-gallium-swrast],
1358 [build gallium swrast @<:@default=disabled@:>@])],
1359 [enable_gallium_swrast="$enableval"],
1360 [enable_gallium_swrast=auto])
1361 if test "x$enable_gallium_swrast" = xyes; then
1362 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS swrast"
1363 fi
1364
1365 dnl prepend CORE_DIRS to SRC_DIRS
1366 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1367
1368 dnl Restore LDFLAGS and CPPFLAGS
1369 LDFLAGS="$_SAVE_LDFLAGS"
1370 CPPFLAGS="$_SAVE_CPPFLAGS"
1371
1372 dnl Substitute the config
1373 AC_CONFIG_FILES([configs/autoconf])
1374
1375 dnl Replace the configs/current symlink
1376 AC_CONFIG_COMMANDS([configs],[
1377 if test -f configs/current || test -L configs/current; then
1378 rm -f configs/current
1379 fi
1380 ln -s autoconf configs/current
1381 ])
1382
1383 AC_OUTPUT
1384
1385 dnl
1386 dnl Output some configuration info for the user
1387 dnl
1388 echo ""
1389 echo " prefix: $prefix"
1390 echo " exec_prefix: $exec_prefix"
1391 echo " libdir: $libdir"
1392 echo " includedir: $includedir"
1393
1394 dnl Driver info
1395 echo ""
1396 echo " Driver: $mesa_driver"
1397 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1398 echo " OSMesa: lib$OSMESA_LIB"
1399 else
1400 echo " OSMesa: no"
1401 fi
1402 if test "$mesa_driver" = dri; then
1403 # cleanup the drivers var
1404 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1405 if test "x$DRI_DIRS" = x; then
1406 echo " DRI drivers: no"
1407 else
1408 echo " DRI drivers: $dri_dirs"
1409 fi
1410 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1411 fi
1412 echo " Use XCB: $enable_xcb"
1413
1414 echo ""
1415 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1416 echo " Gallium: yes"
1417 echo " Gallium dirs: $GALLIUM_DIRS"
1418 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1419 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1420 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1421 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1422 else
1423 echo " Gallium: no"
1424 fi
1425
1426 dnl Libraries
1427 echo ""
1428 echo " Shared libs: $enable_shared"
1429 echo " Static libs: $enable_static"
1430 if test "$enable_egl" = yes; then
1431 echo " EGL: $EGL_DRIVERS_DIRS"
1432 else
1433 echo " EGL: no"
1434 fi
1435 echo " GLU: $enable_glu"
1436 echo " GLw: $enable_glw (Motif: $enable_motif)"
1437 echo " glut: $enable_glut"
1438
1439 dnl Programs
1440 # cleanup the programs var for display
1441 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1442 if test "x$program_dirs" = x; then
1443 echo " Demos: no"
1444 else
1445 echo " Demos: $program_dirs"
1446 fi
1447
1448 dnl Compiler options
1449 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1450 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1451 $SED 's/^ *//;s/ */ /;s/ *$//'`
1452 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1453 $SED 's/^ *//;s/ */ /;s/ *$//'`
1454 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1455 echo ""
1456 echo " CFLAGS: $cflags"
1457 echo " CXXFLAGS: $cxxflags"
1458 echo " Macros: $defines"
1459
1460 echo ""
1461 echo " Run '${MAKE-make}' to build Mesa"
1462 echo ""