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