gles: Build libGLESv1_CM.so and libGLESv2.so from glapi files
[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 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
666
667 ;;
668 osmesa)
669 # No libGL for osmesa
670 GL_LIB_DEPS=""
671 ;;
672 esac
673 AC_SUBST([GL_LIB_DEPS])
674 AC_SUBST([GL_PC_REQ_PRIV])
675 AC_SUBST([GL_PC_LIB_PRIV])
676 AC_SUBST([GL_PC_CFLAGS])
677 AC_SUBST([DRI_PC_REQ_PRIV])
678 AC_SUBST([GLESv1_LIB_DEPS])
679 AC_SUBST([GLESv2_LIB_DEPS])
680
681 dnl
682 dnl More X11 setup
683 dnl
684 if test "$mesa_driver" = xlib; then
685 DEFINES="$DEFINES -DUSE_XSHM"
686 fi
687
688 dnl
689 dnl More DRI setup
690 dnl
691 AC_ARG_ENABLE([glx-tls],
692 [AS_HELP_STRING([--enable-glx-tls],
693 [enable TLS support in GLX @<:@default=disabled@:>@])],
694 [GLX_USE_TLS="$enableval"],
695 [GLX_USE_TLS=no])
696 dnl Directory for DRI drivers
697 AC_ARG_WITH([dri-driverdir],
698 [AS_HELP_STRING([--with-dri-driverdir=DIR],
699 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
700 [DRI_DRIVER_INSTALL_DIR="$withval"],
701 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
702 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
703 dnl Extra search path for DRI drivers
704 AC_ARG_WITH([dri-searchpath],
705 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
706 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
707 [DRI_DRIVER_SEARCH_DIR="$withval"],
708 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
709 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
710 dnl Direct rendering or just indirect rendering
711 AC_ARG_ENABLE([driglx-direct],
712 [AS_HELP_STRING([--disable-driglx-direct],
713 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
714 [driglx_direct="$enableval"],
715 [driglx_direct="yes"])
716 dnl Which drivers to build - default is chosen by platform
717 AC_ARG_WITH([dri-drivers],
718 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
719 [comma delimited DRI drivers list, e.g.
720 "swrast,i965,radeon" @<:@default=auto@:>@])],
721 [with_dri_drivers="$withval"],
722 [with_dri_drivers=yes])
723 if test "x$with_dri_drivers" = x; then
724 with_dri_drivers=no
725 fi
726
727 dnl Determine which APIs to support
728 AC_ARG_ENABLE([opengl],
729 [AS_HELP_STRING([--disable-opengl],
730 [disable support for standard OpenGL API @<:@default=no@:>@])],
731 [enable_opengl="$enableval"],
732 [enable_opengl=yes])
733 AC_ARG_ENABLE([gles1],
734 [AS_HELP_STRING([--enable-gles1],
735 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
736 [enable_gles1="$enableval"],
737 [enable_gles1=no])
738 AC_ARG_ENABLE([gles2],
739 [AS_HELP_STRING([--enable-gles2],
740 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
741 [enable_gles2="$enableval"],
742 [enable_gles2=no])
743
744 API_DEFINES=""
745 if test "x$enable_opengl" = xno; then
746 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
747 else
748 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
749 fi
750 if test "x$enable_gles1" = xyes; then
751 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
752 fi
753 if test "x$enable_gles2" = xyes; then
754 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
755 fi
756 if test "x$enable_gles1" = xyes -o "x$enable_gles2"; then
757 SRC_DIRS="$SRC_DIRS gles"
758 fi
759 AC_SUBST([API_DEFINES])
760
761 dnl If $with_dri_drivers is yes, directories will be added through
762 dnl platform checks
763 DRI_DIRS=""
764 case "$with_dri_drivers" in
765 no) ;;
766 yes)
767 DRI_DIRS="yes"
768 ;;
769 *)
770 # verify the requested driver directories exist
771 dri_drivers=`IFS=', '; echo $with_dri_drivers`
772 for driver in $dri_drivers; do
773 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
774 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
775 done
776 DRI_DIRS="$dri_drivers"
777 ;;
778 esac
779
780 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
781 if test "$mesa_driver" = dri; then
782 # Use TLS in GLX?
783 if test "x$GLX_USE_TLS" = xyes; then
784 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
785 fi
786
787 # Platform specific settings and drivers to build
788 case "$host_os" in
789 linux*)
790 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
791 if test "x$driglx_direct" = xyes; then
792 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
793 fi
794 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
795
796 case "$host_cpu" in
797 x86_64)
798 # sis is missing because they have not be converted to use
799 # the new interface. i810 are missing because there is no
800 # x86-64 system where they could *ever* be used.
801 if test "x$DRI_DIRS" = "xyes"; then
802 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
803 savage tdfx unichrome swrast"
804 fi
805 ;;
806 powerpc*)
807 # Build only the drivers for cards that exist on PowerPC.
808 # At some point MGA will be added, but not yet.
809 if test "x$DRI_DIRS" = "xyes"; then
810 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
811 fi
812 ;;
813 sparc*)
814 # Build only the drivers for cards that exist on sparc`
815 if test "x$DRI_DIRS" = "xyes"; then
816 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
817 fi
818 ;;
819 esac
820 ;;
821 freebsd* | dragonfly*)
822 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
823 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
824 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
825 if test "x$driglx_direct" = xyes; then
826 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
827 fi
828 if test "x$GXX" = xyes; then
829 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
830 fi
831
832 if test "x$DRI_DIRS" = "xyes"; then
833 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
834 unichrome savage sis swrast"
835 fi
836 ;;
837 gnu*)
838 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
839 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
840 ;;
841 solaris*)
842 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
843 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
844 if test "x$driglx_direct" = xyes; then
845 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
846 fi
847 ;;
848 esac
849
850 # default drivers
851 if test "x$DRI_DIRS" = "xyes"; then
852 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
853 savage sis tdfx unichrome swrast"
854 fi
855
856 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
857
858 # Check for expat
859 EXPAT_INCLUDES=""
860 EXPAT_LIB=-lexpat
861 AC_ARG_WITH([expat],
862 [AS_HELP_STRING([--with-expat=DIR],
863 [expat install directory])],[
864 EXPAT_INCLUDES="-I$withval/include"
865 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
866 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
867 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
868 ])
869 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
870 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
871 [AC_MSG_ERROR([Expat required for DRI.])])
872
873 # put all the necessary libs together
874 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
875 fi
876 AC_SUBST([DRI_DIRS])
877 AC_SUBST([EXPAT_INCLUDES])
878 AC_SUBST([DRI_LIB_DEPS])
879
880 case $DRI_DIRS in
881 *i915*|*i965*)
882 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.19])
883 ;;
884 esac
885
886 case $DRI_DIRS in
887 *radeon*|*r200*|*r300*|*r600*)
888 PKG_CHECK_MODULES([LIBDRM_RADEON],
889 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
890 HAVE_LIBDRM_RADEON=yes,
891 HAVE_LIBDRM_RADEON=no)
892
893 if test "$HAVE_LIBDRM_RADEON" = yes; then
894 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
895 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
896 fi
897 ;;
898 esac
899 AC_SUBST([RADEON_CFLAGS])
900 AC_SUBST([RADEON_LDFLAGS])
901
902
903 dnl
904 dnl OSMesa configuration
905 dnl
906 if test "$mesa_driver" = xlib; then
907 default_gl_osmesa=yes
908 else
909 default_gl_osmesa=no
910 fi
911 AC_ARG_ENABLE([gl-osmesa],
912 [AS_HELP_STRING([--enable-gl-osmesa],
913 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
914 [gl_osmesa="$enableval"],
915 [gl_osmesa="$default_gl_osmesa"])
916 if test "x$gl_osmesa" = xyes; then
917 if test "$mesa_driver" = osmesa; then
918 AC_MSG_ERROR([libGL is not available for OSMesa driver])
919 else
920 DRIVER_DIRS="$DRIVER_DIRS osmesa"
921 fi
922 fi
923
924 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
925 AC_ARG_WITH([osmesa-bits],
926 [AS_HELP_STRING([--with-osmesa-bits=BITS],
927 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
928 [osmesa_bits="$withval"],
929 [osmesa_bits=8])
930 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
931 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
932 osmesa_bits=8
933 fi
934 case "x$osmesa_bits" in
935 x8)
936 OSMESA_LIB=OSMesa
937 ;;
938 x16|x32)
939 OSMESA_LIB="OSMesa$osmesa_bits"
940 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
941 ;;
942 *)
943 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
944 ;;
945 esac
946 AC_SUBST([OSMESA_LIB])
947
948 case "$mesa_driver" in
949 osmesa)
950 # only link libraries with osmesa if shared
951 if test "$enable_static" = no; then
952 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
953 else
954 OSMESA_LIB_DEPS=""
955 fi
956 OSMESA_MESA_DEPS=""
957 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
958 ;;
959 *)
960 # Link OSMesa to libGL otherwise
961 OSMESA_LIB_DEPS=""
962 # only link libraries with osmesa if shared
963 if test "$enable_static" = no; then
964 OSMESA_MESA_DEPS='-l$(GL_LIB)'
965 else
966 OSMESA_MESA_DEPS=""
967 fi
968 OSMESA_PC_REQ="gl"
969 ;;
970 esac
971 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
972 AC_SUBST([OSMESA_LIB_DEPS])
973 AC_SUBST([OSMESA_MESA_DEPS])
974 AC_SUBST([OSMESA_PC_REQ])
975 AC_SUBST([OSMESA_PC_LIB_PRIV])
976
977 dnl
978 dnl EGL configuration
979 dnl
980 AC_ARG_ENABLE([egl],
981 [AS_HELP_STRING([--disable-egl],
982 [disable EGL library @<:@default=enabled@:>@])],
983 [enable_egl="$enableval"],
984 [enable_egl=yes])
985 if test "x$enable_egl" = xyes; then
986 SRC_DIRS="$SRC_DIRS egl"
987 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
988 EGL_DRIVERS_DIRS=""
989 if test "$enable_static" != yes; then
990 # build egl_glx when libGL is built
991 if test "$mesa_driver" != osmesa; then
992 EGL_DRIVERS_DIRS="glx"
993 fi
994
995 # build egl_dri2 when xcb-dri2 is available
996 PKG_CHECK_MODULES([EGL_DRI2], [x11-xcb xcb-dri2 xcb-xfixes libdrm],
997 [have_xcb_dri2=yes],[have_xcb_dri2=no])
998 if test "$have_xcb_dri2" = yes; then
999 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS dri2"
1000 fi
1001 fi
1002
1003 if test "$with_demos" = yes; then
1004 PROGRAM_DIRS="$PROGRAM_DIRS egl/opengl"
1005 fi
1006 fi
1007 AC_SUBST([EGL_LIB_DEPS])
1008 AC_SUBST([EGL_DRIVERS_DIRS])
1009
1010 dnl
1011 dnl GLU configuration
1012 dnl
1013 AC_ARG_ENABLE([glu],
1014 [AS_HELP_STRING([--disable-glu],
1015 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1016 [enable_glu="$enableval"],
1017 [enable_glu=yes])
1018 if test "x$enable_glu" = xyes; then
1019 SRC_DIRS="$SRC_DIRS glu"
1020
1021 case "$mesa_driver" in
1022 osmesa)
1023 # If GLU is available and we have libOSMesa (not 16 or 32),
1024 # we can build the osdemos
1025 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
1026 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
1027 fi
1028
1029 # Link libGLU to libOSMesa instead of libGL
1030 GLU_LIB_DEPS=""
1031 GLU_PC_REQ="osmesa"
1032 if test "$enable_static" = no; then
1033 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1034 else
1035 GLU_MESA_DEPS=""
1036 fi
1037 ;;
1038 *)
1039 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1040 GLU_PC_REQ="gl"
1041 GLU_PC_LIB_PRIV="-lm"
1042 if test "$enable_static" = no; then
1043 GLU_LIB_DEPS="-lm"
1044 GLU_MESA_DEPS='-l$(GL_LIB)'
1045 else
1046 GLU_LIB_DEPS=""
1047 GLU_MESA_DEPS=""
1048 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1049 fi
1050 ;;
1051 esac
1052 fi
1053 if test "$enable_static" = no; then
1054 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1055 fi
1056 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1057 AC_SUBST([GLU_LIB_DEPS])
1058 AC_SUBST([GLU_MESA_DEPS])
1059 AC_SUBST([GLU_PC_REQ])
1060 AC_SUBST([GLU_PC_REQ_PRIV])
1061 AC_SUBST([GLU_PC_LIB_PRIV])
1062 AC_SUBST([GLU_PC_CFLAGS])
1063
1064 dnl
1065 dnl GLw configuration
1066 dnl
1067 AC_ARG_ENABLE([glw],
1068 [AS_HELP_STRING([--disable-glw],
1069 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1070 [enable_glw="$enableval"],
1071 [enable_glw=yes])
1072 dnl Don't build GLw on osmesa
1073 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1074 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1075 enable_glw=no
1076 fi
1077 AC_ARG_ENABLE([motif],
1078 [AS_HELP_STRING([--enable-motif],
1079 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1080 [enable_motif="$enableval"],
1081 [enable_motif=no])
1082
1083 if test "x$enable_glw" = xyes; then
1084 SRC_DIRS="$SRC_DIRS glw"
1085 if test "$x11_pkgconfig" = yes; then
1086 PKG_CHECK_MODULES([GLW],[x11 xt])
1087 GLW_PC_REQ_PRIV="x11 xt"
1088 GLW_LIB_DEPS="$GLW_LIBS"
1089 else
1090 # should check these...
1091 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1092 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1093 GLW_PC_CFLAGS="$X11_INCLUDES"
1094 fi
1095
1096 GLW_SOURCES="GLwDrawA.c"
1097 MOTIF_CFLAGS=
1098 if test "x$enable_motif" = xyes; then
1099 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1100 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1101 if test "x$MOTIF_CONFIG" != xno; then
1102 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1103 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1104 else
1105 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1106 [AC_MSG_ERROR([Can't locate Motif headers])])
1107 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1108 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1109 fi
1110 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1111 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1112 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1113 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1114 fi
1115
1116 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1117 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1118 if test "$enable_static" = no; then
1119 GLW_MESA_DEPS='-l$(GL_LIB)'
1120 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1121 else
1122 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1123 GLW_LIB_DEPS=""
1124 GLW_MESA_DEPS=""
1125 fi
1126 fi
1127 AC_SUBST([GLW_LIB_DEPS])
1128 AC_SUBST([GLW_MESA_DEPS])
1129 AC_SUBST([GLW_SOURCES])
1130 AC_SUBST([MOTIF_CFLAGS])
1131 AC_SUBST([GLW_PC_REQ_PRIV])
1132 AC_SUBST([GLW_PC_LIB_PRIV])
1133 AC_SUBST([GLW_PC_CFLAGS])
1134
1135 dnl
1136 dnl GLUT configuration
1137 dnl
1138 if test -f "$srcdir/include/GL/glut.h"; then
1139 default_glut=yes
1140 else
1141 default_glut=no
1142 fi
1143 AC_ARG_ENABLE([glut],
1144 [AS_HELP_STRING([--disable-glut],
1145 [enable GLUT library @<:@default=enabled if source available@:>@])],
1146 [enable_glut="$enableval"],
1147 [enable_glut="$default_glut"])
1148
1149 dnl Can't build glut if GLU not available
1150 if test "x$enable_glu$enable_glut" = xnoyes; then
1151 AC_MSG_WARN([Disabling glut since GLU is disabled])
1152 enable_glut=no
1153 fi
1154 dnl Don't build glut on osmesa
1155 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1156 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1157 enable_glut=no
1158 fi
1159
1160 if test "x$enable_glut" = xyes; then
1161 SRC_DIRS="$SRC_DIRS glut/glx"
1162 GLUT_CFLAGS=""
1163 if test "x$GCC" = xyes; then
1164 GLUT_CFLAGS="-fexceptions"
1165 fi
1166 if test "$x11_pkgconfig" = yes; then
1167 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1168 GLUT_PC_REQ_PRIV="x11 xmu xi"
1169 GLUT_LIB_DEPS="$GLUT_LIBS"
1170 else
1171 # should check these...
1172 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1173 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1174 GLUT_PC_CFLAGS="$X11_INCLUDES"
1175 fi
1176 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1177 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1178
1179 # If glut is available, we can build most programs
1180 if test "$with_demos" = yes; then
1181 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1182 fi
1183
1184 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1185 if test "$enable_static" = no; then
1186 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1187 else
1188 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1189 GLUT_LIB_DEPS=""
1190 GLUT_MESA_DEPS=""
1191 fi
1192 fi
1193 AC_SUBST([GLUT_LIB_DEPS])
1194 AC_SUBST([GLUT_MESA_DEPS])
1195 AC_SUBST([GLUT_CFLAGS])
1196 AC_SUBST([GLUT_PC_REQ_PRIV])
1197 AC_SUBST([GLUT_PC_LIB_PRIV])
1198 AC_SUBST([GLUT_PC_CFLAGS])
1199
1200 dnl
1201 dnl Program library dependencies
1202 dnl Only libm is added here if necessary as the libraries should
1203 dnl be pulled in by the linker
1204 dnl
1205 if test "x$APP_LIB_DEPS" = x; then
1206 case "$host_os" in
1207 solaris*)
1208 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1209 ;;
1210 cygwin*)
1211 APP_LIB_DEPS="-lX11"
1212 ;;
1213 *)
1214 APP_LIB_DEPS="-lm"
1215 ;;
1216 esac
1217 fi
1218 AC_SUBST([APP_LIB_DEPS])
1219 AC_SUBST([PROGRAM_DIRS])
1220
1221 dnl
1222 dnl Gallium configuration
1223 dnl
1224 AC_ARG_ENABLE([gallium],
1225 [AS_HELP_STRING([--disable-gallium],
1226 [build gallium @<:@default=enabled@:>@])],
1227 [enable_gallium="$enableval"],
1228 [enable_gallium=yes])
1229 if test "x$enable_gallium" = xyes; then
1230 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1231 fi
1232
1233 dnl
1234 dnl Gallium state trackers configuration
1235 dnl
1236 AC_ARG_WITH([state-trackers],
1237 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1238 [comma delimited state_trackers list, e.g.
1239 "egl,glx" @<:@default=auto@:>@])],
1240 [with_state_trackers="$withval"],
1241 [with_state_trackers=yes])
1242
1243 case "$with_state_trackers" in
1244 no)
1245 GALLIUM_STATE_TRACKERS_DIRS=""
1246 ;;
1247 yes)
1248 # look at what else is built
1249 case "$mesa_driver" in
1250 xlib)
1251 GALLIUM_STATE_TRACKERS_DIRS=glx
1252 ;;
1253 dri)
1254 GALLIUM_STATE_TRACKERS_DIRS="dri"
1255 HAVE_ST_DRI="yes"
1256 if test "x$enable_egl" = xyes; then
1257 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1258 HAVE_ST_EGL="yes"
1259 fi
1260 # Have only tested st/xorg on 1.6.0 servers
1261 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1262 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1263 HAVE_ST_XORG="no")
1264 ;;
1265 esac
1266 ;;
1267 *)
1268 # verify the requested state tracker exist
1269 state_trackers=`IFS=', '; echo $with_state_trackers`
1270 for tracker in $state_trackers; do
1271 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1272 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1273
1274 case "$tracker" in
1275 dri)
1276 if test "x$mesa_driver" != xdri; then
1277 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1278 fi
1279 HAVE_ST_DRI="yes"
1280 ;;
1281 egl)
1282 if test "x$enable_egl" != xyes; then
1283 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1284 fi
1285 HAVE_ST_EGL="yes"
1286 ;;
1287 xorg)
1288 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1289 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1290 HAVE_ST_XORG="yes"
1291 ;;
1292 es)
1293 # mesa/es is required to build es state tracker
1294 CORE_DIRS="$CORE_DIRS mesa/es"
1295 ;;
1296 esac
1297 done
1298 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1299 ;;
1300 esac
1301
1302 if test "x$HAVE_ST_XORG" = xyes; then
1303 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1304 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1305 HAVE_XEXTPROTO_71="no")
1306 fi
1307
1308 AC_ARG_WITH([egl-displays],
1309 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1310 [comma delimited native displays libEGL supports, e.g.
1311 "x11,kms" @<:@default=auto@:>@])],
1312 [with_egl_displays="$withval"],
1313 [with_egl_displays=yes])
1314
1315 EGL_DISPLAYS=""
1316 case "$with_egl_displays" in
1317 yes)
1318 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1319 EGL_DISPLAYS="x11"
1320 fi
1321 ;;
1322 *)
1323 if test "x$enable_egl" != xyes; then
1324 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1325 fi
1326 # verify the requested driver directories exist
1327 egl_displays=`IFS=', '; echo $with_egl_displays`
1328 for dpy in $egl_displays; do
1329 test -d "$srcdir/src/gallium/state_trackers/egl/$dpy" || \
1330 AC_MSG_ERROR([EGL display '$dpy' does't exist])
1331 done
1332 EGL_DISPLAYS="$egl_displays"
1333 ;;
1334 esac
1335 AC_SUBST([EGL_DISPLAYS])
1336
1337 AC_ARG_WITH([egl-driver-dir],
1338 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1339 [directory for EGL drivers [[default=${libdir}/egl]]])],
1340 [EGL_DRIVER_INSTALL_DIR="$withval"],
1341 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1342 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1343
1344 AC_ARG_WITH([xorg-driver-dir],
1345 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1346 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1347 [XORG_DRIVER_INSTALL_DIR="$withval"],
1348 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1349 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1350
1351 AC_ARG_WITH([max-width],
1352 [AS_HELP_STRING([--with-max-width=N],
1353 [Maximum framebuffer width (4096)])],
1354 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1355 AS_IF([test "${withval}" -gt "4096"],
1356 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1357 )
1358 AC_ARG_WITH([max-height],
1359 [AS_HELP_STRING([--with-max-height=N],
1360 [Maximum framebuffer height (4096)])],
1361 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1362 AS_IF([test "${withval}" -gt "4096"],
1363 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1364 )
1365
1366 dnl
1367 dnl Gallium helper functions
1368 dnl
1369 gallium_check_st() {
1370 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_EGL" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1371 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1372 fi
1373 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1374 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1375 fi
1376 if test "x$HAVE_ST_EGL" = xyes && test "x$3" != x; then
1377 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1378 fi
1379 if test "x$HAVE_ST_XORG" = xyes && test "x$4" != x; then
1380 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1381 fi
1382 }
1383
1384
1385 dnl
1386 dnl Gallium SVGA configuration
1387 dnl
1388 AC_ARG_ENABLE([gallium-svga],
1389 [AS_HELP_STRING([--enable-gallium-svga],
1390 [build gallium SVGA @<:@default=disabled@:>@])],
1391 [enable_gallium_svga="$enableval"],
1392 [enable_gallium_svga=auto])
1393 if test "x$enable_gallium_svga" = xyes; then
1394 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1395 gallium_check_st "svga/drm" "dri-vmwgfx" "egl-vmwgfx" "xorg-vmwgfx"
1396 elif test "x$enable_gallium_svga" = xauto; then
1397 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1398 fi
1399
1400 dnl
1401 dnl Gallium Intel configuration
1402 dnl
1403 AC_ARG_ENABLE([gallium-intel],
1404 [AS_HELP_STRING([--enable-gallium-intel],
1405 [build gallium intel @<:@default=disabled@:>@])],
1406 [enable_gallium_intel="$enableval"],
1407 [enable_gallium_intel=auto])
1408 if test "x$enable_gallium_intel" = xyes; then
1409 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1410 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1411 gallium_check_st "i915/drm i965/drm" "dri-i915 dri-i965" "egl-i915 egl-i965" "xorg-i915 xorg-i965"
1412 elif test "x$enable_gallium_intel" = xauto; then
1413 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1414 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1415 fi
1416
1417 dnl
1418 dnl Gallium Radeon configuration
1419 dnl
1420 AC_ARG_ENABLE([gallium-radeon],
1421 [AS_HELP_STRING([--enable-gallium-radeon],
1422 [build gallium radeon @<:@default=disabled@:>@])],
1423 [enable_gallium_radeon="$enableval"],
1424 [enable_gallium_radeon=auto])
1425 if test "x$enable_gallium_radeon" = xyes; then
1426 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1427 gallium_check_st "radeon/drm" "dri-radeong" "egl-radeon" "xorg-radeon"
1428 elif test "x$enable_gallium_radeon" = xauto; then
1429 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1430 fi
1431
1432 dnl
1433 dnl Gallium Nouveau configuration
1434 dnl
1435 AC_ARG_ENABLE([gallium-nouveau],
1436 [AS_HELP_STRING([--enable-gallium-nouveau],
1437 [build gallium nouveau @<:@default=disabled@:>@])],
1438 [enable_gallium_nouveau="$enableval"],
1439 [enable_gallium_nouveau=no])
1440 if test "x$enable_gallium_nouveau" = xyes; then
1441 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1442 gallium_check_st "nouveau/drm" "dri-nouveau" "egl-nouveau" "xorg-nouveau"
1443 fi
1444
1445 dnl
1446 dnl Gallium swrast configuration
1447 dnl
1448 AC_ARG_ENABLE([gallium-swrast],
1449 [AS_HELP_STRING([--enable-gallium-swrast],
1450 [build gallium swrast @<:@default=auto@:>@])],
1451 [enable_gallium_swrast="$enableval"],
1452 [enable_gallium_swrast=auto])
1453 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1454 if test "x$HAVE_ST_DRI" = xyes; then
1455 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1456 fi
1457 if test "x$HAVE_ST_EGL" = xyes; then
1458 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-swrast"
1459 fi
1460 fi
1461
1462 dnl prepend CORE_DIRS to SRC_DIRS
1463 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1464
1465 dnl Restore LDFLAGS and CPPFLAGS
1466 LDFLAGS="$_SAVE_LDFLAGS"
1467 CPPFLAGS="$_SAVE_CPPFLAGS"
1468
1469 dnl Substitute the config
1470 AC_CONFIG_FILES([configs/autoconf])
1471
1472 dnl Replace the configs/current symlink
1473 AC_CONFIG_COMMANDS([configs],[
1474 if test -f configs/current || test -L configs/current; then
1475 rm -f configs/current
1476 fi
1477 ln -s autoconf configs/current
1478 ])
1479
1480 AC_OUTPUT
1481
1482 dnl
1483 dnl Output some configuration info for the user
1484 dnl
1485 echo ""
1486 echo " prefix: $prefix"
1487 echo " exec_prefix: $exec_prefix"
1488 echo " libdir: $libdir"
1489 echo " includedir: $includedir"
1490
1491 dnl Driver info
1492 echo ""
1493 echo " Driver: $mesa_driver"
1494 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1495 echo " OSMesa: lib$OSMESA_LIB"
1496 else
1497 echo " OSMesa: no"
1498 fi
1499 if test "$mesa_driver" = dri; then
1500 # cleanup the drivers var
1501 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1502 if test "x$DRI_DIRS" = x; then
1503 echo " DRI drivers: no"
1504 else
1505 echo " DRI drivers: $dri_dirs"
1506 fi
1507 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1508 fi
1509 echo " Use XCB: $enable_xcb"
1510
1511 echo ""
1512 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1513 echo " Gallium: yes"
1514 echo " Gallium dirs: $GALLIUM_DIRS"
1515 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1516 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1517 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1518 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1519 else
1520 echo " Gallium: no"
1521 fi
1522
1523 dnl Libraries
1524 echo ""
1525 echo " Shared libs: $enable_shared"
1526 echo " Static libs: $enable_static"
1527 if test "$enable_egl" = yes; then
1528 echo " EGL: $EGL_DRIVERS_DIRS"
1529 else
1530 echo " EGL: no"
1531 fi
1532 echo " GLU: $enable_glu"
1533 echo " GLw: $enable_glw (Motif: $enable_motif)"
1534 echo " glut: $enable_glut"
1535
1536 dnl Programs
1537 # cleanup the programs var for display
1538 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1539 if test "x$program_dirs" = x; then
1540 echo " Demos: no"
1541 else
1542 echo " Demos: $program_dirs"
1543 fi
1544
1545 dnl Compiler options
1546 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1547 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1548 $SED 's/^ *//;s/ */ /;s/ *$//'`
1549 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1550 $SED 's/^ *//;s/ */ /;s/ *$//'`
1551 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1552 echo ""
1553 echo " CFLAGS: $cflags"
1554 echo " CXXFLAGS: $cxxflags"
1555 echo " Macros: $defines"
1556
1557 echo ""
1558 echo " Run '${MAKE-make}' to build Mesa"
1559 echo ""