Add glesv2.pc and glesv1_cm.pc pkg-config files for ES 1 and 2
[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 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
283 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
284
285 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
286 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
287 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
288 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
289 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
290 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
291 GLESv1_CM_LIB_GLOB='lib$(GLESv1_CM_LIB).*'${LIB_EXTENSION}'*'
292 GLESv2_LIB_GLOB='lib$(GLESv2_LIB).*'${LIB_EXTENSION}'*'
293
294 AC_SUBST([GL_LIB_NAME])
295 AC_SUBST([GLU_LIB_NAME])
296 AC_SUBST([GLUT_LIB_NAME])
297 AC_SUBST([GLW_LIB_NAME])
298 AC_SUBST([OSMESA_LIB_NAME])
299 AC_SUBST([EGL_LIB_NAME])
300 AC_SUBST([GLESv1_CM_LIB_NAME])
301 AC_SUBST([GLESv2_LIB_NAME])
302
303 AC_SUBST([GL_LIB_GLOB])
304 AC_SUBST([GLU_LIB_GLOB])
305 AC_SUBST([GLUT_LIB_GLOB])
306 AC_SUBST([GLW_LIB_GLOB])
307 AC_SUBST([OSMESA_LIB_GLOB])
308 AC_SUBST([EGL_LIB_GLOB])
309 AC_SUBST([GLESv1_CM_LIB_GLOB])
310 AC_SUBST([GLESv2_LIB_GLOB])
311
312 dnl
313 dnl Arch/platform-specific settings
314 dnl
315 AC_ARG_ENABLE([asm],
316 [AS_HELP_STRING([--disable-asm],
317 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
318 [enable_asm="$enableval"],
319 [enable_asm=yes]
320 )
321 asm_arch=""
322 ASM_FLAGS=""
323 MESA_ASM_SOURCES=""
324 GLAPI_ASM_SOURCES=""
325 AC_MSG_CHECKING([whether to enable assembly])
326 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
327 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
328 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
329 case "$host_cpu" in
330 i?86 | x86_64)
331 enable_asm=no
332 AC_MSG_RESULT([no, cross compiling])
333 ;;
334 esac
335 fi
336 # check for supported arches
337 if test "x$enable_asm" = xyes; then
338 case "$host_cpu" in
339 i?86)
340 case "$host_os" in
341 linux* | *freebsd* | dragonfly*)
342 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
343 ;;
344 esac
345 ;;
346 x86_64)
347 case "$host_os" in
348 linux* | *freebsd* | dragonfly*)
349 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
350 ;;
351 esac
352 ;;
353 powerpc)
354 case "$host_os" in
355 linux*)
356 asm_arch=ppc
357 ;;
358 esac
359 ;;
360 sparc*)
361 case "$host_os" in
362 linux*)
363 asm_arch=sparc
364 ;;
365 esac
366 ;;
367 esac
368
369 case "$asm_arch" in
370 x86)
371 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
372 MESA_ASM_SOURCES='$(X86_SOURCES)'
373 GLAPI_ASM_SOURCES='$(X86_API)'
374 AC_MSG_RESULT([yes, x86])
375 ;;
376 x86_64)
377 ASM_FLAGS="-DUSE_X86_64_ASM"
378 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
379 GLAPI_ASM_SOURCES='$(X86-64_API)'
380 AC_MSG_RESULT([yes, x86_64])
381 ;;
382 ppc)
383 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
384 MESA_ASM_SOURCES='$(PPC_SOURCES)'
385 AC_MSG_RESULT([yes, ppc])
386 ;;
387 sparc)
388 ASM_FLAGS="-DUSE_SPARC_ASM"
389 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
390 GLAPI_ASM_SOURCES='$(SPARC_API)'
391 AC_MSG_RESULT([yes, sparc])
392 ;;
393 *)
394 AC_MSG_RESULT([no, platform not supported])
395 ;;
396 esac
397 fi
398 AC_SUBST([ASM_FLAGS])
399 AC_SUBST([MESA_ASM_SOURCES])
400 AC_SUBST([GLAPI_ASM_SOURCES])
401
402 dnl PIC code macro
403 MESA_PIC_FLAGS
404
405 dnl Check to see if dlopen is in default libraries (like Solaris, which
406 dnl has it in libc), or if libdl is needed to get it.
407 AC_CHECK_FUNC([dlopen], [],
408 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
409
410 dnl See if posix_memalign is available
411 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
412
413 dnl SELinux awareness.
414 AC_ARG_ENABLE([selinux],
415 [AS_HELP_STRING([--enable-selinux],
416 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
417 [MESA_SELINUX="$enableval"],
418 [MESA_SELINUX=no])
419 if test "x$enable_selinux" = "xyes"; then
420 AC_CHECK_HEADER([selinux/selinux.h],[],
421 [AC_MSG_ERROR([SELinux headers not found])])
422 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
423 [AC_MSG_ERROR([SELinux library not found])])
424 SELINUX_LIBS="-lselinux"
425 DEFINES="$DEFINES -DMESA_SELINUX"
426 fi
427
428 dnl
429 dnl Driver configuration. Options are xlib, dri and osmesa right now.
430 dnl More later: fbdev, ...
431 dnl
432 default_driver="xlib"
433
434 case "$host_os" in
435 linux*)
436 case "$host_cpu" in
437 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
438 esac
439 ;;
440 *freebsd* | dragonfly*)
441 case "$host_cpu" in
442 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
443 esac
444 ;;
445 esac
446
447 AC_ARG_WITH([driver],
448 [AS_HELP_STRING([--with-driver=DRIVER],
449 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
450 [mesa_driver="$withval"],
451 [mesa_driver="$default_driver"])
452 dnl Check for valid option
453 case "x$mesa_driver" in
454 xxlib|xdri|xosmesa)
455 ;;
456 *)
457 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
458 ;;
459 esac
460
461 dnl
462 dnl Driver specific build directories
463 dnl
464
465 dnl this variable will be prepended to SRC_DIRS and is not exported
466 CORE_DIRS="glsl mesa"
467
468 SRC_DIRS="glew"
469 GLU_DIRS="sgi"
470 GALLIUM_DIRS="auxiliary drivers state_trackers"
471 GALLIUM_TARGET_DIRS=""
472 GALLIUM_WINSYS_DIRS="sw"
473 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
474 GALLIUM_STATE_TRACKERS_DIRS=""
475
476 case "$mesa_driver" in
477 xlib)
478 DRIVER_DIRS="x11"
479 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
480 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
481 ;;
482 dri)
483 SRC_DIRS="$SRC_DIRS glx"
484 DRIVER_DIRS="dri"
485 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri sw/drm"
486 ;;
487 osmesa)
488 DRIVER_DIRS="osmesa"
489 ;;
490 esac
491 AC_SUBST([SRC_DIRS])
492 AC_SUBST([GLU_DIRS])
493 AC_SUBST([DRIVER_DIRS])
494 AC_SUBST([GALLIUM_DIRS])
495 AC_SUBST([GALLIUM_TARGET_DIRS])
496 AC_SUBST([GALLIUM_WINSYS_DIRS])
497 AC_SUBST([GALLIUM_DRIVERS_DIRS])
498 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
499
500 dnl
501 dnl User supplied program configuration
502 dnl
503 if test -d "$srcdir/progs/demos"; then
504 default_demos=yes
505 else
506 default_demos=no
507 fi
508 AC_ARG_WITH([demos],
509 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
510 [optional comma delimited demo directories to build
511 @<:@default=auto if source available@:>@])],
512 [with_demos="$withval"],
513 [with_demos="$default_demos"])
514 if test "x$with_demos" = x; then
515 with_demos=no
516 fi
517
518 dnl If $with_demos is yes, directories will be added as libs available
519 PROGRAM_DIRS=""
520 case "$with_demos" in
521 no) ;;
522 yes)
523 # If the driver isn't osmesa, we have libGL and can build xdemos
524 if test "$mesa_driver" != osmesa; then
525 PROGRAM_DIRS="xdemos"
526 fi
527 ;;
528 *)
529 # verify the requested demos directories exist
530 demos=`IFS=,; echo $with_demos`
531 for demo in $demos; do
532 test -d "$srcdir/progs/$demo" || \
533 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
534 done
535 PROGRAM_DIRS="$demos"
536 ;;
537 esac
538
539 dnl
540 dnl Find out if X is available. The variable have_x is set if libX11 is
541 dnl found to mimic AC_PATH_XTRA.
542 dnl
543 if test -n "$PKG_CONFIG"; then
544 AC_MSG_CHECKING([pkg-config files for X11 are available])
545 PKG_CHECK_EXISTS([x11],[
546 x11_pkgconfig=yes
547 have_x=yes
548 ],[
549 x11_pkgconfig=no
550 ])
551 AC_MSG_RESULT([$x11_pkgconfig])
552 else
553 x11_pkgconfig=no
554 fi
555 dnl Use the autoconf macro if no pkg-config files
556 if test "$x11_pkgconfig" = yes; then
557 PKG_CHECK_MODULES([X11], [x11])
558 else
559 AC_PATH_XTRA
560 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
561 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
562 AC_SUBST([X11_CFLAGS])
563 AC_SUBST([X11_LIBS])
564 fi
565
566 dnl Try to tell the user that the --x-* options are only used when
567 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
568 m4_divert_once([HELP_BEGIN],
569 [These options are only used when the X libraries cannot be found by the
570 pkg-config utility.])
571
572 dnl We need X for xlib and dri, so bomb now if it's not found
573 case "$mesa_driver" in
574 xlib|dri)
575 if test "$no_x" = yes; then
576 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
577 fi
578 ;;
579 esac
580
581 dnl XCB - this is only used for GLX right now
582 AC_ARG_ENABLE([xcb],
583 [AS_HELP_STRING([--enable-xcb],
584 [use XCB for GLX @<:@default=disabled@:>@])],
585 [enable_xcb="$enableval"],
586 [enable_xcb=no])
587 if test "x$enable_xcb" = xyes; then
588 DEFINES="$DEFINES -DUSE_XCB"
589 else
590 enable_xcb=no
591 fi
592
593 dnl
594 dnl libGL configuration per driver
595 dnl
596 case "$mesa_driver" in
597 xlib)
598 if test "$x11_pkgconfig" = yes; then
599 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
600 GL_PC_REQ_PRIV="x11 xext"
601 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
602 GL_LIB_DEPS="$XLIBGL_LIBS"
603 else
604 # should check these...
605 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
606 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
607 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
608 GL_PC_CFLAGS="$X11_INCLUDES"
609 fi
610 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
611 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
612
613 # if static, move the external libraries to the programs
614 # and empty the libraries for libGL
615 if test "$enable_static" = yes; then
616 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
617 GL_LIB_DEPS=""
618 fi
619 ;;
620 dri)
621 # DRI must be shared, I think
622 if test "$enable_static" = yes; then
623 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
624 fi
625
626 # Check for libdrm
627 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
628 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
629 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
630 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
631 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
632
633 # find the DRI deps for libGL
634 if test "$x11_pkgconfig" = yes; then
635 # add xcb modules if necessary
636 dri_modules="x11 xext xxf86vm xdamage xfixes"
637 if test "$enable_xcb" = yes; then
638 dri_modules="$dri_modules x11-xcb xcb-glx"
639 fi
640
641 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
642 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
643 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
644 GL_LIB_DEPS="$DRIGL_LIBS"
645 else
646 # should check these...
647 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
648 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
649 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
650 GL_PC_CFLAGS="$X11_INCLUDES"
651
652 # XCB can only be used from pkg-config
653 if test "$enable_xcb" = yes; then
654 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
655 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
656 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
657 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
658 fi
659 fi
660
661 # need DRM libs, -lpthread, etc.
662 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
663 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
664 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
665 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
666 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
667 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
668 ;;
669 osmesa)
670 # No libGL for osmesa
671 GL_LIB_DEPS=""
672 ;;
673 esac
674 AC_SUBST([GL_LIB_DEPS])
675 AC_SUBST([GL_PC_REQ_PRIV])
676 AC_SUBST([GL_PC_LIB_PRIV])
677 AC_SUBST([GL_PC_CFLAGS])
678 AC_SUBST([DRI_PC_REQ_PRIV])
679 AC_SUBST([GLESv1_LIB_DEPS])
680 AC_SUBST([GLESv2_LIB_DEPS])
681
682 dnl
683 dnl More X11 setup
684 dnl
685 if test "$mesa_driver" = xlib; then
686 DEFINES="$DEFINES -DUSE_XSHM"
687 fi
688
689 dnl
690 dnl More DRI setup
691 dnl
692 AC_ARG_ENABLE([glx-tls],
693 [AS_HELP_STRING([--enable-glx-tls],
694 [enable TLS support in GLX @<:@default=disabled@:>@])],
695 [GLX_USE_TLS="$enableval"],
696 [GLX_USE_TLS=no])
697 dnl Directory for DRI drivers
698 AC_ARG_WITH([dri-driverdir],
699 [AS_HELP_STRING([--with-dri-driverdir=DIR],
700 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
701 [DRI_DRIVER_INSTALL_DIR="$withval"],
702 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
703 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
704 dnl Extra search path for DRI drivers
705 AC_ARG_WITH([dri-searchpath],
706 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
707 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
708 [DRI_DRIVER_SEARCH_DIR="$withval"],
709 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
710 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
711 dnl Direct rendering or just indirect rendering
712 AC_ARG_ENABLE([driglx-direct],
713 [AS_HELP_STRING([--disable-driglx-direct],
714 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
715 [driglx_direct="$enableval"],
716 [driglx_direct="yes"])
717 dnl Which drivers to build - default is chosen by platform
718 AC_ARG_WITH([dri-drivers],
719 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
720 [comma delimited DRI drivers list, e.g.
721 "swrast,i965,radeon" @<:@default=auto@:>@])],
722 [with_dri_drivers="$withval"],
723 [with_dri_drivers=yes])
724 if test "x$with_dri_drivers" = x; then
725 with_dri_drivers=no
726 fi
727
728 dnl Determine which APIs to support
729 AC_ARG_ENABLE([opengl],
730 [AS_HELP_STRING([--disable-opengl],
731 [disable support for standard OpenGL API @<:@default=no@:>@])],
732 [enable_opengl="$enableval"],
733 [enable_opengl=yes])
734 AC_ARG_ENABLE([gles1],
735 [AS_HELP_STRING([--enable-gles1],
736 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
737 [enable_gles1="$enableval"],
738 [enable_gles1=no])
739 AC_ARG_ENABLE([gles2],
740 [AS_HELP_STRING([--enable-gles2],
741 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
742 [enable_gles2="$enableval"],
743 [enable_gles2=no])
744
745 API_DEFINES=""
746 if test "x$enable_opengl" = xno; then
747 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
748 else
749 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
750 fi
751 if test "x$enable_gles1" = xyes; then
752 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
753 fi
754 if test "x$enable_gles2" = xyes; then
755 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
756 fi
757 if test "x$enable_gles1" = xyes -o "x$enable_gles2"; then
758 SRC_DIRS="$SRC_DIRS gles"
759 fi
760 AC_SUBST([API_DEFINES])
761
762 dnl If $with_dri_drivers is yes, directories will be added through
763 dnl platform checks
764 DRI_DIRS=""
765 case "$with_dri_drivers" in
766 no) ;;
767 yes)
768 DRI_DIRS="yes"
769 ;;
770 *)
771 # verify the requested driver directories exist
772 dri_drivers=`IFS=', '; echo $with_dri_drivers`
773 for driver in $dri_drivers; do
774 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
775 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
776 done
777 DRI_DIRS="$dri_drivers"
778 ;;
779 esac
780
781 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
782 if test "$mesa_driver" = dri; then
783 # Use TLS in GLX?
784 if test "x$GLX_USE_TLS" = xyes; then
785 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
786 fi
787
788 # Platform specific settings and drivers to build
789 case "$host_os" in
790 linux*)
791 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
792 if test "x$driglx_direct" = xyes; then
793 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
794 fi
795 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
796
797 case "$host_cpu" in
798 x86_64)
799 # sis is missing because they have not be converted to use
800 # the new interface. i810 are missing because there is no
801 # x86-64 system where they could *ever* be used.
802 if test "x$DRI_DIRS" = "xyes"; then
803 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
804 savage tdfx unichrome swrast"
805 fi
806 ;;
807 powerpc*)
808 # Build only the drivers for cards that exist on PowerPC.
809 # At some point MGA will be added, but not yet.
810 if test "x$DRI_DIRS" = "xyes"; then
811 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
812 fi
813 ;;
814 sparc*)
815 # Build only the drivers for cards that exist on sparc`
816 if test "x$DRI_DIRS" = "xyes"; then
817 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
818 fi
819 ;;
820 esac
821 ;;
822 freebsd* | dragonfly*)
823 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
824 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
825 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
826 if test "x$driglx_direct" = xyes; then
827 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
828 fi
829 if test "x$GXX" = xyes; then
830 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
831 fi
832
833 if test "x$DRI_DIRS" = "xyes"; then
834 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
835 unichrome savage sis swrast"
836 fi
837 ;;
838 gnu*)
839 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
840 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
841 ;;
842 solaris*)
843 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
844 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
845 if test "x$driglx_direct" = xyes; then
846 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
847 fi
848 ;;
849 esac
850
851 # default drivers
852 if test "x$DRI_DIRS" = "xyes"; then
853 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
854 savage sis tdfx unichrome swrast"
855 fi
856
857 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
858
859 # Check for expat
860 EXPAT_INCLUDES=""
861 EXPAT_LIB=-lexpat
862 AC_ARG_WITH([expat],
863 [AS_HELP_STRING([--with-expat=DIR],
864 [expat install directory])],[
865 EXPAT_INCLUDES="-I$withval/include"
866 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
867 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
868 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
869 ])
870 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
871 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
872 [AC_MSG_ERROR([Expat required for DRI.])])
873
874 # put all the necessary libs together
875 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
876 fi
877 AC_SUBST([DRI_DIRS])
878 AC_SUBST([EXPAT_INCLUDES])
879 AC_SUBST([DRI_LIB_DEPS])
880
881 case $DRI_DIRS in
882 *i915*|*i965*)
883 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.19])
884 ;;
885 esac
886
887 case $DRI_DIRS in
888 *radeon*|*r200*|*r300*|*r600*)
889 PKG_CHECK_MODULES([LIBDRM_RADEON],
890 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
891 HAVE_LIBDRM_RADEON=yes,
892 HAVE_LIBDRM_RADEON=no)
893
894 if test "$HAVE_LIBDRM_RADEON" = yes; then
895 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
896 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
897 fi
898 ;;
899 esac
900 AC_SUBST([RADEON_CFLAGS])
901 AC_SUBST([RADEON_LDFLAGS])
902
903
904 dnl
905 dnl OSMesa configuration
906 dnl
907 if test "$mesa_driver" = xlib; then
908 default_gl_osmesa=yes
909 else
910 default_gl_osmesa=no
911 fi
912 AC_ARG_ENABLE([gl-osmesa],
913 [AS_HELP_STRING([--enable-gl-osmesa],
914 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
915 [gl_osmesa="$enableval"],
916 [gl_osmesa="$default_gl_osmesa"])
917 if test "x$gl_osmesa" = xyes; then
918 if test "$mesa_driver" = osmesa; then
919 AC_MSG_ERROR([libGL is not available for OSMesa driver])
920 else
921 DRIVER_DIRS="$DRIVER_DIRS osmesa"
922 fi
923 fi
924
925 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
926 AC_ARG_WITH([osmesa-bits],
927 [AS_HELP_STRING([--with-osmesa-bits=BITS],
928 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
929 [osmesa_bits="$withval"],
930 [osmesa_bits=8])
931 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
932 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
933 osmesa_bits=8
934 fi
935 case "x$osmesa_bits" in
936 x8)
937 OSMESA_LIB=OSMesa
938 ;;
939 x16|x32)
940 OSMESA_LIB="OSMesa$osmesa_bits"
941 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
942 ;;
943 *)
944 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
945 ;;
946 esac
947 AC_SUBST([OSMESA_LIB])
948
949 case "$mesa_driver" in
950 osmesa)
951 # only link libraries with osmesa if shared
952 if test "$enable_static" = no; then
953 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
954 else
955 OSMESA_LIB_DEPS=""
956 fi
957 OSMESA_MESA_DEPS=""
958 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
959 ;;
960 *)
961 # Link OSMesa to libGL otherwise
962 OSMESA_LIB_DEPS=""
963 # only link libraries with osmesa if shared
964 if test "$enable_static" = no; then
965 OSMESA_MESA_DEPS='-l$(GL_LIB)'
966 else
967 OSMESA_MESA_DEPS=""
968 fi
969 OSMESA_PC_REQ="gl"
970 ;;
971 esac
972 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
973 AC_SUBST([OSMESA_LIB_DEPS])
974 AC_SUBST([OSMESA_MESA_DEPS])
975 AC_SUBST([OSMESA_PC_REQ])
976 AC_SUBST([OSMESA_PC_LIB_PRIV])
977
978 dnl
979 dnl EGL configuration
980 dnl
981 AC_ARG_ENABLE([egl],
982 [AS_HELP_STRING([--disable-egl],
983 [disable EGL library @<:@default=enabled@:>@])],
984 [enable_egl="$enableval"],
985 [enable_egl=yes])
986 if test "x$enable_egl" = xyes; then
987 SRC_DIRS="$SRC_DIRS egl"
988 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
989 EGL_DRIVERS_DIRS=""
990 if test "$enable_static" != yes; then
991 # build egl_glx when libGL is built
992 if test "$mesa_driver" != osmesa; then
993 EGL_DRIVERS_DIRS="glx"
994 fi
995
996 # build egl_dri2 when xcb-dri2 is available
997 PKG_CHECK_MODULES([EGL_DRI2], [x11-xcb xcb-dri2 xcb-xfixes libdrm],
998 [have_xcb_dri2=yes],[have_xcb_dri2=no])
999 if test "$have_xcb_dri2" = yes; then
1000 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS dri2"
1001 fi
1002 fi
1003
1004 if test "$with_demos" = yes; then
1005 PROGRAM_DIRS="$PROGRAM_DIRS egl/opengl"
1006 fi
1007 fi
1008 AC_SUBST([EGL_LIB_DEPS])
1009 AC_SUBST([EGL_DRIVERS_DIRS])
1010
1011 dnl
1012 dnl GLU configuration
1013 dnl
1014 AC_ARG_ENABLE([glu],
1015 [AS_HELP_STRING([--disable-glu],
1016 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1017 [enable_glu="$enableval"],
1018 [enable_glu=yes])
1019 if test "x$enable_glu" = xyes; then
1020 SRC_DIRS="$SRC_DIRS glu"
1021
1022 case "$mesa_driver" in
1023 osmesa)
1024 # If GLU is available and we have libOSMesa (not 16 or 32),
1025 # we can build the osdemos
1026 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
1027 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
1028 fi
1029
1030 # Link libGLU to libOSMesa instead of libGL
1031 GLU_LIB_DEPS=""
1032 GLU_PC_REQ="osmesa"
1033 if test "$enable_static" = no; then
1034 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1035 else
1036 GLU_MESA_DEPS=""
1037 fi
1038 ;;
1039 *)
1040 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1041 GLU_PC_REQ="gl"
1042 GLU_PC_LIB_PRIV="-lm"
1043 if test "$enable_static" = no; then
1044 GLU_LIB_DEPS="-lm"
1045 GLU_MESA_DEPS='-l$(GL_LIB)'
1046 else
1047 GLU_LIB_DEPS=""
1048 GLU_MESA_DEPS=""
1049 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1050 fi
1051 ;;
1052 esac
1053 fi
1054 if test "$enable_static" = no; then
1055 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1056 fi
1057 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1058 AC_SUBST([GLU_LIB_DEPS])
1059 AC_SUBST([GLU_MESA_DEPS])
1060 AC_SUBST([GLU_PC_REQ])
1061 AC_SUBST([GLU_PC_REQ_PRIV])
1062 AC_SUBST([GLU_PC_LIB_PRIV])
1063 AC_SUBST([GLU_PC_CFLAGS])
1064
1065 dnl
1066 dnl GLw configuration
1067 dnl
1068 AC_ARG_ENABLE([glw],
1069 [AS_HELP_STRING([--disable-glw],
1070 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1071 [enable_glw="$enableval"],
1072 [enable_glw=yes])
1073 dnl Don't build GLw on osmesa
1074 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1075 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1076 enable_glw=no
1077 fi
1078 AC_ARG_ENABLE([motif],
1079 [AS_HELP_STRING([--enable-motif],
1080 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1081 [enable_motif="$enableval"],
1082 [enable_motif=no])
1083
1084 if test "x$enable_glw" = xyes; then
1085 SRC_DIRS="$SRC_DIRS glw"
1086 if test "$x11_pkgconfig" = yes; then
1087 PKG_CHECK_MODULES([GLW],[x11 xt])
1088 GLW_PC_REQ_PRIV="x11 xt"
1089 GLW_LIB_DEPS="$GLW_LIBS"
1090 else
1091 # should check these...
1092 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1093 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1094 GLW_PC_CFLAGS="$X11_INCLUDES"
1095 fi
1096
1097 GLW_SOURCES="GLwDrawA.c"
1098 MOTIF_CFLAGS=
1099 if test "x$enable_motif" = xyes; then
1100 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1101 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1102 if test "x$MOTIF_CONFIG" != xno; then
1103 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1104 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1105 else
1106 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1107 [AC_MSG_ERROR([Can't locate Motif headers])])
1108 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1109 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1110 fi
1111 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1112 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1113 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1114 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1115 fi
1116
1117 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1118 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1119 if test "$enable_static" = no; then
1120 GLW_MESA_DEPS='-l$(GL_LIB)'
1121 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1122 else
1123 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1124 GLW_LIB_DEPS=""
1125 GLW_MESA_DEPS=""
1126 fi
1127 fi
1128 AC_SUBST([GLW_LIB_DEPS])
1129 AC_SUBST([GLW_MESA_DEPS])
1130 AC_SUBST([GLW_SOURCES])
1131 AC_SUBST([MOTIF_CFLAGS])
1132 AC_SUBST([GLW_PC_REQ_PRIV])
1133 AC_SUBST([GLW_PC_LIB_PRIV])
1134 AC_SUBST([GLW_PC_CFLAGS])
1135
1136 dnl
1137 dnl GLUT configuration
1138 dnl
1139 if test -f "$srcdir/include/GL/glut.h"; then
1140 default_glut=yes
1141 else
1142 default_glut=no
1143 fi
1144 AC_ARG_ENABLE([glut],
1145 [AS_HELP_STRING([--disable-glut],
1146 [enable GLUT library @<:@default=enabled if source available@:>@])],
1147 [enable_glut="$enableval"],
1148 [enable_glut="$default_glut"])
1149
1150 dnl Can't build glut if GLU not available
1151 if test "x$enable_glu$enable_glut" = xnoyes; then
1152 AC_MSG_WARN([Disabling glut since GLU is disabled])
1153 enable_glut=no
1154 fi
1155 dnl Don't build glut on osmesa
1156 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1157 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1158 enable_glut=no
1159 fi
1160
1161 if test "x$enable_glut" = xyes; then
1162 SRC_DIRS="$SRC_DIRS glut/glx"
1163 GLUT_CFLAGS=""
1164 if test "x$GCC" = xyes; then
1165 GLUT_CFLAGS="-fexceptions"
1166 fi
1167 if test "$x11_pkgconfig" = yes; then
1168 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1169 GLUT_PC_REQ_PRIV="x11 xmu xi"
1170 GLUT_LIB_DEPS="$GLUT_LIBS"
1171 else
1172 # should check these...
1173 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1174 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1175 GLUT_PC_CFLAGS="$X11_INCLUDES"
1176 fi
1177 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1178 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1179
1180 # If glut is available, we can build most programs
1181 if test "$with_demos" = yes; then
1182 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1183 fi
1184
1185 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1186 if test "$enable_static" = no; then
1187 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1188 else
1189 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1190 GLUT_LIB_DEPS=""
1191 GLUT_MESA_DEPS=""
1192 fi
1193 fi
1194 AC_SUBST([GLUT_LIB_DEPS])
1195 AC_SUBST([GLUT_MESA_DEPS])
1196 AC_SUBST([GLUT_CFLAGS])
1197 AC_SUBST([GLUT_PC_REQ_PRIV])
1198 AC_SUBST([GLUT_PC_LIB_PRIV])
1199 AC_SUBST([GLUT_PC_CFLAGS])
1200
1201 dnl
1202 dnl Program library dependencies
1203 dnl Only libm is added here if necessary as the libraries should
1204 dnl be pulled in by the linker
1205 dnl
1206 if test "x$APP_LIB_DEPS" = x; then
1207 case "$host_os" in
1208 solaris*)
1209 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1210 ;;
1211 cygwin*)
1212 APP_LIB_DEPS="-lX11"
1213 ;;
1214 *)
1215 APP_LIB_DEPS="-lm"
1216 ;;
1217 esac
1218 fi
1219 AC_SUBST([APP_LIB_DEPS])
1220 AC_SUBST([PROGRAM_DIRS])
1221
1222 dnl
1223 dnl Gallium configuration
1224 dnl
1225 AC_ARG_ENABLE([gallium],
1226 [AS_HELP_STRING([--disable-gallium],
1227 [build gallium @<:@default=enabled@:>@])],
1228 [enable_gallium="$enableval"],
1229 [enable_gallium=yes])
1230 if test "x$enable_gallium" = xyes; then
1231 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1232 fi
1233
1234 dnl
1235 dnl Gallium state trackers configuration
1236 dnl
1237 AC_ARG_WITH([state-trackers],
1238 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1239 [comma delimited state_trackers list, e.g.
1240 "egl,glx" @<:@default=auto@:>@])],
1241 [with_state_trackers="$withval"],
1242 [with_state_trackers=yes])
1243
1244 case "$with_state_trackers" in
1245 no)
1246 GALLIUM_STATE_TRACKERS_DIRS=""
1247 ;;
1248 yes)
1249 # look at what else is built
1250 case "$mesa_driver" in
1251 xlib)
1252 GALLIUM_STATE_TRACKERS_DIRS=glx
1253 ;;
1254 dri)
1255 GALLIUM_STATE_TRACKERS_DIRS="dri"
1256 HAVE_ST_DRI="yes"
1257 if test "x$enable_egl" = xyes; then
1258 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1259 HAVE_ST_EGL="yes"
1260 fi
1261 # Have only tested st/xorg on 1.6.0 servers
1262 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1263 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1264 HAVE_ST_XORG="no")
1265 ;;
1266 esac
1267 ;;
1268 *)
1269 # verify the requested state tracker exist
1270 state_trackers=`IFS=', '; echo $with_state_trackers`
1271 for tracker in $state_trackers; do
1272 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1273 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1274
1275 case "$tracker" in
1276 dri)
1277 if test "x$mesa_driver" != xdri; then
1278 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1279 fi
1280 HAVE_ST_DRI="yes"
1281 ;;
1282 egl)
1283 if test "x$enable_egl" != xyes; then
1284 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1285 fi
1286 HAVE_ST_EGL="yes"
1287 ;;
1288 xorg)
1289 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1290 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1291 HAVE_ST_XORG="yes"
1292 ;;
1293 es)
1294 # mesa/es is required to build es state tracker
1295 CORE_DIRS="$CORE_DIRS mesa/es"
1296 ;;
1297 esac
1298 done
1299 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1300 ;;
1301 esac
1302
1303 if test "x$HAVE_ST_XORG" = xyes; then
1304 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1305 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1306 HAVE_XEXTPROTO_71="no")
1307 fi
1308
1309 AC_ARG_WITH([egl-displays],
1310 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1311 [comma delimited native displays libEGL supports, e.g.
1312 "x11,kms" @<:@default=auto@:>@])],
1313 [with_egl_displays="$withval"],
1314 [with_egl_displays=yes])
1315
1316 EGL_DISPLAYS=""
1317 case "$with_egl_displays" in
1318 yes)
1319 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1320 EGL_DISPLAYS="x11"
1321 fi
1322 ;;
1323 *)
1324 if test "x$enable_egl" != xyes; then
1325 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1326 fi
1327 # verify the requested driver directories exist
1328 egl_displays=`IFS=', '; echo $with_egl_displays`
1329 for dpy in $egl_displays; do
1330 test -d "$srcdir/src/gallium/state_trackers/egl/$dpy" || \
1331 AC_MSG_ERROR([EGL display '$dpy' does't exist])
1332 done
1333 EGL_DISPLAYS="$egl_displays"
1334 ;;
1335 esac
1336 AC_SUBST([EGL_DISPLAYS])
1337
1338 AC_ARG_WITH([egl-driver-dir],
1339 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1340 [directory for EGL drivers [[default=${libdir}/egl]]])],
1341 [EGL_DRIVER_INSTALL_DIR="$withval"],
1342 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1343 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1344
1345 AC_ARG_WITH([xorg-driver-dir],
1346 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1347 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1348 [XORG_DRIVER_INSTALL_DIR="$withval"],
1349 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1350 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1351
1352 AC_ARG_WITH([max-width],
1353 [AS_HELP_STRING([--with-max-width=N],
1354 [Maximum framebuffer width (4096)])],
1355 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1356 AS_IF([test "${withval}" -gt "4096"],
1357 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1358 )
1359 AC_ARG_WITH([max-height],
1360 [AS_HELP_STRING([--with-max-height=N],
1361 [Maximum framebuffer height (4096)])],
1362 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1363 AS_IF([test "${withval}" -gt "4096"],
1364 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1365 )
1366
1367 dnl
1368 dnl Gallium helper functions
1369 dnl
1370 gallium_check_st() {
1371 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_EGL" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1372 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1373 fi
1374 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1375 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1376 fi
1377 if test "x$HAVE_ST_EGL" = xyes && test "x$3" != x; then
1378 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1379 fi
1380 if test "x$HAVE_ST_XORG" = xyes && test "x$4" != x; then
1381 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1382 fi
1383 }
1384
1385
1386 dnl
1387 dnl Gallium SVGA configuration
1388 dnl
1389 AC_ARG_ENABLE([gallium-svga],
1390 [AS_HELP_STRING([--enable-gallium-svga],
1391 [build gallium SVGA @<:@default=disabled@:>@])],
1392 [enable_gallium_svga="$enableval"],
1393 [enable_gallium_svga=auto])
1394 if test "x$enable_gallium_svga" = xyes; then
1395 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1396 gallium_check_st "svga/drm" "dri-vmwgfx" "egl-vmwgfx" "xorg-vmwgfx"
1397 elif test "x$enable_gallium_svga" = xauto; then
1398 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1399 fi
1400
1401 dnl
1402 dnl Gallium Intel configuration
1403 dnl
1404 AC_ARG_ENABLE([gallium-intel],
1405 [AS_HELP_STRING([--enable-gallium-intel],
1406 [build gallium intel @<:@default=disabled@:>@])],
1407 [enable_gallium_intel="$enableval"],
1408 [enable_gallium_intel=auto])
1409 if test "x$enable_gallium_intel" = xyes; then
1410 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1411 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1412 gallium_check_st "i915/drm i965/drm" "dri-i915 dri-i965" "egl-i915 egl-i965" "xorg-i915 xorg-i965"
1413 elif test "x$enable_gallium_intel" = xauto; then
1414 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1415 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1416 fi
1417
1418 dnl
1419 dnl Gallium Radeon configuration
1420 dnl
1421 AC_ARG_ENABLE([gallium-radeon],
1422 [AS_HELP_STRING([--enable-gallium-radeon],
1423 [build gallium radeon @<:@default=disabled@:>@])],
1424 [enable_gallium_radeon="$enableval"],
1425 [enable_gallium_radeon=auto])
1426 if test "x$enable_gallium_radeon" = xyes; then
1427 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1428 gallium_check_st "radeon/drm" "dri-radeong" "egl-radeon" "xorg-radeon"
1429 elif test "x$enable_gallium_radeon" = xauto; then
1430 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1431 fi
1432
1433 dnl
1434 dnl Gallium Nouveau configuration
1435 dnl
1436 AC_ARG_ENABLE([gallium-nouveau],
1437 [AS_HELP_STRING([--enable-gallium-nouveau],
1438 [build gallium nouveau @<:@default=disabled@:>@])],
1439 [enable_gallium_nouveau="$enableval"],
1440 [enable_gallium_nouveau=no])
1441 if test "x$enable_gallium_nouveau" = xyes; then
1442 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1443 gallium_check_st "nouveau/drm" "dri-nouveau" "egl-nouveau" "xorg-nouveau"
1444 fi
1445
1446 dnl
1447 dnl Gallium swrast configuration
1448 dnl
1449 AC_ARG_ENABLE([gallium-swrast],
1450 [AS_HELP_STRING([--enable-gallium-swrast],
1451 [build gallium swrast @<:@default=auto@:>@])],
1452 [enable_gallium_swrast="$enableval"],
1453 [enable_gallium_swrast=auto])
1454 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1455 if test "x$HAVE_ST_DRI" = xyes; then
1456 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1457 fi
1458 if test "x$HAVE_ST_EGL" = xyes; then
1459 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-swrast"
1460 fi
1461 fi
1462
1463 dnl prepend CORE_DIRS to SRC_DIRS
1464 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1465
1466 dnl Restore LDFLAGS and CPPFLAGS
1467 LDFLAGS="$_SAVE_LDFLAGS"
1468 CPPFLAGS="$_SAVE_CPPFLAGS"
1469
1470 dnl Substitute the config
1471 AC_CONFIG_FILES([configs/autoconf])
1472
1473 dnl Replace the configs/current symlink
1474 AC_CONFIG_COMMANDS([configs],[
1475 if test -f configs/current || test -L configs/current; then
1476 rm -f configs/current
1477 fi
1478 ln -s autoconf configs/current
1479 ])
1480
1481 AC_OUTPUT
1482
1483 dnl
1484 dnl Output some configuration info for the user
1485 dnl
1486 echo ""
1487 echo " prefix: $prefix"
1488 echo " exec_prefix: $exec_prefix"
1489 echo " libdir: $libdir"
1490 echo " includedir: $includedir"
1491
1492 dnl Driver info
1493 echo ""
1494 echo " Driver: $mesa_driver"
1495 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1496 echo " OSMesa: lib$OSMESA_LIB"
1497 else
1498 echo " OSMesa: no"
1499 fi
1500 if test "$mesa_driver" = dri; then
1501 # cleanup the drivers var
1502 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1503 if test "x$DRI_DIRS" = x; then
1504 echo " DRI drivers: no"
1505 else
1506 echo " DRI drivers: $dri_dirs"
1507 fi
1508 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1509 fi
1510 echo " Use XCB: $enable_xcb"
1511
1512 echo ""
1513 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1514 echo " Gallium: yes"
1515 echo " Gallium dirs: $GALLIUM_DIRS"
1516 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1517 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1518 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1519 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1520 else
1521 echo " Gallium: no"
1522 fi
1523
1524 dnl Libraries
1525 echo ""
1526 echo " Shared libs: $enable_shared"
1527 echo " Static libs: $enable_static"
1528 if test "$enable_egl" = yes; then
1529 echo " EGL: $EGL_DRIVERS_DIRS"
1530 else
1531 echo " EGL: no"
1532 fi
1533 echo " GLU: $enable_glu"
1534 echo " GLw: $enable_glw (Motif: $enable_motif)"
1535 echo " glut: $enable_glut"
1536
1537 dnl Programs
1538 # cleanup the programs var for display
1539 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1540 if test "x$program_dirs" = x; then
1541 echo " Demos: no"
1542 else
1543 echo " Demos: $program_dirs"
1544 fi
1545
1546 dnl Compiler options
1547 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1548 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1549 $SED 's/^ *//;s/ */ /;s/ *$//'`
1550 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1551 $SED 's/^ *//;s/ */ /;s/ *$//'`
1552 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1553 echo ""
1554 echo " CFLAGS: $cflags"
1555 echo " CXXFLAGS: $cxxflags"
1556 echo " Macros: $defines"
1557
1558 echo ""
1559 echo " Run '${MAKE-make}' to build Mesa"
1560 echo ""