blob: 7c50e3c009d72b1f832a1f0ce60c290ae3406a19 [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 Anholtc4089d42011-12-29 18:12:48 -080028LIBDRM_INTEL_REQUIRED=2.4.30
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])
Matt Turner3a343ef2012-01-11 01:05:56 -050041AC_PROG_SED
Dan Nicholson297e16c2008-05-05 15:42:53 -070042AC_PATH_PROG([MKDEP], [makedepend])
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`
Ian Romanick3ef3ba42011-12-15 18:45:27 -080073 AC_SUBST([GTEST_CFLAGS])
74 AC_SUBST([GTEST_LIBS])
75 HAVE_GTEST=yes
76else
77 HAVE_GTEST=no
78fi
79AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
80
nobled2a501872010-08-29 20:03:37 -040081dnl clang is mostly GCC-compatible, but its version is much lower,
82dnl so we have to check for it.
83AC_MSG_CHECKING([if compiling with clang])
84
85AC_COMPILE_IFELSE(
86[AC_LANG_PROGRAM([], [[
87#ifndef __clang__
88 not clang
89#endif
90]])],
91[CLANG=yes], [CLANG=no])
92
93AC_MSG_RESULT([$CLANG])
94
Ian Romanick9aa3aa72010-03-03 15:59:37 -080095dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
96dnl versions are explictly not supported.
nobled2a501872010-08-29 20:03:37 -040097if test "x$GCC" = xyes -a "x$CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -080098 AC_MSG_CHECKING([whether gcc version is sufficient])
99 major=0
100 minor=0
101
102 GCC_VERSION=`$CC -dumpversion`
103 if test $? -eq 0; then
104 major=`echo $GCC_VERSION | cut -d. -f1`
Marcin Baczyńskifa013412011-07-13 21:26:50 +0200105 minor=`echo $GCC_VERSION | cut -d. -f2`
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800106 fi
107
108 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
109 AC_MSG_RESULT([no])
110 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
111 else
112 AC_MSG_RESULT([yes])
113 fi
114fi
115
116
Dan Nicholsondb7fc632008-03-07 11:48:09 -0800117MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500118dnl Ask gcc where it's keeping its secret headers
119if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -0800120 for dir in include include-fixed; do
121 GCC_INCLUDES=`$CC -print-file-name=$dir`
122 if test "x$GCC_INCLUDES" != x && \
123 test "$GCC_INCLUDES" != "$dir" && \
124 test -d "$GCC_INCLUDES"; then
125 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
126 fi
127 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500128fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700129AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500130
Dan Nicholson41b00702007-12-12 08:48:30 -0800131dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700132m4_ifndef([PKG_PROG_PKG_CONFIG],
133 [m4_fatal([Could not locate the pkg-config autoconf macros.
134 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
135 are in a different location, try setting the environment variable
136 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700137PKG_PROG_PKG_CONFIG()
138
139dnl LIB_DIR - library basename
140LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700141AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700142
143dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
144_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700145AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
146AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700147
148dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
149_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700150AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
151AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700152
153dnl Compiler macros
154DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700155AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700156case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700157linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800158 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700159 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700160solaris*)
161 DEFINES="$DEFINES -DPTHREADS -DSVR4"
162 ;;
Brian Paul97988902010-02-18 12:46:12 -0700163cygwin*)
164 DEFINES="$DEFINES -DPTHREADS"
165 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700166esac
167
168dnl Add flags for gcc and g++
169if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700170 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
171 if test "x$CLANG" = "xno"; then
172 CFLAGS="$CFLAGS -ffast-math"
173 fi
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800174
175 # Enable -fvisibility=hidden if using a gcc that supports it
176 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800177 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100178 VISIBILITY_CFLAGS="-fvisibility=hidden"
179 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800180 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100181 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
182
183 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
184 CFLAGS=$save_CFLAGS
Dan Nicholson0c275b62008-01-15 22:52:25 -0800185
186 # Work around aliasing bugs - developers should comment this out
187 CFLAGS="$CFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100188
189 # gcc's builtin memcmp is slower than glibc's
190 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
191 CFLAGS="$CFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700192fi
193if test "x$GXX" = xyes; then
194 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800195
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400196 # Enable -fvisibility=hidden if using a gcc that supports it
197 save_CXXFLAGS="$CXXFLAGS"
198 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100199 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
200 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
Jon TURNEY560f7622011-04-26 11:49:01 +0100201 AC_LANG_PUSH([C++])
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400202 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100203 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
Jon TURNEY560f7622011-04-26 11:49:01 +0100204 AC_LANG_POP([C++])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100205
206 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
207 CXXFLAGS=$save_CXXFLAGS
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400208
Dan Nicholson0c275b62008-01-15 22:52:25 -0800209 # Work around aliasing bugs - developers should comment this out
210 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100211
212 # gcc's builtin memcmp is slower than glibc's
213 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
214 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700215fi
216
Jon TURNEYdb786432011-04-26 11:56:02 +0100217dnl even if the compiler appears to support it, using visibility attributes isn't
218dnl going to do anything useful currently on cygwin apart from emit lots of warnings
219case "$host_os" in
220cygwin*)
221 VISIBILITY_CFLAGS=""
222 VISIBILITY_CXXFLAGS=""
223 ;;
224esac
225
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100226AC_SUBST([VISIBILITY_CFLAGS])
227AC_SUBST([VISIBILITY_CXXFLAGS])
228
Dan Nicholsondca1b792007-10-23 09:25:58 -0700229dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700230AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700231 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700232AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700233 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700234AC_SUBST([OPT_FLAGS])
235AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700236
237dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600238dnl Hacks to enable 32 or 64 bit build
239dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700240AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600241 [AS_HELP_STRING([--enable-32-bit],
242 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700243 [enable_32bit="$enableval"],
244 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600245)
246if test "x$enable_32bit" = xyes; then
247 if test "x$GCC" = xyes; then
248 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700249 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600250 fi
251 if test "x$GXX" = xyes; then
252 CXXFLAGS="$CXXFLAGS -m32"
253 fi
254fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700255AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600256 [AS_HELP_STRING([--enable-64-bit],
257 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700258 [enable_64bit="$enableval"],
259 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600260)
261if test "x$enable_64bit" = xyes; then
262 if test "x$GCC" = xyes; then
263 CFLAGS="$CFLAGS -m64"
264 fi
265 if test "x$GXX" = xyes; then
266 CXXFLAGS="$CXXFLAGS -m64"
267 fi
268fi
269
270dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800271dnl shared/static libraries, mimic libtool options
272dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700273AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800274 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800275 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700276 [enable_static="$enableval"],
277 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800278)
279case "x$enable_static" in
280xyes|xno ) ;;
281x ) enable_static=no ;;
282* )
283 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
284 ;;
285esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700286AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800287 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800288 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700289 [enable_shared="$enableval"],
290 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800291)
292case "x$enable_shared" in
293xyes|xno ) ;;
294x ) enable_shared=yes ;;
295* )
296 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
297 ;;
298esac
299
300dnl Can't have static and shared libraries, default to static if user
301dnl explicitly requested. If both disabled, set to static since shared
302dnl was explicitly requirested.
303case "x$enable_static$enable_shared" in
304xyesyes )
305 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
306 enable_shared=no
307 ;;
308xnono )
309 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
310 enable_static=yes
311 ;;
312esac
313
314dnl
315dnl mklib options
316dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700317AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800318if test "$enable_static" = yes; then
319 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
320fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700321AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800322
Dan Nicholson23656c42007-12-12 09:02:31 -0800323dnl
324dnl other compiler options
325dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700326AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800327 [AS_HELP_STRING([--enable-debug],
328 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700329 [enable_debug="$enableval"],
330 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800331)
332if test "x$enable_debug" = xyes; then
333 DEFINES="$DEFINES -DDEBUG"
334 if test "x$GCC" = xyes; then
335 CFLAGS="$CFLAGS -g"
336 fi
337 if test "x$GXX" = xyes; then
338 CXXFLAGS="$CXXFLAGS -g"
339 fi
340fi
Dan Nicholson88586332007-11-15 08:59:57 -0800341
342dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700343dnl library names
344dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100345LIB_PREFIX_GLOB='lib'
346LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800347if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800348 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800349else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700350 case "$host_os" in
351 darwin* )
352 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100353 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100354 dnl prefix can be 'cyg' or 'lib'
355 LIB_PREFIX_GLOB='???'
356 LIB_VERSION_SEPARATOR='-'
357 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700358 aix* )
359 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700360 * )
361 LIB_EXTENSION='so' ;;
362 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800363fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800364
Marek Olšák848f7d32011-04-01 01:12:41 +0200365dnl
Tom Fogalc0573fb2011-10-10 10:33:18 -0600366dnl Mangled Mesa support
367dnl
368AC_ARG_ENABLE([mangling],
369 [AS_HELP_STRING([--enable-mangling],
370 [enable mangled symbols and library name @<:@default=disabled@:>@])],
371 [enable_mangling="${enableval}"],
372 [enable_mangling=no]
373)
374GL_LIB="GL"
375GLU_LIB="GLU"
376OSMESA_LIB="OSMesa"
377if test "x${enable_mangling}" = "xyes" ; then
378 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
379 GL_LIB="MangledGL"
380 GLU_LIB="MangledGLU"
381 OSMESA_LIB="MangledOSMesa"
382fi
383AC_SUBST([GL_LIB])
384AC_SUBST([GLU_LIB])
385AC_SUBST([OSMESA_LIB])
386
387dnl
Marek Olšák848f7d32011-04-01 01:12:41 +0200388dnl potentially-infringing-but-nobody-knows-for-sure stuff
389dnl
390AC_ARG_ENABLE([texture-float],
391 [AS_HELP_STRING([--enable-texture-float],
392 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
393 [enable_texture_float="$enableval"],
394 [enable_texture_float=no]
395)
396if test "x$enable_texture_float" = xyes; then
397 AC_MSG_WARN([Floating-point textures enabled.])
398 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
399 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
400fi
401
Dan Nicholson8217f242009-02-11 15:16:00 -0800402GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
403GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800404OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800405EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500406GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
407GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800408VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800409GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100410WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200411GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800412
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100413GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
414GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100415OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
416EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
417EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
418GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
420VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800421GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100422WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200423GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800424
Dan Nicholson297e16c2008-05-05 15:42:53 -0700425AC_SUBST([GL_LIB_NAME])
426AC_SUBST([GLU_LIB_NAME])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700427AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800428AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500429AC_SUBST([GLESv1_CM_LIB_NAME])
430AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800431AC_SUBST([VG_LIB_NAME])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800432AC_SUBST([GLAPI_LIB_NAME])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100433AC_SUBST([WAYLAND_EGL_LIB_NAME])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200434AC_SUBST([GBM_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700435
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700436AC_SUBST([GL_LIB_GLOB])
437AC_SUBST([GLU_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700438AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800439AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500440AC_SUBST([GLESv1_CM_LIB_GLOB])
441AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800442AC_SUBST([VG_LIB_GLOB])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800443AC_SUBST([GLAPI_LIB_GLOB])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100444AC_SUBST([WAYLAND_EGL_LIB_GLOB])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200445AC_SUBST([GBM_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700446
Dan Nicholsondca1b792007-10-23 09:25:58 -0700447dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700448dnl Arch/platform-specific settings
449dnl
450AC_ARG_ENABLE([asm],
451 [AS_HELP_STRING([--disable-asm],
452 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
453 [enable_asm="$enableval"],
454 [enable_asm=yes]
455)
456asm_arch=""
457ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800458MESA_ASM_SOURCES=""
459GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700460AC_MSG_CHECKING([whether to enable assembly])
461test "x$enable_asm" = xno && AC_MSG_RESULT([no])
462# disable if cross compiling on x86/x86_64 since we must run gen_matypes
463if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
464 case "$host_cpu" in
465 i?86 | x86_64)
466 enable_asm=no
467 AC_MSG_RESULT([no, cross compiling])
468 ;;
469 esac
470fi
471# check for supported arches
472if test "x$enable_asm" = xyes; then
473 case "$host_cpu" in
474 i?86)
475 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700476 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700477 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
478 ;;
479 esac
480 ;;
481 x86_64)
482 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700483 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700484 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
485 ;;
486 esac
487 ;;
488 powerpc)
489 case "$host_os" in
490 linux*)
491 asm_arch=ppc
492 ;;
493 esac
494 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800495 sparc*)
496 case "$host_os" in
497 linux*)
498 asm_arch=sparc
499 ;;
500 esac
501 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700502 esac
503
504 case "$asm_arch" in
505 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800506 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800507 MESA_ASM_SOURCES='$(X86_SOURCES)'
508 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700509 AC_MSG_RESULT([yes, x86])
510 ;;
511 x86_64)
512 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800513 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
514 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700515 AC_MSG_RESULT([yes, x86_64])
516 ;;
517 ppc)
518 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800519 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700520 AC_MSG_RESULT([yes, ppc])
521 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800522 sparc)
523 ASM_FLAGS="-DUSE_SPARC_ASM"
524 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
525 GLAPI_ASM_SOURCES='$(SPARC_API)'
526 AC_MSG_RESULT([yes, sparc])
527 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700528 *)
529 AC_MSG_RESULT([no, platform not supported])
530 ;;
531 esac
532fi
533AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800534AC_SUBST([MESA_ASM_SOURCES])
535AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700536
537dnl PIC code macro
538MESA_PIC_FLAGS
539
540dnl Check to see if dlopen is in default libraries (like Solaris, which
541dnl has it in libc), or if libdl is needed to get it.
542AC_CHECK_FUNC([dlopen], [],
543 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800544AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700545
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700546dnl See if posix_memalign is available
547AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
548
Dan Nicholson871125a2008-06-04 13:00:35 -0700549dnl SELinux awareness.
550AC_ARG_ENABLE([selinux],
551 [AS_HELP_STRING([--enable-selinux],
552 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
553 [MESA_SELINUX="$enableval"],
554 [MESA_SELINUX=no])
555if test "x$enable_selinux" = "xyes"; then
556 AC_CHECK_HEADER([selinux/selinux.h],[],
557 [AC_MSG_ERROR([SELinux headers not found])])
558 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
559 [AC_MSG_ERROR([SELinux library not found])])
560 SELINUX_LIBS="-lselinux"
561 DEFINES="$DEFINES -DMESA_SELINUX"
562fi
563
Marek Olšák440d71d2011-06-14 05:38:58 +0200564dnl Options for APIs
Chia-I Wube5f34a2010-10-27 16:14:27 +0800565AC_ARG_ENABLE([opengl],
566 [AS_HELP_STRING([--disable-opengl],
567 [disable support for standard OpenGL API @<:@default=no@:>@])],
568 [enable_opengl="$enableval"],
569 [enable_opengl=yes])
570AC_ARG_ENABLE([gles1],
571 [AS_HELP_STRING([--enable-gles1],
572 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
573 [enable_gles1="$enableval"],
574 [enable_gles1=no])
575AC_ARG_ENABLE([gles2],
576 [AS_HELP_STRING([--enable-gles2],
577 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
578 [enable_gles2="$enableval"],
579 [enable_gles2=no])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800580AC_ARG_ENABLE([openvg],
581 [AS_HELP_STRING([--enable-openvg],
582 [enable support for OpenVG API @<:@default=no@:>@])],
583 [enable_openvg="$enableval"],
584 [enable_openvg=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900585
586AC_ARG_ENABLE([dri],
587 [AS_HELP_STRING([--enable-dri],
588 [enable DRI modules @<:@default=auto@:>@])],
589 [enable_dri="$enableval"],
590 [enable_dri=auto])
591AC_ARG_ENABLE([glx],
592 [AS_HELP_STRING([--enable-glx],
593 [enable GLX library @<:@default=auto@:>@])],
594 [enable_glx="$enableval"],
595 [enable_glx=auto])
596AC_ARG_ENABLE([osmesa],
597 [AS_HELP_STRING([--enable-osmesa],
598 [enable OSMesa library @<:@default=auto@:>@])],
599 [enable_osmesa="$enableval"],
600 [enable_osmesa=auto])
601AC_ARG_ENABLE([egl],
602 [AS_HELP_STRING([--disable-egl],
603 [disable EGL library @<:@default=enabled@:>@])],
604 [enable_egl="$enableval"],
605 [enable_egl=yes])
606
Marek Olšák440d71d2011-06-14 05:38:58 +0200607AC_ARG_ENABLE([xorg],
608 [AS_HELP_STRING([--enable-xorg],
609 [enable support for X.Org DDX API @<:@default=no@:>@])],
610 [enable_xorg="$enableval"],
611 [enable_xorg=no])
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200612AC_ARG_ENABLE([xa],
613 [AS_HELP_STRING([--enable-xa],
614 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
615 [enable_xa="$enableval"],
616 [enable_xa=no])
Marek Olšák440d71d2011-06-14 05:38:58 +0200617AC_ARG_ENABLE([d3d1x],
618 [AS_HELP_STRING([--enable-d3d1x],
619 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
620 [enable_d3d1x="$enableval"],
621 [enable_d3d1x=no])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200622AC_ARG_ENABLE([gbm],
623 [AS_HELP_STRING([--enable-gbm],
624 [enable gbm library @<:@default=auto@:>@])],
625 [enable_gbm="$enableval"],
626 [enable_gbm=auto])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900627
Christian Königc3b22302011-07-04 15:04:41 +0200628AC_ARG_ENABLE([xvmc],
629 [AS_HELP_STRING([--enable-xvmc],
630 [enable xvmc library @<:@default=auto@:>@])],
631 [enable_xvmc="$enableval"],
632 [enable_xvmc=auto])
633AC_ARG_ENABLE([vdpau],
634 [AS_HELP_STRING([--enable-vdpau],
635 [enable vdpau library @<:@default=auto@:>@])],
636 [enable_vdpau="$enableval"],
637 [enable_vdpau=auto])
638AC_ARG_ENABLE([va],
639 [AS_HELP_STRING([--enable-va],
640 [enable va library @<:@default=auto@:>@])],
641 [enable_va="$enableval"],
642 [enable_va=auto])
643
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900644AC_ARG_ENABLE([xlib_glx],
645 [AS_HELP_STRING([--enable-xlib-glx],
646 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
647 [enable_xlib_glx="$enableval"],
648 [enable_xlib_glx=auto])
Marek Olšák1251e1d2011-06-18 20:33:55 +0200649AC_ARG_ENABLE([gallium_egl],
650 [AS_HELP_STRING([--enable-gallium-egl],
651 [enable optional EGL state tracker (not required
652 for EGL support in Gallium with OpenGL and OpenGL ES)
653 @<:@default=disable@:>@])],
654 [enable_gallium_egl="$enableval"],
655 [enable_gallium_egl=no])
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200656AC_ARG_ENABLE([gallium_gbm],
657 [AS_HELP_STRING([--enable-gallium-gbm],
658 [enable optional gbm state tracker (not required for
659 gbm support in Gallium)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200660 @<:@default=auto@:>@])],
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200661 [enable_gallium_gbm="$enableval"],
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200662 [enable_gallium_gbm=auto])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800663
Marek Olšák58b6a192011-06-14 07:46:59 +0200664# Option for Gallium drivers
Thomas Hellstrom87118d82012-01-12 12:10:53 +0100665GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
Marek Olšák58b6a192011-06-14 07:46:59 +0200666
667AC_ARG_WITH([gallium-drivers],
668 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
669 [comma delimited Gallium drivers list, e.g.
Daniel Vetter8f15c312011-11-28 22:24:26 +0100670 "i915,nouveau,r300,r600,svga,swrast"
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200671 @<:@default=r300,r600,swrast@:>@])],
Marek Olšák58b6a192011-06-14 07:46:59 +0200672 [with_gallium_drivers="$withval"],
673 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
Chia-I Wu156e9552010-10-30 14:26:01 +0800674
Ian Romanickdb311b42011-06-22 11:35:27 -0700675# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
676# here so that the script doesn't choke on an unknown driver name later.
677case "$with_gallium_drivers" in
678 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
679 no) with_gallium_drivers='' ;;
680esac
681
Chia-I Wube5f34a2010-10-27 16:14:27 +0800682if test "x$enable_opengl" = xno -a \
683 "x$enable_gles1" = xno -a \
684 "x$enable_gles2" = xno -a \
Marek Olšák440d71d2011-06-14 05:38:58 +0200685 "x$enable_openvg" = xno -a \
686 "x$enable_xorg" = xno -a \
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200687 "x$enable_xa" = xno -a \
Christian Königc3b22302011-07-04 15:04:41 +0200688 "x$enable_d3d1x" = xno -a \
689 "x$enable_xvmc" = xno -a \
690 "x$enable_vdpau" = xno -a \
691 "x$enable_va" = xno; then
Chia-I Wube5f34a2010-10-27 16:14:27 +0800692 AC_MSG_ERROR([at least one API should be enabled])
693fi
694
695API_DEFINES=""
Chia-I Wube5f34a2010-10-27 16:14:27 +0800696if test "x$enable_opengl" = xno; then
697 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
698else
699 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
700fi
701if test "x$enable_gles1" = xyes; then
702 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
703fi
704if test "x$enable_gles2" = xyes; then
705 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
706fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800707AC_SUBST([API_DEFINES])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800708
Chia-I Wue8c7d752010-12-26 18:24:13 +0800709AC_ARG_ENABLE([shared-glapi],
710 [AS_HELP_STRING([--enable-shared-glapi],
711 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
712 [enable_shared_glapi="$enableval"],
713 [enable_shared_glapi=no])
714
715SHARED_GLAPI="0"
716if test "x$enable_shared_glapi" = xyes; then
717 SHARED_GLAPI="1"
718fi
719AC_SUBST([SHARED_GLAPI])
720
Kenneth Graunke9d21b5d2012-01-04 23:49:18 -0800721dnl
722dnl Driver configuration. Options are xlib, dri and osmesa right now.
723dnl More later: fbdev, ...
724dnl
725default_driver="xlib"
726
727case "$host_os" in
728linux*)
729 case "$host_cpu" in
730 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
731 esac
732 ;;
733*freebsd* | dragonfly* | *netbsd*)
734 case "$host_cpu" in
735 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
736 esac
737 ;;
738esac
739
740if test "x$enable_opengl" = xno; then
741 default_driver="no"
742fi
743
744AC_ARG_WITH([driver],
745 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
746 [mesa_driver="$withval"],
747 [mesa_driver=auto])
748dnl Check for valid option
749case "x$mesa_driver" in
750xxlib|xdri|xosmesa|xno)
751 if test "x$enable_dri" != xauto -o \
752 "x$enable_glx" != xauto -o \
753 "x$enable_osmesa" != xauto -o \
754 "x$enable_xlib_glx" != xauto; then
755 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
756 fi
757 ;;
758xauto)
759 mesa_driver="$default_driver"
760 ;;
761*)
762 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
763 ;;
764esac
765
766# map $mesa_driver to APIs
767if test "x$enable_dri" = xauto; then
768 case "x$mesa_driver" in
769 xdri) enable_dri=yes ;;
770 *) enable_dri=no ;;
771 esac
772fi
773
774if test "x$enable_glx" = xauto; then
775 case "x$mesa_driver" in
776 xdri|xxlib) enable_glx=yes ;;
777 *) enable_glx=no ;;
778 esac
779fi
780
781if test "x$enable_osmesa" = xauto; then
782 case "x$mesa_driver" in
783 xxlib|xosmesa) enable_osmesa=yes ;;
784 *) enable_osmesa=no ;;
785 esac
786fi
787
788if test "x$enable_xlib_glx" = xauto; then
789 case "x$mesa_driver" in
790 xxlib) enable_xlib_glx=yes ;;
791 *) enable_xlib_glx=no ;;
792 esac
793fi
794
795if test "x$enable_glx" = xno; then
796 enable_xlib_glx=no
797fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900798
Dan Nicholson44d99142007-12-05 18:47:01 -0800799dnl
800dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700801dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800802
803dnl this variable will be prepended to SRC_DIRS and is not exported
Chia-I Wube5f34a2010-10-27 16:14:27 +0800804CORE_DIRS=""
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800805
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200806SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700807GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100808GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000809GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000810GALLIUM_WINSYS_DIRS="sw"
Kai Wasserbäch0a22fb62011-11-29 22:36:02 +0100811GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100812GALLIUM_STATE_TRACKERS_DIRS=""
813
Chia-I Wue8c7d752010-12-26 18:24:13 +0800814# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
Jon TURNEYaa6a5cf2011-02-16 13:37:57 +0000815case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800816x*yes*)
817 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
818 ;;
819esac
820
Chia-I Wube5f34a2010-10-27 16:14:27 +0800821# build glapi if OpenGL is enabled
822if test "x$enable_opengl" = xyes; then
823 CORE_DIRS="$CORE_DIRS mapi/glapi"
824fi
825
Chia-I Wu12583172011-01-07 17:24:16 +0800826# build es1api if OpenGL ES 1.x is enabled
827if test "x$enable_gles1" = xyes; then
828 CORE_DIRS="$CORE_DIRS mapi/es1api"
829fi
830
831# build es2api if OpenGL ES 2.x is enabled
832if test "x$enable_gles2" = xyes; then
833 CORE_DIRS="$CORE_DIRS mapi/es2api"
834fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800835
Chia-I Wube5f34a2010-10-27 16:14:27 +0800836# build glsl and mesa if OpenGL or OpenGL ES is enabled
Chia-I Wu12583172011-01-07 17:24:16 +0800837case "x$enable_opengl$enable_gles1$enable_gles2" in
Chia-I Wube5f34a2010-10-27 16:14:27 +0800838x*yes*)
839 CORE_DIRS="$CORE_DIRS glsl mesa"
840 ;;
841esac
842
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900843case "x$enable_glx$enable_xlib_glx" in
844xyesyes)
845 DRIVER_DIRS="$DRIVER_DIRS x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000846 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000847 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Marek Olšák440d71d2011-06-14 05:38:58 +0200848 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
Younes Mantonb97816d2011-07-14 12:22:20 -0400849 HAVE_WINSYS_XLIB="yes"
Dan Nicholson44d99142007-12-05 18:47:01 -0800850 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900851xyesno)
852 # DRI-based GLX
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500853 SRC_DIRS="$SRC_DIRS glx"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900854 ;;
855esac
856
857if test "x$enable_dri" = xyes; then
858 DRIVER_DIRS="$DRIVER_DIRS dri"
859
Emil Velikov4ef9c3d2011-07-11 15:58:29 +0100860 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
Marek Olšák440d71d2011-06-14 05:38:58 +0200861 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
862 HAVE_ST_DRI="yes"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900863fi
864
865if test "x$enable_osmesa" = xyes; then
866 # the empty space matters for osmesa... (see src/mesa/Makefile)
867 if test -n "$DRIVER_DIRS"; then
868 DRIVER_DIRS="$DRIVER_DIRS osmesa"
869 else
870 DRIVER_DIRS="osmesa"
871 fi
872fi
873
Dan Nicholson297e16c2008-05-05 15:42:53 -0700874AC_SUBST([SRC_DIRS])
875AC_SUBST([GLU_DIRS])
876AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100877AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000878AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100879AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000880AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100881AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000882AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700883
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900884# Check for libdrm
885PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
886 [have_libdrm=yes], [have_libdrm=no])
887
888if test "x$enable_dri" = xyes; then
889 # DRI must be shared, I think
890 if test "$enable_static" = yes; then
891 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
892 fi
893
Chia-I Wu81239342011-07-02 09:49:17 +0900894 # not a hard requirement as swrast does not depend on it
895 if test "x$have_libdrm" = xyes; then
896 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900897 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900898fi
899
Dan Nicholsondca1b792007-10-23 09:25:58 -0700900dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700901dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700902dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700903dnl
904if test -n "$PKG_CONFIG"; then
905 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700906 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700907 x11_pkgconfig=yes
908 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700909 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700910 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700911 ])
912 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700913else
914 x11_pkgconfig=no
915fi
916dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600917if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700918 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600919else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700920 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700921 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
922 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
923 AC_SUBST([X11_CFLAGS])
924 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700925fi
926
Dan Nicholson99803a42008-07-01 09:03:15 -0700927dnl Try to tell the user that the --x-* options are only used when
928dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
929m4_divert_once([HELP_BEGIN],
930[These options are only used when the X libraries cannot be found by the
931pkg-config utility.])
932
Dan Nicholson44d99142007-12-05 18:47:01 -0800933dnl We need X for xlib and dri, so bomb now if it's not found
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900934if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
935 AC_MSG_ERROR([X11 development libraries needed for GLX])
936fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700937
Ian Romanickb518dfb2012-01-02 17:44:30 -0800938if test "x$enable_glx" = xyes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700939 DEFINES="$DEFINES -DUSE_XCB"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700940fi
941
Samuel Thibault75856172011-03-14 22:08:21 +0000942dnl Direct rendering or just indirect rendering
noblede7d18ed2011-03-14 22:08:22 +0000943case "$host_os" in
944gnu*)
945 dnl Disable by default on GNU/Hurd
946 driglx_direct_default="no"
947 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +0000948cygwin*)
949 dnl Disable by default on cygwin
950 driglx_direct_default="no"
951 ;;
noblede7d18ed2011-03-14 22:08:22 +0000952*)
953 driglx_direct_default="yes"
954 ;;
955esac
Samuel Thibault75856172011-03-14 22:08:21 +0000956AC_ARG_ENABLE([driglx-direct],
957 [AS_HELP_STRING([--disable-driglx-direct],
958 [enable direct rendering in GLX and EGL for DRI \
noblede7d18ed2011-03-14 22:08:22 +0000959 @<:@default=auto@:>@])],
Samuel Thibault75856172011-03-14 22:08:21 +0000960 [driglx_direct="$enableval"],
noblede7d18ed2011-03-14 22:08:22 +0000961 [driglx_direct="$driglx_direct_default"])
Samuel Thibault75856172011-03-14 22:08:21 +0000962
Dan Nicholson44d99142007-12-05 18:47:01 -0800963dnl
964dnl libGL configuration per driver
965dnl
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900966case "x$enable_glx$enable_xlib_glx" in
967xyesyes)
968 # Xlib-based GLX
Dan Nicholson44d99142007-12-05 18:47:01 -0800969 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700970 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800971 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800972 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
973 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800974 else
975 # should check these...
976 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
977 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800978 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
979 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800980 fi
Marek Olšák0aed27e2011-07-26 01:05:51 +0200981 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
Kenneth Graunked1d812052011-01-16 16:01:54 -0800982 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson44d99142007-12-05 18:47:01 -0800983 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900984xyesno)
985 # DRI-based GLX
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500986 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Samuel Thibault75856172011-03-14 22:08:21 +0000987 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000988 if test x"$driglx_direct" = xyes; then
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900989 if test "x$have_libdrm" != xyes; then
990 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
991 fi
Samuel Thibault75856172011-03-14 22:08:21 +0000992 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
993 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000994 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800995
996 # find the DRI deps for libGL
997 if test "$x11_pkgconfig" = yes; then
Ian Romanickb518dfb2012-01-02 17:44:30 -0800998 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
Jon TURNEY2b9dac32010-04-21 12:58:54 +0100999
1000 # add xf86vidmode if available
1001 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1002 if test "$HAVE_XF86VIDMODE" = yes ; then
1003 dri_modules="$dri_modules xxf86vm"
1004 fi
1005
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001006 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001007 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -08001008 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1009 GL_LIB_DEPS="$DRIGL_LIBS"
1010 else
1011 # should check these...
1012 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
Alan Hourihane64799222011-06-28 17:40:24 +01001013 if test "x$HAVE_XF86VIDMODE" == xyes; then
1014 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1015 else
1016 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1017 fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001018 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1019 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001020
1021 # XCB can only be used from pkg-config
Ian Romanickb518dfb2012-01-02 17:44:30 -08001022 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1023 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1024 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1025 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001026 fi
1027
Ian Romanick4becf672012-01-03 11:35:59 -08001028 # Check to see if the xcb-glx library is new enough to support
1029 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1030 # is released.
1031 save_CPPFLAGS="$CPPFLAGS"
1032 save_LDFLAGS="$LDFLAGS"
1033 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1034 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1035 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1036 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1037 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1038 CPPFLAGS="$save_CPPFLAGS"
1039 LDFLAGS="$save_LDFLAGS"
1040
1041 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1042 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1043 fi
1044
Dan Nicholson44d99142007-12-05 18:47:01 -08001045 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001046 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1047 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -08001048 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001049esac
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001050
Ian Romanick4becf672012-01-03 11:35:59 -08001051# This is outside the case (above) so that it is invoked even for non-GLX
1052# builds.
1053AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1054 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1055
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001056GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1057GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1058GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1059GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1060
Dan Nicholson297e16c2008-05-05 15:42:53 -07001061AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001062AC_SUBST([GL_PC_REQ_PRIV])
1063AC_SUBST([GL_PC_LIB_PRIV])
1064AC_SUBST([GL_PC_CFLAGS])
1065AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +08001066AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001067AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -05001068AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001069AC_SUBST([GLESv2_PC_LIB_PRIV])
1070
Chia-I Wu0c771e22011-11-04 16:32:17 +08001071GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
Chia-I Wu9767d3b2010-12-26 18:02:59 +08001072AC_SUBST([GLAPI_LIB_DEPS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001073
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001074
1075dnl Setup default DRI CFLAGS
1076DRI_CFLAGS='$(CFLAGS)'
1077DRI_CXXFLAGS='$(CXXFLAGS)'
1078DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1079MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1080
1081AC_ARG_ENABLE([shared-dricore],
1082 [AS_HELP_STRING([--enable-shared-dricore],
1083 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1084 [enable_dricore="$enableval"],
1085 [enable_dricore=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001086if test "x$enable_dri" = xyes ; then
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001087 if test "$enable_dricore" = yes ; then
1088 if test "$GCC$GXX" != yesyes ; then
1089 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
1090 enable_dricore=no
1091 else
1092 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1093 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1094 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1095 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1096 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1097 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1098 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1099 fi
1100 fi
1101fi
1102AC_SUBST([DRICORE_LIBS])
1103AC_SUBST([DRICORE_GLSL_LIBS])
1104AC_SUBST([DRICORE_LIB_DEPS])
1105AC_SUBST([DRI_CXXFLAGS])
1106AC_SUBST([DRI_CFLAGS])
1107AC_SUBST([MESA_MODULES])
1108
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001109AC_SUBST([HAVE_XF86VIDMODE])
1110
Dan Nicholsondca1b792007-10-23 09:25:58 -07001111dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001112dnl More GLX setup
Dan Nicholsondca1b792007-10-23 09:25:58 -07001113dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001114case "x$enable_glx$enable_xlib_glx" in
1115xyesyes)
Dan Nicholsondca1b792007-10-23 09:25:58 -07001116 DEFINES="$DEFINES -DUSE_XSHM"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001117 ;;
1118xyesno)
1119 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1120 if test "x$driglx_direct" = xyes; then
1121 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1122 fi
1123 ;;
1124esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001125
1126dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001127dnl TLS detection
Dan Nicholson44d99142007-12-05 18:47:01 -08001128dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001129
Dan Nicholson297e16c2008-05-05 15:42:53 -07001130AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -08001131 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001132 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001133 [GLX_USE_TLS="$enableval"],
1134 [GLX_USE_TLS=no])
Tom Fogal31351dc2010-12-05 17:58:32 -07001135AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1136
Tom Fogal44842972011-02-21 22:32:18 -07001137AS_IF([test "x$GLX_USE_TLS" = xyes],
1138 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1139
Tom Fogal31351dc2010-12-05 17:58:32 -07001140dnl
1141dnl More DRI setup
1142dnl
Dan Nicholson44d99142007-12-05 18:47:01 -08001143dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -07001144AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001145 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001146 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001147 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001148 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -07001149AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +08001150dnl Extra search path for DRI drivers
1151AC_ARG_WITH([dri-searchpath],
1152 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1153 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1154 [DRI_DRIVER_SEARCH_DIR="$withval"],
1155 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1156AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001157dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -07001158AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001159 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -07001160 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +02001161 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001162 [with_dri_drivers="$withval"],
1163 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001164if test "x$with_dri_drivers" = x; then
1165 with_dri_drivers=no
1166fi
1167
1168dnl If $with_dri_drivers is yes, directories will be added through
1169dnl platform checks
1170DRI_DIRS=""
1171case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001172no) ;;
1173yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001174 # classic DRI drivers require FEATURE_GL to build
1175 if test "x$enable_opengl" = xyes; then
1176 DRI_DIRS="yes"
1177 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001178 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001179*)
1180 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -07001181 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001182 for driver in $dri_drivers; do
1183 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1184 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1185 done
1186 DRI_DIRS="$dri_drivers"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001187 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1188 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1189 fi
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001190 ;;
1191esac
1192
Dan Nicholson44d99142007-12-05 18:47:01 -08001193dnl Set DRI_DIRS, DEFINES and LIB_DEPS
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001194if test "x$enable_dri" = xyes; then
Dan Nicholson44d99142007-12-05 18:47:01 -08001195 # Platform specific settings and drivers to build
1196 case "$host_os" in
1197 linux*)
1198 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001199 DEFINES="$DEFINES -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001200
1201 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -08001202 x86_64)
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001203 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001204 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001205 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001206 ;;
1207 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -08001208 # Build only the drivers for cards that exist on PowerPC.
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001209 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001210 DRI_DIRS="r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001211 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001212 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001213 sparc*)
Ian Romanicke4344162011-08-24 15:21:58 -07001214 # Build only the drivers for cards that exist on sparc
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001215 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001216 DRI_DIRS="r200 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001217 fi
1218 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001219 esac
1220 ;;
Pierre Allegraud8fd8de32011-01-06 07:58:57 -07001221 freebsd* | dragonfly* | *netbsd*)
Dan Nicholson44d99142007-12-05 18:47:01 -08001222 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1223 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001224
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001225 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001226 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001227 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001228 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001229 gnu*)
1230 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001231 DEFINES="$DEFINES -DHAVE_ALIAS"
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001232 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001233 solaris*)
1234 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001235 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001236 cygwin*)
1237 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001238 if test "x$DRI_DIRS" = "xyes"; then
1239 DRI_DIRS="swrast"
1240 fi
1241 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001242 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -08001243
1244 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001245 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001246 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -08001247 fi
1248
Dan Nicholson44d99142007-12-05 18:47:01 -08001249 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1250
1251 # Check for expat
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001252 if test "x$enable_dri" = xyes; then
Chia-I Wube5f34a2010-10-27 16:14:27 +08001253 EXPAT_INCLUDES=""
1254 EXPAT_LIB=-lexpat
1255 AC_ARG_WITH([expat],
1256 [AS_HELP_STRING([--with-expat=DIR],
1257 [expat install directory])],[
1258 EXPAT_INCLUDES="-I$withval/include"
1259 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1260 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1261 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1262 ])
1263 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1264 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1265 [AC_MSG_ERROR([Expat required for DRI.])])
1266 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001267
Chia-I Wu81239342011-07-02 09:49:17 +09001268 # libdrm is required for all except swrast
1269 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1270 if test "x$have_libdrm" != xyes; then
1271 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1272 fi
1273 fi
1274
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001275 # put all the necessary libs together, including possibly libdricore
1276 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001277fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001278AC_SUBST([DRI_DIRS])
1279AC_SUBST([EXPAT_INCLUDES])
1280AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -08001281
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001282case $DRI_DIRS in
1283*i915*|*i965*)
Tormod Volden903185b2011-01-25 13:25:18 -08001284 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001285 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001286esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001287
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001288case $DRI_DIRS in
Johannes Obermayr873379a2011-06-02 17:15:44 -06001289*nouveau*)
1290 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1291 ;;
1292esac
1293
1294case $DRI_DIRS in
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001295*radeon*|*r200*)
Eric Anholt830e5462011-10-14 14:34:19 -07001296 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001297 ;;
1298esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001299
1300
Dan Nicholson44d99142007-12-05 18:47:01 -08001301dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001302dnl OSMesa configuration
1303dnl
Dan Nicholson979ff512007-12-05 18:47:01 -08001304
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001305dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -07001306AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001307 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1308 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001309 [osmesa_bits="$withval"],
1310 [osmesa_bits=8])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001311if test "x$osmesa_bits" != x8; then
1312 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1313 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1314 osmesa_bits=8
1315 fi
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001316fi
1317case "x$osmesa_bits" in
1318x8)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001319 OSMESA_LIB="${OSMESA_LIB}"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001320 ;;
1321x16|x32)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001322 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001323 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1324 ;;
1325*)
1326 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1327 ;;
1328esac
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001329
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001330if test "x$enable_osmesa" = xyes; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001331 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -08001332 if test "$enable_static" = no; then
Kenneth Graunked1d812052011-01-16 16:01:54 -08001333 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -08001334 else
1335 OSMESA_LIB_DEPS=""
1336 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001337 OSMESA_MESA_DEPS=""
Kenneth Graunked1d812052011-01-16 16:01:54 -08001338 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001339fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001340AC_SUBST([OSMESA_LIB_DEPS])
1341AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001342AC_SUBST([OSMESA_PC_REQ])
1343AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001344
1345dnl
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001346dnl gbm configuration
1347dnl
1348if test "x$enable_gbm" = xauto; then
1349 case "$with_egl_platforms" in
1350 *drm*)
1351 enable_gbm=yes ;;
1352 *)
1353 enable_gbm=no ;;
1354 esac
1355fi
1356if test "x$enable_gbm" = xyes; then
1357 SRC_DIRS="$SRC_DIRS gbm"
1358 GBM_BACKEND_DIRS=""
1359
1360 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1361 AC_MSG_ERROR([gbm needs udev]))
1362 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1363
1364 if test "x$enable_dri" = xyes; then
1365 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1366 if test "$SHARED_GLAPI" -eq 0; then
1367 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1368 fi
1369 fi
1370fi
1371AC_SUBST([GBM_LIB_DEPS])
1372AC_SUBST([GBM_BACKEND_DIRS])
1373GBM_PC_REQ_PRIV="libudev"
1374GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1375GBM_PC_CFLAGS=
1376AC_SUBST([GBM_PC_REQ_PRIV])
1377AC_SUBST([GBM_PC_LIB_PRIV])
1378AC_SUBST([GBM_PC_CFLAGS])
1379
1380dnl
Dan Nicholson53b37342009-02-25 17:45:34 -08001381dnl EGL configuration
1382dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001383EGL_CLIENT_APIS=""
1384
Dan Nicholson66f97862009-04-29 12:11:43 -07001385if test "x$enable_egl" = xyes; then
1386 SRC_DIRS="$SRC_DIRS egl"
Tapani Pälli2758e652011-05-16 16:56:43 +03001387 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001388 EGL_DRIVERS_DIRS=""
Marek Olšákad50abba2011-06-14 05:14:27 +02001389
Benjamin Franzke85fe9482011-08-09 14:23:18 +02001390 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1391
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001392 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001393 # build egl_glx when libGL is built
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001394 if test "x$enable_glx" = xyes; then
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001395 EGL_DRIVERS_DIRS="glx"
1396 fi
1397
Benjamin Franzke184bb092011-04-30 11:18:23 +02001398 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1399 [have_libudev=yes],[have_libudev=no])
Benjamin Franzkea7cd65f2011-05-31 11:14:46 +02001400 if test "$have_libudev" = yes; then
1401 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1402 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001403 if test "x$enable_dri" = xyes; then
Chia-I Wu39ae9652010-07-16 19:48:52 +08001404 # build egl_dri2 when xcb-dri2 is available
1405 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1406 [have_xcb_dri2=yes],[have_xcb_dri2=no])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001407
1408 if test "$have_xcb_dri2" = yes; then
1409 EGL_DRIVER_DRI2=dri2
1410 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
Benjamin Franzke4ca075a2011-03-02 21:23:04 +01001411 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1412 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1413 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001414 fi
1415 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001416
1417 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001418 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001419fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001420AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001421AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001422
1423dnl
Marek Olšák1251e1d2011-06-18 20:33:55 +02001424dnl EGL Gallium configuration
1425dnl
1426if test "x$enable_gallium_egl" = xyes; then
1427 if test "x$with_gallium_drivers" = x; then
1428 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1429 fi
1430 if test "x$enable_egl" = xno; then
1431 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1432 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +09001433 if test "x$have_libdrm" != xyes; then
1434 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1435 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001436
1437 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wub8f097f2011-06-20 12:01:39 +09001438 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
Marek Olšák1251e1d2011-06-18 20:33:55 +02001439 HAVE_ST_EGL="yes"
1440fi
1441
1442dnl
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001443dnl gbm Gallium configuration
1444dnl
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001445if test "x$enable_gallium_gbm" = xauto; then
Chia-I Wu95ef0692011-11-05 15:09:36 +08001446 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1447 yesyesyes*drm*)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001448 enable_gallium_gbm=yes ;;
1449 *)
1450 enable_gallium_gbm=no ;;
1451 esac
1452fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001453if test "x$enable_gallium_gbm" = xyes; then
1454 if test "x$with_gallium_drivers" = x; then
1455 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1456 fi
1457 if test "x$enable_gbm" = xno; then
1458 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1459 fi
Chia-I Wu95ef0692011-11-05 15:09:36 +08001460 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1461 if test "x$enable_dri" = xno; then
1462 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1463 fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001464
1465 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1466 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1467 HAVE_ST_GBM="yes"
1468fi
1469
1470dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001471dnl X.Org DDX configuration
1472dnl
1473if test "x$enable_xorg" = xyes; then
1474 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1475 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1476 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1477 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1478 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1479 HAVE_XEXTPROTO_71="no")
1480 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1481 HAVE_ST_XORG=yes
1482fi
1483
1484dnl
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001485dnl XA configuration
1486dnl
1487if test "x$enable_xa" = xyes; then
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001488AC_PROG_AWK
1489AC_PROG_GREP
1490AC_CHECK_PROG(NM, nm, "nm")
1491if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1492AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1493enable_xa=no
1494fi
1495fi
1496if test "x$enable_xa" = xyes; then
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001497 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1498 HAVE_ST_XA=yes
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001499 AC_SUBST(AWK)
1500 AC_SUBST(GREP)
1501 AC_SUBST(NM)
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001502fi
1503
1504dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001505dnl OpenVG configuration
1506dnl
1507VG_LIB_DEPS=""
1508
1509if test "x$enable_openvg" = xyes; then
1510 if test "x$enable_egl" = xno; then
1511 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1512 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001513 if test "x$with_gallium_drivers" = x; then
Marek Olšák440d71d2011-06-14 05:38:58 +02001514 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1515 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001516 if test "x$enable_gallium_egl" = xno; then
1517 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1518 fi
Marek Olšák440d71d2011-06-14 05:38:58 +02001519
1520 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1521 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1522 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1523 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1524 HAVE_ST_VEGA=yes
1525fi
1526
1527dnl
1528dnl D3D1X configuration
1529dnl
1530
1531if test "x$enable_d3d1x" = xyes; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001532 if test "x$with_gallium_drivers" = x; then
1533 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1534 fi
1535
Marek Olšák440d71d2011-06-14 05:38:58 +02001536 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1537 HAVE_ST_D3D1X=yes
1538fi
1539
1540dnl
Christian Königc3b22302011-07-04 15:04:41 +02001541dnl Gallium G3DVL configuration
1542dnl
1543AC_ARG_ENABLE([gallium-g3dvl],
1544 [AS_HELP_STRING([--enable-gallium-g3dvl],
1545 [build gallium g3dvl @<:@default=disabled@:>@])],
1546 [enable_gallium_g3dvl="$enableval"],
1547 [enable_gallium_g3dvl=no])
1548if test "x$enable_gallium_g3dvl" = xyes; then
1549 if test "x$with_gallium_drivers" = x; then
1550 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1551 fi
1552
1553 if test "x$enable_xvmc" = xauto; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001554 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
Christian Königc3b22302011-07-04 15:04:41 +02001555 fi
1556
1557 if test "x$enable_vdpau" = xauto; then
Christian König33bf4102011-07-14 13:57:23 +02001558 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001559 fi
1560
1561 if test "x$enable_va" = xauto; then
Christian König8619aa52011-07-14 14:09:25 +02001562 #don't enable vaapi state tracker even if package exists
1563 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001564 enable_va=no
1565 fi
1566fi
1567
Christian Königc3b22302011-07-04 15:04:41 +02001568if test "x$enable_xvmc" = xyes; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001569 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
Christian Königc3b22302011-07-04 15:04:41 +02001570 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1571 HAVE_ST_XVMC="yes"
1572fi
1573
Christian Königc3b22302011-07-04 15:04:41 +02001574if test "x$enable_vdpau" = xyes; then
Christian König33bf4102011-07-14 13:57:23 +02001575 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
Christian Königc3b22302011-07-04 15:04:41 +02001576 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1577 HAVE_ST_VDPAU="yes"
1578fi
1579
Christian Königc3b22302011-07-04 15:04:41 +02001580if test "x$enable_va" = xyes; then
Christian König8619aa52011-07-14 14:09:25 +02001581 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1582 AC_MSG_WARN([vaapi state tracker currently unmaintained])
Christian Königc3b22302011-07-04 15:04:41 +02001583 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1584 HAVE_ST_VA="yes"
1585fi
1586
Christian Königc3b22302011-07-04 15:04:41 +02001587dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001588dnl GLU configuration
1589dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001590AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001591 [AS_HELP_STRING([--disable-glu],
1592 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001593 [enable_glu="$enableval"],
1594 [enable_glu=yes])
Chia-I Wube5f34a2010-10-27 16:14:27 +08001595
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001596if test "x$enable_glu" = xyes; then
1597 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1598 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1599 enable_glu=no
1600 fi
Chia-I Wube5f34a2010-10-27 16:14:27 +08001601fi
1602
Dan Nicholsondca1b792007-10-23 09:25:58 -07001603if test "x$enable_glu" = xyes; then
1604 SRC_DIRS="$SRC_DIRS glu"
1605
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001606 if test "x$enable_glx" = xno; then
Dan Nicholson979ff512007-12-05 18:47:01 -08001607 # Link libGLU to libOSMesa instead of libGL
1608 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001609 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001610 if test "$enable_static" = no; then
1611 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1612 else
1613 GLU_MESA_DEPS=""
1614 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001615 else
Dan Nicholson88586332007-11-15 08:59:57 -08001616 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001617 GLU_PC_REQ="gl"
1618 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001619 if test "$enable_static" = no; then
1620 GLU_LIB_DEPS="-lm"
1621 GLU_MESA_DEPS='-l$(GL_LIB)'
1622 else
1623 GLU_LIB_DEPS=""
1624 GLU_MESA_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -08001625 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001626 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001627fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001628if test "$enable_static" = no; then
1629 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1630fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001631GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001632AC_SUBST([GLU_LIB_DEPS])
1633AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001634AC_SUBST([GLU_PC_REQ])
1635AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001636AC_SUBST([GLU_PC_LIB_PRIV])
1637AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001638
Dan Nicholson297e16c2008-05-05 15:42:53 -07001639AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001640
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001641dnl
1642dnl Gallium configuration
1643dnl
Marek Olšák58b6a192011-06-14 07:46:59 +02001644if test "x$with_gallium_drivers" != x; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001645 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001646fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001647
Dave Airlie81fe1982010-04-22 14:59:29 +10001648AC_SUBST([LLVM_CFLAGS])
1649AC_SUBST([LLVM_LIBS])
1650AC_SUBST([LLVM_LDFLAGS])
1651AC_SUBST([LLVM_VERSION])
1652
Chia-I Wube5f34a2010-10-27 16:14:27 +08001653case "x$enable_opengl$enable_gles1$enable_gles2" in
1654x*yes*)
1655 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1656 ;;
1657esac
Chia-I Wube5f34a2010-10-27 16:14:27 +08001658
Chia-I Wu874ccd52010-05-04 22:43:05 +08001659AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001660AC_SUBST([EGL_CLIENT_APIS])
1661
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001662AC_ARG_WITH([egl-platforms],
1663 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1664 [comma delimited native platforms libEGL supports, e.g.
Chia-I Wue7424d72010-09-19 16:54:39 +08001665 "x11,drm" @<:@default=auto@:>@])],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001666 [with_egl_platforms="$withval"],
1667 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001668
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001669EGL_PLATFORMS=""
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001670WAYLAND_EGL_LIB_DEPS=""
1671
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001672case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001673yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001674 if test "x$enable_egl" = xyes; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001675 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001676 fi
1677 ;;
1678*)
1679 if test "x$enable_egl" != xyes; then
1680 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1681 fi
1682 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001683 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1684 for plat in $egl_platforms; do
1685 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
Kristian Høgsberg1a8899d2011-02-10 10:45:06 -05001686 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001687 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001688 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1689 fi
Chia-I Wua5f8d372011-09-20 14:01:45 +08001690 if test "$plat" = "null"; then
1691 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1692 fi
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001693 if test "$plat" = "wayland"; then
Benjamin Franzke6b369c42011-02-21 16:22:34 +01001694 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001695 [AC_MSG_ERROR([cannot find libwayland-client])])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001696 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
Benjamin Franzkeaaa3c0d2011-04-23 14:14:29 +02001697 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001698 fi
Benjamin Franzke9b8cd492011-07-02 13:46:09 +02001699 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
Benjamin Franzkee5fc4c82011-05-30 10:50:52 +02001700 AC_MSG_ERROR([EGL platform drm needs gbm])
1701 fi
Benjamin Franzke7ed18262011-07-02 13:46:42 +02001702 case "$plat$have_libudev" in
1703 waylandno|drmno)
1704 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1705 esac
Chia-I Wu49381d62010-01-11 01:23:01 +08001706 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001707 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001708 ;;
1709esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001710AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001711
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001712AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1713WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1714WAYLAND_EGL_PC_LIB_PRIV=
1715WAYLAND_EGL_PC_CFLAGS=
1716
1717AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1718AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1719AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1720
1721
Chia-I Wu28c3e572010-01-23 20:18:43 +08001722AC_ARG_WITH([egl-driver-dir],
1723 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1724 [directory for EGL drivers [[default=${libdir}/egl]]])],
1725 [EGL_DRIVER_INSTALL_DIR="$withval"],
1726 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1727AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1728
Joel Bosveld8acca482009-03-06 08:46:08 +09001729AC_ARG_WITH([xorg-driver-dir],
1730 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1731 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1732 [XORG_DRIVER_INSTALL_DIR="$withval"],
1733 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1734AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1735
Tom Fogal7085dce2009-08-13 19:40:30 -06001736AC_ARG_WITH([max-width],
1737 [AS_HELP_STRING([--with-max-width=N],
1738 [Maximum framebuffer width (4096)])],
1739 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1740 AS_IF([test "${withval}" -gt "4096"],
1741 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1742)
1743AC_ARG_WITH([max-height],
1744 [AS_HELP_STRING([--with-max-height=N],
1745 [Maximum framebuffer height (4096)])],
1746 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1747 AS_IF([test "${withval}" -gt "4096"],
1748 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1749)
1750
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001751dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001752dnl Gallium LLVM
1753dnl
1754AC_ARG_ENABLE([gallium-llvm],
1755 [AS_HELP_STRING([--enable-gallium-llvm],
Marek Olšáka86fc712011-04-21 13:27:55 +02001756 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
Dave Airlie81fe1982010-04-22 14:59:29 +10001757 [enable_gallium_llvm="$enableval"],
1758 [enable_gallium_llvm=auto])
Marek Olšák58b6a192011-06-14 07:46:59 +02001759if test "x$with_gallium_drivers" = x; then
1760 enable_gallium_llvm=no
1761fi
Marek Olšáka86fc712011-04-21 13:27:55 +02001762if test "x$enable_gallium_llvm" = xauto; then
1763 case "$host_cpu" in
1764 i*86|x86_64) enable_gallium_llvm=yes;;
1765 esac
1766fi
Dave Airlie81fe1982010-04-22 14:59:29 +10001767if test "x$enable_gallium_llvm" = xyes; then
Marek Olšák99fba502011-07-23 15:57:51 +02001768 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1769
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001770 if test "x$LLVM_CONFIG" != xno; then
ojab2fe6c252012-01-05 14:18:34 +04001771 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
Johannes Obermayraa284042011-12-19 23:11:46 +01001772 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
Marcin Slusarz75739042011-10-13 21:45:45 +02001773 LLVM_LIBS="`$LLVM_CONFIG --libs`"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001774
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001775 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
Marek Olšák67aba792011-06-27 08:25:09 +02001776 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001777 MESA_LLVM=1
1778 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001779 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001780 fi
1781else
1782 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001783fi
1784
Thomas Balling Sørensen32999972010-07-14 00:34:56 +02001785dnl Directory for VDPAU libs
1786AC_ARG_WITH([vdpau-libdir],
1787 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1788 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1789 [VDPAU_LIB_INSTALL_DIR="$withval"],
1790 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1791AC_SUBST([VDPAU_LIB_INSTALL_DIR])
Younes Manton40cd0822010-03-05 23:11:05 -05001792
Thomas Balling Sørensen501ac572010-10-24 19:27:29 +02001793dnl Directory for VA libs
1794AC_ARG_WITH([va-libdir],
1795 [AS_HELP_STRING([--with-va-libdir=DIR],
1796 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1797 [VA_LIB_INSTALL_DIR="$withval"],
1798 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1799AC_SUBST([VA_LIB_INSTALL_DIR])
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001800
Dave Airlie81fe1982010-04-22 14:59:29 +10001801dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001802dnl Gallium helper functions
1803dnl
1804gallium_check_st() {
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001805 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
Christian Königc3b22302011-07-04 15:04:41 +02001806 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1807 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
Chia-I Wu81239342011-07-02 09:49:17 +09001808 if test "x$have_libdrm" != xyes; then
1809 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1810 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001811 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1812 fi
1813 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1814 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1815 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001816 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001817 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1818 fi
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001819 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1820 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1821 fi
Christian Königc3b22302011-07-04 15:04:41 +02001822 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1823 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
Younes Mantonb97816d2011-07-14 12:22:20 -04001824 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001825 fi
1826 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1827 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
Younes Mantonb97816d2011-07-14 12:22:20 -04001828 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001829 fi
1830 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1831 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
Younes Mantonb97816d2011-07-14 12:22:20 -04001832 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001833 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001834}
1835
Marek Olšákc17fb852011-06-14 04:03:17 +02001836gallium_require_llvm() {
1837 if test "x$MESA_LLVM" = x0; then
1838 case "$host_cpu" in
1839 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1840 esac
1841 fi
1842}
1843
Marek Olšák58b6a192011-06-14 07:46:59 +02001844dnl Gallium drivers
Marek Olšák02c8ee22011-06-27 08:02:31 +02001845dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
Marek Olšák58b6a192011-06-14 07:46:59 +02001846if test "x$with_gallium_drivers" != x; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001847 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1848 for driver in $gallium_drivers; do
1849 case "x$driver" in
1850 xsvga)
Marek Olšák02c8ee22011-06-27 08:02:31 +02001851 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
Thomas Hellstromd742a642011-09-29 21:41:21 +02001852 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
Marek Olšák58b6a192011-06-14 07:46:59 +02001853 ;;
1854 xi915)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001855 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Marek Olšák02c8ee22011-06-27 08:02:31 +02001856 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1857 if test "x$MESA_LLVM" = x1; then
1858 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1859 fi
1860 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Marek Olšák58b6a192011-06-14 07:46:59 +02001861 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1862 ;;
Marek Olšák58b6a192011-06-14 07:46:59 +02001863 xr300)
1864 gallium_require_llvm "Gallium R300"
Marek Olšák02c8ee22011-06-27 08:02:31 +02001865 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1866 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
Marek Olšák58b6a192011-06-14 07:46:59 +02001867 ;;
1868 xr600)
1869 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
Marek Olšákbf0baa72011-09-27 16:42:01 +02001870 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
Marek Olšák58b6a192011-06-14 07:46:59 +02001871 ;;
1872 xnouveau)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001873 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
Marek Olšák58b6a192011-06-14 07:46:59 +02001874 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
Maarten Lankhorstdf8f8642011-10-18 14:24:30 +02001875 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
Marek Olšák58b6a192011-06-14 07:46:59 +02001876 ;;
1877 xswrast)
Marek Olšákc6f59fc2011-07-26 01:05:13 +02001878 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1879 if test "x$MESA_LLVM" = x1; then
1880 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1881 fi
1882
Marek Olšák58b6a192011-06-14 07:46:59 +02001883 if test "x$HAVE_ST_DRI" = xyes; then
1884 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1885 fi
Christian Königc3b22302011-07-04 15:04:41 +02001886 if test "x$HAVE_ST_VDPAU" = xyes; then
1887 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1888 fi
1889 if test "x$HAVE_ST_XVMC" = xyes; then
1890 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1891 fi
1892 if test "x$HAVE_ST_VA" = xyes; then
1893 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1894 fi
Eric Anholt48c99252011-10-14 14:33:00 -07001895 if test "x$HAVE_ST_VDPAU" = xyes ||
1896 test "x$HAVE_ST_XVMC" = xyes ||
1897 test "x$HAVE_ST_VA" = xyes; then
Younes Mantonb97816d2011-07-14 12:22:20 -04001898 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1899 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1900 fi
1901 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001902 ;;
1903 *)
1904 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1905 ;;
1906 esac
1907 done
Chia-I Wua1306f42010-01-22 15:51:51 +08001908fi
1909
Younes Mantonb97816d2011-07-14 12:22:20 -04001910if test "x$NEED_G3DVL_DRI" = xyes; then
1911 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1912fi
1913
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001914dnl prepend CORE_DIRS to SRC_DIRS
1915SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001916
1917dnl Restore LDFLAGS and CPPFLAGS
1918LDFLAGS="$_SAVE_LDFLAGS"
1919CPPFLAGS="$_SAVE_CPPFLAGS"
1920
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +02001921dnl Add user CFLAGS and CXXFLAGS
1922CFLAGS="$CFLAGS $USER_CFLAGS"
1923CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1924
Dan Nicholsondca1b792007-10-23 09:25:58 -07001925dnl Substitute the config
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001926AC_CONFIG_FILES([configs/autoconf
1927 tests/Makefile
1928 tests/glx/Makefile])
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001929
Dan Nicholsondca1b792007-10-23 09:25:58 -07001930dnl Replace the configs/current symlink
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001931AC_CONFIG_COMMANDS([configs],[
1932if test -f configs/current || test -L configs/current; then
1933 rm -f configs/current
1934fi
1935ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001936])
1937
Marek Olšák618dbc82011-06-27 03:12:57 +02001938dnl Sort the dirs alphabetically
Marek Olšák3c799622011-09-27 16:51:05 +02001939GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1940GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1941GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1942GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
Marek Olšák618dbc82011-06-27 03:12:57 +02001943
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001944AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001945
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001946dnl
1947dnl Output some configuration info for the user
1948dnl
1949echo ""
1950echo " prefix: $prefix"
1951echo " exec_prefix: $exec_prefix"
1952echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001953echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001954
Chia-I Wu815faa42010-10-29 12:34:44 +08001955dnl API info
1956echo ""
1957echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
Chia-I Wu815faa42010-10-29 12:34:44 +08001958echo " OpenVG: $enable_openvg"
1959
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001960dnl Driver info
1961echo ""
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001962if test "x$enable_osmesa" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001963 echo " OSMesa: lib$OSMESA_LIB"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001964else
Chia-I Wu815faa42010-10-29 12:34:44 +08001965 echo " OSMesa: no"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001966fi
1967
1968if test "x$enable_dri" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001969 # cleanup the drivers var
1970 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1971 if test "x$DRI_DIRS" = x; then
1972 echo " DRI drivers: no"
1973 else
1974 echo " DRI drivers: $dri_dirs"
1975 fi
1976 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001977 echo " Shared dricore: $enable_dricore"
Dan Nicholson544ab202007-12-30 08:41:53 -08001978fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001979
1980case "x$enable_glx$enable_xlib_glx" in
1981xyesyes)
1982 echo " GLX: Xlib-based"
1983 ;;
1984xyesno)
1985 echo " GLX: DRI-based"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001986 ;;
1987*)
1988 echo " GLX: $enable_glx"
1989 ;;
1990esac
1991
Chia-I Wu815faa42010-10-29 12:34:44 +08001992echo ""
1993echo " GLU: $enable_glu"
Chia-I Wu815faa42010-10-29 12:34:44 +08001994
1995dnl EGL
1996echo ""
1997echo " EGL: $enable_egl"
1998if test "$enable_egl" = yes; then
1999 echo " EGL platforms: $EGL_PLATFORMS"
Chia-I Wu12300502010-10-31 21:01:54 +08002000
2001 egl_drivers=""
2002 for d in $EGL_DRIVERS_DIRS; do
Chia-I Wuc98ea262011-01-07 16:30:08 +08002003 egl_drivers="$egl_drivers builtin:egl_$d"
Chia-I Wu12300502010-10-31 21:01:54 +08002004 done
2005
Marek Olšák1251e1d2011-06-18 20:33:55 +02002006 if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wu12300502010-10-31 21:01:54 +08002007 echo " EGL drivers: ${egl_drivers} egl_gallium"
2008 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
Chia-I Wu815faa42010-10-29 12:34:44 +08002009 else
Chia-I Wu12300502010-10-31 21:01:54 +08002010 echo " EGL drivers: $egl_drivers"
Chia-I Wu815faa42010-10-29 12:34:44 +08002011 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01002012fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002013
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002014echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07002015if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01002016 echo " llvm: yes"
2017 echo " llvm-config: $LLVM_CONFIG"
2018 echo " llvm-version: $LLVM_VERSION"
2019else
2020 echo " llvm: no"
2021fi
2022
2023echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002024if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2025 echo " Gallium: yes"
2026 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00002027 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002028 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00002029 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002030 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2031else
2032 echo " Gallium: no"
2033fi
2034
Daniel Vetter8f15c312011-11-28 22:24:26 +01002035
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002036dnl Libraries
2037echo ""
2038echo " Shared libs: $enable_shared"
2039echo " Static libs: $enable_static"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002040
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002041dnl Compiler options
2042# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2043cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2044 $SED 's/^ *//;s/ */ /;s/ *$//'`
2045cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2046 $SED 's/^ *//;s/ */ /;s/ *$//'`
2047defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2048echo ""
2049echo " CFLAGS: $cflags"
2050echo " CXXFLAGS: $cxxflags"
2051echo " Macros: $defines"
Kenneth Graunke3acc8262010-10-25 13:52:58 -07002052echo ""
2053echo " PYTHON2: $PYTHON2"
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002054
Dan Nicholsondca1b792007-10-23 09:25:58 -07002055echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07002056echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07002057echo ""