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