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