Merge commit 'origin/master' into drm-gem
[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_errprint([Error: Failed to get the Mesa version from the output of
10 running `make -f bin/version.mk version'
11 ])
12 m4_exit([1])
13 ])
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.3.1
22 DRI2PROTO_REQUIRED=1.1
23
24 dnl Check for progs
25 AC_PROG_CPP
26 AC_PROG_CC
27 AC_PROG_CXX
28 AC_CHECK_PROGS([MAKE], [gmake make])
29 AC_PATH_PROG([MKDEP], [makedepend])
30 AC_PATH_PROG([SED], [sed])
31
32 MKDEP_OPTIONS=-fdepend
33 dnl Ask gcc where it's keeping its secret headers
34 if test "x$GCC" = xyes; then
35 GCC_INCLUDES=`$CC -print-file-name=include`
36 if test "x$GCC_INCLUDES" != x; then
37 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
38 fi
39 fi
40 AC_SUBST([MKDEP_OPTIONS])
41
42 dnl Make sure the pkg-config macros are defined
43 m4_ifdef([PKG_PROG_PKG_CONFIG],[],[
44 m4_errprint([Error: Could not locate the pkg-config autoconf macros.
45 These are usually located in /usr/share/aclocal/pkg.m4. If your
46 macros are in a different location, try setting the environment
47 variable ACLOCAL="aclocal -I/other/macro/dir" before running
48 autoreconf.
49 ])
50 m4_exit([1])
51 ])
52 PKG_PROG_PKG_CONFIG()
53
54 dnl LIB_DIR - library basename
55 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
56 AC_SUBST([LIB_DIR])
57
58 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
59 _SAVE_LDFLAGS="$LDFLAGS"
60 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
61 AC_SUBST([EXTRA_LIB_PATH])
62
63 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
64 _SAVE_CPPFLAGS="$CPPFLAGS"
65 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
66 AC_SUBST([X11_INCLUDES])
67
68 dnl Compiler macros
69 DEFINES=""
70 AC_SUBST([DEFINES])
71 case "$host_os" in
72 linux*)
73 if test "x$GCC" = xyes; then
74 DEFINES="$DEFINES -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
75 fi
76 DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
77 ;;
78 esac
79
80 dnl Add flags for gcc and g++
81 if test "x$GCC" = xyes; then
82 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
83
84 # Work around aliasing bugs - developers should comment this out
85 CFLAGS="$CFLAGS -fno-strict-aliasing"
86 fi
87 if test "x$GXX" = xyes; then
88 CXXFLAGS="$CXXFLAGS -Wall"
89
90 # Work around aliasing bugs - developers should comment this out
91 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
92 fi
93
94 dnl These should be unnecessary, but let the user set them if they want
95 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
96 Default is to use CFLAGS.])
97 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
98 compiler. Default is to use CFLAGS.])
99 AC_SUBST([OPT_FLAGS])
100 AC_SUBST([ARCH_FLAGS])
101
102 dnl
103 dnl Hacks to enable 32 or 64 bit build
104 dnl
105 AC_ARG_ENABLE([32-bit],
106 [AS_HELP_STRING([--enable-32-bit],
107 [build 32-bit libraries @<:@default=auto@:>@])],
108 [enable_32bit="$enableval"],
109 [enable_32bit=auto]
110 )
111 if test "x$enable_32bit" = xyes; then
112 if test "x$GCC" = xyes; then
113 CFLAGS="$CFLAGS -m32"
114 fi
115 if test "x$GXX" = xyes; then
116 CXXFLAGS="$CXXFLAGS -m32"
117 fi
118 fi
119 AC_ARG_ENABLE([64-bit],
120 [AS_HELP_STRING([--enable-64-bit],
121 [build 64-bit libraries @<:@default=auto@:>@])],
122 [enable_64bit="$enableval"],
123 [enable_64bit=auto]
124 )
125 if test "x$enable_64bit" = xyes; then
126 if test "x$GCC" = xyes; then
127 CFLAGS="$CFLAGS -m64"
128 fi
129 if test "x$GXX" = xyes; then
130 CXXFLAGS="$CXXFLAGS -m64"
131 fi
132 fi
133
134 dnl
135 dnl shared/static libraries, mimic libtool options
136 dnl
137 AC_ARG_ENABLE([static],
138 [AS_HELP_STRING([--enable-static],
139 [build static libraries @<:@default=disabled@:>@])],
140 [enable_static="$enableval"],
141 [enable_static=no]
142 )
143 case "x$enable_static" in
144 xyes|xno ) ;;
145 x ) enable_static=no ;;
146 * )
147 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
148 ;;
149 esac
150 AC_ARG_ENABLE([shared],
151 [AS_HELP_STRING([--disable-shared],
152 [build shared libraries @<:@default=enabled@:>@])],
153 [enable_shared="$enableval"],
154 [enable_shared=yes]
155 )
156 case "x$enable_shared" in
157 xyes|xno ) ;;
158 x ) enable_shared=yes ;;
159 * )
160 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
161 ;;
162 esac
163
164 dnl Can't have static and shared libraries, default to static if user
165 dnl explicitly requested. If both disabled, set to static since shared
166 dnl was explicitly requirested.
167 case "x$enable_static$enable_shared" in
168 xyesyes )
169 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
170 enable_shared=no
171 ;;
172 xnono )
173 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
174 enable_static=yes
175 ;;
176 esac
177
178 dnl
179 dnl mklib options
180 dnl
181 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
182 if test "$enable_static" = yes; then
183 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
184 fi
185 AC_SUBST([MKLIB_OPTIONS])
186
187 dnl
188 dnl other compiler options
189 dnl
190 AC_ARG_ENABLE([debug],
191 [AS_HELP_STRING([--enable-debug],
192 [use debug compiler flags and macros @<:@default=disabled@:>@])],
193 [enable_debug="$enableval"],
194 [enable_debug=no]
195 )
196 if test "x$enable_debug" = xyes; then
197 DEFINES="$DEFINES -DDEBUG"
198 if test "x$GCC" = xyes; then
199 CFLAGS="$CFLAGS -g"
200 fi
201 if test "x$GXX" = xyes; then
202 CXXFLAGS="$CXXFLAGS -g"
203 fi
204 fi
205
206 dnl
207 dnl library names
208 dnl
209 if test "$enable_static" = yes; then
210 GL_LIB_NAME='lib$(GL_LIB).a'
211 GLU_LIB_NAME='lib$(GLU_LIB).a'
212 GLUT_LIB_NAME='lib$(GLUT_LIB).a'
213 GLW_LIB_NAME='lib$(GLW_LIB).a'
214 OSMESA_LIB_NAME='lib$(OSMESA_LIB).a'
215 else
216 GL_LIB_NAME='lib$(GL_LIB).so'
217 GLU_LIB_NAME='lib$(GLU_LIB).so'
218 GLUT_LIB_NAME='lib$(GLUT_LIB).so'
219 GLW_LIB_NAME='lib$(GLW_LIB).so'
220 OSMESA_LIB_NAME='lib$(OSMESA_LIB).so'
221 fi
222 AC_SUBST([GL_LIB_NAME])
223 AC_SUBST([GLU_LIB_NAME])
224 AC_SUBST([GLUT_LIB_NAME])
225 AC_SUBST([GLW_LIB_NAME])
226 AC_SUBST([OSMESA_LIB_NAME])
227
228 dnl
229 dnl Arch/platform-specific settings
230 dnl
231 AC_ARG_ENABLE([asm],
232 [AS_HELP_STRING([--disable-asm],
233 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
234 [enable_asm="$enableval"],
235 [enable_asm=yes]
236 )
237 asm_arch=""
238 ASM_FLAGS=""
239 ASM_SOURCES=""
240 ASM_API=""
241 AC_MSG_CHECKING([whether to enable assembly])
242 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
243 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
244 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
245 case "$host_cpu" in
246 i?86 | x86_64)
247 enable_asm=no
248 AC_MSG_RESULT([no, cross compiling])
249 ;;
250 esac
251 fi
252 # check for supported arches
253 if test "x$enable_asm" = xyes; then
254 case "$host_cpu" in
255 i?86)
256 case "$host_os" in
257 linux* | freebsd* | dragonfly*)
258 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
259 ;;
260 esac
261 ;;
262 x86_64)
263 case "$host_os" in
264 linux* | freebsd* | dragonfly*)
265 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
266 ;;
267 esac
268 ;;
269 powerpc)
270 case "$host_os" in
271 linux*)
272 asm_arch=ppc
273 ;;
274 esac
275 ;;
276 esac
277
278 case "$asm_arch" in
279 x86)
280 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
281 ASM_SOURCES='$(X86_SOURCES)'
282 ASM_API='$(X86_API)'
283 AC_MSG_RESULT([yes, x86])
284 ;;
285 x86_64)
286 ASM_FLAGS="-DUSE_X86_64_ASM"
287 ASM_SOURCES='$(X86-64_SOURCES)'
288 ASM_API='$(X86-64_API)'
289 AC_MSG_RESULT([yes, x86_64])
290 ;;
291 ppc)
292 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
293 ASM_SOURCES='$(PPC_SOURCES)'
294 AC_MSG_RESULT([yes, ppc])
295 ;;
296 *)
297 AC_MSG_RESULT([no, platform not supported])
298 ;;
299 esac
300 fi
301 AC_SUBST([ASM_FLAGS])
302 AC_SUBST([ASM_SOURCES])
303 AC_SUBST([ASM_API])
304
305 dnl PIC code macro
306 MESA_PIC_FLAGS
307
308 dnl Check to see if dlopen is in default libraries (like Solaris, which
309 dnl has it in libc), or if libdl is needed to get it.
310 AC_CHECK_FUNC([dlopen], [],
311 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
312
313 dnl SELinux awareness.
314 AC_ARG_ENABLE([selinux],
315 [AS_HELP_STRING([--enable-selinux],
316 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
317 [MESA_SELINUX="$enableval"],
318 [MESA_SELINUX=no])
319 if test "x$enable_selinux" = "xyes"; then
320 AC_CHECK_HEADER([selinux/selinux.h],[],
321 [AC_MSG_ERROR([SELinux headers not found])])
322 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
323 [AC_MSG_ERROR([SELinux library not found])])
324 SELINUX_LIBS="-lselinux"
325 DEFINES="$DEFINES -DMESA_SELINUX"
326 fi
327
328
329 dnl
330 dnl Driver configuration. Options are xlib, dri and osmesa right now.
331 dnl More later: directfb, fbdev, ...
332 dnl
333 default_driver="xlib"
334
335 case "$host_os" in
336 linux*)
337 case "$host_cpu" in
338 i*86|x86_64|powerpc*) default_driver="dri";;
339 esac
340 ;;
341 freebsd* | dragonfly*)
342 case "$host_cpu" in
343 i*86|x86_64) default_driver="dri";;
344 esac
345 ;;
346 esac
347
348 AC_ARG_WITH([driver],
349 [AS_HELP_STRING([--with-driver=DRIVER],
350 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
351 [mesa_driver="$withval"],
352 [mesa_driver="$default_driver"])
353 dnl Check for valid option
354 case "x$mesa_driver" in
355 xxlib|xdri|xosmesa)
356 ;;
357 *)
358 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
359 ;;
360 esac
361
362 dnl
363 dnl Driver specific build directories
364 dnl
365 SRC_DIRS="mesa"
366 GLU_DIRS="sgi"
367 WINDOW_SYSTEM=""
368 case "$mesa_driver" in
369 xlib)
370 DRIVER_DIRS="x11"
371 ;;
372 dri)
373 SRC_DIRS="glx/x11 $SRC_DIRS"
374 DRIVER_DIRS="dri"
375 WINDOW_SYSTEM="dri"
376 ;;
377 osmesa)
378 DRIVER_DIRS="osmesa"
379 ;;
380 esac
381 AC_SUBST([SRC_DIRS])
382 AC_SUBST([GLU_DIRS])
383 AC_SUBST([DRIVER_DIRS])
384 AC_SUBST([WINDOW_SYSTEM])
385
386 dnl
387 dnl User supplied program configuration
388 dnl
389 if test -d "$srcdir/progs/demos"; then
390 default_demos=yes
391 else
392 default_demos=no
393 fi
394 AC_ARG_WITH([demos],
395 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
396 [optional comma delimited demo directories to build
397 @<:@default=auto if source available@:>@])],
398 [with_demos="$withval"],
399 [with_demos="$default_demos"])
400 if test "x$with_demos" = x; then
401 with_demos=no
402 fi
403
404 dnl If $with_demos is yes, directories will be added as libs available
405 PROGRAM_DIRS=""
406 case "$with_demos" in
407 no) ;;
408 yes)
409 # If the driver isn't osmesa, we have libGL and can build xdemos
410 if test "$mesa_driver" != osmesa; then
411 PROGRAM_DIRS="xdemos"
412 fi
413 ;;
414 *)
415 # verify the requested demos directories exist
416 demos=`IFS=,; echo $with_demos`
417 for demo in $demos; do
418 test -d "$srcdir/progs/$demo" || \
419 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
420 done
421 PROGRAM_DIRS="$demos"
422 ;;
423 esac
424
425 dnl
426 dnl Find out if X is available. The variable have_x is set if libX11 is
427 dnl to mimic AC_PATH_XTRA.
428 dnl
429 if test -n "$PKG_CONFIG"; then
430 AC_MSG_CHECKING([pkg-config files for X11 are available])
431 PKG_CHECK_EXISTS([x11],[
432 x11_pkgconfig=yes
433 have_x=yes
434 ],[
435 x11_pkgconfig=no
436 ])
437 AC_MSG_RESULT([$x11_pkgconfig])
438 else
439 x11_pkgconfig=no
440 fi
441 dnl Use the autoconf macro if no pkg-config files
442 if test "$x11_pkgconfig" = no; then
443 AC_PATH_XTRA
444 fi
445
446 dnl We need X for xlib and dri, so bomb now if it's not found
447 case "$mesa_driver" in
448 xlib|dri)
449 if test "$no_x" = yes; then
450 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
451 fi
452 ;;
453 esac
454
455 dnl XCB - this is only used for GLX right now
456 AC_ARG_ENABLE([xcb],
457 [AS_HELP_STRING([--enable-xcb],
458 [use XCB for GLX @<:@default=disabled@:>@])],
459 [enable_xcb="$enableval"],
460 [enable_xcb=no])
461 if test "x$enable_xcb" = xyes; then
462 DEFINES="$DEFINES -DUSE_XCB"
463 else
464 enable_xcb=no
465 fi
466
467 dnl
468 dnl libGL configuration per driver
469 dnl
470 case "$mesa_driver" in
471 xlib)
472 if test "$x11_pkgconfig" = yes; then
473 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
474 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
475 GL_LIB_DEPS="$XLIBGL_LIBS"
476 else
477 # should check these...
478 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
479 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
480 fi
481 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
482
483 # if static, move the external libraries to the programs
484 # and empty the libraries for libGL
485 if test "$enable_static" = yes; then
486 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
487 GL_LIB_DEPS=""
488 fi
489 ;;
490 dri)
491 # DRI must be shared, I think
492 if test "$enable_static" = yes; then
493 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
494 fi
495
496 # Check for libdrm
497 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
498 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
499
500 # find the DRI deps for libGL
501 if test "$x11_pkgconfig" = yes; then
502 # add xcb modules if necessary
503 dri_modules="x11 xext xxf86vm xdamage xfixes"
504 if test "$enable_xcb" = yes; then
505 dri_modules="$dri_modules x11-xcb xcb-glx"
506 fi
507
508 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
509 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
510 GL_LIB_DEPS="$DRIGL_LIBS"
511 else
512 # should check these...
513 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
514 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
515
516 # XCB can only be used from pkg-config
517 if test "$enable_xcb" = yes; then
518 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
519 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
520 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
521 fi
522 fi
523
524 # need DRM libs, -lpthread, etc.
525 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
526 ;;
527 osmesa)
528 # No libGL for osmesa
529 GL_LIB_DEPS=""
530 ;;
531 esac
532 AC_SUBST([GL_LIB_DEPS])
533
534 dnl
535 dnl More X11 setup
536 dnl
537 if test "$mesa_driver" = xlib; then
538 DEFINES="$DEFINES -DUSE_XSHM"
539 fi
540
541 dnl
542 dnl More DRI setup
543 dnl
544 AC_ARG_ENABLE([glx-tls],
545 [AS_HELP_STRING([--enable-glx-tls],
546 [enable TLS support in GLX @<:@default=disabled@:>@])],
547 [GLX_USE_TLS="$enableval"],
548 [GLX_USE_TLS=no])
549 dnl Directory for DRI drivers
550 AC_ARG_WITH([dri-driverdir],
551 [AS_HELP_STRING([--with-dri-driverdir=DIR],
552 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
553 [DRI_DRIVER_INSTALL_DIR="$withval"],
554 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
555 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
556 dnl Direct rendering or just indirect rendering
557 AC_ARG_ENABLE([driglx-direct],
558 [AS_HELP_STRING([--disable-driglx-direct],
559 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
560 [driglx_direct="$enableval"],
561 [driglx_direct="yes"])
562 dnl ttm support
563 AC_ARG_ENABLE([ttm-api],
564 [AS_HELP_STRING([--enable-ttm-api],
565 [enable TTM API users @<:@default=disabled@:>@])],
566 [ttmapi="$enableval"],
567 [ttmapi="no"])
568
569 if test "x$ttmapi" = "xyes"; then
570 save_CFLAGS=$CFLAGS
571 CFLAGS=$LIBDRM_CFLAGS
572 AC_CHECK_HEADERS([xf86mm.h],[],[AC_MSG_ERROR([xf86mm.h required for TTM.])],[#include "stdint.h"\n#include "drm.h"])
573 CFLAGS=$save_CFLAGS
574 fi
575
576 dnl Which drivers to build - default is chosen by platform
577 AC_ARG_WITH([dri-drivers],
578 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
579 [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])],
580 [with_dri_drivers="$withval"],
581 [with_dri_drivers=yes])
582 if test "x$with_dri_drivers" = x; then
583 with_dri_drivers=no
584 fi
585
586 dnl If $with_dri_drivers is yes, directories will be added through
587 dnl platform checks
588 DRI_DIRS=""
589 case "$with_dri_drivers" in
590 no|yes) ;;
591 *)
592 # verify the requested driver directories exist
593 dri_drivers=`IFS=,; echo $with_dri_drivers`
594 for driver in $dri_drivers; do
595 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
596 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
597 done
598 DRI_DIRS="$dri_drivers"
599 ;;
600 esac
601
602 dnl Just default to no EGL for now
603 USING_EGL=0
604 AC_SUBST([USING_EGL])
605
606 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
607 if test "$mesa_driver" = dri; then
608 # Use TLS in GLX?
609 if test "x$GLX_USE_TLS" = xyes; then
610 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
611 fi
612
613 if test "x$ttmapi" = xyes; then
614 DEFINES="$DEFINES -DTTM_API"
615 fi
616
617 if test "x$USING_EGL" = x1; then
618 PROGRAM_DIRS="egl"
619 fi
620
621 # Platform specific settings and drivers to build
622 case "$host_os" in
623 linux*)
624 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
625 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
626 if test "x$driglx_direct" = xyes; then
627 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
628 fi
629
630 case "$host_cpu" in
631 x86_64)
632 # ffb, gamma, and sis are missing because they have not be
633 # converted to use the new interface. i810 are missing
634 # because there is no x86-64 system where they could *ever*
635 # be used.
636 if test "x$DRI_DIRS" = x; then
637 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
638 savage tdfx unichrome swrast"
639 fi
640 ;;
641 powerpc*)
642 # Build only the drivers for cards that exist on PowerPC.
643 # At some point MGA will be added, but not yet.
644 if test "x$DRI_DIRS" = x; then
645 DRI_DIRS="mach64 r128 r200 r300 radeon tdfx swrast"
646 fi
647 ;;
648 sparc*)
649 # Build only the drivers for cards that exist on sparc`
650 if test "x$DRI_DIRS" = x; then
651 DRI_DIRS="mach64 r128 r200 r300 radeon ffb swrast"
652 fi
653 ;;
654 esac
655 ;;
656 freebsd* | dragonfly*)
657 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
658 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
659 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
660 if test "x$driglx_direct" = xyes; then
661 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
662 fi
663 if test "x$GXX" = xyes; then
664 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
665 fi
666
667 # ffb and gamma are missing because they have not been converted
668 # to use the new interface.
669 if test "x$DRI_DIRS" = x; then
670 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
671 unichrome savage sis swrast"
672 fi
673 ;;
674 esac
675
676 # default drivers
677 if test "x$DRI_DIRS" = x; then
678 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
679 savage sis tdfx trident unichrome ffb swrast"
680 fi
681
682 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
683
684 # Check for expat
685 EXPAT_INCLUDES=""
686 EXPAT_LIB=-lexpat
687 AC_ARG_WITH([expat],
688 [AS_HELP_STRING([--with-expat=DIR],
689 [expat install directory])],[
690 EXPAT_INCLUDES="-I$withval/include"
691 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
692 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
693 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
694 ])
695 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
696 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
697 [AC_MSG_ERROR([Expat required for DRI.])])
698
699 # put all the necessary libs together
700 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
701 fi
702 AC_SUBST([DRI_DIRS])
703 AC_SUBST([EXPAT_INCLUDES])
704 AC_SUBST([DRI_LIB_DEPS])
705
706 dnl
707 dnl OSMesa configuration
708 dnl
709 if test "$mesa_driver" = xlib; then
710 default_gl_osmesa=yes
711 else
712 default_gl_osmesa=no
713 fi
714 AC_ARG_ENABLE([gl-osmesa],
715 [AS_HELP_STRING([--enable-gl-osmesa],
716 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
717 [gl_osmesa="$enableval"],
718 [gl_osmesa="$default_gl_osmesa"])
719 if test "x$gl_osmesa" = xyes; then
720 if test "$mesa_driver" = osmesa; then
721 AC_MSG_ERROR([libGL is not available for OSMesa driver])
722 else
723 DRIVER_DIRS="$DRIVER_DIRS osmesa"
724 fi
725 fi
726
727 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
728 AC_ARG_WITH([osmesa-bits],
729 [AS_HELP_STRING([--with-osmesa-bits=BITS],
730 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
731 [osmesa_bits="$withval"],
732 [osmesa_bits=8])
733 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
734 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
735 osmesa_bits=8
736 fi
737 case "x$osmesa_bits" in
738 x8)
739 OSMESA_LIB=OSMesa
740 ;;
741 x16|x32)
742 OSMESA_LIB="OSMesa$osmesa_bits"
743 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
744 ;;
745 *)
746 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
747 ;;
748 esac
749 AC_SUBST([OSMESA_LIB])
750
751 case "$mesa_driver" in
752 osmesa)
753 # only link librararies with osmesa if shared
754 if test "$enable_static" = no; then
755 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS"
756 else
757 OSMESA_LIB_DEPS=""
758 fi
759 OSMESA_MESA_DEPS=""
760 ;;
761 *)
762 # Link OSMesa to libGL otherwise
763 OSMESA_LIB_DEPS=""
764 # only link librararies with osmesa if shared
765 if test "$enable_static" = no; then
766 OSMESA_MESA_DEPS='-l$(GL_LIB)'
767 else
768 OSMESA_MESA_DEPS=""
769 fi
770 ;;
771 esac
772 AC_SUBST([OSMESA_LIB_DEPS])
773 AC_SUBST([OSMESA_MESA_DEPS])
774
775 dnl
776 dnl GLU configuration
777 dnl
778 AC_ARG_ENABLE([glu],
779 [AS_HELP_STRING([--disable-glu],
780 [enable OpenGL Utility library @<:@default=enabled@:>@])],
781 [enable_glu="$enableval"],
782 [enable_glu=yes])
783 if test "x$enable_glu" = xyes; then
784 SRC_DIRS="$SRC_DIRS glu"
785
786 case "$mesa_driver" in
787 osmesa)
788 # If GLU is available and we have libOSMesa (not 16 or 32),
789 # we can build the osdemos
790 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
791 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
792 fi
793
794 # Link libGLU to libOSMesa instead of libGL
795 GLU_LIB_DEPS=""
796 if test "$enable_static" = no; then
797 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
798 else
799 GLU_MESA_DEPS=""
800 fi
801 ;;
802 *)
803 # If static, empty GLU_LIB_DEPS and add libs for programs to link
804 if test "$enable_static" = no; then
805 GLU_LIB_DEPS="-lm"
806 GLU_MESA_DEPS='-l$(GL_LIB)'
807 else
808 GLU_LIB_DEPS=""
809 GLU_MESA_DEPS=""
810 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
811 fi
812 ;;
813 esac
814 fi
815 AC_SUBST([GLU_LIB_DEPS])
816 AC_SUBST([GLU_MESA_DEPS])
817
818 dnl
819 dnl GLw configuration
820 dnl
821 AC_ARG_ENABLE([glw],
822 [AS_HELP_STRING([--disable-glw],
823 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
824 [enable_glw="$enableval"],
825 [enable_glw=yes])
826 dnl Don't build GLw on osmesa
827 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
828 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
829 enable_glw=no
830 fi
831 if test "x$enable_glw" = xyes; then
832 SRC_DIRS="$SRC_DIRS glw"
833 if test "$x11_pkgconfig" = yes; then
834 PKG_CHECK_MODULES([GLW],[x11 xt])
835 GLW_LIB_DEPS="$GLW_LIBS"
836 else
837 # should check these...
838 GLW_LIB_DEPS="$X_LIBS -lX11 -lXt"
839 fi
840
841 # If static, empty GLW_LIB_DEPS and add libs for programs to link
842 if test "$enable_static" = no; then
843 GLW_MESA_DEPS='-l$(GL_LIB)'
844 else
845 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
846 GLW_LIB_DEPS=""
847 GLW_MESA_DEPS=""
848 fi
849 fi
850 AC_SUBST([GLW_LIB_DEPS])
851 AC_SUBST([GLW_MESA_DEPS])
852
853 dnl
854 dnl GLUT configuration
855 dnl
856 if test -f "$srcdir/include/GL/glut.h"; then
857 default_glut=yes
858 else
859 default_glut=no
860 fi
861 AC_ARG_ENABLE([glut],
862 [AS_HELP_STRING([--disable-glut],
863 [enable GLUT library @<:@default=enabled if source available@:>@])],
864 [enable_glut="$enableval"],
865 [enable_glut="$default_glut"])
866
867 dnl Can't build glut if GLU not available
868 if test "x$enable_glu$enable_glut" = xnoyes; then
869 AC_MSG_WARN([Disabling glut since GLU is disabled])
870 enable_glut=no
871 fi
872 dnl Don't build glut on osmesa
873 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
874 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
875 enable_glut=no
876 fi
877
878 if test "x$enable_glut" = xyes; then
879 SRC_DIRS="$SRC_DIRS glut/glx"
880 GLUT_CFLAGS=""
881 if test "x$GCC" = xyes; then
882 GLUT_CFLAGS="-fexceptions"
883 fi
884 if test "$x11_pkgconfig" = yes; then
885 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
886 GLUT_LIB_DEPS="$GLUT_LIBS"
887 else
888 # should check these...
889 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
890 fi
891 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
892
893 # If glut is available, we can build most programs
894 if test "$with_demos" = yes; then
895 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
896 fi
897
898 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
899 if test "$enable_static" = no; then
900 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
901 else
902 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
903 GLUT_LIB_DEPS=""
904 GLUT_MESA_DEPS=""
905 fi
906 fi
907 AC_SUBST([GLUT_LIB_DEPS])
908 AC_SUBST([GLUT_MESA_DEPS])
909 AC_SUBST([GLUT_CFLAGS])
910
911 dnl
912 dnl Program library dependencies
913 dnl Only libm is added here if necessary as the libraries should
914 dnl be pulled in by the linker
915 dnl
916 if test "x$APP_LIB_DEPS" = x; then
917 APP_LIB_DEPS="-lm"
918 fi
919 AC_SUBST([APP_LIB_DEPS])
920 AC_SUBST([PROGRAM_DIRS])
921
922
923 dnl Restore LDFLAGS and CPPFLAGS
924 LDFLAGS="$_SAVE_LDFLAGS"
925 CPPFLAGS="$_SAVE_CPPFLAGS"
926
927 dnl Substitute the config
928 AC_CONFIG_FILES([configs/autoconf])
929
930 dnl Replace the configs/current symlink
931 AC_CONFIG_COMMANDS([configs],[
932 if test -f configs/current || test -L configs/current; then
933 rm -f configs/current
934 fi
935 ln -s autoconf configs/current
936 ])
937
938 AC_OUTPUT
939
940 dnl
941 dnl Output some configuration info for the user
942 dnl
943 echo ""
944 echo " prefix: $prefix"
945 echo " exec_prefix: $exec_prefix"
946 echo " libdir: $libdir"
947
948 dnl Driver info
949 echo ""
950 echo " Driver: $mesa_driver"
951 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
952 echo " OSMesa: lib$OSMESA_LIB"
953 else
954 echo " OSMesa: no"
955 fi
956 if test "$mesa_driver" = dri; then
957 # cleanup the drivers var
958 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
959 echo " DRI drivers: $dri_dirs"
960 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
961 echo " TTM API support: $ttmapi"
962 fi
963
964 dnl Libraries
965 echo ""
966 echo " Shared libs: $enable_shared"
967 echo " Static libs: $enable_static"
968 echo " GLU: $enable_glu"
969 echo " GLw: $enable_glw"
970 echo " glut: $enable_glut"
971
972 dnl Programs
973 # cleanup the programs var for display
974 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
975 if test "x$program_dirs" = x; then
976 echo " Demos: no"
977 else
978 echo " Demos: $program_dirs"
979 fi
980
981 dnl Compiler options
982 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
983 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
984 $SED 's/^ *//;s/ */ /;s/ *$//'`
985 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
986 $SED 's/^ *//;s/ */ /;s/ *$//'`
987 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
988 echo ""
989 echo " CFLAGS: $cflags"
990 echo " CXXFLAGS: $cxxflags"
991 echo " Macros: $defines"
992
993 echo ""
994 echo " Run '${MAKE-make}' to build Mesa"
995 echo ""