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