blob: 8f481a0a077e3a6eff0b9e916cb78d18ececb8aa [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
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +020021dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
22USER_CFLAGS="$CFLAGS"
23USER_CXXFLAGS="$CXXFLAGS"
24
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070025dnl Versions for external dependencies
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000026LIBDRM_REQUIRED=2.4.24
27LIBDRM_RADEON_REQUIRED=2.4.24
Eric Anholt3faf56f2011-10-21 19:01:17 -070028LIBDRM_INTEL_REQUIRED=2.4.27
Johannes Obermayr873379a2011-06-02 17:15:44 -060029LIBDRM_NOUVEAU_REQUIRED=0.6
Jesse Barnes1e39fc72011-05-05 13:09:16 -070030DRI2PROTO_REQUIRED=2.6
31GLPROTO_REQUIRED=1.4.14
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000032LIBDRM_XORG_REQUIRED=2.4.24
Jakob Bornecrantz683a0992010-03-11 19:23:15 +000033LIBKMS_XORG_REQUIRED=1.0.0
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070034
Dan Nicholsondca1b792007-10-23 09:25:58 -070035dnl Check for progs
36AC_PROG_CPP
37AC_PROG_CC
38AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070039AC_CHECK_PROGS([MAKE], [gmake make])
Kenneth Graunke3acc8262010-10-25 13:52:58 -070040AC_CHECK_PROGS([PYTHON2], [python2 python])
Dan Nicholson297e16c2008-05-05 15:42:53 -070041AC_PATH_PROG([MKDEP], [makedepend])
42AC_PATH_PROG([SED], [sed])
Dan Nicholson41b00702007-12-12 08:48:30 -080043
Luca Barbierif762f7b2010-09-24 10:10:09 +020044if test "x$MKDEP" = "x"; then
45 AC_MSG_ERROR([makedepend is required to build Mesa])
46fi
47
Brian Paulde1df262011-05-18 07:50:21 -060048AC_PATH_PROG([FLEX], [flex])
49test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
50
51AC_PATH_PROG([BISON], [bison])
52test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
53
Dan Nicholsonbc302b22009-05-22 09:39:02 -070054dnl Our fallback install-sh is a symlink to minstall. Use the existing
55dnl configuration in that case.
56AC_PROG_INSTALL
57test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
58
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070059dnl We need a POSIX shell for parts of the build. Assume we have one
60dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070061case "$host_os" in
62solaris*)
63 # Solaris /bin/sh is too old/non-POSIX compliant
64 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070065 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070066 ;;
67esac
68
Ian Romanick3ef3ba42011-12-15 18:45:27 -080069AC_PATH_PROG([GTESTCONFIG], [gtest-config])
70if test "x$GTESTCONFIG" != "x"; then
71 GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
72 GTEST_LIBS=`gtest-config --ldflags --libs`
73 HAVE_GTEST=1
74 AC_SUBST([GTEST_CFLAGS])
75 AC_SUBST([GTEST_LIBS])
76 HAVE_GTEST=yes
77else
78 HAVE_GTEST=no
79fi
80AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
81
nobled2a501872010-08-29 20:03:37 -040082dnl clang is mostly GCC-compatible, but its version is much lower,
83dnl so we have to check for it.
84AC_MSG_CHECKING([if compiling with clang])
85
86AC_COMPILE_IFELSE(
87[AC_LANG_PROGRAM([], [[
88#ifndef __clang__
89 not clang
90#endif
91]])],
92[CLANG=yes], [CLANG=no])
93
94AC_MSG_RESULT([$CLANG])
95
Ian Romanick9aa3aa72010-03-03 15:59:37 -080096dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
97dnl versions are explictly not supported.
nobled2a501872010-08-29 20:03:37 -040098if test "x$GCC" = xyes -a "x$CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -080099 AC_MSG_CHECKING([whether gcc version is sufficient])
100 major=0
101 minor=0
102
103 GCC_VERSION=`$CC -dumpversion`
104 if test $? -eq 0; then
105 major=`echo $GCC_VERSION | cut -d. -f1`
Marcin Baczyńskifa013412011-07-13 21:26:50 +0200106 minor=`echo $GCC_VERSION | cut -d. -f2`
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800107 fi
108
109 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
110 AC_MSG_RESULT([no])
111 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
112 else
113 AC_MSG_RESULT([yes])
114 fi
115fi
116
117
Dan Nicholsondb7fc632008-03-07 11:48:09 -0800118MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500119dnl Ask gcc where it's keeping its secret headers
120if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -0800121 for dir in include include-fixed; do
122 GCC_INCLUDES=`$CC -print-file-name=$dir`
123 if test "x$GCC_INCLUDES" != x && \
124 test "$GCC_INCLUDES" != "$dir" && \
125 test -d "$GCC_INCLUDES"; then
126 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
127 fi
128 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500129fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700130AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500131
Dan Nicholson41b00702007-12-12 08:48:30 -0800132dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700133m4_ifndef([PKG_PROG_PKG_CONFIG],
134 [m4_fatal([Could not locate the pkg-config autoconf macros.
135 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
136 are in a different location, try setting the environment variable
137 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700138PKG_PROG_PKG_CONFIG()
139
140dnl LIB_DIR - library basename
141LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700142AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700143
144dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
145_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700146AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
147AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700148
149dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
150_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700151AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
152AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700153
154dnl Compiler macros
155DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700156AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700157case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700158linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800159 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700160 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700161solaris*)
162 DEFINES="$DEFINES -DPTHREADS -DSVR4"
163 ;;
Brian Paul97988902010-02-18 12:46:12 -0700164cygwin*)
165 DEFINES="$DEFINES -DPTHREADS"
166 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700167esac
168
169dnl Add flags for gcc and g++
170if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700171 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
172 if test "x$CLANG" = "xno"; then
173 CFLAGS="$CFLAGS -ffast-math"
174 fi
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800175
176 # Enable -fvisibility=hidden if using a gcc that supports it
177 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800178 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100179 VISIBILITY_CFLAGS="-fvisibility=hidden"
180 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800181 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100182 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
183
184 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
185 CFLAGS=$save_CFLAGS
Dan Nicholson0c275b62008-01-15 22:52:25 -0800186
187 # Work around aliasing bugs - developers should comment this out
188 CFLAGS="$CFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100189
190 # gcc's builtin memcmp is slower than glibc's
191 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
192 CFLAGS="$CFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700193fi
194if test "x$GXX" = xyes; then
195 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800196
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400197 # Enable -fvisibility=hidden if using a gcc that supports it
198 save_CXXFLAGS="$CXXFLAGS"
199 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100200 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
201 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
Jon TURNEY560f7622011-04-26 11:49:01 +0100202 AC_LANG_PUSH([C++])
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400203 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100204 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
Jon TURNEY560f7622011-04-26 11:49:01 +0100205 AC_LANG_POP([C++])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100206
207 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
208 CXXFLAGS=$save_CXXFLAGS
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400209
Dan Nicholson0c275b62008-01-15 22:52:25 -0800210 # Work around aliasing bugs - developers should comment this out
211 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100212
213 # gcc's builtin memcmp is slower than glibc's
214 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
215 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700216fi
217
Jon TURNEYdb786432011-04-26 11:56:02 +0100218dnl even if the compiler appears to support it, using visibility attributes isn't
219dnl going to do anything useful currently on cygwin apart from emit lots of warnings
220case "$host_os" in
221cygwin*)
222 VISIBILITY_CFLAGS=""
223 VISIBILITY_CXXFLAGS=""
224 ;;
225esac
226
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100227AC_SUBST([VISIBILITY_CFLAGS])
228AC_SUBST([VISIBILITY_CXXFLAGS])
229
Dan Nicholsondca1b792007-10-23 09:25:58 -0700230dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700231AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700232 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700233AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700234 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700235AC_SUBST([OPT_FLAGS])
236AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700237
238dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600239dnl Hacks to enable 32 or 64 bit build
240dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700241AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600242 [AS_HELP_STRING([--enable-32-bit],
243 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700244 [enable_32bit="$enableval"],
245 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600246)
247if test "x$enable_32bit" = xyes; then
248 if test "x$GCC" = xyes; then
249 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700250 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600251 fi
252 if test "x$GXX" = xyes; then
253 CXXFLAGS="$CXXFLAGS -m32"
254 fi
255fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700256AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600257 [AS_HELP_STRING([--enable-64-bit],
258 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700259 [enable_64bit="$enableval"],
260 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600261)
262if test "x$enable_64bit" = xyes; then
263 if test "x$GCC" = xyes; then
264 CFLAGS="$CFLAGS -m64"
265 fi
266 if test "x$GXX" = xyes; then
267 CXXFLAGS="$CXXFLAGS -m64"
268 fi
269fi
270
271dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800272dnl shared/static libraries, mimic libtool options
273dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700274AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800275 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800276 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700277 [enable_static="$enableval"],
278 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800279)
280case "x$enable_static" in
281xyes|xno ) ;;
282x ) enable_static=no ;;
283* )
284 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
285 ;;
286esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700287AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800288 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800289 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700290 [enable_shared="$enableval"],
291 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800292)
293case "x$enable_shared" in
294xyes|xno ) ;;
295x ) enable_shared=yes ;;
296* )
297 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
298 ;;
299esac
300
301dnl Can't have static and shared libraries, default to static if user
302dnl explicitly requested. If both disabled, set to static since shared
303dnl was explicitly requirested.
304case "x$enable_static$enable_shared" in
305xyesyes )
306 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
307 enable_shared=no
308 ;;
309xnono )
310 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
311 enable_static=yes
312 ;;
313esac
314
315dnl
316dnl mklib options
317dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700318AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800319if test "$enable_static" = yes; then
320 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
321fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700322AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800323
Dan Nicholson23656c42007-12-12 09:02:31 -0800324dnl
325dnl other compiler options
326dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700327AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800328 [AS_HELP_STRING([--enable-debug],
329 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700330 [enable_debug="$enableval"],
331 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800332)
333if test "x$enable_debug" = xyes; then
334 DEFINES="$DEFINES -DDEBUG"
335 if test "x$GCC" = xyes; then
336 CFLAGS="$CFLAGS -g"
337 fi
338 if test "x$GXX" = xyes; then
339 CXXFLAGS="$CXXFLAGS -g"
340 fi
341fi
Dan Nicholson88586332007-11-15 08:59:57 -0800342
343dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700344dnl library names
345dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100346LIB_PREFIX_GLOB='lib'
347LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800348if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800349 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800350else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700351 case "$host_os" in
352 darwin* )
353 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100354 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100355 dnl prefix can be 'cyg' or 'lib'
356 LIB_PREFIX_GLOB='???'
357 LIB_VERSION_SEPARATOR='-'
358 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700359 aix* )
360 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700361 * )
362 LIB_EXTENSION='so' ;;
363 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800364fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800365
Marek Olšák848f7d32011-04-01 01:12:41 +0200366dnl
Tom Fogalc0573fb2011-10-10 10:33:18 -0600367dnl Mangled Mesa support
368dnl
369AC_ARG_ENABLE([mangling],
370 [AS_HELP_STRING([--enable-mangling],
371 [enable mangled symbols and library name @<:@default=disabled@:>@])],
372 [enable_mangling="${enableval}"],
373 [enable_mangling=no]
374)
375GL_LIB="GL"
376GLU_LIB="GLU"
377OSMESA_LIB="OSMesa"
378if test "x${enable_mangling}" = "xyes" ; then
379 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
380 GL_LIB="MangledGL"
381 GLU_LIB="MangledGLU"
382 OSMESA_LIB="MangledOSMesa"
383fi
384AC_SUBST([GL_LIB])
385AC_SUBST([GLU_LIB])
386AC_SUBST([OSMESA_LIB])
387
388dnl
Marek Olšák848f7d32011-04-01 01:12:41 +0200389dnl potentially-infringing-but-nobody-knows-for-sure stuff
390dnl
391AC_ARG_ENABLE([texture-float],
392 [AS_HELP_STRING([--enable-texture-float],
393 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
394 [enable_texture_float="$enableval"],
395 [enable_texture_float=no]
396)
397if test "x$enable_texture_float" = xyes; then
398 AC_MSG_WARN([Floating-point textures enabled.])
399 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
400 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
401fi
402
Dan Nicholson8217f242009-02-11 15:16:00 -0800403GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
404GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
405GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800406OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800407EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500408GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
409GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800410VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800411GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100412WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200413GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800414
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100415GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
416GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
417GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100418OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
420EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
421GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
422GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
423VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800424GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100425WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200426GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800427
Dan Nicholson297e16c2008-05-05 15:42:53 -0700428AC_SUBST([GL_LIB_NAME])
429AC_SUBST([GLU_LIB_NAME])
430AC_SUBST([GLUT_LIB_NAME])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700431AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800432AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500433AC_SUBST([GLESv1_CM_LIB_NAME])
434AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800435AC_SUBST([VG_LIB_NAME])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800436AC_SUBST([GLAPI_LIB_NAME])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100437AC_SUBST([WAYLAND_EGL_LIB_NAME])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200438AC_SUBST([GBM_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700439
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700440AC_SUBST([GL_LIB_GLOB])
441AC_SUBST([GLU_LIB_GLOB])
442AC_SUBST([GLUT_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700443AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800444AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500445AC_SUBST([GLESv1_CM_LIB_GLOB])
446AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800447AC_SUBST([VG_LIB_GLOB])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800448AC_SUBST([GLAPI_LIB_GLOB])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100449AC_SUBST([WAYLAND_EGL_LIB_GLOB])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200450AC_SUBST([GBM_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700451
Dan Nicholsondca1b792007-10-23 09:25:58 -0700452dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700453dnl Arch/platform-specific settings
454dnl
455AC_ARG_ENABLE([asm],
456 [AS_HELP_STRING([--disable-asm],
457 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
458 [enable_asm="$enableval"],
459 [enable_asm=yes]
460)
461asm_arch=""
462ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800463MESA_ASM_SOURCES=""
464GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700465AC_MSG_CHECKING([whether to enable assembly])
466test "x$enable_asm" = xno && AC_MSG_RESULT([no])
467# disable if cross compiling on x86/x86_64 since we must run gen_matypes
468if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
469 case "$host_cpu" in
470 i?86 | x86_64)
471 enable_asm=no
472 AC_MSG_RESULT([no, cross compiling])
473 ;;
474 esac
475fi
476# check for supported arches
477if test "x$enable_asm" = xyes; then
478 case "$host_cpu" in
479 i?86)
480 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700481 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700482 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
483 ;;
484 esac
485 ;;
486 x86_64)
487 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700488 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700489 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
490 ;;
491 esac
492 ;;
493 powerpc)
494 case "$host_os" in
495 linux*)
496 asm_arch=ppc
497 ;;
498 esac
499 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800500 sparc*)
501 case "$host_os" in
502 linux*)
503 asm_arch=sparc
504 ;;
505 esac
506 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700507 esac
508
509 case "$asm_arch" in
510 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800511 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800512 MESA_ASM_SOURCES='$(X86_SOURCES)'
513 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700514 AC_MSG_RESULT([yes, x86])
515 ;;
516 x86_64)
517 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800518 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
519 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700520 AC_MSG_RESULT([yes, x86_64])
521 ;;
522 ppc)
523 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800524 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700525 AC_MSG_RESULT([yes, ppc])
526 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800527 sparc)
528 ASM_FLAGS="-DUSE_SPARC_ASM"
529 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
530 GLAPI_ASM_SOURCES='$(SPARC_API)'
531 AC_MSG_RESULT([yes, sparc])
532 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700533 *)
534 AC_MSG_RESULT([no, platform not supported])
535 ;;
536 esac
537fi
538AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800539AC_SUBST([MESA_ASM_SOURCES])
540AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700541
542dnl PIC code macro
543MESA_PIC_FLAGS
544
545dnl Check to see if dlopen is in default libraries (like Solaris, which
546dnl has it in libc), or if libdl is needed to get it.
547AC_CHECK_FUNC([dlopen], [],
548 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800549AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700550
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700551dnl See if posix_memalign is available
552AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
553
Dan Nicholson871125a2008-06-04 13:00:35 -0700554dnl SELinux awareness.
555AC_ARG_ENABLE([selinux],
556 [AS_HELP_STRING([--enable-selinux],
557 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
558 [MESA_SELINUX="$enableval"],
559 [MESA_SELINUX=no])
560if test "x$enable_selinux" = "xyes"; then
561 AC_CHECK_HEADER([selinux/selinux.h],[],
562 [AC_MSG_ERROR([SELinux headers not found])])
563 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
564 [AC_MSG_ERROR([SELinux library not found])])
565 SELINUX_LIBS="-lselinux"
566 DEFINES="$DEFINES -DMESA_SELINUX"
567fi
568
Marek Olšák440d71d2011-06-14 05:38:58 +0200569dnl Options for APIs
Chia-I Wube5f34a2010-10-27 16:14:27 +0800570AC_ARG_ENABLE([opengl],
571 [AS_HELP_STRING([--disable-opengl],
572 [disable support for standard OpenGL API @<:@default=no@:>@])],
573 [enable_opengl="$enableval"],
574 [enable_opengl=yes])
575AC_ARG_ENABLE([gles1],
576 [AS_HELP_STRING([--enable-gles1],
577 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
578 [enable_gles1="$enableval"],
579 [enable_gles1=no])
580AC_ARG_ENABLE([gles2],
581 [AS_HELP_STRING([--enable-gles2],
582 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
583 [enable_gles2="$enableval"],
584 [enable_gles2=no])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800585AC_ARG_ENABLE([openvg],
586 [AS_HELP_STRING([--enable-openvg],
587 [enable support for OpenVG API @<:@default=no@:>@])],
588 [enable_openvg="$enableval"],
589 [enable_openvg=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900590
591AC_ARG_ENABLE([dri],
592 [AS_HELP_STRING([--enable-dri],
593 [enable DRI modules @<:@default=auto@:>@])],
594 [enable_dri="$enableval"],
595 [enable_dri=auto])
596AC_ARG_ENABLE([glx],
597 [AS_HELP_STRING([--enable-glx],
598 [enable GLX library @<:@default=auto@:>@])],
599 [enable_glx="$enableval"],
600 [enable_glx=auto])
601AC_ARG_ENABLE([osmesa],
602 [AS_HELP_STRING([--enable-osmesa],
603 [enable OSMesa library @<:@default=auto@:>@])],
604 [enable_osmesa="$enableval"],
605 [enable_osmesa=auto])
606AC_ARG_ENABLE([egl],
607 [AS_HELP_STRING([--disable-egl],
608 [disable EGL library @<:@default=enabled@:>@])],
609 [enable_egl="$enableval"],
610 [enable_egl=yes])
611
Marek Olšák440d71d2011-06-14 05:38:58 +0200612AC_ARG_ENABLE([xorg],
613 [AS_HELP_STRING([--enable-xorg],
614 [enable support for X.Org DDX API @<:@default=no@:>@])],
615 [enable_xorg="$enableval"],
616 [enable_xorg=no])
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200617AC_ARG_ENABLE([xa],
618 [AS_HELP_STRING([--enable-xa],
619 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
620 [enable_xa="$enableval"],
621 [enable_xa=no])
Marek Olšák440d71d2011-06-14 05:38:58 +0200622AC_ARG_ENABLE([d3d1x],
623 [AS_HELP_STRING([--enable-d3d1x],
624 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
625 [enable_d3d1x="$enableval"],
626 [enable_d3d1x=no])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200627AC_ARG_ENABLE([gbm],
628 [AS_HELP_STRING([--enable-gbm],
629 [enable gbm library @<:@default=auto@:>@])],
630 [enable_gbm="$enableval"],
631 [enable_gbm=auto])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900632
Christian Königc3b22302011-07-04 15:04:41 +0200633AC_ARG_ENABLE([xvmc],
634 [AS_HELP_STRING([--enable-xvmc],
635 [enable xvmc library @<:@default=auto@:>@])],
636 [enable_xvmc="$enableval"],
637 [enable_xvmc=auto])
638AC_ARG_ENABLE([vdpau],
639 [AS_HELP_STRING([--enable-vdpau],
640 [enable vdpau library @<:@default=auto@:>@])],
641 [enable_vdpau="$enableval"],
642 [enable_vdpau=auto])
643AC_ARG_ENABLE([va],
644 [AS_HELP_STRING([--enable-va],
645 [enable va library @<:@default=auto@:>@])],
646 [enable_va="$enableval"],
647 [enable_va=auto])
648
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900649AC_ARG_ENABLE([xlib_glx],
650 [AS_HELP_STRING([--enable-xlib-glx],
651 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
652 [enable_xlib_glx="$enableval"],
653 [enable_xlib_glx=auto])
Marek Olšák1251e1d2011-06-18 20:33:55 +0200654AC_ARG_ENABLE([gallium_egl],
655 [AS_HELP_STRING([--enable-gallium-egl],
656 [enable optional EGL state tracker (not required
657 for EGL support in Gallium with OpenGL and OpenGL ES)
658 @<:@default=disable@:>@])],
659 [enable_gallium_egl="$enableval"],
660 [enable_gallium_egl=no])
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200661AC_ARG_ENABLE([gallium_gbm],
662 [AS_HELP_STRING([--enable-gallium-gbm],
663 [enable optional gbm state tracker (not required for
664 gbm support in Gallium)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200665 @<:@default=auto@:>@])],
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200666 [enable_gallium_gbm="$enableval"],
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200667 [enable_gallium_gbm=auto])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800668
Marek Olšák58b6a192011-06-14 07:46:59 +0200669# Option for Gallium drivers
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200670GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
Marek Olšák58b6a192011-06-14 07:46:59 +0200671
672AC_ARG_WITH([gallium-drivers],
673 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
674 [comma delimited Gallium drivers list, e.g.
Daniel Vetter8f15c312011-11-28 22:24:26 +0100675 "i915,nouveau,r300,r600,svga,swrast"
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200676 @<:@default=r300,r600,swrast@:>@])],
Marek Olšák58b6a192011-06-14 07:46:59 +0200677 [with_gallium_drivers="$withval"],
678 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
Chia-I Wu156e9552010-10-30 14:26:01 +0800679
Ian Romanickdb311b42011-06-22 11:35:27 -0700680# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
681# here so that the script doesn't choke on an unknown driver name later.
682case "$with_gallium_drivers" in
683 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
684 no) with_gallium_drivers='' ;;
685esac
686
Chia-I Wube5f34a2010-10-27 16:14:27 +0800687if test "x$enable_opengl" = xno -a \
688 "x$enable_gles1" = xno -a \
689 "x$enable_gles2" = xno -a \
Marek Olšák440d71d2011-06-14 05:38:58 +0200690 "x$enable_openvg" = xno -a \
691 "x$enable_xorg" = xno -a \
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200692 "x$enable_xa" = xno -a \
Christian Königc3b22302011-07-04 15:04:41 +0200693 "x$enable_d3d1x" = xno -a \
694 "x$enable_xvmc" = xno -a \
695 "x$enable_vdpau" = xno -a \
696 "x$enable_va" = xno; then
Chia-I Wube5f34a2010-10-27 16:14:27 +0800697 AC_MSG_ERROR([at least one API should be enabled])
698fi
699
700API_DEFINES=""
Chia-I Wube5f34a2010-10-27 16:14:27 +0800701if test "x$enable_opengl" = xno; then
702 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
703else
704 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
705fi
706if test "x$enable_gles1" = xyes; then
707 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
708fi
709if test "x$enable_gles2" = xyes; then
710 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
711fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800712AC_SUBST([API_DEFINES])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800713
Chia-I Wue8c7d752010-12-26 18:24:13 +0800714AC_ARG_ENABLE([shared-glapi],
715 [AS_HELP_STRING([--enable-shared-glapi],
716 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
717 [enable_shared_glapi="$enableval"],
718 [enable_shared_glapi=no])
719
720SHARED_GLAPI="0"
721if test "x$enable_shared_glapi" = xyes; then
722 SHARED_GLAPI="1"
723fi
724AC_SUBST([SHARED_GLAPI])
725
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900726
Dan Nicholson44d99142007-12-05 18:47:01 -0800727dnl
728dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700729dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800730
731dnl this variable will be prepended to SRC_DIRS and is not exported
Chia-I Wube5f34a2010-10-27 16:14:27 +0800732CORE_DIRS=""
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800733
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200734SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700735GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100736GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000737GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000738GALLIUM_WINSYS_DIRS="sw"
Kai Wasserbäch0a22fb62011-11-29 22:36:02 +0100739GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100740GALLIUM_STATE_TRACKERS_DIRS=""
741
Chia-I Wue8c7d752010-12-26 18:24:13 +0800742# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
Jon TURNEYaa6a5cf2011-02-16 13:37:57 +0000743case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800744x*yes*)
745 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
746 ;;
747esac
748
Chia-I Wube5f34a2010-10-27 16:14:27 +0800749# build glapi if OpenGL is enabled
750if test "x$enable_opengl" = xyes; then
751 CORE_DIRS="$CORE_DIRS mapi/glapi"
752fi
753
Chia-I Wu12583172011-01-07 17:24:16 +0800754# build es1api if OpenGL ES 1.x is enabled
755if test "x$enable_gles1" = xyes; then
756 CORE_DIRS="$CORE_DIRS mapi/es1api"
757fi
758
759# build es2api if OpenGL ES 2.x is enabled
760if test "x$enable_gles2" = xyes; then
761 CORE_DIRS="$CORE_DIRS mapi/es2api"
762fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800763
Chia-I Wube5f34a2010-10-27 16:14:27 +0800764# build glsl and mesa if OpenGL or OpenGL ES is enabled
Chia-I Wu12583172011-01-07 17:24:16 +0800765case "x$enable_opengl$enable_gles1$enable_gles2" in
Chia-I Wube5f34a2010-10-27 16:14:27 +0800766x*yes*)
767 CORE_DIRS="$CORE_DIRS glsl mesa"
768 ;;
769esac
770
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900771case "x$enable_glx$enable_xlib_glx" in
772xyesyes)
773 DRIVER_DIRS="$DRIVER_DIRS x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000774 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000775 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Marek Olšák440d71d2011-06-14 05:38:58 +0200776 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
Younes Mantonb97816d2011-07-14 12:22:20 -0400777 HAVE_WINSYS_XLIB="yes"
Dan Nicholson44d99142007-12-05 18:47:01 -0800778 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900779xyesno)
780 # DRI-based GLX
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500781 SRC_DIRS="$SRC_DIRS glx"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900782 ;;
783esac
784
785if test "x$enable_dri" = xyes; then
786 DRIVER_DIRS="$DRIVER_DIRS dri"
787
Emil Velikov4ef9c3d2011-07-11 15:58:29 +0100788 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
Marek Olšák440d71d2011-06-14 05:38:58 +0200789 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
790 HAVE_ST_DRI="yes"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900791fi
792
793if test "x$enable_osmesa" = xyes; then
794 # the empty space matters for osmesa... (see src/mesa/Makefile)
795 if test -n "$DRIVER_DIRS"; then
796 DRIVER_DIRS="$DRIVER_DIRS osmesa"
797 else
798 DRIVER_DIRS="osmesa"
799 fi
800fi
801
Dan Nicholson297e16c2008-05-05 15:42:53 -0700802AC_SUBST([SRC_DIRS])
803AC_SUBST([GLU_DIRS])
804AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100805AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000806AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100807AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000808AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100809AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000810AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700811
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900812# Check for libdrm
813PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
814 [have_libdrm=yes], [have_libdrm=no])
815
816if test "x$enable_dri" = xyes; then
817 # DRI must be shared, I think
818 if test "$enable_static" = yes; then
819 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
820 fi
821
Chia-I Wu81239342011-07-02 09:49:17 +0900822 # not a hard requirement as swrast does not depend on it
823 if test "x$have_libdrm" = xyes; then
824 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900825 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900826fi
827
Dan Nicholsondca1b792007-10-23 09:25:58 -0700828dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700829dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700830dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700831dnl
832if test -n "$PKG_CONFIG"; then
833 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700834 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700835 x11_pkgconfig=yes
836 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700837 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700838 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700839 ])
840 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700841else
842 x11_pkgconfig=no
843fi
844dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600845if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700846 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600847else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700848 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700849 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
850 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
851 AC_SUBST([X11_CFLAGS])
852 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700853fi
854
Dan Nicholson99803a42008-07-01 09:03:15 -0700855dnl Try to tell the user that the --x-* options are only used when
856dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
857m4_divert_once([HELP_BEGIN],
858[These options are only used when the X libraries cannot be found by the
859pkg-config utility.])
860
Dan Nicholson44d99142007-12-05 18:47:01 -0800861dnl We need X for xlib and dri, so bomb now if it's not found
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900862if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
863 AC_MSG_ERROR([X11 development libraries needed for GLX])
864fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700865
Ian Romanickb518dfb2012-01-02 17:44:30 -0800866if test "x$enable_glx" = xyes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700867 DEFINES="$DEFINES -DUSE_XCB"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700868fi
869
Samuel Thibault75856172011-03-14 22:08:21 +0000870dnl Direct rendering or just indirect rendering
noblede7d18ed2011-03-14 22:08:22 +0000871case "$host_os" in
872gnu*)
873 dnl Disable by default on GNU/Hurd
874 driglx_direct_default="no"
875 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +0000876cygwin*)
877 dnl Disable by default on cygwin
878 driglx_direct_default="no"
879 ;;
noblede7d18ed2011-03-14 22:08:22 +0000880*)
881 driglx_direct_default="yes"
882 ;;
883esac
Samuel Thibault75856172011-03-14 22:08:21 +0000884AC_ARG_ENABLE([driglx-direct],
885 [AS_HELP_STRING([--disable-driglx-direct],
886 [enable direct rendering in GLX and EGL for DRI \
noblede7d18ed2011-03-14 22:08:22 +0000887 @<:@default=auto@:>@])],
Samuel Thibault75856172011-03-14 22:08:21 +0000888 [driglx_direct="$enableval"],
noblede7d18ed2011-03-14 22:08:22 +0000889 [driglx_direct="$driglx_direct_default"])
Samuel Thibault75856172011-03-14 22:08:21 +0000890
Dan Nicholson44d99142007-12-05 18:47:01 -0800891dnl
892dnl libGL configuration per driver
893dnl
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900894case "x$enable_glx$enable_xlib_glx" in
895xyesyes)
896 # Xlib-based GLX
Dan Nicholson44d99142007-12-05 18:47:01 -0800897 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700898 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800899 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800900 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
901 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800902 else
903 # should check these...
904 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
905 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800906 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
907 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800908 fi
Marek Olšák0aed27e2011-07-26 01:05:51 +0200909 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
Kenneth Graunked1d812052011-01-16 16:01:54 -0800910 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson44d99142007-12-05 18:47:01 -0800911 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900912xyesno)
913 # DRI-based GLX
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500914 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Samuel Thibault75856172011-03-14 22:08:21 +0000915 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000916 if test x"$driglx_direct" = xyes; then
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900917 if test "x$have_libdrm" != xyes; then
918 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
919 fi
Samuel Thibault75856172011-03-14 22:08:21 +0000920 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
921 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000922 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800923
924 # find the DRI deps for libGL
925 if test "$x11_pkgconfig" = yes; then
Ian Romanickb518dfb2012-01-02 17:44:30 -0800926 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
Jon TURNEY2b9dac32010-04-21 12:58:54 +0100927
928 # add xf86vidmode if available
929 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
930 if test "$HAVE_XF86VIDMODE" = yes ; then
931 dri_modules="$dri_modules xxf86vm"
932 fi
933
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700934 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800935 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800936 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
937 GL_LIB_DEPS="$DRIGL_LIBS"
938 else
939 # should check these...
940 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
Alan Hourihane64799222011-06-28 17:40:24 +0100941 if test "x$HAVE_XF86VIDMODE" == xyes; then
942 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
943 else
944 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
945 fi
Dan Nicholson71e208b2008-11-24 11:01:57 -0800946 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
947 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700948
949 # XCB can only be used from pkg-config
Ian Romanickb518dfb2012-01-02 17:44:30 -0800950 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
951 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
952 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
953 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800954 fi
955
Ian Romanick4becf672012-01-03 11:35:59 -0800956 # Check to see if the xcb-glx library is new enough to support
957 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
958 # is released.
959 save_CPPFLAGS="$CPPFLAGS"
960 save_LDFLAGS="$LDFLAGS"
961 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
962 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
963 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
964 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
965 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
966 CPPFLAGS="$save_CPPFLAGS"
967 LDFLAGS="$save_LDFLAGS"
968
969 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
970 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
971 fi
972
Dan Nicholson44d99142007-12-05 18:47:01 -0800973 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700974 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
975 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -0800976 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800977esac
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900978
Ian Romanick4becf672012-01-03 11:35:59 -0800979# This is outside the case (above) so that it is invoked even for non-GLX
980# builds.
981AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
982 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
983
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900984GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
985GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
986GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
987GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
988
Dan Nicholson297e16c2008-05-05 15:42:53 -0700989AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800990AC_SUBST([GL_PC_REQ_PRIV])
991AC_SUBST([GL_PC_LIB_PRIV])
992AC_SUBST([GL_PC_CFLAGS])
993AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +0800994AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -0400995AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500996AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -0400997AC_SUBST([GLESv2_PC_LIB_PRIV])
998
Chia-I Wu0c771e22011-11-04 16:32:17 +0800999GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
Chia-I Wu9767d3b2010-12-26 18:02:59 +08001000AC_SUBST([GLAPI_LIB_DEPS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001001
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001002
1003dnl Setup default DRI CFLAGS
1004DRI_CFLAGS='$(CFLAGS)'
1005DRI_CXXFLAGS='$(CXXFLAGS)'
1006DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1007MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1008
1009AC_ARG_ENABLE([shared-dricore],
1010 [AS_HELP_STRING([--enable-shared-dricore],
1011 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1012 [enable_dricore="$enableval"],
1013 [enable_dricore=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001014if test "x$enable_dri" = xyes ; then
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001015 if test "$enable_dricore" = yes ; then
1016 if test "$GCC$GXX" != yesyes ; then
1017 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
1018 enable_dricore=no
1019 else
1020 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1021 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1022 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1023 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1024 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1025 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1026 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1027 fi
1028 fi
1029fi
1030AC_SUBST([DRICORE_LIBS])
1031AC_SUBST([DRICORE_GLSL_LIBS])
1032AC_SUBST([DRICORE_LIB_DEPS])
1033AC_SUBST([DRI_CXXFLAGS])
1034AC_SUBST([DRI_CFLAGS])
1035AC_SUBST([MESA_MODULES])
1036
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001037AC_SUBST([HAVE_XF86VIDMODE])
1038
Dan Nicholsondca1b792007-10-23 09:25:58 -07001039dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001040dnl More GLX setup
Dan Nicholsondca1b792007-10-23 09:25:58 -07001041dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001042case "x$enable_glx$enable_xlib_glx" in
1043xyesyes)
Dan Nicholsondca1b792007-10-23 09:25:58 -07001044 DEFINES="$DEFINES -DUSE_XSHM"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001045 ;;
1046xyesno)
1047 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1048 if test "x$driglx_direct" = xyes; then
1049 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1050 fi
1051 ;;
1052esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001053
1054dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001055dnl TLS detection
Dan Nicholson44d99142007-12-05 18:47:01 -08001056dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001057
Dan Nicholson297e16c2008-05-05 15:42:53 -07001058AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -08001059 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001060 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001061 [GLX_USE_TLS="$enableval"],
1062 [GLX_USE_TLS=no])
Tom Fogal31351dc2010-12-05 17:58:32 -07001063AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1064
Tom Fogal44842972011-02-21 22:32:18 -07001065AS_IF([test "x$GLX_USE_TLS" = xyes],
1066 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1067
Tom Fogal31351dc2010-12-05 17:58:32 -07001068dnl
1069dnl More DRI setup
1070dnl
Dan Nicholson44d99142007-12-05 18:47:01 -08001071dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -07001072AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001073 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001074 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001075 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001076 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -07001077AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +08001078dnl Extra search path for DRI drivers
1079AC_ARG_WITH([dri-searchpath],
1080 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1081 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1082 [DRI_DRIVER_SEARCH_DIR="$withval"],
1083 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1084AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001085dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -07001086AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001087 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -07001088 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +02001089 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001090 [with_dri_drivers="$withval"],
1091 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001092if test "x$with_dri_drivers" = x; then
1093 with_dri_drivers=no
1094fi
1095
1096dnl If $with_dri_drivers is yes, directories will be added through
1097dnl platform checks
1098DRI_DIRS=""
1099case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001100no) ;;
1101yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001102 # classic DRI drivers require FEATURE_GL to build
1103 if test "x$enable_opengl" = xyes; then
1104 DRI_DIRS="yes"
1105 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001106 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001107*)
1108 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -07001109 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001110 for driver in $dri_drivers; do
1111 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1112 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1113 done
1114 DRI_DIRS="$dri_drivers"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001115 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1116 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1117 fi
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001118 ;;
1119esac
1120
Dan Nicholson44d99142007-12-05 18:47:01 -08001121dnl Set DRI_DIRS, DEFINES and LIB_DEPS
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001122if test "x$enable_dri" = xyes; then
Dan Nicholson44d99142007-12-05 18:47:01 -08001123 # Platform specific settings and drivers to build
1124 case "$host_os" in
1125 linux*)
1126 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001127 DEFINES="$DEFINES -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001128
1129 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -08001130 x86_64)
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001131 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001132 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001133 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001134 ;;
1135 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -08001136 # Build only the drivers for cards that exist on PowerPC.
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001137 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001138 DRI_DIRS="r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001139 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001140 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001141 sparc*)
Ian Romanicke4344162011-08-24 15:21:58 -07001142 # Build only the drivers for cards that exist on sparc
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001143 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001144 DRI_DIRS="r200 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001145 fi
1146 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001147 esac
1148 ;;
Pierre Allegraud8fd8de32011-01-06 07:58:57 -07001149 freebsd* | dragonfly* | *netbsd*)
Dan Nicholson44d99142007-12-05 18:47:01 -08001150 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1151 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001152
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001153 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001154 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001155 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001156 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001157 gnu*)
1158 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001159 DEFINES="$DEFINES -DHAVE_ALIAS"
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001160 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001161 solaris*)
1162 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001163 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001164 cygwin*)
1165 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001166 if test "x$DRI_DIRS" = "xyes"; then
1167 DRI_DIRS="swrast"
1168 fi
1169 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001170 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -08001171
1172 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001173 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001174 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -08001175 fi
1176
Dan Nicholson44d99142007-12-05 18:47:01 -08001177 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1178
1179 # Check for expat
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001180 if test "x$enable_dri" = xyes; then
Chia-I Wube5f34a2010-10-27 16:14:27 +08001181 EXPAT_INCLUDES=""
1182 EXPAT_LIB=-lexpat
1183 AC_ARG_WITH([expat],
1184 [AS_HELP_STRING([--with-expat=DIR],
1185 [expat install directory])],[
1186 EXPAT_INCLUDES="-I$withval/include"
1187 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1188 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1189 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1190 ])
1191 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1192 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1193 [AC_MSG_ERROR([Expat required for DRI.])])
1194 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001195
Chia-I Wu81239342011-07-02 09:49:17 +09001196 # libdrm is required for all except swrast
1197 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1198 if test "x$have_libdrm" != xyes; then
1199 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1200 fi
1201 fi
1202
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001203 # put all the necessary libs together, including possibly libdricore
1204 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001205fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001206AC_SUBST([DRI_DIRS])
1207AC_SUBST([EXPAT_INCLUDES])
1208AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -08001209
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001210case $DRI_DIRS in
1211*i915*|*i965*)
Tormod Volden903185b2011-01-25 13:25:18 -08001212 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001213 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001214esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001215
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001216case $DRI_DIRS in
Johannes Obermayr873379a2011-06-02 17:15:44 -06001217*nouveau*)
1218 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1219 ;;
1220esac
1221
1222case $DRI_DIRS in
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001223*radeon*|*r200*)
Eric Anholt830e5462011-10-14 14:34:19 -07001224 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001225 ;;
1226esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001227
1228
Dan Nicholson44d99142007-12-05 18:47:01 -08001229dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001230dnl OSMesa configuration
1231dnl
Dan Nicholson979ff512007-12-05 18:47:01 -08001232
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001233dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -07001234AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001235 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1236 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001237 [osmesa_bits="$withval"],
1238 [osmesa_bits=8])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001239if test "x$osmesa_bits" != x8; then
1240 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1241 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1242 osmesa_bits=8
1243 fi
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001244fi
1245case "x$osmesa_bits" in
1246x8)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001247 OSMESA_LIB="${OSMESA_LIB}"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001248 ;;
1249x16|x32)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001250 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001251 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1252 ;;
1253*)
1254 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1255 ;;
1256esac
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001257
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001258if test "x$enable_osmesa" = xyes; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001259 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -08001260 if test "$enable_static" = no; then
Kenneth Graunked1d812052011-01-16 16:01:54 -08001261 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -08001262 else
1263 OSMESA_LIB_DEPS=""
1264 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001265 OSMESA_MESA_DEPS=""
Kenneth Graunked1d812052011-01-16 16:01:54 -08001266 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001267fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001268AC_SUBST([OSMESA_LIB_DEPS])
1269AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001270AC_SUBST([OSMESA_PC_REQ])
1271AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001272
1273dnl
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001274dnl gbm configuration
1275dnl
1276if test "x$enable_gbm" = xauto; then
1277 case "$with_egl_platforms" in
1278 *drm*)
1279 enable_gbm=yes ;;
1280 *)
1281 enable_gbm=no ;;
1282 esac
1283fi
1284if test "x$enable_gbm" = xyes; then
1285 SRC_DIRS="$SRC_DIRS gbm"
1286 GBM_BACKEND_DIRS=""
1287
1288 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1289 AC_MSG_ERROR([gbm needs udev]))
1290 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1291
1292 if test "x$enable_dri" = xyes; then
1293 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1294 if test "$SHARED_GLAPI" -eq 0; then
1295 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1296 fi
1297 fi
1298fi
1299AC_SUBST([GBM_LIB_DEPS])
1300AC_SUBST([GBM_BACKEND_DIRS])
1301GBM_PC_REQ_PRIV="libudev"
1302GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1303GBM_PC_CFLAGS=
1304AC_SUBST([GBM_PC_REQ_PRIV])
1305AC_SUBST([GBM_PC_LIB_PRIV])
1306AC_SUBST([GBM_PC_CFLAGS])
1307
1308dnl
Dan Nicholson53b37342009-02-25 17:45:34 -08001309dnl EGL configuration
1310dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001311EGL_CLIENT_APIS=""
1312
Dan Nicholson66f97862009-04-29 12:11:43 -07001313if test "x$enable_egl" = xyes; then
1314 SRC_DIRS="$SRC_DIRS egl"
Tapani Pälli2758e652011-05-16 16:56:43 +03001315 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001316 EGL_DRIVERS_DIRS=""
Marek Olšákad50abba2011-06-14 05:14:27 +02001317
Benjamin Franzke85fe9482011-08-09 14:23:18 +02001318 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1319
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001320 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001321 # build egl_glx when libGL is built
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001322 if test "x$enable_glx" = xyes; then
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001323 EGL_DRIVERS_DIRS="glx"
1324 fi
1325
Benjamin Franzke184bb092011-04-30 11:18:23 +02001326 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1327 [have_libudev=yes],[have_libudev=no])
Benjamin Franzkea7cd65f2011-05-31 11:14:46 +02001328 if test "$have_libudev" = yes; then
1329 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1330 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001331 if test "x$enable_dri" = xyes; then
Chia-I Wu39ae9652010-07-16 19:48:52 +08001332 # build egl_dri2 when xcb-dri2 is available
1333 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1334 [have_xcb_dri2=yes],[have_xcb_dri2=no])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001335
1336 if test "$have_xcb_dri2" = yes; then
1337 EGL_DRIVER_DRI2=dri2
1338 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
Benjamin Franzke4ca075a2011-03-02 21:23:04 +01001339 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1340 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1341 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001342 fi
1343 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001344
1345 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001346 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001347fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001348AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001349AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001350
1351dnl
Marek Olšák1251e1d2011-06-18 20:33:55 +02001352dnl EGL Gallium configuration
1353dnl
1354if test "x$enable_gallium_egl" = xyes; then
1355 if test "x$with_gallium_drivers" = x; then
1356 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1357 fi
1358 if test "x$enable_egl" = xno; then
1359 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1360 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +09001361 if test "x$have_libdrm" != xyes; then
1362 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1363 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001364
1365 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wub8f097f2011-06-20 12:01:39 +09001366 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
Marek Olšák1251e1d2011-06-18 20:33:55 +02001367 HAVE_ST_EGL="yes"
1368fi
1369
1370dnl
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001371dnl gbm Gallium configuration
1372dnl
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001373if test "x$enable_gallium_gbm" = xauto; then
Chia-I Wu95ef0692011-11-05 15:09:36 +08001374 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1375 yesyesyes*drm*)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001376 enable_gallium_gbm=yes ;;
1377 *)
1378 enable_gallium_gbm=no ;;
1379 esac
1380fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001381if test "x$enable_gallium_gbm" = xyes; then
1382 if test "x$with_gallium_drivers" = x; then
1383 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1384 fi
1385 if test "x$enable_gbm" = xno; then
1386 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1387 fi
Chia-I Wu95ef0692011-11-05 15:09:36 +08001388 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1389 if test "x$enable_dri" = xno; then
1390 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1391 fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001392
1393 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1394 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1395 HAVE_ST_GBM="yes"
1396fi
1397
1398dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001399dnl X.Org DDX configuration
1400dnl
1401if test "x$enable_xorg" = xyes; then
1402 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1403 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1404 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1405 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1406 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1407 HAVE_XEXTPROTO_71="no")
1408 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1409 HAVE_ST_XORG=yes
1410fi
1411
1412dnl
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001413dnl XA configuration
1414dnl
1415if test "x$enable_xa" = xyes; then
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001416AC_PROG_AWK
1417AC_PROG_GREP
1418AC_CHECK_PROG(NM, nm, "nm")
1419if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1420AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1421enable_xa=no
1422fi
1423fi
1424if test "x$enable_xa" = xyes; then
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001425 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1426 HAVE_ST_XA=yes
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001427 AC_SUBST(AWK)
1428 AC_SUBST(GREP)
1429 AC_SUBST(NM)
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001430fi
1431
1432dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001433dnl OpenVG configuration
1434dnl
1435VG_LIB_DEPS=""
1436
1437if test "x$enable_openvg" = xyes; then
1438 if test "x$enable_egl" = xno; then
1439 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1440 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001441 if test "x$with_gallium_drivers" = x; then
Marek Olšák440d71d2011-06-14 05:38:58 +02001442 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1443 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001444 if test "x$enable_gallium_egl" = xno; then
1445 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1446 fi
Marek Olšák440d71d2011-06-14 05:38:58 +02001447
1448 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1449 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1450 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1451 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1452 HAVE_ST_VEGA=yes
1453fi
1454
1455dnl
1456dnl D3D1X configuration
1457dnl
1458
1459if test "x$enable_d3d1x" = xyes; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001460 if test "x$with_gallium_drivers" = x; then
1461 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1462 fi
1463
Marek Olšák440d71d2011-06-14 05:38:58 +02001464 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1465 HAVE_ST_D3D1X=yes
1466fi
1467
1468dnl
Christian Königc3b22302011-07-04 15:04:41 +02001469dnl Gallium G3DVL configuration
1470dnl
1471AC_ARG_ENABLE([gallium-g3dvl],
1472 [AS_HELP_STRING([--enable-gallium-g3dvl],
1473 [build gallium g3dvl @<:@default=disabled@:>@])],
1474 [enable_gallium_g3dvl="$enableval"],
1475 [enable_gallium_g3dvl=no])
1476if test "x$enable_gallium_g3dvl" = xyes; then
1477 if test "x$with_gallium_drivers" = x; then
1478 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1479 fi
1480
1481 if test "x$enable_xvmc" = xauto; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001482 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
Christian Königc3b22302011-07-04 15:04:41 +02001483 fi
1484
1485 if test "x$enable_vdpau" = xauto; then
Christian König33bf4102011-07-14 13:57:23 +02001486 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001487 fi
1488
1489 if test "x$enable_va" = xauto; then
Christian König8619aa52011-07-14 14:09:25 +02001490 #don't enable vaapi state tracker even if package exists
1491 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001492 enable_va=no
1493 fi
1494fi
1495
Christian Königc3b22302011-07-04 15:04:41 +02001496if test "x$enable_xvmc" = xyes; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001497 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
Christian Königc3b22302011-07-04 15:04:41 +02001498 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1499 HAVE_ST_XVMC="yes"
1500fi
1501
Christian Königc3b22302011-07-04 15:04:41 +02001502if test "x$enable_vdpau" = xyes; then
Christian König33bf4102011-07-14 13:57:23 +02001503 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
Christian Königc3b22302011-07-04 15:04:41 +02001504 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1505 HAVE_ST_VDPAU="yes"
1506fi
1507
Christian Königc3b22302011-07-04 15:04:41 +02001508if test "x$enable_va" = xyes; then
Christian König8619aa52011-07-14 14:09:25 +02001509 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1510 AC_MSG_WARN([vaapi state tracker currently unmaintained])
Christian Königc3b22302011-07-04 15:04:41 +02001511 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1512 HAVE_ST_VA="yes"
1513fi
1514
Christian Königc3b22302011-07-04 15:04:41 +02001515dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001516dnl GLU configuration
1517dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001518AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001519 [AS_HELP_STRING([--disable-glu],
1520 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001521 [enable_glu="$enableval"],
1522 [enable_glu=yes])
Chia-I Wube5f34a2010-10-27 16:14:27 +08001523
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001524if test "x$enable_glu" = xyes; then
1525 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1526 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1527 enable_glu=no
1528 fi
Chia-I Wube5f34a2010-10-27 16:14:27 +08001529fi
1530
Dan Nicholsondca1b792007-10-23 09:25:58 -07001531if test "x$enable_glu" = xyes; then
1532 SRC_DIRS="$SRC_DIRS glu"
1533
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001534 if test "x$enable_glx" = xno; then
Dan Nicholson979ff512007-12-05 18:47:01 -08001535 # Link libGLU to libOSMesa instead of libGL
1536 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001537 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001538 if test "$enable_static" = no; then
1539 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1540 else
1541 GLU_MESA_DEPS=""
1542 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001543 else
Dan Nicholson88586332007-11-15 08:59:57 -08001544 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001545 GLU_PC_REQ="gl"
1546 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001547 if test "$enable_static" = no; then
1548 GLU_LIB_DEPS="-lm"
1549 GLU_MESA_DEPS='-l$(GL_LIB)'
1550 else
1551 GLU_LIB_DEPS=""
1552 GLU_MESA_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -08001553 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001554 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001555fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001556if test "$enable_static" = no; then
1557 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1558fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001559GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001560AC_SUBST([GLU_LIB_DEPS])
1561AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001562AC_SUBST([GLU_PC_REQ])
1563AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001564AC_SUBST([GLU_PC_LIB_PRIV])
1565AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001566
Dan Nicholson297e16c2008-05-05 15:42:53 -07001567AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001568
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001569dnl
1570dnl Gallium configuration
1571dnl
Marek Olšák58b6a192011-06-14 07:46:59 +02001572if test "x$with_gallium_drivers" != x; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001573 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001574fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001575
Dave Airlie81fe1982010-04-22 14:59:29 +10001576AC_SUBST([LLVM_CFLAGS])
1577AC_SUBST([LLVM_LIBS])
1578AC_SUBST([LLVM_LDFLAGS])
1579AC_SUBST([LLVM_VERSION])
1580
Chia-I Wube5f34a2010-10-27 16:14:27 +08001581case "x$enable_opengl$enable_gles1$enable_gles2" in
1582x*yes*)
1583 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1584 ;;
1585esac
Chia-I Wube5f34a2010-10-27 16:14:27 +08001586
Chia-I Wu874ccd52010-05-04 22:43:05 +08001587AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001588AC_SUBST([EGL_CLIENT_APIS])
1589
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001590AC_ARG_WITH([egl-platforms],
1591 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1592 [comma delimited native platforms libEGL supports, e.g.
Chia-I Wue7424d72010-09-19 16:54:39 +08001593 "x11,drm" @<:@default=auto@:>@])],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001594 [with_egl_platforms="$withval"],
1595 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001596
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001597EGL_PLATFORMS=""
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001598WAYLAND_EGL_LIB_DEPS=""
1599
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001600case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001601yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001602 if test "x$enable_egl" = xyes; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001603 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001604 fi
1605 ;;
1606*)
1607 if test "x$enable_egl" != xyes; then
1608 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1609 fi
1610 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001611 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1612 for plat in $egl_platforms; do
1613 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
Kristian Høgsberg1a8899d2011-02-10 10:45:06 -05001614 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001615 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001616 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1617 fi
Chia-I Wua5f8d372011-09-20 14:01:45 +08001618 if test "$plat" = "null"; then
1619 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1620 fi
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001621 if test "$plat" = "wayland"; then
Benjamin Franzke6b369c42011-02-21 16:22:34 +01001622 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001623 [AC_MSG_ERROR([cannot find libwayland-client])])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001624 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
Benjamin Franzkeaaa3c0d2011-04-23 14:14:29 +02001625 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001626 fi
Benjamin Franzke9b8cd492011-07-02 13:46:09 +02001627 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
Benjamin Franzkee5fc4c82011-05-30 10:50:52 +02001628 AC_MSG_ERROR([EGL platform drm needs gbm])
1629 fi
Benjamin Franzke7ed18262011-07-02 13:46:42 +02001630 case "$plat$have_libudev" in
1631 waylandno|drmno)
1632 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1633 esac
Chia-I Wu49381d62010-01-11 01:23:01 +08001634 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001635 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001636 ;;
1637esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001638AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001639
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001640AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1641WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1642WAYLAND_EGL_PC_LIB_PRIV=
1643WAYLAND_EGL_PC_CFLAGS=
1644
1645AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1646AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1647AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1648
1649
Chia-I Wu28c3e572010-01-23 20:18:43 +08001650AC_ARG_WITH([egl-driver-dir],
1651 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1652 [directory for EGL drivers [[default=${libdir}/egl]]])],
1653 [EGL_DRIVER_INSTALL_DIR="$withval"],
1654 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1655AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1656
Joel Bosveld8acca482009-03-06 08:46:08 +09001657AC_ARG_WITH([xorg-driver-dir],
1658 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1659 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1660 [XORG_DRIVER_INSTALL_DIR="$withval"],
1661 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1662AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1663
Tom Fogal7085dce2009-08-13 19:40:30 -06001664AC_ARG_WITH([max-width],
1665 [AS_HELP_STRING([--with-max-width=N],
1666 [Maximum framebuffer width (4096)])],
1667 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1668 AS_IF([test "${withval}" -gt "4096"],
1669 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1670)
1671AC_ARG_WITH([max-height],
1672 [AS_HELP_STRING([--with-max-height=N],
1673 [Maximum framebuffer height (4096)])],
1674 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1675 AS_IF([test "${withval}" -gt "4096"],
1676 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1677)
1678
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001679dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001680dnl Gallium LLVM
1681dnl
1682AC_ARG_ENABLE([gallium-llvm],
1683 [AS_HELP_STRING([--enable-gallium-llvm],
Marek Olšáka86fc712011-04-21 13:27:55 +02001684 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
Dave Airlie81fe1982010-04-22 14:59:29 +10001685 [enable_gallium_llvm="$enableval"],
1686 [enable_gallium_llvm=auto])
Marek Olšák58b6a192011-06-14 07:46:59 +02001687if test "x$with_gallium_drivers" = x; then
1688 enable_gallium_llvm=no
1689fi
Marek Olšáka86fc712011-04-21 13:27:55 +02001690if test "x$enable_gallium_llvm" = xauto; then
1691 case "$host_cpu" in
1692 i*86|x86_64) enable_gallium_llvm=yes;;
1693 esac
1694fi
Dave Airlie81fe1982010-04-22 14:59:29 +10001695if test "x$enable_gallium_llvm" = xyes; then
Marek Olšák99fba502011-07-23 15:57:51 +02001696 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1697
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001698 if test "x$LLVM_CONFIG" != xno; then
1699 LLVM_VERSION=`$LLVM_CONFIG --version`
Johannes Obermayraa284042011-12-19 23:11:46 +01001700 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
Marcin Slusarz75739042011-10-13 21:45:45 +02001701 LLVM_LIBS="`$LLVM_CONFIG --libs`"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001702
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001703 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
Marek Olšák67aba792011-06-27 08:25:09 +02001704 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001705 MESA_LLVM=1
1706 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001707 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001708 fi
1709else
1710 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001711fi
1712
Thomas Balling Sørensen32999972010-07-14 00:34:56 +02001713dnl Directory for VDPAU libs
1714AC_ARG_WITH([vdpau-libdir],
1715 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1716 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1717 [VDPAU_LIB_INSTALL_DIR="$withval"],
1718 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1719AC_SUBST([VDPAU_LIB_INSTALL_DIR])
Younes Manton40cd0822010-03-05 23:11:05 -05001720
Thomas Balling Sørensen501ac572010-10-24 19:27:29 +02001721dnl Directory for VA libs
1722AC_ARG_WITH([va-libdir],
1723 [AS_HELP_STRING([--with-va-libdir=DIR],
1724 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1725 [VA_LIB_INSTALL_DIR="$withval"],
1726 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1727AC_SUBST([VA_LIB_INSTALL_DIR])
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001728
Dave Airlie81fe1982010-04-22 14:59:29 +10001729dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001730dnl Gallium helper functions
1731dnl
1732gallium_check_st() {
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001733 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
Christian Königc3b22302011-07-04 15:04:41 +02001734 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1735 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
Chia-I Wu81239342011-07-02 09:49:17 +09001736 if test "x$have_libdrm" != xyes; then
1737 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1738 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001739 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1740 fi
1741 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1742 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1743 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001744 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001745 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1746 fi
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001747 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1748 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1749 fi
Christian Königc3b22302011-07-04 15:04:41 +02001750 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1751 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
Younes Mantonb97816d2011-07-14 12:22:20 -04001752 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001753 fi
1754 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1755 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
Younes Mantonb97816d2011-07-14 12:22:20 -04001756 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001757 fi
1758 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1759 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
Younes Mantonb97816d2011-07-14 12:22:20 -04001760 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001761 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001762}
1763
Marek Olšákc17fb852011-06-14 04:03:17 +02001764gallium_require_llvm() {
1765 if test "x$MESA_LLVM" = x0; then
1766 case "$host_cpu" in
1767 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1768 esac
1769 fi
1770}
1771
Marek Olšák58b6a192011-06-14 07:46:59 +02001772dnl Gallium drivers
Marek Olšák02c8ee22011-06-27 08:02:31 +02001773dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
Marek Olšák58b6a192011-06-14 07:46:59 +02001774if test "x$with_gallium_drivers" != x; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001775 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1776 for driver in $gallium_drivers; do
1777 case "x$driver" in
1778 xsvga)
Marek Olšák02c8ee22011-06-27 08:02:31 +02001779 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
Thomas Hellstromd742a642011-09-29 21:41:21 +02001780 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
Marek Olšák58b6a192011-06-14 07:46:59 +02001781 ;;
1782 xi915)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001783 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Marek Olšák02c8ee22011-06-27 08:02:31 +02001784 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1785 if test "x$MESA_LLVM" = x1; then
1786 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1787 fi
1788 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Marek Olšák58b6a192011-06-14 07:46:59 +02001789 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1790 ;;
Marek Olšák58b6a192011-06-14 07:46:59 +02001791 xr300)
1792 gallium_require_llvm "Gallium R300"
Marek Olšák02c8ee22011-06-27 08:02:31 +02001793 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1794 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
Marek Olšák58b6a192011-06-14 07:46:59 +02001795 ;;
1796 xr600)
1797 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
Marek Olšákbf0baa72011-09-27 16:42:01 +02001798 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
Marek Olšák58b6a192011-06-14 07:46:59 +02001799 ;;
1800 xnouveau)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001801 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
Marek Olšák58b6a192011-06-14 07:46:59 +02001802 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
Maarten Lankhorstdf8f8642011-10-18 14:24:30 +02001803 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
Marek Olšák58b6a192011-06-14 07:46:59 +02001804 ;;
1805 xswrast)
Marek Olšákc6f59fc2011-07-26 01:05:13 +02001806 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1807 if test "x$MESA_LLVM" = x1; then
1808 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1809 fi
1810
Marek Olšák58b6a192011-06-14 07:46:59 +02001811 if test "x$HAVE_ST_DRI" = xyes; then
1812 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1813 fi
Christian Königc3b22302011-07-04 15:04:41 +02001814 if test "x$HAVE_ST_VDPAU" = xyes; then
1815 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1816 fi
1817 if test "x$HAVE_ST_XVMC" = xyes; then
1818 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1819 fi
1820 if test "x$HAVE_ST_VA" = xyes; then
1821 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1822 fi
Eric Anholt48c99252011-10-14 14:33:00 -07001823 if test "x$HAVE_ST_VDPAU" = xyes ||
1824 test "x$HAVE_ST_XVMC" = xyes ||
1825 test "x$HAVE_ST_VA" = xyes; then
Younes Mantonb97816d2011-07-14 12:22:20 -04001826 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1827 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1828 fi
1829 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001830 ;;
1831 *)
1832 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1833 ;;
1834 esac
1835 done
Chia-I Wua1306f42010-01-22 15:51:51 +08001836fi
1837
Younes Mantonb97816d2011-07-14 12:22:20 -04001838if test "x$NEED_G3DVL_DRI" = xyes; then
1839 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1840fi
1841
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001842dnl prepend CORE_DIRS to SRC_DIRS
1843SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001844
1845dnl Restore LDFLAGS and CPPFLAGS
1846LDFLAGS="$_SAVE_LDFLAGS"
1847CPPFLAGS="$_SAVE_CPPFLAGS"
1848
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +02001849dnl Add user CFLAGS and CXXFLAGS
1850CFLAGS="$CFLAGS $USER_CFLAGS"
1851CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1852
Dan Nicholsondca1b792007-10-23 09:25:58 -07001853dnl Substitute the config
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001854AC_CONFIG_FILES([configs/autoconf
1855 tests/Makefile
1856 tests/glx/Makefile])
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001857
Dan Nicholsondca1b792007-10-23 09:25:58 -07001858dnl Replace the configs/current symlink
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001859AC_CONFIG_COMMANDS([configs],[
1860if test -f configs/current || test -L configs/current; then
1861 rm -f configs/current
1862fi
1863ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001864])
1865
Marek Olšák618dbc82011-06-27 03:12:57 +02001866dnl Sort the dirs alphabetically
Marek Olšák3c799622011-09-27 16:51:05 +02001867GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1868GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1869GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1870GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
Marek Olšák618dbc82011-06-27 03:12:57 +02001871
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001872AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001873
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001874dnl
1875dnl Output some configuration info for the user
1876dnl
1877echo ""
1878echo " prefix: $prefix"
1879echo " exec_prefix: $exec_prefix"
1880echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001881echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001882
Chia-I Wu815faa42010-10-29 12:34:44 +08001883dnl API info
1884echo ""
1885echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
Chia-I Wu815faa42010-10-29 12:34:44 +08001886echo " OpenVG: $enable_openvg"
1887
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001888dnl Driver info
1889echo ""
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001890if test "x$enable_osmesa" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001891 echo " OSMesa: lib$OSMESA_LIB"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001892else
Chia-I Wu815faa42010-10-29 12:34:44 +08001893 echo " OSMesa: no"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001894fi
1895
1896if test "x$enable_dri" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001897 # cleanup the drivers var
1898 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1899 if test "x$DRI_DIRS" = x; then
1900 echo " DRI drivers: no"
1901 else
1902 echo " DRI drivers: $dri_dirs"
1903 fi
1904 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001905 echo " Shared dricore: $enable_dricore"
Dan Nicholson544ab202007-12-30 08:41:53 -08001906fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001907
1908case "x$enable_glx$enable_xlib_glx" in
1909xyesyes)
1910 echo " GLX: Xlib-based"
1911 ;;
1912xyesno)
1913 echo " GLX: DRI-based"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001914 ;;
1915*)
1916 echo " GLX: $enable_glx"
1917 ;;
1918esac
1919
Chia-I Wu815faa42010-10-29 12:34:44 +08001920echo ""
1921echo " GLU: $enable_glu"
Chia-I Wu815faa42010-10-29 12:34:44 +08001922
1923dnl EGL
1924echo ""
1925echo " EGL: $enable_egl"
1926if test "$enable_egl" = yes; then
1927 echo " EGL platforms: $EGL_PLATFORMS"
Chia-I Wu12300502010-10-31 21:01:54 +08001928
1929 egl_drivers=""
1930 for d in $EGL_DRIVERS_DIRS; do
Chia-I Wuc98ea262011-01-07 16:30:08 +08001931 egl_drivers="$egl_drivers builtin:egl_$d"
Chia-I Wu12300502010-10-31 21:01:54 +08001932 done
1933
Marek Olšák1251e1d2011-06-18 20:33:55 +02001934 if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wu12300502010-10-31 21:01:54 +08001935 echo " EGL drivers: ${egl_drivers} egl_gallium"
1936 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
Chia-I Wu815faa42010-10-29 12:34:44 +08001937 else
Chia-I Wu12300502010-10-31 21:01:54 +08001938 echo " EGL drivers: $egl_drivers"
Chia-I Wu815faa42010-10-29 12:34:44 +08001939 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001940fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001941
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001942echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07001943if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01001944 echo " llvm: yes"
1945 echo " llvm-config: $LLVM_CONFIG"
1946 echo " llvm-version: $LLVM_VERSION"
1947else
1948 echo " llvm: no"
1949fi
1950
1951echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001952if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1953 echo " Gallium: yes"
1954 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00001955 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001956 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001957 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001958 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1959else
1960 echo " Gallium: no"
1961fi
1962
Daniel Vetter8f15c312011-11-28 22:24:26 +01001963
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001964dnl Libraries
1965echo ""
1966echo " Shared libs: $enable_shared"
1967echo " Static libs: $enable_static"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001968
Dan Nicholson16a07fb2007-12-12 09:12:15 -08001969dnl Compiler options
1970# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1971cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1972 $SED 's/^ *//;s/ */ /;s/ *$//'`
1973cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1974 $SED 's/^ *//;s/ */ /;s/ *$//'`
1975defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1976echo ""
1977echo " CFLAGS: $cflags"
1978echo " CXXFLAGS: $cxxflags"
1979echo " Macros: $defines"
Kenneth Graunke3acc8262010-10-25 13:52:58 -07001980echo ""
1981echo " PYTHON2: $PYTHON2"
Dan Nicholson16a07fb2007-12-12 09:12:15 -08001982
Dan Nicholsondca1b792007-10-23 09:25:58 -07001983echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07001984echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001985echo ""