blob: f68a54fe5ad0f7f40341afd0c3d6b48b6fe08ba4 [file] [log] [blame]
Matt Turner2f1ab632012-01-03 21:58:37 -05001dnl Process this file with autoconf to create configure.
Dan Nicholsondca1b792007-10-23 09:25:58 -07002
Matt Turner51723832011-12-23 19:21:04 -05003AC_PREREQ([2.60])
Dan Nicholsondca1b792007-10-23 09:25:58 -07004
Dan Nicholson00994ac2008-04-30 15:06:00 -07005dnl Versioning - scrape the version from configs/default
6m4_define([mesa_version],
Vinson Lee48f8a762010-05-11 12:33:30 -07007 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
Dan Nicholson356f3112009-04-29 06:49:27 -07008m4_ifval(mesa_version,,
9 [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
Dan Nicholsondca1b792007-10-23 09:25:58 -070010
Dan Nicholsone97ab722008-07-01 08:55:42 -070011dnl Tell the user about autoconf.html in the --help output
12m4_divert_once([HELP_END], [
13See docs/autoconf.html for more details on the options for Mesa.])
14
Dan Nicholson00994ac2008-04-30 15:06:00 -070015AC_INIT([Mesa],[mesa_version],
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -080016 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
Dan Nicholson297e16c2008-05-05 15:42:53 -070017AC_CONFIG_AUX_DIR([bin])
Dan Nicholsondca1b792007-10-23 09:25:58 -070018AC_CANONICAL_HOST
Ian Romanick3ef3ba42011-12-15 18:45:27 -080019AM_INIT_AUTOMAKE([foreign])
Dan Nicholsondca1b792007-10-23 09:25:58 -070020
Eric Anholt7fa5c912012-01-12 14:56:56 -080021# Support silent build rules, requires at least automake-1.11. Disable
22# by either passing --disable-silent-rules to configure or passing V=1
23# to make
24m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25
Eric Anholte3264802012-01-12 14:28:37 -080026LT_PREREQ([2.2])
27LT_INIT([disable-static])
28
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +020029dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
30USER_CFLAGS="$CFLAGS"
31USER_CXXFLAGS="$CXXFLAGS"
32
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070033dnl Versions for external dependencies
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000034LIBDRM_REQUIRED=2.4.24
35LIBDRM_RADEON_REQUIRED=2.4.24
Eric Anholtc4089d42011-12-29 18:12:48 -080036LIBDRM_INTEL_REQUIRED=2.4.30
Johannes Obermayr873379a2011-06-02 17:15:44 -060037LIBDRM_NOUVEAU_REQUIRED=0.6
Jesse Barnes1e39fc72011-05-05 13:09:16 -070038DRI2PROTO_REQUIRED=2.6
39GLPROTO_REQUIRED=1.4.14
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000040LIBDRM_XORG_REQUIRED=2.4.24
Jakob Bornecrantz683a0992010-03-11 19:23:15 +000041LIBKMS_XORG_REQUIRED=1.0.0
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070042
Dan Nicholsondca1b792007-10-23 09:25:58 -070043dnl Check for progs
44AC_PROG_CPP
45AC_PROG_CC
46AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070047AC_CHECK_PROGS([MAKE], [gmake make])
Kenneth Graunke3acc8262010-10-25 13:52:58 -070048AC_CHECK_PROGS([PYTHON2], [python2 python])
Matt Turner3a343ef2012-01-11 01:05:56 -050049AC_PROG_SED
Matt Turnerfd827a82012-01-21 22:43:02 -050050AC_PROG_MKDIR_P
Dan Nicholson297e16c2008-05-05 15:42:53 -070051AC_PATH_PROG([MKDEP], [makedepend])
Dan Nicholson41b00702007-12-12 08:48:30 -080052
Luca Barbierif762f7b2010-09-24 10:10:09 +020053if test "x$MKDEP" = "x"; then
54 AC_MSG_ERROR([makedepend is required to build Mesa])
55fi
56
Brian Paulde1df262011-05-18 07:50:21 -060057AC_PATH_PROG([FLEX], [flex])
58test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
59
60AC_PATH_PROG([BISON], [bison])
61test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
62
Dan Nicholsonbc302b22009-05-22 09:39:02 -070063dnl Our fallback install-sh is a symlink to minstall. Use the existing
64dnl configuration in that case.
65AC_PROG_INSTALL
66test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
67
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070068dnl We need a POSIX shell for parts of the build. Assume we have one
69dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070070case "$host_os" in
71solaris*)
72 # Solaris /bin/sh is too old/non-POSIX compliant
73 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070074 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070075 ;;
76esac
77
Ian Romanick3ef3ba42011-12-15 18:45:27 -080078AC_PATH_PROG([GTESTCONFIG], [gtest-config])
79if test "x$GTESTCONFIG" != "x"; then
80 GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
81 GTEST_LIBS=`gtest-config --ldflags --libs`
Ian Romanick3ef3ba42011-12-15 18:45:27 -080082 AC_SUBST([GTEST_CFLAGS])
83 AC_SUBST([GTEST_LIBS])
84 HAVE_GTEST=yes
85else
86 HAVE_GTEST=no
87fi
88AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
89
nobled2a501872010-08-29 20:03:37 -040090dnl clang is mostly GCC-compatible, but its version is much lower,
91dnl so we have to check for it.
92AC_MSG_CHECKING([if compiling with clang])
93
94AC_COMPILE_IFELSE(
95[AC_LANG_PROGRAM([], [[
96#ifndef __clang__
97 not clang
98#endif
99]])],
100[CLANG=yes], [CLANG=no])
101
102AC_MSG_RESULT([$CLANG])
103
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800104dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
105dnl versions are explictly not supported.
nobled2a501872010-08-29 20:03:37 -0400106if test "x$GCC" = xyes -a "x$CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800107 AC_MSG_CHECKING([whether gcc version is sufficient])
108 major=0
109 minor=0
110
111 GCC_VERSION=`$CC -dumpversion`
112 if test $? -eq 0; then
113 major=`echo $GCC_VERSION | cut -d. -f1`
Marcin Baczyńskifa013412011-07-13 21:26:50 +0200114 minor=`echo $GCC_VERSION | cut -d. -f2`
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800115 fi
116
117 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
118 AC_MSG_RESULT([no])
119 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
120 else
121 AC_MSG_RESULT([yes])
122 fi
123fi
124
125
Dan Nicholsondb7fc632008-03-07 11:48:09 -0800126MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500127dnl Ask gcc where it's keeping its secret headers
128if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -0800129 for dir in include include-fixed; do
130 GCC_INCLUDES=`$CC -print-file-name=$dir`
131 if test "x$GCC_INCLUDES" != x && \
132 test "$GCC_INCLUDES" != "$dir" && \
133 test -d "$GCC_INCLUDES"; then
134 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
135 fi
136 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500137fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700138AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500139
Dan Nicholson41b00702007-12-12 08:48:30 -0800140dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700141m4_ifndef([PKG_PROG_PKG_CONFIG],
142 [m4_fatal([Could not locate the pkg-config autoconf macros.
143 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
144 are in a different location, try setting the environment variable
145 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700146PKG_PROG_PKG_CONFIG()
147
148dnl LIB_DIR - library basename
149LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700150AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700151
152dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
153_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700154AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
155AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700156
157dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
158_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700159AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
160AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700161
162dnl Compiler macros
163DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700164AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700165case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700166linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800167 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700168 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700169solaris*)
170 DEFINES="$DEFINES -DPTHREADS -DSVR4"
171 ;;
Brian Paul97988902010-02-18 12:46:12 -0700172cygwin*)
173 DEFINES="$DEFINES -DPTHREADS"
174 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700175esac
176
177dnl Add flags for gcc and g++
178if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700179 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800180
181 # Enable -fvisibility=hidden if using a gcc that supports it
182 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800183 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100184 VISIBILITY_CFLAGS="-fvisibility=hidden"
185 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800186 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100187 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
188
189 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
190 CFLAGS=$save_CFLAGS
Dan Nicholson0c275b62008-01-15 22:52:25 -0800191
192 # Work around aliasing bugs - developers should comment this out
193 CFLAGS="$CFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100194
195 # gcc's builtin memcmp is slower than glibc's
196 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
197 CFLAGS="$CFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700198fi
199if test "x$GXX" = xyes; then
200 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800201
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400202 # Enable -fvisibility=hidden if using a gcc that supports it
203 save_CXXFLAGS="$CXXFLAGS"
204 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100205 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
206 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
Jon TURNEY560f7622011-04-26 11:49:01 +0100207 AC_LANG_PUSH([C++])
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400208 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100209 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
Jon TURNEY560f7622011-04-26 11:49:01 +0100210 AC_LANG_POP([C++])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100211
212 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
213 CXXFLAGS=$save_CXXFLAGS
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400214
Dan Nicholson0c275b62008-01-15 22:52:25 -0800215 # Work around aliasing bugs - developers should comment this out
216 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100217
218 # gcc's builtin memcmp is slower than glibc's
219 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
220 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700221fi
222
Jon TURNEYdb786432011-04-26 11:56:02 +0100223dnl even if the compiler appears to support it, using visibility attributes isn't
224dnl going to do anything useful currently on cygwin apart from emit lots of warnings
225case "$host_os" in
226cygwin*)
227 VISIBILITY_CFLAGS=""
228 VISIBILITY_CXXFLAGS=""
229 ;;
230esac
231
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100232AC_SUBST([VISIBILITY_CFLAGS])
233AC_SUBST([VISIBILITY_CXXFLAGS])
234
Dan Nicholsondca1b792007-10-23 09:25:58 -0700235dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700236AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700237 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700238AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700239 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700240AC_SUBST([OPT_FLAGS])
241AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700242
243dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600244dnl Hacks to enable 32 or 64 bit build
245dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700246AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600247 [AS_HELP_STRING([--enable-32-bit],
248 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700249 [enable_32bit="$enableval"],
250 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600251)
252if test "x$enable_32bit" = xyes; then
253 if test "x$GCC" = xyes; then
254 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700255 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600256 fi
257 if test "x$GXX" = xyes; then
258 CXXFLAGS="$CXXFLAGS -m32"
259 fi
260fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700261AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600262 [AS_HELP_STRING([--enable-64-bit],
263 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700264 [enable_64bit="$enableval"],
265 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600266)
267if test "x$enable_64bit" = xyes; then
268 if test "x$GCC" = xyes; then
269 CFLAGS="$CFLAGS -m64"
270 fi
271 if test "x$GXX" = xyes; then
272 CXXFLAGS="$CXXFLAGS -m64"
273 fi
274fi
275
276dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800277dnl shared/static libraries, mimic libtool options
278dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700279AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800280 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800281 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700282 [enable_static="$enableval"],
283 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800284)
285case "x$enable_static" in
286xyes|xno ) ;;
287x ) enable_static=no ;;
288* )
289 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
290 ;;
291esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700292AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800293 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800294 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700295 [enable_shared="$enableval"],
296 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800297)
298case "x$enable_shared" in
299xyes|xno ) ;;
300x ) enable_shared=yes ;;
301* )
302 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
303 ;;
304esac
305
306dnl Can't have static and shared libraries, default to static if user
307dnl explicitly requested. If both disabled, set to static since shared
308dnl was explicitly requirested.
309case "x$enable_static$enable_shared" in
310xyesyes )
311 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
312 enable_shared=no
313 ;;
314xnono )
315 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
316 enable_static=yes
317 ;;
318esac
319
320dnl
321dnl mklib options
322dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700323AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800324if test "$enable_static" = yes; then
325 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
326fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700327AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800328
Dan Nicholson23656c42007-12-12 09:02:31 -0800329dnl
330dnl other compiler options
331dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700332AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800333 [AS_HELP_STRING([--enable-debug],
334 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700335 [enable_debug="$enableval"],
336 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800337)
338if test "x$enable_debug" = xyes; then
339 DEFINES="$DEFINES -DDEBUG"
340 if test "x$GCC" = xyes; then
341 CFLAGS="$CFLAGS -g"
342 fi
343 if test "x$GXX" = xyes; then
344 CXXFLAGS="$CXXFLAGS -g"
345 fi
346fi
Dan Nicholson88586332007-11-15 08:59:57 -0800347
348dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700349dnl library names
350dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100351LIB_PREFIX_GLOB='lib'
352LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800353if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800354 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800355else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700356 case "$host_os" in
357 darwin* )
358 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100359 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100360 dnl prefix can be 'cyg' or 'lib'
361 LIB_PREFIX_GLOB='???'
362 LIB_VERSION_SEPARATOR='-'
363 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700364 aix* )
365 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700366 * )
367 LIB_EXTENSION='so' ;;
368 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800369fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800370
Marek Olšák848f7d32011-04-01 01:12:41 +0200371dnl
Tom Fogalc0573fb2011-10-10 10:33:18 -0600372dnl Mangled Mesa support
373dnl
374AC_ARG_ENABLE([mangling],
375 [AS_HELP_STRING([--enable-mangling],
376 [enable mangled symbols and library name @<:@default=disabled@:>@])],
377 [enable_mangling="${enableval}"],
378 [enable_mangling=no]
379)
380GL_LIB="GL"
381GLU_LIB="GLU"
382OSMESA_LIB="OSMesa"
383if test "x${enable_mangling}" = "xyes" ; then
384 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
385 GL_LIB="MangledGL"
386 GLU_LIB="MangledGLU"
387 OSMESA_LIB="MangledOSMesa"
388fi
389AC_SUBST([GL_LIB])
390AC_SUBST([GLU_LIB])
391AC_SUBST([OSMESA_LIB])
392
393dnl
Marek Olšák848f7d32011-04-01 01:12:41 +0200394dnl potentially-infringing-but-nobody-knows-for-sure stuff
395dnl
396AC_ARG_ENABLE([texture-float],
397 [AS_HELP_STRING([--enable-texture-float],
398 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
399 [enable_texture_float="$enableval"],
400 [enable_texture_float=no]
401)
402if test "x$enable_texture_float" = xyes; then
403 AC_MSG_WARN([Floating-point textures enabled.])
404 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
405 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
406fi
407
Dan Nicholson8217f242009-02-11 15:16:00 -0800408GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
409GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800410OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800411EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500412GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
413GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800414VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800415GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100416WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800417
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100418GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100420OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
421EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
422EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
423GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
424GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
425VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800426GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100427WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800428
Dan Nicholson297e16c2008-05-05 15:42:53 -0700429AC_SUBST([GL_LIB_NAME])
430AC_SUBST([GLU_LIB_NAME])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700431AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800432AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500433AC_SUBST([GLESv1_CM_LIB_NAME])
434AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800435AC_SUBST([VG_LIB_NAME])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800436AC_SUBST([GLAPI_LIB_NAME])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100437AC_SUBST([WAYLAND_EGL_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700438
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700439AC_SUBST([GL_LIB_GLOB])
440AC_SUBST([GLU_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700441AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800442AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500443AC_SUBST([GLESv1_CM_LIB_GLOB])
444AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800445AC_SUBST([VG_LIB_GLOB])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800446AC_SUBST([GLAPI_LIB_GLOB])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100447AC_SUBST([WAYLAND_EGL_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700448
Dan Nicholsondca1b792007-10-23 09:25:58 -0700449dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700450dnl Arch/platform-specific settings
451dnl
452AC_ARG_ENABLE([asm],
453 [AS_HELP_STRING([--disable-asm],
454 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
455 [enable_asm="$enableval"],
456 [enable_asm=yes]
457)
458asm_arch=""
459ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800460MESA_ASM_SOURCES=""
461GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700462AC_MSG_CHECKING([whether to enable assembly])
463test "x$enable_asm" = xno && AC_MSG_RESULT([no])
464# disable if cross compiling on x86/x86_64 since we must run gen_matypes
465if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
466 case "$host_cpu" in
467 i?86 | x86_64)
468 enable_asm=no
469 AC_MSG_RESULT([no, cross compiling])
470 ;;
471 esac
472fi
473# check for supported arches
474if test "x$enable_asm" = xyes; then
475 case "$host_cpu" in
476 i?86)
477 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700478 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700479 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
480 ;;
481 esac
482 ;;
483 x86_64)
484 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700485 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700486 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
487 ;;
488 esac
489 ;;
490 powerpc)
491 case "$host_os" in
492 linux*)
493 asm_arch=ppc
494 ;;
495 esac
496 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800497 sparc*)
498 case "$host_os" in
499 linux*)
500 asm_arch=sparc
501 ;;
502 esac
503 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700504 esac
505
506 case "$asm_arch" in
507 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800508 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800509 MESA_ASM_SOURCES='$(X86_SOURCES)'
510 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700511 AC_MSG_RESULT([yes, x86])
512 ;;
513 x86_64)
514 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800515 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
516 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700517 AC_MSG_RESULT([yes, x86_64])
518 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800519 sparc)
520 ASM_FLAGS="-DUSE_SPARC_ASM"
521 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
522 GLAPI_ASM_SOURCES='$(SPARC_API)'
523 AC_MSG_RESULT([yes, sparc])
524 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700525 *)
526 AC_MSG_RESULT([no, platform not supported])
527 ;;
528 esac
529fi
530AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800531AC_SUBST([MESA_ASM_SOURCES])
532AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700533
534dnl PIC code macro
535MESA_PIC_FLAGS
536
537dnl Check to see if dlopen is in default libraries (like Solaris, which
538dnl has it in libc), or if libdl is needed to get it.
539AC_CHECK_FUNC([dlopen], [],
540 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800541AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700542
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700543dnl See if posix_memalign is available
544AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
545
Dan Nicholson871125a2008-06-04 13:00:35 -0700546dnl SELinux awareness.
547AC_ARG_ENABLE([selinux],
548 [AS_HELP_STRING([--enable-selinux],
549 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
550 [MESA_SELINUX="$enableval"],
551 [MESA_SELINUX=no])
552if test "x$enable_selinux" = "xyes"; then
553 AC_CHECK_HEADER([selinux/selinux.h],[],
554 [AC_MSG_ERROR([SELinux headers not found])])
555 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
556 [AC_MSG_ERROR([SELinux library not found])])
557 SELINUX_LIBS="-lselinux"
558 DEFINES="$DEFINES -DMESA_SELINUX"
559fi
560
Marek Olšák440d71d2011-06-14 05:38:58 +0200561dnl Options for APIs
Chia-I Wube5f34a2010-10-27 16:14:27 +0800562AC_ARG_ENABLE([opengl],
563 [AS_HELP_STRING([--disable-opengl],
564 [disable support for standard OpenGL API @<:@default=no@:>@])],
565 [enable_opengl="$enableval"],
566 [enable_opengl=yes])
567AC_ARG_ENABLE([gles1],
568 [AS_HELP_STRING([--enable-gles1],
569 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
570 [enable_gles1="$enableval"],
571 [enable_gles1=no])
572AC_ARG_ENABLE([gles2],
573 [AS_HELP_STRING([--enable-gles2],
574 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
575 [enable_gles2="$enableval"],
576 [enable_gles2=no])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800577AC_ARG_ENABLE([openvg],
578 [AS_HELP_STRING([--enable-openvg],
579 [enable support for OpenVG API @<:@default=no@:>@])],
580 [enable_openvg="$enableval"],
581 [enable_openvg=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900582
583AC_ARG_ENABLE([dri],
584 [AS_HELP_STRING([--enable-dri],
585 [enable DRI modules @<:@default=auto@:>@])],
586 [enable_dri="$enableval"],
587 [enable_dri=auto])
588AC_ARG_ENABLE([glx],
589 [AS_HELP_STRING([--enable-glx],
590 [enable GLX library @<:@default=auto@:>@])],
591 [enable_glx="$enableval"],
592 [enable_glx=auto])
593AC_ARG_ENABLE([osmesa],
594 [AS_HELP_STRING([--enable-osmesa],
595 [enable OSMesa library @<:@default=auto@:>@])],
596 [enable_osmesa="$enableval"],
597 [enable_osmesa=auto])
598AC_ARG_ENABLE([egl],
599 [AS_HELP_STRING([--disable-egl],
600 [disable EGL library @<:@default=enabled@:>@])],
601 [enable_egl="$enableval"],
602 [enable_egl=yes])
603
Marek Olšák440d71d2011-06-14 05:38:58 +0200604AC_ARG_ENABLE([xorg],
605 [AS_HELP_STRING([--enable-xorg],
606 [enable support for X.Org DDX API @<:@default=no@:>@])],
607 [enable_xorg="$enableval"],
608 [enable_xorg=no])
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200609AC_ARG_ENABLE([xa],
610 [AS_HELP_STRING([--enable-xa],
611 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
612 [enable_xa="$enableval"],
613 [enable_xa=no])
Marek Olšák440d71d2011-06-14 05:38:58 +0200614AC_ARG_ENABLE([d3d1x],
615 [AS_HELP_STRING([--enable-d3d1x],
616 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
617 [enable_d3d1x="$enableval"],
618 [enable_d3d1x=no])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200619AC_ARG_ENABLE([gbm],
620 [AS_HELP_STRING([--enable-gbm],
621 [enable gbm library @<:@default=auto@:>@])],
622 [enable_gbm="$enableval"],
623 [enable_gbm=auto])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900624
Christian Königc3b22302011-07-04 15:04:41 +0200625AC_ARG_ENABLE([xvmc],
626 [AS_HELP_STRING([--enable-xvmc],
627 [enable xvmc library @<:@default=auto@:>@])],
628 [enable_xvmc="$enableval"],
629 [enable_xvmc=auto])
630AC_ARG_ENABLE([vdpau],
631 [AS_HELP_STRING([--enable-vdpau],
632 [enable vdpau library @<:@default=auto@:>@])],
633 [enable_vdpau="$enableval"],
634 [enable_vdpau=auto])
635AC_ARG_ENABLE([va],
636 [AS_HELP_STRING([--enable-va],
637 [enable va library @<:@default=auto@:>@])],
638 [enable_va="$enableval"],
639 [enable_va=auto])
640
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900641AC_ARG_ENABLE([xlib_glx],
642 [AS_HELP_STRING([--enable-xlib-glx],
643 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
644 [enable_xlib_glx="$enableval"],
645 [enable_xlib_glx=auto])
Marek Olšák1251e1d2011-06-18 20:33:55 +0200646AC_ARG_ENABLE([gallium_egl],
647 [AS_HELP_STRING([--enable-gallium-egl],
648 [enable optional EGL state tracker (not required
649 for EGL support in Gallium with OpenGL and OpenGL ES)
650 @<:@default=disable@:>@])],
651 [enable_gallium_egl="$enableval"],
652 [enable_gallium_egl=no])
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200653AC_ARG_ENABLE([gallium_gbm],
654 [AS_HELP_STRING([--enable-gallium-gbm],
655 [enable optional gbm state tracker (not required for
656 gbm support in Gallium)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200657 @<:@default=auto@:>@])],
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200658 [enable_gallium_gbm="$enableval"],
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200659 [enable_gallium_gbm=auto])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800660
Marek Olšák58b6a192011-06-14 07:46:59 +0200661# Option for Gallium drivers
Thomas Hellstrom87118d82012-01-12 12:10:53 +0100662GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
Marek Olšák58b6a192011-06-14 07:46:59 +0200663
664AC_ARG_WITH([gallium-drivers],
665 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
666 [comma delimited Gallium drivers list, e.g.
Daniel Vetter8f15c312011-11-28 22:24:26 +0100667 "i915,nouveau,r300,r600,svga,swrast"
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200668 @<:@default=r300,r600,swrast@:>@])],
Marek Olšák58b6a192011-06-14 07:46:59 +0200669 [with_gallium_drivers="$withval"],
670 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
Chia-I Wu156e9552010-10-30 14:26:01 +0800671
Ian Romanickdb311b42011-06-22 11:35:27 -0700672# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
673# here so that the script doesn't choke on an unknown driver name later.
674case "$with_gallium_drivers" in
675 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
676 no) with_gallium_drivers='' ;;
677esac
678
Chia-I Wube5f34a2010-10-27 16:14:27 +0800679if test "x$enable_opengl" = xno -a \
680 "x$enable_gles1" = xno -a \
681 "x$enable_gles2" = xno -a \
Marek Olšák440d71d2011-06-14 05:38:58 +0200682 "x$enable_openvg" = xno -a \
683 "x$enable_xorg" = xno -a \
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200684 "x$enable_xa" = xno -a \
Christian Königc3b22302011-07-04 15:04:41 +0200685 "x$enable_d3d1x" = xno -a \
686 "x$enable_xvmc" = xno -a \
687 "x$enable_vdpau" = xno -a \
688 "x$enable_va" = xno; then
Chia-I Wube5f34a2010-10-27 16:14:27 +0800689 AC_MSG_ERROR([at least one API should be enabled])
690fi
691
692API_DEFINES=""
Chia-I Wube5f34a2010-10-27 16:14:27 +0800693if test "x$enable_opengl" = xno; then
694 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
695else
696 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
697fi
698if test "x$enable_gles1" = xyes; then
699 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
700fi
701if test "x$enable_gles2" = xyes; then
702 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
703fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800704AC_SUBST([API_DEFINES])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800705
Kenneth Graunke9d21b5d2012-01-04 23:49:18 -0800706dnl
707dnl Driver configuration. Options are xlib, dri and osmesa right now.
708dnl More later: fbdev, ...
709dnl
710default_driver="xlib"
711
712case "$host_os" in
713linux*)
714 case "$host_cpu" in
715 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
716 esac
717 ;;
718*freebsd* | dragonfly* | *netbsd*)
719 case "$host_cpu" in
720 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
721 esac
722 ;;
723esac
724
725if test "x$enable_opengl" = xno; then
726 default_driver="no"
727fi
728
729AC_ARG_WITH([driver],
730 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
731 [mesa_driver="$withval"],
732 [mesa_driver=auto])
733dnl Check for valid option
734case "x$mesa_driver" in
735xxlib|xdri|xosmesa|xno)
736 if test "x$enable_dri" != xauto -o \
737 "x$enable_glx" != xauto -o \
738 "x$enable_osmesa" != xauto -o \
739 "x$enable_xlib_glx" != xauto; then
740 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
741 fi
742 ;;
743xauto)
744 mesa_driver="$default_driver"
745 ;;
746*)
747 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
748 ;;
749esac
750
751# map $mesa_driver to APIs
752if test "x$enable_dri" = xauto; then
753 case "x$mesa_driver" in
754 xdri) enable_dri=yes ;;
755 *) enable_dri=no ;;
756 esac
757fi
758
759if test "x$enable_glx" = xauto; then
760 case "x$mesa_driver" in
761 xdri|xxlib) enable_glx=yes ;;
762 *) enable_glx=no ;;
763 esac
764fi
765
766if test "x$enable_osmesa" = xauto; then
767 case "x$mesa_driver" in
768 xxlib|xosmesa) enable_osmesa=yes ;;
769 *) enable_osmesa=no ;;
770 esac
771fi
772
773if test "x$enable_xlib_glx" = xauto; then
774 case "x$mesa_driver" in
775 xxlib) enable_xlib_glx=yes ;;
776 *) enable_xlib_glx=no ;;
777 esac
778fi
779
780if test "x$enable_glx" = xno; then
781 enable_xlib_glx=no
782fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900783
Matt Turner06ad64a2012-01-15 21:30:26 -0500784AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
785
Dan Nicholson44d99142007-12-05 18:47:01 -0800786dnl
787dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700788dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800789
790dnl this variable will be prepended to SRC_DIRS and is not exported
Matt Turneradefee52012-01-11 18:32:14 -0500791CORE_DIRS="mapi/shared-glapi"
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800792
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200793SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700794GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100795GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000796GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000797GALLIUM_WINSYS_DIRS="sw"
Kai Wasserbäch0a22fb62011-11-29 22:36:02 +0100798GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100799GALLIUM_STATE_TRACKERS_DIRS=""
800
Chia-I Wube5f34a2010-10-27 16:14:27 +0800801# build glapi if OpenGL is enabled
802if test "x$enable_opengl" = xyes; then
803 CORE_DIRS="$CORE_DIRS mapi/glapi"
804fi
805
Chia-I Wu12583172011-01-07 17:24:16 +0800806# build es1api if OpenGL ES 1.x is enabled
807if test "x$enable_gles1" = xyes; then
808 CORE_DIRS="$CORE_DIRS mapi/es1api"
809fi
810
811# build es2api if OpenGL ES 2.x is enabled
812if test "x$enable_gles2" = xyes; then
813 CORE_DIRS="$CORE_DIRS mapi/es2api"
814fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800815
Chia-I Wube5f34a2010-10-27 16:14:27 +0800816# build glsl and mesa if OpenGL or OpenGL ES is enabled
Chia-I Wu12583172011-01-07 17:24:16 +0800817case "x$enable_opengl$enable_gles1$enable_gles2" in
Chia-I Wube5f34a2010-10-27 16:14:27 +0800818x*yes*)
819 CORE_DIRS="$CORE_DIRS glsl mesa"
820 ;;
821esac
822
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900823case "x$enable_glx$enable_xlib_glx" in
824xyesyes)
825 DRIVER_DIRS="$DRIVER_DIRS x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000826 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000827 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Marek Olšák440d71d2011-06-14 05:38:58 +0200828 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
Younes Mantonb97816d2011-07-14 12:22:20 -0400829 HAVE_WINSYS_XLIB="yes"
Dan Nicholson44d99142007-12-05 18:47:01 -0800830 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900831xyesno)
832 # DRI-based GLX
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500833 SRC_DIRS="$SRC_DIRS glx"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900834 ;;
835esac
836
837if test "x$enable_dri" = xyes; then
838 DRIVER_DIRS="$DRIVER_DIRS dri"
839
Emil Velikov4ef9c3d2011-07-11 15:58:29 +0100840 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
Marek Olšák440d71d2011-06-14 05:38:58 +0200841 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
842 HAVE_ST_DRI="yes"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900843fi
844
845if test "x$enable_osmesa" = xyes; then
846 # the empty space matters for osmesa... (see src/mesa/Makefile)
847 if test -n "$DRIVER_DIRS"; then
848 DRIVER_DIRS="$DRIVER_DIRS osmesa"
849 else
850 DRIVER_DIRS="osmesa"
851 fi
852fi
853
Dan Nicholson297e16c2008-05-05 15:42:53 -0700854AC_SUBST([SRC_DIRS])
855AC_SUBST([GLU_DIRS])
856AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100857AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000858AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100859AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000860AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100861AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000862AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700863
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900864# Check for libdrm
865PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
866 [have_libdrm=yes], [have_libdrm=no])
867
868if test "x$enable_dri" = xyes; then
869 # DRI must be shared, I think
870 if test "$enable_static" = yes; then
871 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
872 fi
873
Chia-I Wu81239342011-07-02 09:49:17 +0900874 # not a hard requirement as swrast does not depend on it
875 if test "x$have_libdrm" = xyes; then
876 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900877 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900878fi
879
Dan Nicholsondca1b792007-10-23 09:25:58 -0700880dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700881dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700882dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700883dnl
884if test -n "$PKG_CONFIG"; then
885 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700886 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700887 x11_pkgconfig=yes
888 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700889 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700890 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700891 ])
892 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700893else
894 x11_pkgconfig=no
895fi
896dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600897if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700898 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600899else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700900 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700901 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
902 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
903 AC_SUBST([X11_CFLAGS])
904 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700905fi
906
Dan Nicholson99803a42008-07-01 09:03:15 -0700907dnl Try to tell the user that the --x-* options are only used when
908dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
909m4_divert_once([HELP_BEGIN],
910[These options are only used when the X libraries cannot be found by the
911pkg-config utility.])
912
Dan Nicholson44d99142007-12-05 18:47:01 -0800913dnl We need X for xlib and dri, so bomb now if it's not found
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900914if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
915 AC_MSG_ERROR([X11 development libraries needed for GLX])
916fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700917
Ian Romanickb518dfb2012-01-02 17:44:30 -0800918if test "x$enable_glx" = xyes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700919 DEFINES="$DEFINES -DUSE_XCB"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700920fi
921
Samuel Thibault75856172011-03-14 22:08:21 +0000922dnl Direct rendering or just indirect rendering
noblede7d18ed2011-03-14 22:08:22 +0000923case "$host_os" in
924gnu*)
925 dnl Disable by default on GNU/Hurd
926 driglx_direct_default="no"
927 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +0000928cygwin*)
929 dnl Disable by default on cygwin
930 driglx_direct_default="no"
931 ;;
noblede7d18ed2011-03-14 22:08:22 +0000932*)
933 driglx_direct_default="yes"
934 ;;
935esac
Samuel Thibault75856172011-03-14 22:08:21 +0000936AC_ARG_ENABLE([driglx-direct],
937 [AS_HELP_STRING([--disable-driglx-direct],
938 [enable direct rendering in GLX and EGL for DRI \
noblede7d18ed2011-03-14 22:08:22 +0000939 @<:@default=auto@:>@])],
Samuel Thibault75856172011-03-14 22:08:21 +0000940 [driglx_direct="$enableval"],
noblede7d18ed2011-03-14 22:08:22 +0000941 [driglx_direct="$driglx_direct_default"])
Samuel Thibault75856172011-03-14 22:08:21 +0000942
Dan Nicholson44d99142007-12-05 18:47:01 -0800943dnl
944dnl libGL configuration per driver
945dnl
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900946case "x$enable_glx$enable_xlib_glx" in
947xyesyes)
948 # Xlib-based GLX
Dan Nicholson44d99142007-12-05 18:47:01 -0800949 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700950 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800951 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800952 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
953 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800954 else
955 # should check these...
956 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
957 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800958 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
959 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800960 fi
Marek Olšák0aed27e2011-07-26 01:05:51 +0200961 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
Kenneth Graunked1d812052011-01-16 16:01:54 -0800962 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson44d99142007-12-05 18:47:01 -0800963 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900964xyesno)
965 # DRI-based GLX
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500966 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Samuel Thibault75856172011-03-14 22:08:21 +0000967 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000968 if test x"$driglx_direct" = xyes; then
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900969 if test "x$have_libdrm" != xyes; then
970 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
971 fi
Samuel Thibault75856172011-03-14 22:08:21 +0000972 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
973 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000974 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800975
976 # find the DRI deps for libGL
977 if test "$x11_pkgconfig" = yes; then
Ian Romanickb518dfb2012-01-02 17:44:30 -0800978 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
Jon TURNEY2b9dac32010-04-21 12:58:54 +0100979
980 # add xf86vidmode if available
981 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
982 if test "$HAVE_XF86VIDMODE" = yes ; then
983 dri_modules="$dri_modules xxf86vm"
984 fi
985
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700986 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800987 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800988 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
989 GL_LIB_DEPS="$DRIGL_LIBS"
990 else
991 # should check these...
992 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
Alan Hourihane64799222011-06-28 17:40:24 +0100993 if test "x$HAVE_XF86VIDMODE" == xyes; then
994 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
995 else
996 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
997 fi
Dan Nicholson71e208b2008-11-24 11:01:57 -0800998 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
999 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001000
1001 # XCB can only be used from pkg-config
Ian Romanickb518dfb2012-01-02 17:44:30 -08001002 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1003 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1004 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1005 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001006 fi
1007
Ian Romanick4becf672012-01-03 11:35:59 -08001008 # Check to see if the xcb-glx library is new enough to support
1009 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1010 # is released.
1011 save_CPPFLAGS="$CPPFLAGS"
1012 save_LDFLAGS="$LDFLAGS"
1013 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1014 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1015 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1016 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1017 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1018 CPPFLAGS="$save_CPPFLAGS"
1019 LDFLAGS="$save_LDFLAGS"
1020
1021 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1022 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1023 fi
1024
Dan Nicholson44d99142007-12-05 18:47:01 -08001025 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001026 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1027 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -08001028 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001029esac
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001030
Ian Romanick4becf672012-01-03 11:35:59 -08001031# This is outside the case (above) so that it is invoked even for non-GLX
1032# builds.
1033AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1034 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1035
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001036GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1037GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1038GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1039GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1040
Dan Nicholson297e16c2008-05-05 15:42:53 -07001041AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001042AC_SUBST([GL_PC_REQ_PRIV])
1043AC_SUBST([GL_PC_LIB_PRIV])
1044AC_SUBST([GL_PC_CFLAGS])
1045AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +08001046AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001047AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -05001048AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001049AC_SUBST([GLESv2_PC_LIB_PRIV])
1050
Chia-I Wu0c771e22011-11-04 16:32:17 +08001051GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
Chia-I Wu9767d3b2010-12-26 18:02:59 +08001052AC_SUBST([GLAPI_LIB_DEPS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001053
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001054
1055dnl Setup default DRI CFLAGS
1056DRI_CFLAGS='$(CFLAGS)'
1057DRI_CXXFLAGS='$(CXXFLAGS)'
1058DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1059MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1060
Jon TURNEY0fce6d32012-01-22 14:21:56 +00001061if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
Matt Turner2b3a8cb2012-01-13 14:30:36 -05001062 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1063 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1064 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1065 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1066 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1067 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1068 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001069fi
1070AC_SUBST([DRICORE_LIBS])
1071AC_SUBST([DRICORE_GLSL_LIBS])
1072AC_SUBST([DRICORE_LIB_DEPS])
1073AC_SUBST([DRI_CXXFLAGS])
1074AC_SUBST([DRI_CFLAGS])
1075AC_SUBST([MESA_MODULES])
1076
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001077AC_SUBST([HAVE_XF86VIDMODE])
1078
Dan Nicholsondca1b792007-10-23 09:25:58 -07001079dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001080dnl More GLX setup
Dan Nicholsondca1b792007-10-23 09:25:58 -07001081dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001082case "x$enable_glx$enable_xlib_glx" in
1083xyesyes)
Dan Nicholsondca1b792007-10-23 09:25:58 -07001084 DEFINES="$DEFINES -DUSE_XSHM"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001085 ;;
1086xyesno)
1087 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1088 if test "x$driglx_direct" = xyes; then
1089 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1090 fi
1091 ;;
1092esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001093
1094dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001095dnl TLS detection
Dan Nicholson44d99142007-12-05 18:47:01 -08001096dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001097
Dan Nicholson297e16c2008-05-05 15:42:53 -07001098AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -08001099 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001100 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001101 [GLX_USE_TLS="$enableval"],
1102 [GLX_USE_TLS=no])
Tom Fogal31351dc2010-12-05 17:58:32 -07001103AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1104
Tom Fogal44842972011-02-21 22:32:18 -07001105AS_IF([test "x$GLX_USE_TLS" = xyes],
1106 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1107
Tom Fogal31351dc2010-12-05 17:58:32 -07001108dnl
1109dnl More DRI setup
1110dnl
Dan Nicholson44d99142007-12-05 18:47:01 -08001111dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -07001112AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001113 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001114 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001115 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001116 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -07001117AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +08001118dnl Extra search path for DRI drivers
1119AC_ARG_WITH([dri-searchpath],
1120 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1121 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1122 [DRI_DRIVER_SEARCH_DIR="$withval"],
1123 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1124AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001125dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -07001126AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001127 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -07001128 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +02001129 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001130 [with_dri_drivers="$withval"],
1131 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001132if test "x$with_dri_drivers" = x; then
1133 with_dri_drivers=no
1134fi
1135
1136dnl If $with_dri_drivers is yes, directories will be added through
1137dnl platform checks
1138DRI_DIRS=""
1139case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001140no) ;;
1141yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001142 # classic DRI drivers require FEATURE_GL to build
1143 if test "x$enable_opengl" = xyes; then
1144 DRI_DIRS="yes"
1145 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001146 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001147*)
1148 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -07001149 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001150 for driver in $dri_drivers; do
1151 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1152 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1153 done
1154 DRI_DIRS="$dri_drivers"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001155 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1156 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1157 fi
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001158 ;;
1159esac
1160
Dan Nicholson44d99142007-12-05 18:47:01 -08001161dnl Set DRI_DIRS, DEFINES and LIB_DEPS
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001162if test "x$enable_dri" = xyes; then
Dan Nicholson44d99142007-12-05 18:47:01 -08001163 # Platform specific settings and drivers to build
1164 case "$host_os" in
1165 linux*)
1166 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001167 DEFINES="$DEFINES -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001168
1169 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -08001170 x86_64)
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001171 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001172 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001173 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001174 ;;
1175 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -08001176 # Build only the drivers for cards that exist on PowerPC.
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001177 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001178 DRI_DIRS="r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001179 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001180 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001181 sparc*)
Ian Romanicke4344162011-08-24 15:21:58 -07001182 # Build only the drivers for cards that exist on sparc
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001183 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001184 DRI_DIRS="r200 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001185 fi
1186 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001187 esac
1188 ;;
Pierre Allegraud8fd8de32011-01-06 07:58:57 -07001189 freebsd* | dragonfly* | *netbsd*)
Dan Nicholson44d99142007-12-05 18:47:01 -08001190 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1191 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001192
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001193 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001194 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001195 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001196 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001197 gnu*)
1198 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001199 DEFINES="$DEFINES -DHAVE_ALIAS"
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001200 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001201 solaris*)
1202 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001203 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001204 cygwin*)
1205 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001206 if test "x$DRI_DIRS" = "xyes"; then
1207 DRI_DIRS="swrast"
1208 fi
1209 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001210 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -08001211
1212 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001213 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001214 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -08001215 fi
1216
Dan Nicholson44d99142007-12-05 18:47:01 -08001217 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1218
1219 # Check for expat
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001220 if test "x$enable_dri" = xyes; then
Chia-I Wube5f34a2010-10-27 16:14:27 +08001221 EXPAT_INCLUDES=""
1222 EXPAT_LIB=-lexpat
1223 AC_ARG_WITH([expat],
1224 [AS_HELP_STRING([--with-expat=DIR],
1225 [expat install directory])],[
1226 EXPAT_INCLUDES="-I$withval/include"
1227 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1228 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1229 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1230 ])
1231 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
Eric Anholt36473392012-01-18 11:27:24 -08001232 save_LIBS="$LIBS"
Chia-I Wube5f34a2010-10-27 16:14:27 +08001233 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1234 [AC_MSG_ERROR([Expat required for DRI.])])
Eric Anholt36473392012-01-18 11:27:24 -08001235 LIBS="$save_LIBS"
Chia-I Wube5f34a2010-10-27 16:14:27 +08001236 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001237
Chia-I Wu81239342011-07-02 09:49:17 +09001238 # libdrm is required for all except swrast
1239 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1240 if test "x$have_libdrm" != xyes; then
1241 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1242 fi
1243 fi
1244
Matt Turner2b3a8cb2012-01-13 14:30:36 -05001245 # put all the necessary libs together
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001246 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001247fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001248AC_SUBST([DRI_DIRS])
1249AC_SUBST([EXPAT_INCLUDES])
1250AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -08001251
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001252case $DRI_DIRS in
1253*i915*|*i965*)
Tormod Volden903185b2011-01-25 13:25:18 -08001254 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Eric Anholte3264802012-01-12 14:28:37 -08001255
Matt Turner3c87dfc2012-01-14 21:57:32 -05001256 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1257 case $d in
1258 i915)
1259 HAVE_I915_DRI=yes;
1260 ;;
1261 i965)
1262 HAVE_I965_DRI=yes;
1263 ;;
1264 esac
1265 done
Eric Anholte3264802012-01-12 14:28:37 -08001266
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001267 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001268esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001269
Matt Turnere0ee8182012-01-14 22:21:30 -05001270case $DRI_DIRS in
Matt Turner3f964342012-01-15 10:20:30 -05001271*nouveau*)
1272 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1273 HAVE_NOUVEAU_DRI=yes;
1274 ;;
1275esac
1276
1277case $DRI_DIRS in
Matt Turnerb38d7a02012-01-15 10:04:58 -05001278*radeon*|*r200*)
Matt Turnere0ee8182012-01-14 22:21:30 -05001279 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1280
1281 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1282 case $d in
1283 radeon)
1284 HAVE_RADEON_DRI=yes;
1285 ;;
Matt Turnerb38d7a02012-01-15 10:04:58 -05001286 r200)
1287 HAVE_R200_DRI=yes;
1288 ;;
Matt Turnere0ee8182012-01-14 22:21:30 -05001289 esac
1290 done
1291
1292 ;;
1293esac
1294
Matt Turner349845f2012-01-15 11:39:48 -05001295case $DRI_DIRS in
1296*swrast*)
1297 HAVE_SWRAST_DRI=yes;
1298 ;;
1299esac
1300
Matt Turner3c87dfc2012-01-14 21:57:32 -05001301AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
Eric Anholte3264802012-01-12 14:28:37 -08001302AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
Matt Turner3f964342012-01-15 10:20:30 -05001303AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
Matt Turnerb38d7a02012-01-15 10:04:58 -05001304AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
Matt Turnere0ee8182012-01-14 22:21:30 -05001305AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
Matt Turner349845f2012-01-15 11:39:48 -05001306AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
Eric Anholte3264802012-01-12 14:28:37 -08001307
Dan Nicholson44d99142007-12-05 18:47:01 -08001308dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001309dnl OSMesa configuration
1310dnl
Dan Nicholson979ff512007-12-05 18:47:01 -08001311
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001312dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -07001313AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001314 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1315 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001316 [osmesa_bits="$withval"],
1317 [osmesa_bits=8])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001318if test "x$osmesa_bits" != x8; then
1319 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1320 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1321 osmesa_bits=8
1322 fi
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001323fi
1324case "x$osmesa_bits" in
1325x8)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001326 OSMESA_LIB="${OSMESA_LIB}"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001327 ;;
1328x16|x32)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001329 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001330 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1331 ;;
1332*)
1333 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1334 ;;
1335esac
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001336
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001337if test "x$enable_osmesa" = xyes; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001338 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -08001339 if test "$enable_static" = no; then
Kenneth Graunked1d812052011-01-16 16:01:54 -08001340 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -08001341 else
1342 OSMESA_LIB_DEPS=""
1343 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001344 OSMESA_MESA_DEPS=""
Kenneth Graunked1d812052011-01-16 16:01:54 -08001345 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001346fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001347AC_SUBST([OSMESA_LIB_DEPS])
1348AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001349AC_SUBST([OSMESA_PC_REQ])
1350AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001351
1352dnl
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001353dnl gbm configuration
1354dnl
1355if test "x$enable_gbm" = xauto; then
1356 case "$with_egl_platforms" in
1357 *drm*)
1358 enable_gbm=yes ;;
1359 *)
1360 enable_gbm=no ;;
1361 esac
1362fi
1363if test "x$enable_gbm" = xyes; then
1364 SRC_DIRS="$SRC_DIRS gbm"
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001365
1366 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1367 AC_MSG_ERROR([gbm needs udev]))
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001368fi
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001369GBM_PC_REQ_PRIV="libudev"
1370GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001371AC_SUBST([GBM_PC_REQ_PRIV])
1372AC_SUBST([GBM_PC_LIB_PRIV])
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001373
1374dnl
Dan Nicholson53b37342009-02-25 17:45:34 -08001375dnl EGL configuration
1376dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001377EGL_CLIENT_APIS=""
1378
Dan Nicholson66f97862009-04-29 12:11:43 -07001379if test "x$enable_egl" = xyes; then
1380 SRC_DIRS="$SRC_DIRS egl"
Tapani Pälli2758e652011-05-16 16:56:43 +03001381 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001382 EGL_DRIVERS_DIRS=""
Marek Olšákad50abba2011-06-14 05:14:27 +02001383
Benjamin Franzke85fe9482011-08-09 14:23:18 +02001384 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1385
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001386 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001387 # build egl_glx when libGL is built
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001388 if test "x$enable_glx" = xyes; then
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001389 EGL_DRIVERS_DIRS="glx"
1390 fi
1391
Benjamin Franzke184bb092011-04-30 11:18:23 +02001392 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1393 [have_libudev=yes],[have_libudev=no])
Benjamin Franzkea7cd65f2011-05-31 11:14:46 +02001394 if test "$have_libudev" = yes; then
1395 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1396 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001397 if test "x$enable_dri" = xyes; then
Chia-I Wu39ae9652010-07-16 19:48:52 +08001398 # build egl_dri2 when xcb-dri2 is available
1399 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1400 [have_xcb_dri2=yes],[have_xcb_dri2=no])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001401
1402 if test "$have_xcb_dri2" = yes; then
1403 EGL_DRIVER_DRI2=dri2
1404 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
Benjamin Franzke4ca075a2011-03-02 21:23:04 +01001405 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1406 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1407 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001408 fi
1409 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001410
1411 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001412 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001413fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001414AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001415AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001416
1417dnl
Marek Olšák1251e1d2011-06-18 20:33:55 +02001418dnl EGL Gallium configuration
1419dnl
1420if test "x$enable_gallium_egl" = xyes; then
1421 if test "x$with_gallium_drivers" = x; then
1422 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1423 fi
1424 if test "x$enable_egl" = xno; then
1425 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1426 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +09001427 if test "x$have_libdrm" != xyes; then
1428 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1429 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001430
1431 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wub8f097f2011-06-20 12:01:39 +09001432 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
Marek Olšák1251e1d2011-06-18 20:33:55 +02001433 HAVE_ST_EGL="yes"
1434fi
1435
1436dnl
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001437dnl gbm Gallium configuration
1438dnl
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001439if test "x$enable_gallium_gbm" = xauto; then
Chia-I Wu95ef0692011-11-05 15:09:36 +08001440 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1441 yesyesyes*drm*)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001442 enable_gallium_gbm=yes ;;
1443 *)
1444 enable_gallium_gbm=no ;;
1445 esac
1446fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001447if test "x$enable_gallium_gbm" = xyes; then
1448 if test "x$with_gallium_drivers" = x; then
1449 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1450 fi
1451 if test "x$enable_gbm" = xno; then
1452 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1453 fi
Chia-I Wu95ef0692011-11-05 15:09:36 +08001454 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1455 if test "x$enable_dri" = xno; then
1456 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1457 fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001458
1459 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1460 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1461 HAVE_ST_GBM="yes"
1462fi
1463
1464dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001465dnl X.Org DDX configuration
1466dnl
1467if test "x$enable_xorg" = xyes; then
1468 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1469 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1470 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1471 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1472 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1473 HAVE_XEXTPROTO_71="no")
1474 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1475 HAVE_ST_XORG=yes
1476fi
1477
1478dnl
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001479dnl XA configuration
1480dnl
1481if test "x$enable_xa" = xyes; then
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001482AC_PROG_AWK
1483AC_PROG_GREP
1484AC_CHECK_PROG(NM, nm, "nm")
1485if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1486AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1487enable_xa=no
1488fi
1489fi
1490if test "x$enable_xa" = xyes; then
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001491 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1492 HAVE_ST_XA=yes
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001493 AC_SUBST(AWK)
1494 AC_SUBST(GREP)
1495 AC_SUBST(NM)
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001496fi
1497
1498dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001499dnl OpenVG configuration
1500dnl
1501VG_LIB_DEPS=""
1502
1503if test "x$enable_openvg" = xyes; then
1504 if test "x$enable_egl" = xno; then
1505 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1506 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001507 if test "x$with_gallium_drivers" = x; then
Marek Olšák440d71d2011-06-14 05:38:58 +02001508 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1509 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001510 if test "x$enable_gallium_egl" = xno; then
1511 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1512 fi
Marek Olšák440d71d2011-06-14 05:38:58 +02001513
1514 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1515 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1516 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1517 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1518 HAVE_ST_VEGA=yes
1519fi
1520
1521dnl
1522dnl D3D1X configuration
1523dnl
1524
1525if test "x$enable_d3d1x" = xyes; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001526 if test "x$with_gallium_drivers" = x; then
1527 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1528 fi
1529
Marek Olšák440d71d2011-06-14 05:38:58 +02001530 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1531 HAVE_ST_D3D1X=yes
1532fi
1533
1534dnl
Christian Königc3b22302011-07-04 15:04:41 +02001535dnl Gallium G3DVL configuration
1536dnl
1537AC_ARG_ENABLE([gallium-g3dvl],
1538 [AS_HELP_STRING([--enable-gallium-g3dvl],
1539 [build gallium g3dvl @<:@default=disabled@:>@])],
1540 [enable_gallium_g3dvl="$enableval"],
1541 [enable_gallium_g3dvl=no])
1542if test "x$enable_gallium_g3dvl" = xyes; then
1543 if test "x$with_gallium_drivers" = x; then
1544 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1545 fi
1546
1547 if test "x$enable_xvmc" = xauto; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001548 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
Christian Königc3b22302011-07-04 15:04:41 +02001549 fi
1550
1551 if test "x$enable_vdpau" = xauto; then
Christian König33bf4102011-07-14 13:57:23 +02001552 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001553 fi
1554
1555 if test "x$enable_va" = xauto; then
Christian König8619aa52011-07-14 14:09:25 +02001556 #don't enable vaapi state tracker even if package exists
1557 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001558 enable_va=no
1559 fi
1560fi
1561
Christian Königc3b22302011-07-04 15:04:41 +02001562if test "x$enable_xvmc" = xyes; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001563 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
Christian Königc3b22302011-07-04 15:04:41 +02001564 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1565 HAVE_ST_XVMC="yes"
1566fi
1567
Christian Königc3b22302011-07-04 15:04:41 +02001568if test "x$enable_vdpau" = xyes; then
Christian König33bf4102011-07-14 13:57:23 +02001569 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
Christian Königc3b22302011-07-04 15:04:41 +02001570 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1571 HAVE_ST_VDPAU="yes"
1572fi
1573
Christian Königc3b22302011-07-04 15:04:41 +02001574if test "x$enable_va" = xyes; then
Christian König8619aa52011-07-14 14:09:25 +02001575 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1576 AC_MSG_WARN([vaapi state tracker currently unmaintained])
Christian Königc3b22302011-07-04 15:04:41 +02001577 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1578 HAVE_ST_VA="yes"
1579fi
1580
Christian Königc3b22302011-07-04 15:04:41 +02001581dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001582dnl GLU configuration
1583dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001584AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001585 [AS_HELP_STRING([--disable-glu],
1586 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001587 [enable_glu="$enableval"],
1588 [enable_glu=yes])
Chia-I Wube5f34a2010-10-27 16:14:27 +08001589
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001590if test "x$enable_glu" = xyes; then
1591 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1592 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1593 enable_glu=no
1594 fi
Chia-I Wube5f34a2010-10-27 16:14:27 +08001595fi
1596
Dan Nicholsondca1b792007-10-23 09:25:58 -07001597if test "x$enable_glu" = xyes; then
1598 SRC_DIRS="$SRC_DIRS glu"
1599
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001600 if test "x$enable_glx" = xno; then
Dan Nicholson979ff512007-12-05 18:47:01 -08001601 # Link libGLU to libOSMesa instead of libGL
1602 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001603 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001604 if test "$enable_static" = no; then
1605 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1606 else
1607 GLU_MESA_DEPS=""
1608 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001609 else
Dan Nicholson88586332007-11-15 08:59:57 -08001610 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001611 GLU_PC_REQ="gl"
1612 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001613 if test "$enable_static" = no; then
1614 GLU_LIB_DEPS="-lm"
1615 GLU_MESA_DEPS='-l$(GL_LIB)'
1616 else
1617 GLU_LIB_DEPS=""
1618 GLU_MESA_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -08001619 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001620 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001621fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001622if test "$enable_static" = no; then
1623 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1624fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001625GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001626AC_SUBST([GLU_LIB_DEPS])
1627AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001628AC_SUBST([GLU_PC_REQ])
1629AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001630AC_SUBST([GLU_PC_LIB_PRIV])
1631AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001632
Dan Nicholson297e16c2008-05-05 15:42:53 -07001633AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001634
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001635dnl
1636dnl Gallium configuration
1637dnl
Marek Olšák58b6a192011-06-14 07:46:59 +02001638if test "x$with_gallium_drivers" != x; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001639 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001640fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001641
Dave Airlie81fe1982010-04-22 14:59:29 +10001642AC_SUBST([LLVM_CFLAGS])
1643AC_SUBST([LLVM_LIBS])
1644AC_SUBST([LLVM_LDFLAGS])
1645AC_SUBST([LLVM_VERSION])
1646
Chia-I Wube5f34a2010-10-27 16:14:27 +08001647case "x$enable_opengl$enable_gles1$enable_gles2" in
1648x*yes*)
1649 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1650 ;;
1651esac
Chia-I Wube5f34a2010-10-27 16:14:27 +08001652
Chia-I Wu874ccd52010-05-04 22:43:05 +08001653AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001654AC_SUBST([EGL_CLIENT_APIS])
1655
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001656AC_ARG_WITH([egl-platforms],
1657 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1658 [comma delimited native platforms libEGL supports, e.g.
Chia-I Wue7424d72010-09-19 16:54:39 +08001659 "x11,drm" @<:@default=auto@:>@])],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001660 [with_egl_platforms="$withval"],
1661 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001662
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001663EGL_PLATFORMS=""
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001664WAYLAND_EGL_LIB_DEPS=""
1665
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001666case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001667yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001668 if test "x$enable_egl" = xyes; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001669 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001670 fi
1671 ;;
1672*)
1673 if test "x$enable_egl" != xyes; then
1674 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1675 fi
1676 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001677 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1678 for plat in $egl_platforms; do
1679 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
Kristian Høgsberg1a8899d2011-02-10 10:45:06 -05001680 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001681 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001682 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1683 fi
Chia-I Wua5f8d372011-09-20 14:01:45 +08001684 if test "$plat" = "null"; then
1685 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1686 fi
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001687 if test "$plat" = "wayland"; then
Benjamin Franzke6b369c42011-02-21 16:22:34 +01001688 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001689 [AC_MSG_ERROR([cannot find libwayland-client])])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001690 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
Benjamin Franzkeaaa3c0d2011-04-23 14:14:29 +02001691 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001692 fi
Benjamin Franzke9b8cd492011-07-02 13:46:09 +02001693 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
Benjamin Franzkee5fc4c82011-05-30 10:50:52 +02001694 AC_MSG_ERROR([EGL platform drm needs gbm])
1695 fi
Benjamin Franzke7ed18262011-07-02 13:46:42 +02001696 case "$plat$have_libudev" in
1697 waylandno|drmno)
1698 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1699 esac
Chia-I Wu49381d62010-01-11 01:23:01 +08001700 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001701 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001702 ;;
1703esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001704AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001705
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001706AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1707WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1708WAYLAND_EGL_PC_LIB_PRIV=
1709WAYLAND_EGL_PC_CFLAGS=
1710
1711AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1712AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1713AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1714
1715
Chia-I Wu28c3e572010-01-23 20:18:43 +08001716AC_ARG_WITH([egl-driver-dir],
1717 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1718 [directory for EGL drivers [[default=${libdir}/egl]]])],
1719 [EGL_DRIVER_INSTALL_DIR="$withval"],
1720 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1721AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1722
Joel Bosveld8acca482009-03-06 08:46:08 +09001723AC_ARG_WITH([xorg-driver-dir],
1724 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1725 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1726 [XORG_DRIVER_INSTALL_DIR="$withval"],
1727 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1728AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1729
Tom Fogal7085dce2009-08-13 19:40:30 -06001730AC_ARG_WITH([max-width],
1731 [AS_HELP_STRING([--with-max-width=N],
1732 [Maximum framebuffer width (4096)])],
1733 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1734 AS_IF([test "${withval}" -gt "4096"],
1735 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1736)
1737AC_ARG_WITH([max-height],
1738 [AS_HELP_STRING([--with-max-height=N],
1739 [Maximum framebuffer height (4096)])],
1740 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1741 AS_IF([test "${withval}" -gt "4096"],
1742 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1743)
1744
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001745dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001746dnl Gallium LLVM
1747dnl
1748AC_ARG_ENABLE([gallium-llvm],
1749 [AS_HELP_STRING([--enable-gallium-llvm],
Marek Olšáka86fc712011-04-21 13:27:55 +02001750 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
Dave Airlie81fe1982010-04-22 14:59:29 +10001751 [enable_gallium_llvm="$enableval"],
1752 [enable_gallium_llvm=auto])
Marek Olšák58b6a192011-06-14 07:46:59 +02001753if test "x$with_gallium_drivers" = x; then
1754 enable_gallium_llvm=no
1755fi
Marek Olšáka86fc712011-04-21 13:27:55 +02001756if test "x$enable_gallium_llvm" = xauto; then
1757 case "$host_cpu" in
1758 i*86|x86_64) enable_gallium_llvm=yes;;
1759 esac
1760fi
Dave Airlie81fe1982010-04-22 14:59:29 +10001761if test "x$enable_gallium_llvm" = xyes; then
Marek Olšák99fba502011-07-23 15:57:51 +02001762 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1763
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001764 if test "x$LLVM_CONFIG" != xno; then
ojab2fe6c252012-01-05 14:18:34 +04001765 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
Johannes Obermayraa284042011-12-19 23:11:46 +01001766 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
Marcin Slusarz75739042011-10-13 21:45:45 +02001767 LLVM_LIBS="`$LLVM_CONFIG --libs`"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001768
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001769 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
Marek Olšák67aba792011-06-27 08:25:09 +02001770 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001771 MESA_LLVM=1
1772 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001773 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001774 fi
1775else
1776 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001777fi
1778
Thomas Balling Sørensen32999972010-07-14 00:34:56 +02001779dnl Directory for VDPAU libs
1780AC_ARG_WITH([vdpau-libdir],
1781 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1782 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1783 [VDPAU_LIB_INSTALL_DIR="$withval"],
1784 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1785AC_SUBST([VDPAU_LIB_INSTALL_DIR])
Younes Manton40cd0822010-03-05 23:11:05 -05001786
Thomas Balling Sørensen501ac572010-10-24 19:27:29 +02001787dnl Directory for VA libs
1788AC_ARG_WITH([va-libdir],
1789 [AS_HELP_STRING([--with-va-libdir=DIR],
1790 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1791 [VA_LIB_INSTALL_DIR="$withval"],
1792 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1793AC_SUBST([VA_LIB_INSTALL_DIR])
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001794
Dave Airlie81fe1982010-04-22 14:59:29 +10001795dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001796dnl Gallium helper functions
1797dnl
1798gallium_check_st() {
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001799 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
Christian Königc3b22302011-07-04 15:04:41 +02001800 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1801 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
Chia-I Wu81239342011-07-02 09:49:17 +09001802 if test "x$have_libdrm" != xyes; then
1803 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1804 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001805 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1806 fi
1807 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1808 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1809 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001810 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001811 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1812 fi
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001813 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1814 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1815 fi
Christian Königc3b22302011-07-04 15:04:41 +02001816 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1817 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
Younes Mantonb97816d2011-07-14 12:22:20 -04001818 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001819 fi
1820 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1821 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
Younes Mantonb97816d2011-07-14 12:22:20 -04001822 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001823 fi
1824 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1825 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
Younes Mantonb97816d2011-07-14 12:22:20 -04001826 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001827 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001828}
1829
Marek Olšákc17fb852011-06-14 04:03:17 +02001830gallium_require_llvm() {
1831 if test "x$MESA_LLVM" = x0; then
1832 case "$host_cpu" in
1833 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1834 esac
1835 fi
1836}
1837
Marek Olšák58b6a192011-06-14 07:46:59 +02001838dnl Gallium drivers
Marek Olšák02c8ee22011-06-27 08:02:31 +02001839dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
Marek Olšák58b6a192011-06-14 07:46:59 +02001840if test "x$with_gallium_drivers" != x; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001841 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1842 for driver in $gallium_drivers; do
1843 case "x$driver" in
1844 xsvga)
Marek Olšák02c8ee22011-06-27 08:02:31 +02001845 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
Thomas Hellstromd742a642011-09-29 21:41:21 +02001846 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
Marek Olšák58b6a192011-06-14 07:46:59 +02001847 ;;
1848 xi915)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001849 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Marek Olšák02c8ee22011-06-27 08:02:31 +02001850 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1851 if test "x$MESA_LLVM" = x1; then
1852 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1853 fi
1854 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Marek Olšák58b6a192011-06-14 07:46:59 +02001855 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1856 ;;
Marek Olšák58b6a192011-06-14 07:46:59 +02001857 xr300)
1858 gallium_require_llvm "Gallium R300"
Marek Olšák02c8ee22011-06-27 08:02:31 +02001859 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1860 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
Marek Olšák58b6a192011-06-14 07:46:59 +02001861 ;;
1862 xr600)
1863 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
Marek Olšákbf0baa72011-09-27 16:42:01 +02001864 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
Marek Olšák58b6a192011-06-14 07:46:59 +02001865 ;;
1866 xnouveau)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001867 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
Marek Olšák58b6a192011-06-14 07:46:59 +02001868 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
Maarten Lankhorstdf8f8642011-10-18 14:24:30 +02001869 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
Marek Olšák58b6a192011-06-14 07:46:59 +02001870 ;;
1871 xswrast)
Marek Olšákc6f59fc2011-07-26 01:05:13 +02001872 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1873 if test "x$MESA_LLVM" = x1; then
1874 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1875 fi
1876
Marek Olšák58b6a192011-06-14 07:46:59 +02001877 if test "x$HAVE_ST_DRI" = xyes; then
1878 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1879 fi
Christian Königc3b22302011-07-04 15:04:41 +02001880 if test "x$HAVE_ST_VDPAU" = xyes; then
1881 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1882 fi
1883 if test "x$HAVE_ST_XVMC" = xyes; then
1884 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1885 fi
1886 if test "x$HAVE_ST_VA" = xyes; then
1887 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1888 fi
Eric Anholt48c99252011-10-14 14:33:00 -07001889 if test "x$HAVE_ST_VDPAU" = xyes ||
1890 test "x$HAVE_ST_XVMC" = xyes ||
1891 test "x$HAVE_ST_VA" = xyes; then
Younes Mantonb97816d2011-07-14 12:22:20 -04001892 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1893 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1894 fi
1895 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001896 ;;
1897 *)
1898 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1899 ;;
1900 esac
1901 done
Chia-I Wua1306f42010-01-22 15:51:51 +08001902fi
1903
Younes Mantonb97816d2011-07-14 12:22:20 -04001904if test "x$NEED_G3DVL_DRI" = xyes; then
1905 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1906fi
1907
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001908dnl prepend CORE_DIRS to SRC_DIRS
1909SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001910
1911dnl Restore LDFLAGS and CPPFLAGS
1912LDFLAGS="$_SAVE_LDFLAGS"
1913CPPFLAGS="$_SAVE_CPPFLAGS"
1914
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +02001915dnl Add user CFLAGS and CXXFLAGS
1916CFLAGS="$CFLAGS $USER_CFLAGS"
1917CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1918
Dan Nicholsondca1b792007-10-23 09:25:58 -07001919dnl Substitute the config
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001920AC_CONFIG_FILES([configs/autoconf
Matt Turner06ad64a2012-01-15 21:30:26 -05001921 src/gbm/Makefile
1922 src/gbm/main/gbm.pc
Matt Turner129213e2012-01-15 11:50:20 -05001923 src/mesa/drivers/dri/dri.pc
1924 src/mesa/drivers/dri/Makefile
Matt Turner3c87dfc2012-01-14 21:57:32 -05001925 src/mesa/drivers/dri/i915/Makefile
Eric Anholte3264802012-01-12 14:28:37 -08001926 src/mesa/drivers/dri/i965/Makefile
Matt Turner3f964342012-01-15 10:20:30 -05001927 src/mesa/drivers/dri/nouveau/Makefile
Matt Turnerb38d7a02012-01-15 10:04:58 -05001928 src/mesa/drivers/dri/r200/Makefile
Matt Turnere0ee8182012-01-14 22:21:30 -05001929 src/mesa/drivers/dri/radeon/Makefile
Matt Turner349845f2012-01-15 11:39:48 -05001930 src/mesa/drivers/dri/swrast/Makefile
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001931 tests/Makefile
1932 tests/glx/Makefile])
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001933
Dan Nicholsondca1b792007-10-23 09:25:58 -07001934dnl Replace the configs/current symlink
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001935AC_CONFIG_COMMANDS([configs],[
1936if test -f configs/current || test -L configs/current; then
1937 rm -f configs/current
1938fi
1939ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001940])
1941
Marek Olšák618dbc82011-06-27 03:12:57 +02001942dnl Sort the dirs alphabetically
Marek Olšák3c799622011-09-27 16:51:05 +02001943GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1944GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1945GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1946GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
Marek Olšák618dbc82011-06-27 03:12:57 +02001947
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001948AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001949
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001950dnl
1951dnl Output some configuration info for the user
1952dnl
1953echo ""
1954echo " prefix: $prefix"
1955echo " exec_prefix: $exec_prefix"
1956echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001957echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001958
Chia-I Wu815faa42010-10-29 12:34:44 +08001959dnl API info
1960echo ""
1961echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
Chia-I Wu815faa42010-10-29 12:34:44 +08001962echo " OpenVG: $enable_openvg"
1963
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001964dnl Driver info
1965echo ""
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001966if test "x$enable_osmesa" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001967 echo " OSMesa: lib$OSMESA_LIB"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001968else
Chia-I Wu815faa42010-10-29 12:34:44 +08001969 echo " OSMesa: no"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001970fi
1971
1972if test "x$enable_dri" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001973 # cleanup the drivers var
1974 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1975 if test "x$DRI_DIRS" = x; then
1976 echo " DRI drivers: no"
1977 else
1978 echo " DRI drivers: $dri_dirs"
1979 fi
1980 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -08001981fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001982
1983case "x$enable_glx$enable_xlib_glx" in
1984xyesyes)
1985 echo " GLX: Xlib-based"
1986 ;;
1987xyesno)
1988 echo " GLX: DRI-based"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001989 ;;
1990*)
1991 echo " GLX: $enable_glx"
1992 ;;
1993esac
1994
Chia-I Wu815faa42010-10-29 12:34:44 +08001995echo ""
1996echo " GLU: $enable_glu"
Chia-I Wu815faa42010-10-29 12:34:44 +08001997
1998dnl EGL
1999echo ""
2000echo " EGL: $enable_egl"
2001if test "$enable_egl" = yes; then
2002 echo " EGL platforms: $EGL_PLATFORMS"
Chia-I Wu12300502010-10-31 21:01:54 +08002003
2004 egl_drivers=""
2005 for d in $EGL_DRIVERS_DIRS; do
Chia-I Wuc98ea262011-01-07 16:30:08 +08002006 egl_drivers="$egl_drivers builtin:egl_$d"
Chia-I Wu12300502010-10-31 21:01:54 +08002007 done
2008
Marek Olšák1251e1d2011-06-18 20:33:55 +02002009 if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wu12300502010-10-31 21:01:54 +08002010 echo " EGL drivers: ${egl_drivers} egl_gallium"
2011 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
Chia-I Wu815faa42010-10-29 12:34:44 +08002012 else
Chia-I Wu12300502010-10-31 21:01:54 +08002013 echo " EGL drivers: $egl_drivers"
Chia-I Wu815faa42010-10-29 12:34:44 +08002014 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01002015fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002016
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002017echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07002018if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01002019 echo " llvm: yes"
2020 echo " llvm-config: $LLVM_CONFIG"
2021 echo " llvm-version: $LLVM_VERSION"
2022else
2023 echo " llvm: no"
2024fi
2025
2026echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002027if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2028 echo " Gallium: yes"
2029 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00002030 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002031 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00002032 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002033 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2034else
2035 echo " Gallium: no"
2036fi
2037
Daniel Vetter8f15c312011-11-28 22:24:26 +01002038
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002039dnl Libraries
2040echo ""
2041echo " Shared libs: $enable_shared"
2042echo " Static libs: $enable_static"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002043
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002044dnl Compiler options
2045# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2046cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2047 $SED 's/^ *//;s/ */ /;s/ *$//'`
2048cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2049 $SED 's/^ *//;s/ */ /;s/ *$//'`
2050defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2051echo ""
2052echo " CFLAGS: $cflags"
2053echo " CXXFLAGS: $cxxflags"
2054echo " Macros: $defines"
Kenneth Graunke3acc8262010-10-25 13:52:58 -07002055echo ""
2056echo " PYTHON2: $PYTHON2"
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002057
Dan Nicholsondca1b792007-10-23 09:25:58 -07002058echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07002059echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07002060echo ""