blob: f3f5e3e94d27a305ad110feee57f844ae57e101e [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
Dan Nicholson297e16c2008-05-05 15:42:53 -070050AC_PATH_PROG([MKDEP], [makedepend])
Dan Nicholson41b00702007-12-12 08:48:30 -080051
Luca Barbierif762f7b2010-09-24 10:10:09 +020052if test "x$MKDEP" = "x"; then
53 AC_MSG_ERROR([makedepend is required to build Mesa])
54fi
55
Brian Paulde1df262011-05-18 07:50:21 -060056AC_PATH_PROG([FLEX], [flex])
57test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
58
59AC_PATH_PROG([BISON], [bison])
60test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
61
Dan Nicholsonbc302b22009-05-22 09:39:02 -070062dnl Our fallback install-sh is a symlink to minstall. Use the existing
63dnl configuration in that case.
64AC_PROG_INSTALL
65test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
66
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070067dnl We need a POSIX shell for parts of the build. Assume we have one
68dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070069case "$host_os" in
70solaris*)
71 # Solaris /bin/sh is too old/non-POSIX compliant
72 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070073 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070074 ;;
75esac
76
Ian Romanick3ef3ba42011-12-15 18:45:27 -080077AC_PATH_PROG([GTESTCONFIG], [gtest-config])
78if test "x$GTESTCONFIG" != "x"; then
79 GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
80 GTEST_LIBS=`gtest-config --ldflags --libs`
Ian Romanick3ef3ba42011-12-15 18:45:27 -080081 AC_SUBST([GTEST_CFLAGS])
82 AC_SUBST([GTEST_LIBS])
83 HAVE_GTEST=yes
84else
85 HAVE_GTEST=no
86fi
87AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
88
nobled2a501872010-08-29 20:03:37 -040089dnl clang is mostly GCC-compatible, but its version is much lower,
90dnl so we have to check for it.
91AC_MSG_CHECKING([if compiling with clang])
92
93AC_COMPILE_IFELSE(
94[AC_LANG_PROGRAM([], [[
95#ifndef __clang__
96 not clang
97#endif
98]])],
99[CLANG=yes], [CLANG=no])
100
101AC_MSG_RESULT([$CLANG])
102
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800103dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
104dnl versions are explictly not supported.
nobled2a501872010-08-29 20:03:37 -0400105if test "x$GCC" = xyes -a "x$CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800106 AC_MSG_CHECKING([whether gcc version is sufficient])
107 major=0
108 minor=0
109
110 GCC_VERSION=`$CC -dumpversion`
111 if test $? -eq 0; then
112 major=`echo $GCC_VERSION | cut -d. -f1`
Marcin Baczyńskifa013412011-07-13 21:26:50 +0200113 minor=`echo $GCC_VERSION | cut -d. -f2`
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800114 fi
115
116 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
117 AC_MSG_RESULT([no])
118 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
119 else
120 AC_MSG_RESULT([yes])
121 fi
122fi
123
124
Dan Nicholsondb7fc632008-03-07 11:48:09 -0800125MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500126dnl Ask gcc where it's keeping its secret headers
127if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -0800128 for dir in include include-fixed; do
129 GCC_INCLUDES=`$CC -print-file-name=$dir`
130 if test "x$GCC_INCLUDES" != x && \
131 test "$GCC_INCLUDES" != "$dir" && \
132 test -d "$GCC_INCLUDES"; then
133 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
134 fi
135 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500136fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700137AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500138
Dan Nicholson41b00702007-12-12 08:48:30 -0800139dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700140m4_ifndef([PKG_PROG_PKG_CONFIG],
141 [m4_fatal([Could not locate the pkg-config autoconf macros.
142 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
143 are in a different location, try setting the environment variable
144 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700145PKG_PROG_PKG_CONFIG()
146
147dnl LIB_DIR - library basename
148LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700149AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700150
151dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
152_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700153AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
154AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700155
156dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
157_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700158AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
159AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700160
161dnl Compiler macros
162DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700163AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700164case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700165linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800166 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700167 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700168solaris*)
169 DEFINES="$DEFINES -DPTHREADS -DSVR4"
170 ;;
Brian Paul97988902010-02-18 12:46:12 -0700171cygwin*)
172 DEFINES="$DEFINES -DPTHREADS"
173 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700174esac
175
176dnl Add flags for gcc and g++
177if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700178 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
179 if test "x$CLANG" = "xno"; then
180 CFLAGS="$CFLAGS -ffast-math"
181 fi
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800182
183 # Enable -fvisibility=hidden if using a gcc that supports it
184 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800185 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100186 VISIBILITY_CFLAGS="-fvisibility=hidden"
187 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800188 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100189 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
190
191 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
192 CFLAGS=$save_CFLAGS
Dan Nicholson0c275b62008-01-15 22:52:25 -0800193
194 # Work around aliasing bugs - developers should comment this out
195 CFLAGS="$CFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100196
197 # gcc's builtin memcmp is slower than glibc's
198 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
199 CFLAGS="$CFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700200fi
201if test "x$GXX" = xyes; then
202 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800203
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400204 # Enable -fvisibility=hidden if using a gcc that supports it
205 save_CXXFLAGS="$CXXFLAGS"
206 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100207 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
208 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
Jon TURNEY560f7622011-04-26 11:49:01 +0100209 AC_LANG_PUSH([C++])
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400210 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100211 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
Jon TURNEY560f7622011-04-26 11:49:01 +0100212 AC_LANG_POP([C++])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100213
214 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
215 CXXFLAGS=$save_CXXFLAGS
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400216
Dan Nicholson0c275b62008-01-15 22:52:25 -0800217 # Work around aliasing bugs - developers should comment this out
218 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100219
220 # gcc's builtin memcmp is slower than glibc's
221 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
222 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700223fi
224
Jon TURNEYdb786432011-04-26 11:56:02 +0100225dnl even if the compiler appears to support it, using visibility attributes isn't
226dnl going to do anything useful currently on cygwin apart from emit lots of warnings
227case "$host_os" in
228cygwin*)
229 VISIBILITY_CFLAGS=""
230 VISIBILITY_CXXFLAGS=""
231 ;;
232esac
233
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100234AC_SUBST([VISIBILITY_CFLAGS])
235AC_SUBST([VISIBILITY_CXXFLAGS])
236
Dan Nicholsondca1b792007-10-23 09:25:58 -0700237dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700238AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700239 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700240AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700241 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700242AC_SUBST([OPT_FLAGS])
243AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700244
245dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600246dnl Hacks to enable 32 or 64 bit build
247dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700248AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600249 [AS_HELP_STRING([--enable-32-bit],
250 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700251 [enable_32bit="$enableval"],
252 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600253)
254if test "x$enable_32bit" = xyes; then
255 if test "x$GCC" = xyes; then
256 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700257 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600258 fi
259 if test "x$GXX" = xyes; then
260 CXXFLAGS="$CXXFLAGS -m32"
261 fi
262fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700263AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600264 [AS_HELP_STRING([--enable-64-bit],
265 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700266 [enable_64bit="$enableval"],
267 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600268)
269if test "x$enable_64bit" = xyes; then
270 if test "x$GCC" = xyes; then
271 CFLAGS="$CFLAGS -m64"
272 fi
273 if test "x$GXX" = xyes; then
274 CXXFLAGS="$CXXFLAGS -m64"
275 fi
276fi
277
278dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800279dnl shared/static libraries, mimic libtool options
280dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700281AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800282 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800283 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700284 [enable_static="$enableval"],
285 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800286)
287case "x$enable_static" in
288xyes|xno ) ;;
289x ) enable_static=no ;;
290* )
291 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
292 ;;
293esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700294AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800295 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800296 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700297 [enable_shared="$enableval"],
298 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800299)
300case "x$enable_shared" in
301xyes|xno ) ;;
302x ) enable_shared=yes ;;
303* )
304 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
305 ;;
306esac
307
308dnl Can't have static and shared libraries, default to static if user
309dnl explicitly requested. If both disabled, set to static since shared
310dnl was explicitly requirested.
311case "x$enable_static$enable_shared" in
312xyesyes )
313 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
314 enable_shared=no
315 ;;
316xnono )
317 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
318 enable_static=yes
319 ;;
320esac
321
322dnl
323dnl mklib options
324dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700325AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800326if test "$enable_static" = yes; then
327 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
328fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700329AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800330
Dan Nicholson23656c42007-12-12 09:02:31 -0800331dnl
332dnl other compiler options
333dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700334AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800335 [AS_HELP_STRING([--enable-debug],
336 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700337 [enable_debug="$enableval"],
338 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800339)
340if test "x$enable_debug" = xyes; then
341 DEFINES="$DEFINES -DDEBUG"
342 if test "x$GCC" = xyes; then
343 CFLAGS="$CFLAGS -g"
344 fi
345 if test "x$GXX" = xyes; then
346 CXXFLAGS="$CXXFLAGS -g"
347 fi
348fi
Dan Nicholson88586332007-11-15 08:59:57 -0800349
350dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700351dnl library names
352dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100353LIB_PREFIX_GLOB='lib'
354LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800355if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800356 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800357else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700358 case "$host_os" in
359 darwin* )
360 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100361 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100362 dnl prefix can be 'cyg' or 'lib'
363 LIB_PREFIX_GLOB='???'
364 LIB_VERSION_SEPARATOR='-'
365 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700366 aix* )
367 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700368 * )
369 LIB_EXTENSION='so' ;;
370 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800371fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800372
Marek Olšák848f7d32011-04-01 01:12:41 +0200373dnl
Tom Fogalc0573fb2011-10-10 10:33:18 -0600374dnl Mangled Mesa support
375dnl
376AC_ARG_ENABLE([mangling],
377 [AS_HELP_STRING([--enable-mangling],
378 [enable mangled symbols and library name @<:@default=disabled@:>@])],
379 [enable_mangling="${enableval}"],
380 [enable_mangling=no]
381)
382GL_LIB="GL"
383GLU_LIB="GLU"
384OSMESA_LIB="OSMesa"
385if test "x${enable_mangling}" = "xyes" ; then
386 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
387 GL_LIB="MangledGL"
388 GLU_LIB="MangledGLU"
389 OSMESA_LIB="MangledOSMesa"
390fi
391AC_SUBST([GL_LIB])
392AC_SUBST([GLU_LIB])
393AC_SUBST([OSMESA_LIB])
394
395dnl
Marek Olšák848f7d32011-04-01 01:12:41 +0200396dnl potentially-infringing-but-nobody-knows-for-sure stuff
397dnl
398AC_ARG_ENABLE([texture-float],
399 [AS_HELP_STRING([--enable-texture-float],
400 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
401 [enable_texture_float="$enableval"],
402 [enable_texture_float=no]
403)
404if test "x$enable_texture_float" = xyes; then
405 AC_MSG_WARN([Floating-point textures enabled.])
406 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
407 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
408fi
409
Dan Nicholson8217f242009-02-11 15:16:00 -0800410GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
411GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800412OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800413EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500414GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
415GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800416VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800417GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100418WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200419GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800420
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100421GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
422GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100423OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
424EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
425EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
426GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
427GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
428VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800429GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100430WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200431GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800432
Dan Nicholson297e16c2008-05-05 15:42:53 -0700433AC_SUBST([GL_LIB_NAME])
434AC_SUBST([GLU_LIB_NAME])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700435AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800436AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500437AC_SUBST([GLESv1_CM_LIB_NAME])
438AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800439AC_SUBST([VG_LIB_NAME])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800440AC_SUBST([GLAPI_LIB_NAME])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100441AC_SUBST([WAYLAND_EGL_LIB_NAME])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200442AC_SUBST([GBM_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700443
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700444AC_SUBST([GL_LIB_GLOB])
445AC_SUBST([GLU_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700446AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800447AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500448AC_SUBST([GLESv1_CM_LIB_GLOB])
449AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800450AC_SUBST([VG_LIB_GLOB])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800451AC_SUBST([GLAPI_LIB_GLOB])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100452AC_SUBST([WAYLAND_EGL_LIB_GLOB])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200453AC_SUBST([GBM_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700454
Dan Nicholsondca1b792007-10-23 09:25:58 -0700455dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700456dnl Arch/platform-specific settings
457dnl
458AC_ARG_ENABLE([asm],
459 [AS_HELP_STRING([--disable-asm],
460 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
461 [enable_asm="$enableval"],
462 [enable_asm=yes]
463)
464asm_arch=""
465ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800466MESA_ASM_SOURCES=""
467GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700468AC_MSG_CHECKING([whether to enable assembly])
469test "x$enable_asm" = xno && AC_MSG_RESULT([no])
470# disable if cross compiling on x86/x86_64 since we must run gen_matypes
471if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
472 case "$host_cpu" in
473 i?86 | x86_64)
474 enable_asm=no
475 AC_MSG_RESULT([no, cross compiling])
476 ;;
477 esac
478fi
479# check for supported arches
480if test "x$enable_asm" = xyes; then
481 case "$host_cpu" in
482 i?86)
483 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700484 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700485 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
486 ;;
487 esac
488 ;;
489 x86_64)
490 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700491 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700492 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
493 ;;
494 esac
495 ;;
496 powerpc)
497 case "$host_os" in
498 linux*)
499 asm_arch=ppc
500 ;;
501 esac
502 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800503 sparc*)
504 case "$host_os" in
505 linux*)
506 asm_arch=sparc
507 ;;
508 esac
509 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700510 esac
511
512 case "$asm_arch" in
513 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800514 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800515 MESA_ASM_SOURCES='$(X86_SOURCES)'
516 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700517 AC_MSG_RESULT([yes, x86])
518 ;;
519 x86_64)
520 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800521 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
522 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700523 AC_MSG_RESULT([yes, x86_64])
524 ;;
525 ppc)
526 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800527 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700528 AC_MSG_RESULT([yes, ppc])
529 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800530 sparc)
531 ASM_FLAGS="-DUSE_SPARC_ASM"
532 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
533 GLAPI_ASM_SOURCES='$(SPARC_API)'
534 AC_MSG_RESULT([yes, sparc])
535 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700536 *)
537 AC_MSG_RESULT([no, platform not supported])
538 ;;
539 esac
540fi
541AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800542AC_SUBST([MESA_ASM_SOURCES])
543AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700544
545dnl PIC code macro
546MESA_PIC_FLAGS
547
548dnl Check to see if dlopen is in default libraries (like Solaris, which
549dnl has it in libc), or if libdl is needed to get it.
550AC_CHECK_FUNC([dlopen], [],
551 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800552AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700553
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700554dnl See if posix_memalign is available
555AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
556
Dan Nicholson871125a2008-06-04 13:00:35 -0700557dnl SELinux awareness.
558AC_ARG_ENABLE([selinux],
559 [AS_HELP_STRING([--enable-selinux],
560 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
561 [MESA_SELINUX="$enableval"],
562 [MESA_SELINUX=no])
563if test "x$enable_selinux" = "xyes"; then
564 AC_CHECK_HEADER([selinux/selinux.h],[],
565 [AC_MSG_ERROR([SELinux headers not found])])
566 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
567 [AC_MSG_ERROR([SELinux library not found])])
568 SELINUX_LIBS="-lselinux"
569 DEFINES="$DEFINES -DMESA_SELINUX"
570fi
571
Marek Olšák440d71d2011-06-14 05:38:58 +0200572dnl Options for APIs
Chia-I Wube5f34a2010-10-27 16:14:27 +0800573AC_ARG_ENABLE([opengl],
574 [AS_HELP_STRING([--disable-opengl],
575 [disable support for standard OpenGL API @<:@default=no@:>@])],
576 [enable_opengl="$enableval"],
577 [enable_opengl=yes])
578AC_ARG_ENABLE([gles1],
579 [AS_HELP_STRING([--enable-gles1],
580 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
581 [enable_gles1="$enableval"],
582 [enable_gles1=no])
583AC_ARG_ENABLE([gles2],
584 [AS_HELP_STRING([--enable-gles2],
585 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
586 [enable_gles2="$enableval"],
587 [enable_gles2=no])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800588AC_ARG_ENABLE([openvg],
589 [AS_HELP_STRING([--enable-openvg],
590 [enable support for OpenVG API @<:@default=no@:>@])],
591 [enable_openvg="$enableval"],
592 [enable_openvg=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900593
594AC_ARG_ENABLE([dri],
595 [AS_HELP_STRING([--enable-dri],
596 [enable DRI modules @<:@default=auto@:>@])],
597 [enable_dri="$enableval"],
598 [enable_dri=auto])
599AC_ARG_ENABLE([glx],
600 [AS_HELP_STRING([--enable-glx],
601 [enable GLX library @<:@default=auto@:>@])],
602 [enable_glx="$enableval"],
603 [enable_glx=auto])
604AC_ARG_ENABLE([osmesa],
605 [AS_HELP_STRING([--enable-osmesa],
606 [enable OSMesa library @<:@default=auto@:>@])],
607 [enable_osmesa="$enableval"],
608 [enable_osmesa=auto])
609AC_ARG_ENABLE([egl],
610 [AS_HELP_STRING([--disable-egl],
611 [disable EGL library @<:@default=enabled@:>@])],
612 [enable_egl="$enableval"],
613 [enable_egl=yes])
614
Marek Olšák440d71d2011-06-14 05:38:58 +0200615AC_ARG_ENABLE([xorg],
616 [AS_HELP_STRING([--enable-xorg],
617 [enable support for X.Org DDX API @<:@default=no@:>@])],
618 [enable_xorg="$enableval"],
619 [enable_xorg=no])
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200620AC_ARG_ENABLE([xa],
621 [AS_HELP_STRING([--enable-xa],
622 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
623 [enable_xa="$enableval"],
624 [enable_xa=no])
Marek Olšák440d71d2011-06-14 05:38:58 +0200625AC_ARG_ENABLE([d3d1x],
626 [AS_HELP_STRING([--enable-d3d1x],
627 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
628 [enable_d3d1x="$enableval"],
629 [enable_d3d1x=no])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200630AC_ARG_ENABLE([gbm],
631 [AS_HELP_STRING([--enable-gbm],
632 [enable gbm library @<:@default=auto@:>@])],
633 [enable_gbm="$enableval"],
634 [enable_gbm=auto])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900635
Christian Königc3b22302011-07-04 15:04:41 +0200636AC_ARG_ENABLE([xvmc],
637 [AS_HELP_STRING([--enable-xvmc],
638 [enable xvmc library @<:@default=auto@:>@])],
639 [enable_xvmc="$enableval"],
640 [enable_xvmc=auto])
641AC_ARG_ENABLE([vdpau],
642 [AS_HELP_STRING([--enable-vdpau],
643 [enable vdpau library @<:@default=auto@:>@])],
644 [enable_vdpau="$enableval"],
645 [enable_vdpau=auto])
646AC_ARG_ENABLE([va],
647 [AS_HELP_STRING([--enable-va],
648 [enable va library @<:@default=auto@:>@])],
649 [enable_va="$enableval"],
650 [enable_va=auto])
651
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900652AC_ARG_ENABLE([xlib_glx],
653 [AS_HELP_STRING([--enable-xlib-glx],
654 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
655 [enable_xlib_glx="$enableval"],
656 [enable_xlib_glx=auto])
Marek Olšák1251e1d2011-06-18 20:33:55 +0200657AC_ARG_ENABLE([gallium_egl],
658 [AS_HELP_STRING([--enable-gallium-egl],
659 [enable optional EGL state tracker (not required
660 for EGL support in Gallium with OpenGL and OpenGL ES)
661 @<:@default=disable@:>@])],
662 [enable_gallium_egl="$enableval"],
663 [enable_gallium_egl=no])
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200664AC_ARG_ENABLE([gallium_gbm],
665 [AS_HELP_STRING([--enable-gallium-gbm],
666 [enable optional gbm state tracker (not required for
667 gbm support in Gallium)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200668 @<:@default=auto@:>@])],
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200669 [enable_gallium_gbm="$enableval"],
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200670 [enable_gallium_gbm=auto])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800671
Marek Olšák58b6a192011-06-14 07:46:59 +0200672# Option for Gallium drivers
Thomas Hellstrom87118d82012-01-12 12:10:53 +0100673GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
Marek Olšák58b6a192011-06-14 07:46:59 +0200674
675AC_ARG_WITH([gallium-drivers],
676 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
677 [comma delimited Gallium drivers list, e.g.
Daniel Vetter8f15c312011-11-28 22:24:26 +0100678 "i915,nouveau,r300,r600,svga,swrast"
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200679 @<:@default=r300,r600,swrast@:>@])],
Marek Olšák58b6a192011-06-14 07:46:59 +0200680 [with_gallium_drivers="$withval"],
681 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
Chia-I Wu156e9552010-10-30 14:26:01 +0800682
Ian Romanickdb311b42011-06-22 11:35:27 -0700683# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
684# here so that the script doesn't choke on an unknown driver name later.
685case "$with_gallium_drivers" in
686 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
687 no) with_gallium_drivers='' ;;
688esac
689
Chia-I Wube5f34a2010-10-27 16:14:27 +0800690if test "x$enable_opengl" = xno -a \
691 "x$enable_gles1" = xno -a \
692 "x$enable_gles2" = xno -a \
Marek Olšák440d71d2011-06-14 05:38:58 +0200693 "x$enable_openvg" = xno -a \
694 "x$enable_xorg" = xno -a \
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200695 "x$enable_xa" = xno -a \
Christian Königc3b22302011-07-04 15:04:41 +0200696 "x$enable_d3d1x" = xno -a \
697 "x$enable_xvmc" = xno -a \
698 "x$enable_vdpau" = xno -a \
699 "x$enable_va" = xno; then
Chia-I Wube5f34a2010-10-27 16:14:27 +0800700 AC_MSG_ERROR([at least one API should be enabled])
701fi
702
703API_DEFINES=""
Chia-I Wube5f34a2010-10-27 16:14:27 +0800704if test "x$enable_opengl" = xno; then
705 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
706else
707 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
708fi
709if test "x$enable_gles1" = xyes; then
710 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
711fi
712if test "x$enable_gles2" = xyes; then
713 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
714fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800715AC_SUBST([API_DEFINES])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800716
Chia-I Wue8c7d752010-12-26 18:24:13 +0800717AC_ARG_ENABLE([shared-glapi],
718 [AS_HELP_STRING([--enable-shared-glapi],
719 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
720 [enable_shared_glapi="$enableval"],
721 [enable_shared_glapi=no])
722
723SHARED_GLAPI="0"
724if test "x$enable_shared_glapi" = xyes; then
725 SHARED_GLAPI="1"
726fi
727AC_SUBST([SHARED_GLAPI])
728
Kenneth Graunke9d21b5d2012-01-04 23:49:18 -0800729dnl
730dnl Driver configuration. Options are xlib, dri and osmesa right now.
731dnl More later: fbdev, ...
732dnl
733default_driver="xlib"
734
735case "$host_os" in
736linux*)
737 case "$host_cpu" in
738 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
739 esac
740 ;;
741*freebsd* | dragonfly* | *netbsd*)
742 case "$host_cpu" in
743 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
744 esac
745 ;;
746esac
747
748if test "x$enable_opengl" = xno; then
749 default_driver="no"
750fi
751
752AC_ARG_WITH([driver],
753 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
754 [mesa_driver="$withval"],
755 [mesa_driver=auto])
756dnl Check for valid option
757case "x$mesa_driver" in
758xxlib|xdri|xosmesa|xno)
759 if test "x$enable_dri" != xauto -o \
760 "x$enable_glx" != xauto -o \
761 "x$enable_osmesa" != xauto -o \
762 "x$enable_xlib_glx" != xauto; then
763 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
764 fi
765 ;;
766xauto)
767 mesa_driver="$default_driver"
768 ;;
769*)
770 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
771 ;;
772esac
773
774# map $mesa_driver to APIs
775if test "x$enable_dri" = xauto; then
776 case "x$mesa_driver" in
777 xdri) enable_dri=yes ;;
778 *) enable_dri=no ;;
779 esac
780fi
781
782if test "x$enable_glx" = xauto; then
783 case "x$mesa_driver" in
784 xdri|xxlib) enable_glx=yes ;;
785 *) enable_glx=no ;;
786 esac
787fi
788
789if test "x$enable_osmesa" = xauto; then
790 case "x$mesa_driver" in
791 xxlib|xosmesa) enable_osmesa=yes ;;
792 *) enable_osmesa=no ;;
793 esac
794fi
795
796if test "x$enable_xlib_glx" = xauto; then
797 case "x$mesa_driver" in
798 xxlib) enable_xlib_glx=yes ;;
799 *) enable_xlib_glx=no ;;
800 esac
801fi
802
803if test "x$enable_glx" = xno; then
804 enable_xlib_glx=no
805fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900806
Dan Nicholson44d99142007-12-05 18:47:01 -0800807dnl
808dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700809dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800810
811dnl this variable will be prepended to SRC_DIRS and is not exported
Chia-I Wube5f34a2010-10-27 16:14:27 +0800812CORE_DIRS=""
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800813
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200814SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700815GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100816GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000817GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000818GALLIUM_WINSYS_DIRS="sw"
Kai Wasserbäch0a22fb62011-11-29 22:36:02 +0100819GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100820GALLIUM_STATE_TRACKERS_DIRS=""
821
Chia-I Wue8c7d752010-12-26 18:24:13 +0800822# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
Jon TURNEYaa6a5cf2011-02-16 13:37:57 +0000823case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800824x*yes*)
825 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
826 ;;
827esac
828
Chia-I Wube5f34a2010-10-27 16:14:27 +0800829# build glapi if OpenGL is enabled
830if test "x$enable_opengl" = xyes; then
831 CORE_DIRS="$CORE_DIRS mapi/glapi"
832fi
833
Chia-I Wu12583172011-01-07 17:24:16 +0800834# build es1api if OpenGL ES 1.x is enabled
835if test "x$enable_gles1" = xyes; then
836 CORE_DIRS="$CORE_DIRS mapi/es1api"
837fi
838
839# build es2api if OpenGL ES 2.x is enabled
840if test "x$enable_gles2" = xyes; then
841 CORE_DIRS="$CORE_DIRS mapi/es2api"
842fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800843
Chia-I Wube5f34a2010-10-27 16:14:27 +0800844# build glsl and mesa if OpenGL or OpenGL ES is enabled
Chia-I Wu12583172011-01-07 17:24:16 +0800845case "x$enable_opengl$enable_gles1$enable_gles2" in
Chia-I Wube5f34a2010-10-27 16:14:27 +0800846x*yes*)
847 CORE_DIRS="$CORE_DIRS glsl mesa"
848 ;;
849esac
850
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900851case "x$enable_glx$enable_xlib_glx" in
852xyesyes)
853 DRIVER_DIRS="$DRIVER_DIRS x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000854 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000855 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Marek Olšák440d71d2011-06-14 05:38:58 +0200856 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
Younes Mantonb97816d2011-07-14 12:22:20 -0400857 HAVE_WINSYS_XLIB="yes"
Dan Nicholson44d99142007-12-05 18:47:01 -0800858 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900859xyesno)
860 # DRI-based GLX
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500861 SRC_DIRS="$SRC_DIRS glx"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900862 ;;
863esac
864
865if test "x$enable_dri" = xyes; then
866 DRIVER_DIRS="$DRIVER_DIRS dri"
867
Emil Velikov4ef9c3d2011-07-11 15:58:29 +0100868 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
Marek Olšák440d71d2011-06-14 05:38:58 +0200869 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
870 HAVE_ST_DRI="yes"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900871fi
872
873if test "x$enable_osmesa" = xyes; then
874 # the empty space matters for osmesa... (see src/mesa/Makefile)
875 if test -n "$DRIVER_DIRS"; then
876 DRIVER_DIRS="$DRIVER_DIRS osmesa"
877 else
878 DRIVER_DIRS="osmesa"
879 fi
880fi
881
Dan Nicholson297e16c2008-05-05 15:42:53 -0700882AC_SUBST([SRC_DIRS])
883AC_SUBST([GLU_DIRS])
884AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100885AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000886AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100887AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000888AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100889AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000890AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700891
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900892# Check for libdrm
893PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
894 [have_libdrm=yes], [have_libdrm=no])
895
896if test "x$enable_dri" = xyes; then
897 # DRI must be shared, I think
898 if test "$enable_static" = yes; then
899 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
900 fi
901
Chia-I Wu81239342011-07-02 09:49:17 +0900902 # not a hard requirement as swrast does not depend on it
903 if test "x$have_libdrm" = xyes; then
904 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900905 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900906fi
907
Dan Nicholsondca1b792007-10-23 09:25:58 -0700908dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700909dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700910dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700911dnl
912if test -n "$PKG_CONFIG"; then
913 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700914 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700915 x11_pkgconfig=yes
916 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700917 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700918 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700919 ])
920 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700921else
922 x11_pkgconfig=no
923fi
924dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600925if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700926 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600927else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700928 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700929 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
930 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
931 AC_SUBST([X11_CFLAGS])
932 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700933fi
934
Dan Nicholson99803a42008-07-01 09:03:15 -0700935dnl Try to tell the user that the --x-* options are only used when
936dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
937m4_divert_once([HELP_BEGIN],
938[These options are only used when the X libraries cannot be found by the
939pkg-config utility.])
940
Dan Nicholson44d99142007-12-05 18:47:01 -0800941dnl We need X for xlib and dri, so bomb now if it's not found
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900942if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
943 AC_MSG_ERROR([X11 development libraries needed for GLX])
944fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700945
Ian Romanickb518dfb2012-01-02 17:44:30 -0800946if test "x$enable_glx" = xyes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700947 DEFINES="$DEFINES -DUSE_XCB"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700948fi
949
Samuel Thibault75856172011-03-14 22:08:21 +0000950dnl Direct rendering or just indirect rendering
noblede7d18ed2011-03-14 22:08:22 +0000951case "$host_os" in
952gnu*)
953 dnl Disable by default on GNU/Hurd
954 driglx_direct_default="no"
955 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +0000956cygwin*)
957 dnl Disable by default on cygwin
958 driglx_direct_default="no"
959 ;;
noblede7d18ed2011-03-14 22:08:22 +0000960*)
961 driglx_direct_default="yes"
962 ;;
963esac
Samuel Thibault75856172011-03-14 22:08:21 +0000964AC_ARG_ENABLE([driglx-direct],
965 [AS_HELP_STRING([--disable-driglx-direct],
966 [enable direct rendering in GLX and EGL for DRI \
noblede7d18ed2011-03-14 22:08:22 +0000967 @<:@default=auto@:>@])],
Samuel Thibault75856172011-03-14 22:08:21 +0000968 [driglx_direct="$enableval"],
noblede7d18ed2011-03-14 22:08:22 +0000969 [driglx_direct="$driglx_direct_default"])
Samuel Thibault75856172011-03-14 22:08:21 +0000970
Dan Nicholson44d99142007-12-05 18:47:01 -0800971dnl
972dnl libGL configuration per driver
973dnl
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900974case "x$enable_glx$enable_xlib_glx" in
975xyesyes)
976 # Xlib-based GLX
Dan Nicholson44d99142007-12-05 18:47:01 -0800977 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700978 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800979 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800980 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
981 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800982 else
983 # should check these...
984 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
985 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800986 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
987 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800988 fi
Marek Olšák0aed27e2011-07-26 01:05:51 +0200989 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
Kenneth Graunked1d812052011-01-16 16:01:54 -0800990 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson44d99142007-12-05 18:47:01 -0800991 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900992xyesno)
993 # DRI-based GLX
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500994 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Samuel Thibault75856172011-03-14 22:08:21 +0000995 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000996 if test x"$driglx_direct" = xyes; then
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900997 if test "x$have_libdrm" != xyes; then
998 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
999 fi
Samuel Thibault75856172011-03-14 22:08:21 +00001000 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1001 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +00001002 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001003
1004 # find the DRI deps for libGL
1005 if test "$x11_pkgconfig" = yes; then
Ian Romanickb518dfb2012-01-02 17:44:30 -08001006 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001007
1008 # add xf86vidmode if available
1009 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1010 if test "$HAVE_XF86VIDMODE" = yes ; then
1011 dri_modules="$dri_modules xxf86vm"
1012 fi
1013
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001014 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001015 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -08001016 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1017 GL_LIB_DEPS="$DRIGL_LIBS"
1018 else
1019 # should check these...
1020 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
Alan Hourihane64799222011-06-28 17:40:24 +01001021 if test "x$HAVE_XF86VIDMODE" == xyes; then
1022 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1023 else
1024 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1025 fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001026 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1027 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001028
1029 # XCB can only be used from pkg-config
Ian Romanickb518dfb2012-01-02 17:44:30 -08001030 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1031 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1032 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1033 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001034 fi
1035
Ian Romanick4becf672012-01-03 11:35:59 -08001036 # Check to see if the xcb-glx library is new enough to support
1037 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1038 # is released.
1039 save_CPPFLAGS="$CPPFLAGS"
1040 save_LDFLAGS="$LDFLAGS"
1041 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1042 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1043 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1044 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1045 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1046 CPPFLAGS="$save_CPPFLAGS"
1047 LDFLAGS="$save_LDFLAGS"
1048
1049 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1050 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1051 fi
1052
Dan Nicholson44d99142007-12-05 18:47:01 -08001053 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001054 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1055 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -08001056 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001057esac
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001058
Ian Romanick4becf672012-01-03 11:35:59 -08001059# This is outside the case (above) so that it is invoked even for non-GLX
1060# builds.
1061AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1062 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1063
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001064GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1065GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1066GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1067GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1068
Dan Nicholson297e16c2008-05-05 15:42:53 -07001069AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001070AC_SUBST([GL_PC_REQ_PRIV])
1071AC_SUBST([GL_PC_LIB_PRIV])
1072AC_SUBST([GL_PC_CFLAGS])
1073AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +08001074AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001075AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -05001076AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001077AC_SUBST([GLESv2_PC_LIB_PRIV])
1078
Chia-I Wu0c771e22011-11-04 16:32:17 +08001079GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
Chia-I Wu9767d3b2010-12-26 18:02:59 +08001080AC_SUBST([GLAPI_LIB_DEPS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001081
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001082
1083dnl Setup default DRI CFLAGS
1084DRI_CFLAGS='$(CFLAGS)'
1085DRI_CXXFLAGS='$(CXXFLAGS)'
1086DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1087MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1088
1089AC_ARG_ENABLE([shared-dricore],
1090 [AS_HELP_STRING([--enable-shared-dricore],
1091 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1092 [enable_dricore="$enableval"],
1093 [enable_dricore=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001094if test "x$enable_dri" = xyes ; then
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001095 if test "$enable_dricore" = yes ; then
1096 if test "$GCC$GXX" != yesyes ; then
1097 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
1098 enable_dricore=no
1099 else
1100 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1101 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1102 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1103 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1104 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1105 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1106 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1107 fi
1108 fi
1109fi
1110AC_SUBST([DRICORE_LIBS])
1111AC_SUBST([DRICORE_GLSL_LIBS])
1112AC_SUBST([DRICORE_LIB_DEPS])
1113AC_SUBST([DRI_CXXFLAGS])
1114AC_SUBST([DRI_CFLAGS])
1115AC_SUBST([MESA_MODULES])
1116
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001117AC_SUBST([HAVE_XF86VIDMODE])
1118
Dan Nicholsondca1b792007-10-23 09:25:58 -07001119dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001120dnl More GLX setup
Dan Nicholsondca1b792007-10-23 09:25:58 -07001121dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001122case "x$enable_glx$enable_xlib_glx" in
1123xyesyes)
Dan Nicholsondca1b792007-10-23 09:25:58 -07001124 DEFINES="$DEFINES -DUSE_XSHM"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001125 ;;
1126xyesno)
1127 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1128 if test "x$driglx_direct" = xyes; then
1129 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1130 fi
1131 ;;
1132esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001133
1134dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001135dnl TLS detection
Dan Nicholson44d99142007-12-05 18:47:01 -08001136dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001137
Dan Nicholson297e16c2008-05-05 15:42:53 -07001138AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -08001139 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001140 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001141 [GLX_USE_TLS="$enableval"],
1142 [GLX_USE_TLS=no])
Tom Fogal31351dc2010-12-05 17:58:32 -07001143AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1144
Tom Fogal44842972011-02-21 22:32:18 -07001145AS_IF([test "x$GLX_USE_TLS" = xyes],
1146 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1147
Tom Fogal31351dc2010-12-05 17:58:32 -07001148dnl
1149dnl More DRI setup
1150dnl
Dan Nicholson44d99142007-12-05 18:47:01 -08001151dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -07001152AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001153 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001154 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001155 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001156 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -07001157AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +08001158dnl Extra search path for DRI drivers
1159AC_ARG_WITH([dri-searchpath],
1160 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1161 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1162 [DRI_DRIVER_SEARCH_DIR="$withval"],
1163 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1164AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001165dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -07001166AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001167 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -07001168 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +02001169 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001170 [with_dri_drivers="$withval"],
1171 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001172if test "x$with_dri_drivers" = x; then
1173 with_dri_drivers=no
1174fi
1175
1176dnl If $with_dri_drivers is yes, directories will be added through
1177dnl platform checks
1178DRI_DIRS=""
1179case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001180no) ;;
1181yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001182 # classic DRI drivers require FEATURE_GL to build
1183 if test "x$enable_opengl" = xyes; then
1184 DRI_DIRS="yes"
1185 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001186 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001187*)
1188 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -07001189 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001190 for driver in $dri_drivers; do
1191 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1192 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1193 done
1194 DRI_DIRS="$dri_drivers"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001195 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1196 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1197 fi
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001198 ;;
1199esac
1200
Dan Nicholson44d99142007-12-05 18:47:01 -08001201dnl Set DRI_DIRS, DEFINES and LIB_DEPS
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001202if test "x$enable_dri" = xyes; then
Dan Nicholson44d99142007-12-05 18:47:01 -08001203 # Platform specific settings and drivers to build
1204 case "$host_os" in
1205 linux*)
1206 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001207 DEFINES="$DEFINES -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001208
1209 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -08001210 x86_64)
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001211 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001212 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001213 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001214 ;;
1215 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -08001216 # Build only the drivers for cards that exist on PowerPC.
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001217 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001218 DRI_DIRS="r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001219 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001220 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001221 sparc*)
Ian Romanicke4344162011-08-24 15:21:58 -07001222 # Build only the drivers for cards that exist on sparc
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001223 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001224 DRI_DIRS="r200 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001225 fi
1226 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001227 esac
1228 ;;
Pierre Allegraud8fd8de32011-01-06 07:58:57 -07001229 freebsd* | dragonfly* | *netbsd*)
Dan Nicholson44d99142007-12-05 18:47:01 -08001230 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1231 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001232
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001233 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001234 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001235 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001236 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001237 gnu*)
1238 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001239 DEFINES="$DEFINES -DHAVE_ALIAS"
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001240 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001241 solaris*)
1242 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001243 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001244 cygwin*)
1245 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001246 if test "x$DRI_DIRS" = "xyes"; then
1247 DRI_DIRS="swrast"
1248 fi
1249 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001250 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -08001251
1252 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001253 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001254 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -08001255 fi
1256
Dan Nicholson44d99142007-12-05 18:47:01 -08001257 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1258
1259 # Check for expat
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001260 if test "x$enable_dri" = xyes; then
Chia-I Wube5f34a2010-10-27 16:14:27 +08001261 EXPAT_INCLUDES=""
1262 EXPAT_LIB=-lexpat
1263 AC_ARG_WITH([expat],
1264 [AS_HELP_STRING([--with-expat=DIR],
1265 [expat install directory])],[
1266 EXPAT_INCLUDES="-I$withval/include"
1267 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1268 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1269 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1270 ])
1271 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1272 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1273 [AC_MSG_ERROR([Expat required for DRI.])])
1274 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001275
Chia-I Wu81239342011-07-02 09:49:17 +09001276 # libdrm is required for all except swrast
1277 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1278 if test "x$have_libdrm" != xyes; then
1279 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1280 fi
1281 fi
1282
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001283 # put all the necessary libs together, including possibly libdricore
1284 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001285fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001286AC_SUBST([DRI_DIRS])
1287AC_SUBST([EXPAT_INCLUDES])
1288AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -08001289
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001290case $DRI_DIRS in
1291*i915*|*i965*)
Tormod Volden903185b2011-01-25 13:25:18 -08001292 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Eric Anholte3264802012-01-12 14:28:37 -08001293
1294 case $DRI_DIRS in
1295 *i965*)
1296 HAVE_I965_DRI=yes;
1297 ;;
1298 esac
1299
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001300 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001301esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001302
Eric Anholte3264802012-01-12 14:28:37 -08001303AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1304
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001305case $DRI_DIRS in
Johannes Obermayr873379a2011-06-02 17:15:44 -06001306*nouveau*)
1307 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1308 ;;
1309esac
1310
1311case $DRI_DIRS in
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001312*radeon*|*r200*)
Eric Anholt830e5462011-10-14 14:34:19 -07001313 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001314 ;;
1315esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001316
1317
Dan Nicholson44d99142007-12-05 18:47:01 -08001318dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001319dnl OSMesa configuration
1320dnl
Dan Nicholson979ff512007-12-05 18:47:01 -08001321
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001322dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -07001323AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001324 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1325 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001326 [osmesa_bits="$withval"],
1327 [osmesa_bits=8])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001328if test "x$osmesa_bits" != x8; then
1329 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1330 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1331 osmesa_bits=8
1332 fi
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001333fi
1334case "x$osmesa_bits" in
1335x8)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001336 OSMESA_LIB="${OSMESA_LIB}"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001337 ;;
1338x16|x32)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001339 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001340 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1341 ;;
1342*)
1343 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1344 ;;
1345esac
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001346
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001347if test "x$enable_osmesa" = xyes; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001348 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -08001349 if test "$enable_static" = no; then
Kenneth Graunked1d812052011-01-16 16:01:54 -08001350 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -08001351 else
1352 OSMESA_LIB_DEPS=""
1353 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001354 OSMESA_MESA_DEPS=""
Kenneth Graunked1d812052011-01-16 16:01:54 -08001355 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001356fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001357AC_SUBST([OSMESA_LIB_DEPS])
1358AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001359AC_SUBST([OSMESA_PC_REQ])
1360AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001361
1362dnl
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001363dnl gbm configuration
1364dnl
1365if test "x$enable_gbm" = xauto; then
1366 case "$with_egl_platforms" in
1367 *drm*)
1368 enable_gbm=yes ;;
1369 *)
1370 enable_gbm=no ;;
1371 esac
1372fi
1373if test "x$enable_gbm" = xyes; then
1374 SRC_DIRS="$SRC_DIRS gbm"
1375 GBM_BACKEND_DIRS=""
1376
1377 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1378 AC_MSG_ERROR([gbm needs udev]))
1379 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1380
1381 if test "x$enable_dri" = xyes; then
1382 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1383 if test "$SHARED_GLAPI" -eq 0; then
1384 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1385 fi
1386 fi
1387fi
1388AC_SUBST([GBM_LIB_DEPS])
1389AC_SUBST([GBM_BACKEND_DIRS])
1390GBM_PC_REQ_PRIV="libudev"
1391GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1392GBM_PC_CFLAGS=
1393AC_SUBST([GBM_PC_REQ_PRIV])
1394AC_SUBST([GBM_PC_LIB_PRIV])
1395AC_SUBST([GBM_PC_CFLAGS])
1396
1397dnl
Dan Nicholson53b37342009-02-25 17:45:34 -08001398dnl EGL configuration
1399dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001400EGL_CLIENT_APIS=""
1401
Dan Nicholson66f97862009-04-29 12:11:43 -07001402if test "x$enable_egl" = xyes; then
1403 SRC_DIRS="$SRC_DIRS egl"
Tapani Pälli2758e652011-05-16 16:56:43 +03001404 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001405 EGL_DRIVERS_DIRS=""
Marek Olšákad50abba2011-06-14 05:14:27 +02001406
Benjamin Franzke85fe9482011-08-09 14:23:18 +02001407 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1408
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001409 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001410 # build egl_glx when libGL is built
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001411 if test "x$enable_glx" = xyes; then
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001412 EGL_DRIVERS_DIRS="glx"
1413 fi
1414
Benjamin Franzke184bb092011-04-30 11:18:23 +02001415 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1416 [have_libudev=yes],[have_libudev=no])
Benjamin Franzkea7cd65f2011-05-31 11:14:46 +02001417 if test "$have_libudev" = yes; then
1418 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1419 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001420 if test "x$enable_dri" = xyes; then
Chia-I Wu39ae9652010-07-16 19:48:52 +08001421 # build egl_dri2 when xcb-dri2 is available
1422 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1423 [have_xcb_dri2=yes],[have_xcb_dri2=no])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001424
1425 if test "$have_xcb_dri2" = yes; then
1426 EGL_DRIVER_DRI2=dri2
1427 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
Benjamin Franzke4ca075a2011-03-02 21:23:04 +01001428 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1429 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1430 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001431 fi
1432 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001433
1434 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001435 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001436fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001437AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001438AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001439
1440dnl
Marek Olšák1251e1d2011-06-18 20:33:55 +02001441dnl EGL Gallium configuration
1442dnl
1443if test "x$enable_gallium_egl" = xyes; then
1444 if test "x$with_gallium_drivers" = x; then
1445 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1446 fi
1447 if test "x$enable_egl" = xno; then
1448 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1449 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +09001450 if test "x$have_libdrm" != xyes; then
1451 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1452 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001453
1454 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wub8f097f2011-06-20 12:01:39 +09001455 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
Marek Olšák1251e1d2011-06-18 20:33:55 +02001456 HAVE_ST_EGL="yes"
1457fi
1458
1459dnl
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001460dnl gbm Gallium configuration
1461dnl
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001462if test "x$enable_gallium_gbm" = xauto; then
Chia-I Wu95ef0692011-11-05 15:09:36 +08001463 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1464 yesyesyes*drm*)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001465 enable_gallium_gbm=yes ;;
1466 *)
1467 enable_gallium_gbm=no ;;
1468 esac
1469fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001470if test "x$enable_gallium_gbm" = xyes; then
1471 if test "x$with_gallium_drivers" = x; then
1472 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1473 fi
1474 if test "x$enable_gbm" = xno; then
1475 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1476 fi
Chia-I Wu95ef0692011-11-05 15:09:36 +08001477 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1478 if test "x$enable_dri" = xno; then
1479 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1480 fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001481
1482 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1483 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1484 HAVE_ST_GBM="yes"
1485fi
1486
1487dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001488dnl X.Org DDX configuration
1489dnl
1490if test "x$enable_xorg" = xyes; then
1491 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1492 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1493 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1494 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1495 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1496 HAVE_XEXTPROTO_71="no")
1497 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1498 HAVE_ST_XORG=yes
1499fi
1500
1501dnl
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001502dnl XA configuration
1503dnl
1504if test "x$enable_xa" = xyes; then
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001505AC_PROG_AWK
1506AC_PROG_GREP
1507AC_CHECK_PROG(NM, nm, "nm")
1508if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1509AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1510enable_xa=no
1511fi
1512fi
1513if test "x$enable_xa" = xyes; then
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001514 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1515 HAVE_ST_XA=yes
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001516 AC_SUBST(AWK)
1517 AC_SUBST(GREP)
1518 AC_SUBST(NM)
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001519fi
1520
1521dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001522dnl OpenVG configuration
1523dnl
1524VG_LIB_DEPS=""
1525
1526if test "x$enable_openvg" = xyes; then
1527 if test "x$enable_egl" = xno; then
1528 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1529 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001530 if test "x$with_gallium_drivers" = x; then
Marek Olšák440d71d2011-06-14 05:38:58 +02001531 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1532 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001533 if test "x$enable_gallium_egl" = xno; then
1534 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1535 fi
Marek Olšák440d71d2011-06-14 05:38:58 +02001536
1537 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1538 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1539 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1540 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1541 HAVE_ST_VEGA=yes
1542fi
1543
1544dnl
1545dnl D3D1X configuration
1546dnl
1547
1548if test "x$enable_d3d1x" = xyes; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001549 if test "x$with_gallium_drivers" = x; then
1550 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1551 fi
1552
Marek Olšák440d71d2011-06-14 05:38:58 +02001553 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1554 HAVE_ST_D3D1X=yes
1555fi
1556
1557dnl
Christian Königc3b22302011-07-04 15:04:41 +02001558dnl Gallium G3DVL configuration
1559dnl
1560AC_ARG_ENABLE([gallium-g3dvl],
1561 [AS_HELP_STRING([--enable-gallium-g3dvl],
1562 [build gallium g3dvl @<:@default=disabled@:>@])],
1563 [enable_gallium_g3dvl="$enableval"],
1564 [enable_gallium_g3dvl=no])
1565if test "x$enable_gallium_g3dvl" = xyes; then
1566 if test "x$with_gallium_drivers" = x; then
1567 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1568 fi
1569
1570 if test "x$enable_xvmc" = xauto; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001571 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
Christian Königc3b22302011-07-04 15:04:41 +02001572 fi
1573
1574 if test "x$enable_vdpau" = xauto; then
Christian König33bf4102011-07-14 13:57:23 +02001575 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001576 fi
1577
1578 if test "x$enable_va" = xauto; then
Christian König8619aa52011-07-14 14:09:25 +02001579 #don't enable vaapi state tracker even if package exists
1580 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001581 enable_va=no
1582 fi
1583fi
1584
Christian Königc3b22302011-07-04 15:04:41 +02001585if test "x$enable_xvmc" = xyes; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001586 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
Christian Königc3b22302011-07-04 15:04:41 +02001587 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1588 HAVE_ST_XVMC="yes"
1589fi
1590
Christian Königc3b22302011-07-04 15:04:41 +02001591if test "x$enable_vdpau" = xyes; then
Christian König33bf4102011-07-14 13:57:23 +02001592 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
Christian Königc3b22302011-07-04 15:04:41 +02001593 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1594 HAVE_ST_VDPAU="yes"
1595fi
1596
Christian Königc3b22302011-07-04 15:04:41 +02001597if test "x$enable_va" = xyes; then
Christian König8619aa52011-07-14 14:09:25 +02001598 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1599 AC_MSG_WARN([vaapi state tracker currently unmaintained])
Christian Königc3b22302011-07-04 15:04:41 +02001600 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1601 HAVE_ST_VA="yes"
1602fi
1603
Christian Königc3b22302011-07-04 15:04:41 +02001604dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001605dnl GLU configuration
1606dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001607AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001608 [AS_HELP_STRING([--disable-glu],
1609 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001610 [enable_glu="$enableval"],
1611 [enable_glu=yes])
Chia-I Wube5f34a2010-10-27 16:14:27 +08001612
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001613if test "x$enable_glu" = xyes; then
1614 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1615 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1616 enable_glu=no
1617 fi
Chia-I Wube5f34a2010-10-27 16:14:27 +08001618fi
1619
Dan Nicholsondca1b792007-10-23 09:25:58 -07001620if test "x$enable_glu" = xyes; then
1621 SRC_DIRS="$SRC_DIRS glu"
1622
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001623 if test "x$enable_glx" = xno; then
Dan Nicholson979ff512007-12-05 18:47:01 -08001624 # Link libGLU to libOSMesa instead of libGL
1625 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001626 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001627 if test "$enable_static" = no; then
1628 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1629 else
1630 GLU_MESA_DEPS=""
1631 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001632 else
Dan Nicholson88586332007-11-15 08:59:57 -08001633 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001634 GLU_PC_REQ="gl"
1635 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001636 if test "$enable_static" = no; then
1637 GLU_LIB_DEPS="-lm"
1638 GLU_MESA_DEPS='-l$(GL_LIB)'
1639 else
1640 GLU_LIB_DEPS=""
1641 GLU_MESA_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -08001642 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001643 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001644fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001645if test "$enable_static" = no; then
1646 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1647fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001648GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001649AC_SUBST([GLU_LIB_DEPS])
1650AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001651AC_SUBST([GLU_PC_REQ])
1652AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001653AC_SUBST([GLU_PC_LIB_PRIV])
1654AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001655
Dan Nicholson297e16c2008-05-05 15:42:53 -07001656AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001657
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001658dnl
1659dnl Gallium configuration
1660dnl
Marek Olšák58b6a192011-06-14 07:46:59 +02001661if test "x$with_gallium_drivers" != x; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001662 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001663fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001664
Dave Airlie81fe1982010-04-22 14:59:29 +10001665AC_SUBST([LLVM_CFLAGS])
1666AC_SUBST([LLVM_LIBS])
1667AC_SUBST([LLVM_LDFLAGS])
1668AC_SUBST([LLVM_VERSION])
1669
Chia-I Wube5f34a2010-10-27 16:14:27 +08001670case "x$enable_opengl$enable_gles1$enable_gles2" in
1671x*yes*)
1672 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1673 ;;
1674esac
Chia-I Wube5f34a2010-10-27 16:14:27 +08001675
Chia-I Wu874ccd52010-05-04 22:43:05 +08001676AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001677AC_SUBST([EGL_CLIENT_APIS])
1678
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001679AC_ARG_WITH([egl-platforms],
1680 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1681 [comma delimited native platforms libEGL supports, e.g.
Chia-I Wue7424d72010-09-19 16:54:39 +08001682 "x11,drm" @<:@default=auto@:>@])],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001683 [with_egl_platforms="$withval"],
1684 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001685
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001686EGL_PLATFORMS=""
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001687WAYLAND_EGL_LIB_DEPS=""
1688
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001689case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001690yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001691 if test "x$enable_egl" = xyes; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001692 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001693 fi
1694 ;;
1695*)
1696 if test "x$enable_egl" != xyes; then
1697 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1698 fi
1699 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001700 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1701 for plat in $egl_platforms; do
1702 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
Kristian Høgsberg1a8899d2011-02-10 10:45:06 -05001703 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001704 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001705 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1706 fi
Chia-I Wua5f8d372011-09-20 14:01:45 +08001707 if test "$plat" = "null"; then
1708 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1709 fi
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001710 if test "$plat" = "wayland"; then
Benjamin Franzke6b369c42011-02-21 16:22:34 +01001711 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001712 [AC_MSG_ERROR([cannot find libwayland-client])])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001713 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
Benjamin Franzkeaaa3c0d2011-04-23 14:14:29 +02001714 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001715 fi
Benjamin Franzke9b8cd492011-07-02 13:46:09 +02001716 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
Benjamin Franzkee5fc4c82011-05-30 10:50:52 +02001717 AC_MSG_ERROR([EGL platform drm needs gbm])
1718 fi
Benjamin Franzke7ed18262011-07-02 13:46:42 +02001719 case "$plat$have_libudev" in
1720 waylandno|drmno)
1721 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1722 esac
Chia-I Wu49381d62010-01-11 01:23:01 +08001723 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001724 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001725 ;;
1726esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001727AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001728
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001729AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1730WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1731WAYLAND_EGL_PC_LIB_PRIV=
1732WAYLAND_EGL_PC_CFLAGS=
1733
1734AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1735AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1736AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1737
1738
Chia-I Wu28c3e572010-01-23 20:18:43 +08001739AC_ARG_WITH([egl-driver-dir],
1740 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1741 [directory for EGL drivers [[default=${libdir}/egl]]])],
1742 [EGL_DRIVER_INSTALL_DIR="$withval"],
1743 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1744AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1745
Joel Bosveld8acca482009-03-06 08:46:08 +09001746AC_ARG_WITH([xorg-driver-dir],
1747 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1748 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1749 [XORG_DRIVER_INSTALL_DIR="$withval"],
1750 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1751AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1752
Tom Fogal7085dce2009-08-13 19:40:30 -06001753AC_ARG_WITH([max-width],
1754 [AS_HELP_STRING([--with-max-width=N],
1755 [Maximum framebuffer width (4096)])],
1756 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1757 AS_IF([test "${withval}" -gt "4096"],
1758 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1759)
1760AC_ARG_WITH([max-height],
1761 [AS_HELP_STRING([--with-max-height=N],
1762 [Maximum framebuffer height (4096)])],
1763 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1764 AS_IF([test "${withval}" -gt "4096"],
1765 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1766)
1767
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001768dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001769dnl Gallium LLVM
1770dnl
1771AC_ARG_ENABLE([gallium-llvm],
1772 [AS_HELP_STRING([--enable-gallium-llvm],
Marek Olšáka86fc712011-04-21 13:27:55 +02001773 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
Dave Airlie81fe1982010-04-22 14:59:29 +10001774 [enable_gallium_llvm="$enableval"],
1775 [enable_gallium_llvm=auto])
Marek Olšák58b6a192011-06-14 07:46:59 +02001776if test "x$with_gallium_drivers" = x; then
1777 enable_gallium_llvm=no
1778fi
Marek Olšáka86fc712011-04-21 13:27:55 +02001779if test "x$enable_gallium_llvm" = xauto; then
1780 case "$host_cpu" in
1781 i*86|x86_64) enable_gallium_llvm=yes;;
1782 esac
1783fi
Dave Airlie81fe1982010-04-22 14:59:29 +10001784if test "x$enable_gallium_llvm" = xyes; then
Marek Olšák99fba502011-07-23 15:57:51 +02001785 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1786
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001787 if test "x$LLVM_CONFIG" != xno; then
ojab2fe6c252012-01-05 14:18:34 +04001788 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
Johannes Obermayraa284042011-12-19 23:11:46 +01001789 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
Marcin Slusarz75739042011-10-13 21:45:45 +02001790 LLVM_LIBS="`$LLVM_CONFIG --libs`"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001791
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001792 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
Marek Olšák67aba792011-06-27 08:25:09 +02001793 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001794 MESA_LLVM=1
1795 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001796 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001797 fi
1798else
1799 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001800fi
1801
Thomas Balling Sørensen32999972010-07-14 00:34:56 +02001802dnl Directory for VDPAU libs
1803AC_ARG_WITH([vdpau-libdir],
1804 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1805 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1806 [VDPAU_LIB_INSTALL_DIR="$withval"],
1807 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1808AC_SUBST([VDPAU_LIB_INSTALL_DIR])
Younes Manton40cd0822010-03-05 23:11:05 -05001809
Thomas Balling Sørensen501ac572010-10-24 19:27:29 +02001810dnl Directory for VA libs
1811AC_ARG_WITH([va-libdir],
1812 [AS_HELP_STRING([--with-va-libdir=DIR],
1813 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1814 [VA_LIB_INSTALL_DIR="$withval"],
1815 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1816AC_SUBST([VA_LIB_INSTALL_DIR])
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001817
Dave Airlie81fe1982010-04-22 14:59:29 +10001818dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001819dnl Gallium helper functions
1820dnl
1821gallium_check_st() {
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001822 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
Christian Königc3b22302011-07-04 15:04:41 +02001823 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1824 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
Chia-I Wu81239342011-07-02 09:49:17 +09001825 if test "x$have_libdrm" != xyes; then
1826 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1827 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001828 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1829 fi
1830 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1831 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1832 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001833 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001834 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1835 fi
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001836 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1837 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1838 fi
Christian Königc3b22302011-07-04 15:04:41 +02001839 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1840 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
Younes Mantonb97816d2011-07-14 12:22:20 -04001841 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001842 fi
1843 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1844 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
Younes Mantonb97816d2011-07-14 12:22:20 -04001845 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001846 fi
1847 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1848 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
Younes Mantonb97816d2011-07-14 12:22:20 -04001849 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001850 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001851}
1852
Marek Olšákc17fb852011-06-14 04:03:17 +02001853gallium_require_llvm() {
1854 if test "x$MESA_LLVM" = x0; then
1855 case "$host_cpu" in
1856 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1857 esac
1858 fi
1859}
1860
Marek Olšák58b6a192011-06-14 07:46:59 +02001861dnl Gallium drivers
Marek Olšák02c8ee22011-06-27 08:02:31 +02001862dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
Marek Olšák58b6a192011-06-14 07:46:59 +02001863if test "x$with_gallium_drivers" != x; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001864 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1865 for driver in $gallium_drivers; do
1866 case "x$driver" in
1867 xsvga)
Marek Olšák02c8ee22011-06-27 08:02:31 +02001868 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
Thomas Hellstromd742a642011-09-29 21:41:21 +02001869 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
Marek Olšák58b6a192011-06-14 07:46:59 +02001870 ;;
1871 xi915)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001872 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Marek Olšák02c8ee22011-06-27 08:02:31 +02001873 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1874 if test "x$MESA_LLVM" = x1; then
1875 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1876 fi
1877 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Marek Olšák58b6a192011-06-14 07:46:59 +02001878 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1879 ;;
Marek Olšák58b6a192011-06-14 07:46:59 +02001880 xr300)
1881 gallium_require_llvm "Gallium R300"
Marek Olšák02c8ee22011-06-27 08:02:31 +02001882 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1883 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
Marek Olšák58b6a192011-06-14 07:46:59 +02001884 ;;
1885 xr600)
1886 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
Marek Olšákbf0baa72011-09-27 16:42:01 +02001887 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
Marek Olšák58b6a192011-06-14 07:46:59 +02001888 ;;
1889 xnouveau)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001890 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
Marek Olšák58b6a192011-06-14 07:46:59 +02001891 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
Maarten Lankhorstdf8f8642011-10-18 14:24:30 +02001892 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
Marek Olšák58b6a192011-06-14 07:46:59 +02001893 ;;
1894 xswrast)
Marek Olšákc6f59fc2011-07-26 01:05:13 +02001895 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1896 if test "x$MESA_LLVM" = x1; then
1897 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1898 fi
1899
Marek Olšák58b6a192011-06-14 07:46:59 +02001900 if test "x$HAVE_ST_DRI" = xyes; then
1901 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1902 fi
Christian Königc3b22302011-07-04 15:04:41 +02001903 if test "x$HAVE_ST_VDPAU" = xyes; then
1904 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1905 fi
1906 if test "x$HAVE_ST_XVMC" = xyes; then
1907 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1908 fi
1909 if test "x$HAVE_ST_VA" = xyes; then
1910 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1911 fi
Eric Anholt48c99252011-10-14 14:33:00 -07001912 if test "x$HAVE_ST_VDPAU" = xyes ||
1913 test "x$HAVE_ST_XVMC" = xyes ||
1914 test "x$HAVE_ST_VA" = xyes; then
Younes Mantonb97816d2011-07-14 12:22:20 -04001915 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1916 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1917 fi
1918 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001919 ;;
1920 *)
1921 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1922 ;;
1923 esac
1924 done
Chia-I Wua1306f42010-01-22 15:51:51 +08001925fi
1926
Younes Mantonb97816d2011-07-14 12:22:20 -04001927if test "x$NEED_G3DVL_DRI" = xyes; then
1928 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1929fi
1930
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001931dnl prepend CORE_DIRS to SRC_DIRS
1932SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001933
1934dnl Restore LDFLAGS and CPPFLAGS
1935LDFLAGS="$_SAVE_LDFLAGS"
1936CPPFLAGS="$_SAVE_CPPFLAGS"
1937
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +02001938dnl Add user CFLAGS and CXXFLAGS
1939CFLAGS="$CFLAGS $USER_CFLAGS"
1940CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1941
Dan Nicholsondca1b792007-10-23 09:25:58 -07001942dnl Substitute the config
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001943AC_CONFIG_FILES([configs/autoconf
Eric Anholte3264802012-01-12 14:28:37 -08001944 src/mesa/drivers/dri/i965/Makefile
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001945 tests/Makefile
1946 tests/glx/Makefile])
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001947
Dan Nicholsondca1b792007-10-23 09:25:58 -07001948dnl Replace the configs/current symlink
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001949AC_CONFIG_COMMANDS([configs],[
1950if test -f configs/current || test -L configs/current; then
1951 rm -f configs/current
1952fi
1953ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001954])
1955
Marek Olšák618dbc82011-06-27 03:12:57 +02001956dnl Sort the dirs alphabetically
Marek Olšák3c799622011-09-27 16:51:05 +02001957GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1958GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1959GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1960GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
Marek Olšák618dbc82011-06-27 03:12:57 +02001961
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001962AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001963
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001964dnl
1965dnl Output some configuration info for the user
1966dnl
1967echo ""
1968echo " prefix: $prefix"
1969echo " exec_prefix: $exec_prefix"
1970echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001971echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001972
Chia-I Wu815faa42010-10-29 12:34:44 +08001973dnl API info
1974echo ""
1975echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
Chia-I Wu815faa42010-10-29 12:34:44 +08001976echo " OpenVG: $enable_openvg"
1977
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001978dnl Driver info
1979echo ""
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001980if test "x$enable_osmesa" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001981 echo " OSMesa: lib$OSMESA_LIB"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001982else
Chia-I Wu815faa42010-10-29 12:34:44 +08001983 echo " OSMesa: no"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001984fi
1985
1986if test "x$enable_dri" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001987 # cleanup the drivers var
1988 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1989 if test "x$DRI_DIRS" = x; then
1990 echo " DRI drivers: no"
1991 else
1992 echo " DRI drivers: $dri_dirs"
1993 fi
1994 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001995 echo " Shared dricore: $enable_dricore"
Dan Nicholson544ab202007-12-30 08:41:53 -08001996fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001997
1998case "x$enable_glx$enable_xlib_glx" in
1999xyesyes)
2000 echo " GLX: Xlib-based"
2001 ;;
2002xyesno)
2003 echo " GLX: DRI-based"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09002004 ;;
2005*)
2006 echo " GLX: $enable_glx"
2007 ;;
2008esac
2009
Chia-I Wu815faa42010-10-29 12:34:44 +08002010echo ""
2011echo " GLU: $enable_glu"
Chia-I Wu815faa42010-10-29 12:34:44 +08002012
2013dnl EGL
2014echo ""
2015echo " EGL: $enable_egl"
2016if test "$enable_egl" = yes; then
2017 echo " EGL platforms: $EGL_PLATFORMS"
Chia-I Wu12300502010-10-31 21:01:54 +08002018
2019 egl_drivers=""
2020 for d in $EGL_DRIVERS_DIRS; do
Chia-I Wuc98ea262011-01-07 16:30:08 +08002021 egl_drivers="$egl_drivers builtin:egl_$d"
Chia-I Wu12300502010-10-31 21:01:54 +08002022 done
2023
Marek Olšák1251e1d2011-06-18 20:33:55 +02002024 if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wu12300502010-10-31 21:01:54 +08002025 echo " EGL drivers: ${egl_drivers} egl_gallium"
2026 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
Chia-I Wu815faa42010-10-29 12:34:44 +08002027 else
Chia-I Wu12300502010-10-31 21:01:54 +08002028 echo " EGL drivers: $egl_drivers"
Chia-I Wu815faa42010-10-29 12:34:44 +08002029 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01002030fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002031
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002032echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07002033if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01002034 echo " llvm: yes"
2035 echo " llvm-config: $LLVM_CONFIG"
2036 echo " llvm-version: $LLVM_VERSION"
2037else
2038 echo " llvm: no"
2039fi
2040
2041echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002042if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2043 echo " Gallium: yes"
2044 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00002045 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002046 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00002047 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002048 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2049else
2050 echo " Gallium: no"
2051fi
2052
Daniel Vetter8f15c312011-11-28 22:24:26 +01002053
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002054dnl Libraries
2055echo ""
2056echo " Shared libs: $enable_shared"
2057echo " Static libs: $enable_static"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002058
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002059dnl Compiler options
2060# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2061cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2062 $SED 's/^ *//;s/ */ /;s/ *$//'`
2063cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2064 $SED 's/^ *//;s/ */ /;s/ *$//'`
2065defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2066echo ""
2067echo " CFLAGS: $cflags"
2068echo " CXXFLAGS: $cxxflags"
2069echo " Macros: $defines"
Kenneth Graunke3acc8262010-10-25 13:52:58 -07002070echo ""
2071echo " PYTHON2: $PYTHON2"
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002072
Dan Nicholsondca1b792007-10-23 09:25:58 -07002073echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07002074echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07002075echo ""