blob: 1a120ecdaae66b0e11bcc4a193bff398cf95575d [file] [log] [blame]
Matt Turner2f1ab632012-01-03 21:58:37 -05001dnl Process this file with autoconf to create configure.
Dan Nicholsondca1b792007-10-23 09:25:58 -07002
Matt Turner51723832011-12-23 19:21:04 -05003AC_PREREQ([2.60])
Dan Nicholsondca1b792007-10-23 09:25:58 -07004
Dan Nicholson00994ac2008-04-30 15:06:00 -07005dnl Versioning - scrape the version from configs/default
6m4_define([mesa_version],
Vinson Lee48f8a762010-05-11 12:33:30 -07007 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
Dan Nicholson356f3112009-04-29 06:49:27 -07008m4_ifval(mesa_version,,
9 [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
Dan Nicholsondca1b792007-10-23 09:25:58 -070010
Dan Nicholsone97ab722008-07-01 08:55:42 -070011dnl Tell the user about autoconf.html in the --help output
12m4_divert_once([HELP_END], [
13See docs/autoconf.html for more details on the options for Mesa.])
14
Dan Nicholson00994ac2008-04-30 15:06:00 -070015AC_INIT([Mesa],[mesa_version],
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -080016 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
Dan Nicholson297e16c2008-05-05 15:42:53 -070017AC_CONFIG_AUX_DIR([bin])
Dan Nicholsondca1b792007-10-23 09:25:58 -070018AC_CANONICAL_HOST
Ian Romanick3ef3ba42011-12-15 18:45:27 -080019AM_INIT_AUTOMAKE([foreign])
Dan Nicholsondca1b792007-10-23 09:25:58 -070020
Eric Anholte3264802012-01-12 14:28:37 -080021LT_PREREQ([2.2])
22LT_INIT([disable-static])
23
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +020024dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
25USER_CFLAGS="$CFLAGS"
26USER_CXXFLAGS="$CXXFLAGS"
27
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070028dnl Versions for external dependencies
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000029LIBDRM_REQUIRED=2.4.24
30LIBDRM_RADEON_REQUIRED=2.4.24
Eric Anholtc4089d42011-12-29 18:12:48 -080031LIBDRM_INTEL_REQUIRED=2.4.30
Johannes Obermayr873379a2011-06-02 17:15:44 -060032LIBDRM_NOUVEAU_REQUIRED=0.6
Jesse Barnes1e39fc72011-05-05 13:09:16 -070033DRI2PROTO_REQUIRED=2.6
34GLPROTO_REQUIRED=1.4.14
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000035LIBDRM_XORG_REQUIRED=2.4.24
Jakob Bornecrantz683a0992010-03-11 19:23:15 +000036LIBKMS_XORG_REQUIRED=1.0.0
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070037
Dan Nicholsondca1b792007-10-23 09:25:58 -070038dnl Check for progs
39AC_PROG_CPP
40AC_PROG_CC
41AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070042AC_CHECK_PROGS([MAKE], [gmake make])
Kenneth Graunke3acc8262010-10-25 13:52:58 -070043AC_CHECK_PROGS([PYTHON2], [python2 python])
Matt Turner3a343ef2012-01-11 01:05:56 -050044AC_PROG_SED
Dan Nicholson297e16c2008-05-05 15:42:53 -070045AC_PATH_PROG([MKDEP], [makedepend])
Dan Nicholson41b00702007-12-12 08:48:30 -080046
Luca Barbierif762f7b2010-09-24 10:10:09 +020047if test "x$MKDEP" = "x"; then
48 AC_MSG_ERROR([makedepend is required to build Mesa])
49fi
50
Brian Paulde1df262011-05-18 07:50:21 -060051AC_PATH_PROG([FLEX], [flex])
52test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
53
54AC_PATH_PROG([BISON], [bison])
55test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
56
Dan Nicholsonbc302b22009-05-22 09:39:02 -070057dnl Our fallback install-sh is a symlink to minstall. Use the existing
58dnl configuration in that case.
59AC_PROG_INSTALL
60test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
61
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070062dnl We need a POSIX shell for parts of the build. Assume we have one
63dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070064case "$host_os" in
65solaris*)
66 # Solaris /bin/sh is too old/non-POSIX compliant
67 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070068 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070069 ;;
70esac
71
Ian Romanick3ef3ba42011-12-15 18:45:27 -080072AC_PATH_PROG([GTESTCONFIG], [gtest-config])
73if test "x$GTESTCONFIG" != "x"; then
74 GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
75 GTEST_LIBS=`gtest-config --ldflags --libs`
Ian Romanick3ef3ba42011-12-15 18:45:27 -080076 AC_SUBST([GTEST_CFLAGS])
77 AC_SUBST([GTEST_LIBS])
78 HAVE_GTEST=yes
79else
80 HAVE_GTEST=no
81fi
82AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
83
nobled2a501872010-08-29 20:03:37 -040084dnl clang is mostly GCC-compatible, but its version is much lower,
85dnl so we have to check for it.
86AC_MSG_CHECKING([if compiling with clang])
87
88AC_COMPILE_IFELSE(
89[AC_LANG_PROGRAM([], [[
90#ifndef __clang__
91 not clang
92#endif
93]])],
94[CLANG=yes], [CLANG=no])
95
96AC_MSG_RESULT([$CLANG])
97
Ian Romanick9aa3aa72010-03-03 15:59:37 -080098dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
99dnl versions are explictly not supported.
nobled2a501872010-08-29 20:03:37 -0400100if test "x$GCC" = xyes -a "x$CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800101 AC_MSG_CHECKING([whether gcc version is sufficient])
102 major=0
103 minor=0
104
105 GCC_VERSION=`$CC -dumpversion`
106 if test $? -eq 0; then
107 major=`echo $GCC_VERSION | cut -d. -f1`
Marcin Baczyńskifa013412011-07-13 21:26:50 +0200108 minor=`echo $GCC_VERSION | cut -d. -f2`
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800109 fi
110
111 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
112 AC_MSG_RESULT([no])
113 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
114 else
115 AC_MSG_RESULT([yes])
116 fi
117fi
118
119
Dan Nicholsondb7fc632008-03-07 11:48:09 -0800120MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500121dnl Ask gcc where it's keeping its secret headers
122if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -0800123 for dir in include include-fixed; do
124 GCC_INCLUDES=`$CC -print-file-name=$dir`
125 if test "x$GCC_INCLUDES" != x && \
126 test "$GCC_INCLUDES" != "$dir" && \
127 test -d "$GCC_INCLUDES"; then
128 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
129 fi
130 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500131fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700132AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500133
Dan Nicholson41b00702007-12-12 08:48:30 -0800134dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700135m4_ifndef([PKG_PROG_PKG_CONFIG],
136 [m4_fatal([Could not locate the pkg-config autoconf macros.
137 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
138 are in a different location, try setting the environment variable
139 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700140PKG_PROG_PKG_CONFIG()
141
142dnl LIB_DIR - library basename
143LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700144AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700145
146dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
147_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700148AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
149AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700150
151dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
152_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700153AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
154AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700155
156dnl Compiler macros
157DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700158AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700159case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700160linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800161 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700162 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700163solaris*)
164 DEFINES="$DEFINES -DPTHREADS -DSVR4"
165 ;;
Brian Paul97988902010-02-18 12:46:12 -0700166cygwin*)
167 DEFINES="$DEFINES -DPTHREADS"
168 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700169esac
170
171dnl Add flags for gcc and g++
172if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700173 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
174 if test "x$CLANG" = "xno"; then
175 CFLAGS="$CFLAGS -ffast-math"
176 fi
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800177
178 # Enable -fvisibility=hidden if using a gcc that supports it
179 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800180 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100181 VISIBILITY_CFLAGS="-fvisibility=hidden"
182 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800183 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100184 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
185
186 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
187 CFLAGS=$save_CFLAGS
Dan Nicholson0c275b62008-01-15 22:52:25 -0800188
189 # Work around aliasing bugs - developers should comment this out
190 CFLAGS="$CFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100191
192 # gcc's builtin memcmp is slower than glibc's
193 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
194 CFLAGS="$CFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700195fi
196if test "x$GXX" = xyes; then
197 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800198
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400199 # Enable -fvisibility=hidden if using a gcc that supports it
200 save_CXXFLAGS="$CXXFLAGS"
201 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100202 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
203 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
Jon TURNEY560f7622011-04-26 11:49:01 +0100204 AC_LANG_PUSH([C++])
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400205 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100206 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
Jon TURNEY560f7622011-04-26 11:49:01 +0100207 AC_LANG_POP([C++])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100208
209 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
210 CXXFLAGS=$save_CXXFLAGS
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400211
Dan Nicholson0c275b62008-01-15 22:52:25 -0800212 # Work around aliasing bugs - developers should comment this out
213 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100214
215 # gcc's builtin memcmp is slower than glibc's
216 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
217 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700218fi
219
Jon TURNEYdb786432011-04-26 11:56:02 +0100220dnl even if the compiler appears to support it, using visibility attributes isn't
221dnl going to do anything useful currently on cygwin apart from emit lots of warnings
222case "$host_os" in
223cygwin*)
224 VISIBILITY_CFLAGS=""
225 VISIBILITY_CXXFLAGS=""
226 ;;
227esac
228
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100229AC_SUBST([VISIBILITY_CFLAGS])
230AC_SUBST([VISIBILITY_CXXFLAGS])
231
Dan Nicholsondca1b792007-10-23 09:25:58 -0700232dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700233AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700234 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700235AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700236 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700237AC_SUBST([OPT_FLAGS])
238AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700239
240dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600241dnl Hacks to enable 32 or 64 bit build
242dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700243AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600244 [AS_HELP_STRING([--enable-32-bit],
245 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700246 [enable_32bit="$enableval"],
247 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600248)
249if test "x$enable_32bit" = xyes; then
250 if test "x$GCC" = xyes; then
251 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700252 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600253 fi
254 if test "x$GXX" = xyes; then
255 CXXFLAGS="$CXXFLAGS -m32"
256 fi
257fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700258AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600259 [AS_HELP_STRING([--enable-64-bit],
260 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700261 [enable_64bit="$enableval"],
262 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600263)
264if test "x$enable_64bit" = xyes; then
265 if test "x$GCC" = xyes; then
266 CFLAGS="$CFLAGS -m64"
267 fi
268 if test "x$GXX" = xyes; then
269 CXXFLAGS="$CXXFLAGS -m64"
270 fi
271fi
272
273dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800274dnl shared/static libraries, mimic libtool options
275dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700276AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800277 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800278 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700279 [enable_static="$enableval"],
280 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800281)
282case "x$enable_static" in
283xyes|xno ) ;;
284x ) enable_static=no ;;
285* )
286 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
287 ;;
288esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700289AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800290 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800291 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700292 [enable_shared="$enableval"],
293 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800294)
295case "x$enable_shared" in
296xyes|xno ) ;;
297x ) enable_shared=yes ;;
298* )
299 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
300 ;;
301esac
302
303dnl Can't have static and shared libraries, default to static if user
304dnl explicitly requested. If both disabled, set to static since shared
305dnl was explicitly requirested.
306case "x$enable_static$enable_shared" in
307xyesyes )
308 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
309 enable_shared=no
310 ;;
311xnono )
312 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
313 enable_static=yes
314 ;;
315esac
316
317dnl
318dnl mklib options
319dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700320AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800321if test "$enable_static" = yes; then
322 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
323fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700324AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800325
Dan Nicholson23656c42007-12-12 09:02:31 -0800326dnl
327dnl other compiler options
328dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700329AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800330 [AS_HELP_STRING([--enable-debug],
331 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700332 [enable_debug="$enableval"],
333 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800334)
335if test "x$enable_debug" = xyes; then
336 DEFINES="$DEFINES -DDEBUG"
337 if test "x$GCC" = xyes; then
338 CFLAGS="$CFLAGS -g"
339 fi
340 if test "x$GXX" = xyes; then
341 CXXFLAGS="$CXXFLAGS -g"
342 fi
343fi
Dan Nicholson88586332007-11-15 08:59:57 -0800344
345dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700346dnl library names
347dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100348LIB_PREFIX_GLOB='lib'
349LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800350if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800351 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800352else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700353 case "$host_os" in
354 darwin* )
355 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100356 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100357 dnl prefix can be 'cyg' or 'lib'
358 LIB_PREFIX_GLOB='???'
359 LIB_VERSION_SEPARATOR='-'
360 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700361 aix* )
362 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700363 * )
364 LIB_EXTENSION='so' ;;
365 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800366fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800367
Marek Olšák848f7d32011-04-01 01:12:41 +0200368dnl
Tom Fogalc0573fb2011-10-10 10:33:18 -0600369dnl Mangled Mesa support
370dnl
371AC_ARG_ENABLE([mangling],
372 [AS_HELP_STRING([--enable-mangling],
373 [enable mangled symbols and library name @<:@default=disabled@:>@])],
374 [enable_mangling="${enableval}"],
375 [enable_mangling=no]
376)
377GL_LIB="GL"
378GLU_LIB="GLU"
379OSMESA_LIB="OSMesa"
380if test "x${enable_mangling}" = "xyes" ; then
381 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
382 GL_LIB="MangledGL"
383 GLU_LIB="MangledGLU"
384 OSMESA_LIB="MangledOSMesa"
385fi
386AC_SUBST([GL_LIB])
387AC_SUBST([GLU_LIB])
388AC_SUBST([OSMESA_LIB])
389
390dnl
Marek Olšák848f7d32011-04-01 01:12:41 +0200391dnl potentially-infringing-but-nobody-knows-for-sure stuff
392dnl
393AC_ARG_ENABLE([texture-float],
394 [AS_HELP_STRING([--enable-texture-float],
395 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
396 [enable_texture_float="$enableval"],
397 [enable_texture_float=no]
398)
399if test "x$enable_texture_float" = xyes; then
400 AC_MSG_WARN([Floating-point textures enabled.])
401 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
402 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
403fi
404
Dan Nicholson8217f242009-02-11 15:16:00 -0800405GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
406GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800407OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800408EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500409GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
410GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800411VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800412GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100413WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200414GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800415
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100416GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
417GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100418OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
420EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
421GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
422GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
423VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800424GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100425WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200426GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800427
Dan Nicholson297e16c2008-05-05 15:42:53 -0700428AC_SUBST([GL_LIB_NAME])
429AC_SUBST([GLU_LIB_NAME])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700430AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800431AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500432AC_SUBST([GLESv1_CM_LIB_NAME])
433AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800434AC_SUBST([VG_LIB_NAME])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800435AC_SUBST([GLAPI_LIB_NAME])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100436AC_SUBST([WAYLAND_EGL_LIB_NAME])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200437AC_SUBST([GBM_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700438
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700439AC_SUBST([GL_LIB_GLOB])
440AC_SUBST([GLU_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700441AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800442AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500443AC_SUBST([GLESv1_CM_LIB_GLOB])
444AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800445AC_SUBST([VG_LIB_GLOB])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800446AC_SUBST([GLAPI_LIB_GLOB])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +0100447AC_SUBST([WAYLAND_EGL_LIB_GLOB])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200448AC_SUBST([GBM_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700449
Dan Nicholsondca1b792007-10-23 09:25:58 -0700450dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700451dnl Arch/platform-specific settings
452dnl
453AC_ARG_ENABLE([asm],
454 [AS_HELP_STRING([--disable-asm],
455 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
456 [enable_asm="$enableval"],
457 [enable_asm=yes]
458)
459asm_arch=""
460ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800461MESA_ASM_SOURCES=""
462GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700463AC_MSG_CHECKING([whether to enable assembly])
464test "x$enable_asm" = xno && AC_MSG_RESULT([no])
465# disable if cross compiling on x86/x86_64 since we must run gen_matypes
466if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
467 case "$host_cpu" in
468 i?86 | x86_64)
469 enable_asm=no
470 AC_MSG_RESULT([no, cross compiling])
471 ;;
472 esac
473fi
474# check for supported arches
475if test "x$enable_asm" = xyes; then
476 case "$host_cpu" in
477 i?86)
478 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700479 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700480 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
481 ;;
482 esac
483 ;;
484 x86_64)
485 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700486 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700487 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
488 ;;
489 esac
490 ;;
491 powerpc)
492 case "$host_os" in
493 linux*)
494 asm_arch=ppc
495 ;;
496 esac
497 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800498 sparc*)
499 case "$host_os" in
500 linux*)
501 asm_arch=sparc
502 ;;
503 esac
504 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700505 esac
506
507 case "$asm_arch" in
508 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800509 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800510 MESA_ASM_SOURCES='$(X86_SOURCES)'
511 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700512 AC_MSG_RESULT([yes, x86])
513 ;;
514 x86_64)
515 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800516 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
517 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700518 AC_MSG_RESULT([yes, x86_64])
519 ;;
520 ppc)
521 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800522 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700523 AC_MSG_RESULT([yes, ppc])
524 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800525 sparc)
526 ASM_FLAGS="-DUSE_SPARC_ASM"
527 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
528 GLAPI_ASM_SOURCES='$(SPARC_API)'
529 AC_MSG_RESULT([yes, sparc])
530 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700531 *)
532 AC_MSG_RESULT([no, platform not supported])
533 ;;
534 esac
535fi
536AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800537AC_SUBST([MESA_ASM_SOURCES])
538AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700539
540dnl PIC code macro
541MESA_PIC_FLAGS
542
543dnl Check to see if dlopen is in default libraries (like Solaris, which
544dnl has it in libc), or if libdl is needed to get it.
545AC_CHECK_FUNC([dlopen], [],
546 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800547AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700548
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700549dnl See if posix_memalign is available
550AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
551
Dan Nicholson871125a2008-06-04 13:00:35 -0700552dnl SELinux awareness.
553AC_ARG_ENABLE([selinux],
554 [AS_HELP_STRING([--enable-selinux],
555 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
556 [MESA_SELINUX="$enableval"],
557 [MESA_SELINUX=no])
558if test "x$enable_selinux" = "xyes"; then
559 AC_CHECK_HEADER([selinux/selinux.h],[],
560 [AC_MSG_ERROR([SELinux headers not found])])
561 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
562 [AC_MSG_ERROR([SELinux library not found])])
563 SELINUX_LIBS="-lselinux"
564 DEFINES="$DEFINES -DMESA_SELINUX"
565fi
566
Marek Olšák440d71d2011-06-14 05:38:58 +0200567dnl Options for APIs
Chia-I Wube5f34a2010-10-27 16:14:27 +0800568AC_ARG_ENABLE([opengl],
569 [AS_HELP_STRING([--disable-opengl],
570 [disable support for standard OpenGL API @<:@default=no@:>@])],
571 [enable_opengl="$enableval"],
572 [enable_opengl=yes])
573AC_ARG_ENABLE([gles1],
574 [AS_HELP_STRING([--enable-gles1],
575 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
576 [enable_gles1="$enableval"],
577 [enable_gles1=no])
578AC_ARG_ENABLE([gles2],
579 [AS_HELP_STRING([--enable-gles2],
580 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
581 [enable_gles2="$enableval"],
582 [enable_gles2=no])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800583AC_ARG_ENABLE([openvg],
584 [AS_HELP_STRING([--enable-openvg],
585 [enable support for OpenVG API @<:@default=no@:>@])],
586 [enable_openvg="$enableval"],
587 [enable_openvg=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900588
589AC_ARG_ENABLE([dri],
590 [AS_HELP_STRING([--enable-dri],
591 [enable DRI modules @<:@default=auto@:>@])],
592 [enable_dri="$enableval"],
593 [enable_dri=auto])
594AC_ARG_ENABLE([glx],
595 [AS_HELP_STRING([--enable-glx],
596 [enable GLX library @<:@default=auto@:>@])],
597 [enable_glx="$enableval"],
598 [enable_glx=auto])
599AC_ARG_ENABLE([osmesa],
600 [AS_HELP_STRING([--enable-osmesa],
601 [enable OSMesa library @<:@default=auto@:>@])],
602 [enable_osmesa="$enableval"],
603 [enable_osmesa=auto])
604AC_ARG_ENABLE([egl],
605 [AS_HELP_STRING([--disable-egl],
606 [disable EGL library @<:@default=enabled@:>@])],
607 [enable_egl="$enableval"],
608 [enable_egl=yes])
609
Marek Olšák440d71d2011-06-14 05:38:58 +0200610AC_ARG_ENABLE([xorg],
611 [AS_HELP_STRING([--enable-xorg],
612 [enable support for X.Org DDX API @<:@default=no@:>@])],
613 [enable_xorg="$enableval"],
614 [enable_xorg=no])
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200615AC_ARG_ENABLE([xa],
616 [AS_HELP_STRING([--enable-xa],
617 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
618 [enable_xa="$enableval"],
619 [enable_xa=no])
Marek Olšák440d71d2011-06-14 05:38:58 +0200620AC_ARG_ENABLE([d3d1x],
621 [AS_HELP_STRING([--enable-d3d1x],
622 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
623 [enable_d3d1x="$enableval"],
624 [enable_d3d1x=no])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200625AC_ARG_ENABLE([gbm],
626 [AS_HELP_STRING([--enable-gbm],
627 [enable gbm library @<:@default=auto@:>@])],
628 [enable_gbm="$enableval"],
629 [enable_gbm=auto])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900630
Christian Königc3b22302011-07-04 15:04:41 +0200631AC_ARG_ENABLE([xvmc],
632 [AS_HELP_STRING([--enable-xvmc],
633 [enable xvmc library @<:@default=auto@:>@])],
634 [enable_xvmc="$enableval"],
635 [enable_xvmc=auto])
636AC_ARG_ENABLE([vdpau],
637 [AS_HELP_STRING([--enable-vdpau],
638 [enable vdpau library @<:@default=auto@:>@])],
639 [enable_vdpau="$enableval"],
640 [enable_vdpau=auto])
641AC_ARG_ENABLE([va],
642 [AS_HELP_STRING([--enable-va],
643 [enable va library @<:@default=auto@:>@])],
644 [enable_va="$enableval"],
645 [enable_va=auto])
646
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900647AC_ARG_ENABLE([xlib_glx],
648 [AS_HELP_STRING([--enable-xlib-glx],
649 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
650 [enable_xlib_glx="$enableval"],
651 [enable_xlib_glx=auto])
Marek Olšák1251e1d2011-06-18 20:33:55 +0200652AC_ARG_ENABLE([gallium_egl],
653 [AS_HELP_STRING([--enable-gallium-egl],
654 [enable optional EGL state tracker (not required
655 for EGL support in Gallium with OpenGL and OpenGL ES)
656 @<:@default=disable@:>@])],
657 [enable_gallium_egl="$enableval"],
658 [enable_gallium_egl=no])
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200659AC_ARG_ENABLE([gallium_gbm],
660 [AS_HELP_STRING([--enable-gallium-gbm],
661 [enable optional gbm state tracker (not required for
662 gbm support in Gallium)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200663 @<:@default=auto@:>@])],
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200664 [enable_gallium_gbm="$enableval"],
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200665 [enable_gallium_gbm=auto])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800666
Marek Olšák58b6a192011-06-14 07:46:59 +0200667# Option for Gallium drivers
Thomas Hellstrom87118d82012-01-12 12:10:53 +0100668GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
Marek Olšák58b6a192011-06-14 07:46:59 +0200669
670AC_ARG_WITH([gallium-drivers],
671 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
672 [comma delimited Gallium drivers list, e.g.
Daniel Vetter8f15c312011-11-28 22:24:26 +0100673 "i915,nouveau,r300,r600,svga,swrast"
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200674 @<:@default=r300,r600,swrast@:>@])],
Marek Olšák58b6a192011-06-14 07:46:59 +0200675 [with_gallium_drivers="$withval"],
676 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
Chia-I Wu156e9552010-10-30 14:26:01 +0800677
Ian Romanickdb311b42011-06-22 11:35:27 -0700678# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
679# here so that the script doesn't choke on an unknown driver name later.
680case "$with_gallium_drivers" in
681 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
682 no) with_gallium_drivers='' ;;
683esac
684
Chia-I Wube5f34a2010-10-27 16:14:27 +0800685if test "x$enable_opengl" = xno -a \
686 "x$enable_gles1" = xno -a \
687 "x$enable_gles2" = xno -a \
Marek Olšák440d71d2011-06-14 05:38:58 +0200688 "x$enable_openvg" = xno -a \
689 "x$enable_xorg" = xno -a \
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200690 "x$enable_xa" = xno -a \
Christian Königc3b22302011-07-04 15:04:41 +0200691 "x$enable_d3d1x" = xno -a \
692 "x$enable_xvmc" = xno -a \
693 "x$enable_vdpau" = xno -a \
694 "x$enable_va" = xno; then
Chia-I Wube5f34a2010-10-27 16:14:27 +0800695 AC_MSG_ERROR([at least one API should be enabled])
696fi
697
698API_DEFINES=""
Chia-I Wube5f34a2010-10-27 16:14:27 +0800699if test "x$enable_opengl" = xno; then
700 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
701else
702 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
703fi
704if test "x$enable_gles1" = xyes; then
705 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
706fi
707if test "x$enable_gles2" = xyes; then
708 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
709fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800710AC_SUBST([API_DEFINES])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800711
Chia-I Wue8c7d752010-12-26 18:24:13 +0800712AC_ARG_ENABLE([shared-glapi],
713 [AS_HELP_STRING([--enable-shared-glapi],
714 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
715 [enable_shared_glapi="$enableval"],
716 [enable_shared_glapi=no])
717
718SHARED_GLAPI="0"
719if test "x$enable_shared_glapi" = xyes; then
720 SHARED_GLAPI="1"
721fi
722AC_SUBST([SHARED_GLAPI])
723
Kenneth Graunke9d21b5d2012-01-04 23:49:18 -0800724dnl
725dnl Driver configuration. Options are xlib, dri and osmesa right now.
726dnl More later: fbdev, ...
727dnl
728default_driver="xlib"
729
730case "$host_os" in
731linux*)
732 case "$host_cpu" in
733 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
734 esac
735 ;;
736*freebsd* | dragonfly* | *netbsd*)
737 case "$host_cpu" in
738 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
739 esac
740 ;;
741esac
742
743if test "x$enable_opengl" = xno; then
744 default_driver="no"
745fi
746
747AC_ARG_WITH([driver],
748 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
749 [mesa_driver="$withval"],
750 [mesa_driver=auto])
751dnl Check for valid option
752case "x$mesa_driver" in
753xxlib|xdri|xosmesa|xno)
754 if test "x$enable_dri" != xauto -o \
755 "x$enable_glx" != xauto -o \
756 "x$enable_osmesa" != xauto -o \
757 "x$enable_xlib_glx" != xauto; then
758 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
759 fi
760 ;;
761xauto)
762 mesa_driver="$default_driver"
763 ;;
764*)
765 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
766 ;;
767esac
768
769# map $mesa_driver to APIs
770if test "x$enable_dri" = xauto; then
771 case "x$mesa_driver" in
772 xdri) enable_dri=yes ;;
773 *) enable_dri=no ;;
774 esac
775fi
776
777if test "x$enable_glx" = xauto; then
778 case "x$mesa_driver" in
779 xdri|xxlib) enable_glx=yes ;;
780 *) enable_glx=no ;;
781 esac
782fi
783
784if test "x$enable_osmesa" = xauto; then
785 case "x$mesa_driver" in
786 xxlib|xosmesa) enable_osmesa=yes ;;
787 *) enable_osmesa=no ;;
788 esac
789fi
790
791if test "x$enable_xlib_glx" = xauto; then
792 case "x$mesa_driver" in
793 xxlib) enable_xlib_glx=yes ;;
794 *) enable_xlib_glx=no ;;
795 esac
796fi
797
798if test "x$enable_glx" = xno; then
799 enable_xlib_glx=no
800fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900801
Dan Nicholson44d99142007-12-05 18:47:01 -0800802dnl
803dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700804dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800805
806dnl this variable will be prepended to SRC_DIRS and is not exported
Chia-I Wube5f34a2010-10-27 16:14:27 +0800807CORE_DIRS=""
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800808
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200809SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700810GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100811GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000812GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000813GALLIUM_WINSYS_DIRS="sw"
Kai Wasserbäch0a22fb62011-11-29 22:36:02 +0100814GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100815GALLIUM_STATE_TRACKERS_DIRS=""
816
Chia-I Wue8c7d752010-12-26 18:24:13 +0800817# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
Jon TURNEYaa6a5cf2011-02-16 13:37:57 +0000818case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800819x*yes*)
820 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
821 ;;
822esac
823
Chia-I Wube5f34a2010-10-27 16:14:27 +0800824# build glapi if OpenGL is enabled
825if test "x$enable_opengl" = xyes; then
826 CORE_DIRS="$CORE_DIRS mapi/glapi"
827fi
828
Chia-I Wu12583172011-01-07 17:24:16 +0800829# build es1api if OpenGL ES 1.x is enabled
830if test "x$enable_gles1" = xyes; then
831 CORE_DIRS="$CORE_DIRS mapi/es1api"
832fi
833
834# build es2api if OpenGL ES 2.x is enabled
835if test "x$enable_gles2" = xyes; then
836 CORE_DIRS="$CORE_DIRS mapi/es2api"
837fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800838
Chia-I Wube5f34a2010-10-27 16:14:27 +0800839# build glsl and mesa if OpenGL or OpenGL ES is enabled
Chia-I Wu12583172011-01-07 17:24:16 +0800840case "x$enable_opengl$enable_gles1$enable_gles2" in
Chia-I Wube5f34a2010-10-27 16:14:27 +0800841x*yes*)
842 CORE_DIRS="$CORE_DIRS glsl mesa"
843 ;;
844esac
845
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900846case "x$enable_glx$enable_xlib_glx" in
847xyesyes)
848 DRIVER_DIRS="$DRIVER_DIRS x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000849 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000850 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Marek Olšák440d71d2011-06-14 05:38:58 +0200851 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
Younes Mantonb97816d2011-07-14 12:22:20 -0400852 HAVE_WINSYS_XLIB="yes"
Dan Nicholson44d99142007-12-05 18:47:01 -0800853 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900854xyesno)
855 # DRI-based GLX
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500856 SRC_DIRS="$SRC_DIRS glx"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900857 ;;
858esac
859
860if test "x$enable_dri" = xyes; then
861 DRIVER_DIRS="$DRIVER_DIRS dri"
862
Emil Velikov4ef9c3d2011-07-11 15:58:29 +0100863 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
Marek Olšák440d71d2011-06-14 05:38:58 +0200864 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
865 HAVE_ST_DRI="yes"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900866fi
867
868if test "x$enable_osmesa" = xyes; then
869 # the empty space matters for osmesa... (see src/mesa/Makefile)
870 if test -n "$DRIVER_DIRS"; then
871 DRIVER_DIRS="$DRIVER_DIRS osmesa"
872 else
873 DRIVER_DIRS="osmesa"
874 fi
875fi
876
Dan Nicholson297e16c2008-05-05 15:42:53 -0700877AC_SUBST([SRC_DIRS])
878AC_SUBST([GLU_DIRS])
879AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100880AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000881AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100882AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000883AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100884AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000885AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700886
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900887# Check for libdrm
888PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
889 [have_libdrm=yes], [have_libdrm=no])
890
891if test "x$enable_dri" = xyes; then
892 # DRI must be shared, I think
893 if test "$enable_static" = yes; then
894 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
895 fi
896
Chia-I Wu81239342011-07-02 09:49:17 +0900897 # not a hard requirement as swrast does not depend on it
898 if test "x$have_libdrm" = xyes; then
899 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900900 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900901fi
902
Dan Nicholsondca1b792007-10-23 09:25:58 -0700903dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700904dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700905dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700906dnl
907if test -n "$PKG_CONFIG"; then
908 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700909 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700910 x11_pkgconfig=yes
911 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700912 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700913 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700914 ])
915 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700916else
917 x11_pkgconfig=no
918fi
919dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600920if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700921 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600922else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700923 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700924 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
925 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
926 AC_SUBST([X11_CFLAGS])
927 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700928fi
929
Dan Nicholson99803a42008-07-01 09:03:15 -0700930dnl Try to tell the user that the --x-* options are only used when
931dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
932m4_divert_once([HELP_BEGIN],
933[These options are only used when the X libraries cannot be found by the
934pkg-config utility.])
935
Dan Nicholson44d99142007-12-05 18:47:01 -0800936dnl We need X for xlib and dri, so bomb now if it's not found
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900937if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
938 AC_MSG_ERROR([X11 development libraries needed for GLX])
939fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700940
Ian Romanickb518dfb2012-01-02 17:44:30 -0800941if test "x$enable_glx" = xyes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700942 DEFINES="$DEFINES -DUSE_XCB"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700943fi
944
Samuel Thibault75856172011-03-14 22:08:21 +0000945dnl Direct rendering or just indirect rendering
noblede7d18ed2011-03-14 22:08:22 +0000946case "$host_os" in
947gnu*)
948 dnl Disable by default on GNU/Hurd
949 driglx_direct_default="no"
950 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +0000951cygwin*)
952 dnl Disable by default on cygwin
953 driglx_direct_default="no"
954 ;;
noblede7d18ed2011-03-14 22:08:22 +0000955*)
956 driglx_direct_default="yes"
957 ;;
958esac
Samuel Thibault75856172011-03-14 22:08:21 +0000959AC_ARG_ENABLE([driglx-direct],
960 [AS_HELP_STRING([--disable-driglx-direct],
961 [enable direct rendering in GLX and EGL for DRI \
noblede7d18ed2011-03-14 22:08:22 +0000962 @<:@default=auto@:>@])],
Samuel Thibault75856172011-03-14 22:08:21 +0000963 [driglx_direct="$enableval"],
noblede7d18ed2011-03-14 22:08:22 +0000964 [driglx_direct="$driglx_direct_default"])
Samuel Thibault75856172011-03-14 22:08:21 +0000965
Dan Nicholson44d99142007-12-05 18:47:01 -0800966dnl
967dnl libGL configuration per driver
968dnl
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900969case "x$enable_glx$enable_xlib_glx" in
970xyesyes)
971 # Xlib-based GLX
Dan Nicholson44d99142007-12-05 18:47:01 -0800972 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700973 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800974 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800975 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
976 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800977 else
978 # should check these...
979 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
980 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800981 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
982 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800983 fi
Marek Olšák0aed27e2011-07-26 01:05:51 +0200984 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
Kenneth Graunked1d812052011-01-16 16:01:54 -0800985 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson44d99142007-12-05 18:47:01 -0800986 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900987xyesno)
988 # DRI-based GLX
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500989 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Samuel Thibault75856172011-03-14 22:08:21 +0000990 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000991 if test x"$driglx_direct" = xyes; then
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900992 if test "x$have_libdrm" != xyes; then
993 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
994 fi
Samuel Thibault75856172011-03-14 22:08:21 +0000995 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
996 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000997 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800998
999 # find the DRI deps for libGL
1000 if test "$x11_pkgconfig" = yes; then
Ian Romanickb518dfb2012-01-02 17:44:30 -08001001 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001002
1003 # add xf86vidmode if available
1004 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1005 if test "$HAVE_XF86VIDMODE" = yes ; then
1006 dri_modules="$dri_modules xxf86vm"
1007 fi
1008
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001009 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001010 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -08001011 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1012 GL_LIB_DEPS="$DRIGL_LIBS"
1013 else
1014 # should check these...
1015 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
Alan Hourihane64799222011-06-28 17:40:24 +01001016 if test "x$HAVE_XF86VIDMODE" == xyes; then
1017 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1018 else
1019 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1020 fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001021 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1022 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -07001023
1024 # XCB can only be used from pkg-config
Ian Romanickb518dfb2012-01-02 17:44:30 -08001025 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1026 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1027 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1028 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001029 fi
1030
Ian Romanick4becf672012-01-03 11:35:59 -08001031 # Check to see if the xcb-glx library is new enough to support
1032 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1033 # is released.
1034 save_CPPFLAGS="$CPPFLAGS"
1035 save_LDFLAGS="$LDFLAGS"
1036 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1037 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1038 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1039 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1040 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1041 CPPFLAGS="$save_CPPFLAGS"
1042 LDFLAGS="$save_LDFLAGS"
1043
1044 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1045 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1046 fi
1047
Dan Nicholson44d99142007-12-05 18:47:01 -08001048 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001049 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1050 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -08001051 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001052esac
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001053
Ian Romanick4becf672012-01-03 11:35:59 -08001054# This is outside the case (above) so that it is invoked even for non-GLX
1055# builds.
1056AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1057 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1058
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001059GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1060GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1061GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1062GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1063
Dan Nicholson297e16c2008-05-05 15:42:53 -07001064AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001065AC_SUBST([GL_PC_REQ_PRIV])
1066AC_SUBST([GL_PC_LIB_PRIV])
1067AC_SUBST([GL_PC_CFLAGS])
1068AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +08001069AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001070AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -05001071AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001072AC_SUBST([GLESv2_PC_LIB_PRIV])
1073
Chia-I Wu0c771e22011-11-04 16:32:17 +08001074GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
Chia-I Wu9767d3b2010-12-26 18:02:59 +08001075AC_SUBST([GLAPI_LIB_DEPS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001076
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001077
1078dnl Setup default DRI CFLAGS
1079DRI_CFLAGS='$(CFLAGS)'
1080DRI_CXXFLAGS='$(CXXFLAGS)'
1081DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1082MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1083
1084AC_ARG_ENABLE([shared-dricore],
1085 [AS_HELP_STRING([--enable-shared-dricore],
1086 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1087 [enable_dricore="$enableval"],
1088 [enable_dricore=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001089if test "x$enable_dri" = xyes ; then
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001090 if test "$enable_dricore" = yes ; then
1091 if test "$GCC$GXX" != yesyes ; then
1092 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
1093 enable_dricore=no
1094 else
1095 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1096 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1097 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1098 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1099 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1100 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1101 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1102 fi
1103 fi
1104fi
1105AC_SUBST([DRICORE_LIBS])
1106AC_SUBST([DRICORE_GLSL_LIBS])
1107AC_SUBST([DRICORE_LIB_DEPS])
1108AC_SUBST([DRI_CXXFLAGS])
1109AC_SUBST([DRI_CFLAGS])
1110AC_SUBST([MESA_MODULES])
1111
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001112AC_SUBST([HAVE_XF86VIDMODE])
1113
Dan Nicholsondca1b792007-10-23 09:25:58 -07001114dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001115dnl More GLX setup
Dan Nicholsondca1b792007-10-23 09:25:58 -07001116dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001117case "x$enable_glx$enable_xlib_glx" in
1118xyesyes)
Dan Nicholsondca1b792007-10-23 09:25:58 -07001119 DEFINES="$DEFINES -DUSE_XSHM"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001120 ;;
1121xyesno)
1122 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1123 if test "x$driglx_direct" = xyes; then
1124 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1125 fi
1126 ;;
1127esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001128
1129dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001130dnl TLS detection
Dan Nicholson44d99142007-12-05 18:47:01 -08001131dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001132
Dan Nicholson297e16c2008-05-05 15:42:53 -07001133AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -08001134 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001135 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001136 [GLX_USE_TLS="$enableval"],
1137 [GLX_USE_TLS=no])
Tom Fogal31351dc2010-12-05 17:58:32 -07001138AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1139
Tom Fogal44842972011-02-21 22:32:18 -07001140AS_IF([test "x$GLX_USE_TLS" = xyes],
1141 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1142
Tom Fogal31351dc2010-12-05 17:58:32 -07001143dnl
1144dnl More DRI setup
1145dnl
Dan Nicholson44d99142007-12-05 18:47:01 -08001146dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -07001147AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001148 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001149 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001150 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001151 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -07001152AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +08001153dnl Extra search path for DRI drivers
1154AC_ARG_WITH([dri-searchpath],
1155 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1156 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1157 [DRI_DRIVER_SEARCH_DIR="$withval"],
1158 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1159AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001160dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -07001161AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001162 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -07001163 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +02001164 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001165 [with_dri_drivers="$withval"],
1166 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001167if test "x$with_dri_drivers" = x; then
1168 with_dri_drivers=no
1169fi
1170
1171dnl If $with_dri_drivers is yes, directories will be added through
1172dnl platform checks
1173DRI_DIRS=""
1174case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001175no) ;;
1176yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001177 # classic DRI drivers require FEATURE_GL to build
1178 if test "x$enable_opengl" = xyes; then
1179 DRI_DIRS="yes"
1180 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001181 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001182*)
1183 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -07001184 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001185 for driver in $dri_drivers; do
1186 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1187 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1188 done
1189 DRI_DIRS="$dri_drivers"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001190 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1191 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1192 fi
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001193 ;;
1194esac
1195
Dan Nicholson44d99142007-12-05 18:47:01 -08001196dnl Set DRI_DIRS, DEFINES and LIB_DEPS
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001197if test "x$enable_dri" = xyes; then
Dan Nicholson44d99142007-12-05 18:47:01 -08001198 # Platform specific settings and drivers to build
1199 case "$host_os" in
1200 linux*)
1201 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001202 DEFINES="$DEFINES -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001203
1204 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -08001205 x86_64)
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001206 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001207 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001208 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001209 ;;
1210 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -08001211 # Build only the drivers for cards that exist on PowerPC.
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001212 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001213 DRI_DIRS="r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001214 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001215 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001216 sparc*)
Ian Romanicke4344162011-08-24 15:21:58 -07001217 # Build only the drivers for cards that exist on sparc
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001218 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001219 DRI_DIRS="r200 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001220 fi
1221 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001222 esac
1223 ;;
Pierre Allegraud8fd8de32011-01-06 07:58:57 -07001224 freebsd* | dragonfly* | *netbsd*)
Dan Nicholson44d99142007-12-05 18:47:01 -08001225 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1226 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001227
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001228 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001229 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001230 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001231 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001232 gnu*)
1233 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001234 DEFINES="$DEFINES -DHAVE_ALIAS"
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001235 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001236 solaris*)
1237 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001238 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001239 cygwin*)
1240 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001241 if test "x$DRI_DIRS" = "xyes"; then
1242 DRI_DIRS="swrast"
1243 fi
1244 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001245 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -08001246
1247 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001248 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001249 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -08001250 fi
1251
Dan Nicholson44d99142007-12-05 18:47:01 -08001252 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1253
1254 # Check for expat
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001255 if test "x$enable_dri" = xyes; then
Chia-I Wube5f34a2010-10-27 16:14:27 +08001256 EXPAT_INCLUDES=""
1257 EXPAT_LIB=-lexpat
1258 AC_ARG_WITH([expat],
1259 [AS_HELP_STRING([--with-expat=DIR],
1260 [expat install directory])],[
1261 EXPAT_INCLUDES="-I$withval/include"
1262 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1263 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1264 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1265 ])
1266 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1267 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1268 [AC_MSG_ERROR([Expat required for DRI.])])
1269 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001270
Chia-I Wu81239342011-07-02 09:49:17 +09001271 # libdrm is required for all except swrast
1272 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1273 if test "x$have_libdrm" != xyes; then
1274 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1275 fi
1276 fi
1277
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001278 # put all the necessary libs together, including possibly libdricore
1279 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001280fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001281AC_SUBST([DRI_DIRS])
1282AC_SUBST([EXPAT_INCLUDES])
1283AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -08001284
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001285case $DRI_DIRS in
1286*i915*|*i965*)
Tormod Volden903185b2011-01-25 13:25:18 -08001287 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Eric Anholte3264802012-01-12 14:28:37 -08001288
1289 case $DRI_DIRS in
1290 *i965*)
1291 HAVE_I965_DRI=yes;
1292 ;;
1293 esac
1294
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001295 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001296esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001297
Eric Anholte3264802012-01-12 14:28:37 -08001298AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1299
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001300case $DRI_DIRS in
Johannes Obermayr873379a2011-06-02 17:15:44 -06001301*nouveau*)
1302 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1303 ;;
1304esac
1305
1306case $DRI_DIRS in
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001307*radeon*|*r200*)
Eric Anholt830e5462011-10-14 14:34:19 -07001308 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001309 ;;
1310esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001311
1312
Dan Nicholson44d99142007-12-05 18:47:01 -08001313dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001314dnl OSMesa configuration
1315dnl
Dan Nicholson979ff512007-12-05 18:47:01 -08001316
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001317dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -07001318AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001319 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1320 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001321 [osmesa_bits="$withval"],
1322 [osmesa_bits=8])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001323if test "x$osmesa_bits" != x8; then
1324 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1325 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1326 osmesa_bits=8
1327 fi
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001328fi
1329case "x$osmesa_bits" in
1330x8)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001331 OSMESA_LIB="${OSMESA_LIB}"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001332 ;;
1333x16|x32)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001334 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001335 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1336 ;;
1337*)
1338 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1339 ;;
1340esac
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001341
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001342if test "x$enable_osmesa" = xyes; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001343 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -08001344 if test "$enable_static" = no; then
Kenneth Graunked1d812052011-01-16 16:01:54 -08001345 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -08001346 else
1347 OSMESA_LIB_DEPS=""
1348 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001349 OSMESA_MESA_DEPS=""
Kenneth Graunked1d812052011-01-16 16:01:54 -08001350 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001351fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001352AC_SUBST([OSMESA_LIB_DEPS])
1353AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001354AC_SUBST([OSMESA_PC_REQ])
1355AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001356
1357dnl
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001358dnl gbm configuration
1359dnl
1360if test "x$enable_gbm" = xauto; then
1361 case "$with_egl_platforms" in
1362 *drm*)
1363 enable_gbm=yes ;;
1364 *)
1365 enable_gbm=no ;;
1366 esac
1367fi
1368if test "x$enable_gbm" = xyes; then
1369 SRC_DIRS="$SRC_DIRS gbm"
1370 GBM_BACKEND_DIRS=""
1371
1372 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1373 AC_MSG_ERROR([gbm needs udev]))
1374 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1375
1376 if test "x$enable_dri" = xyes; then
1377 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1378 if test "$SHARED_GLAPI" -eq 0; then
1379 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1380 fi
1381 fi
1382fi
1383AC_SUBST([GBM_LIB_DEPS])
1384AC_SUBST([GBM_BACKEND_DIRS])
1385GBM_PC_REQ_PRIV="libudev"
1386GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1387GBM_PC_CFLAGS=
1388AC_SUBST([GBM_PC_REQ_PRIV])
1389AC_SUBST([GBM_PC_LIB_PRIV])
1390AC_SUBST([GBM_PC_CFLAGS])
1391
1392dnl
Dan Nicholson53b37342009-02-25 17:45:34 -08001393dnl EGL configuration
1394dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001395EGL_CLIENT_APIS=""
1396
Dan Nicholson66f97862009-04-29 12:11:43 -07001397if test "x$enable_egl" = xyes; then
1398 SRC_DIRS="$SRC_DIRS egl"
Tapani Pälli2758e652011-05-16 16:56:43 +03001399 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001400 EGL_DRIVERS_DIRS=""
Marek Olšákad50abba2011-06-14 05:14:27 +02001401
Benjamin Franzke85fe9482011-08-09 14:23:18 +02001402 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1403
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001404 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001405 # build egl_glx when libGL is built
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001406 if test "x$enable_glx" = xyes; then
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001407 EGL_DRIVERS_DIRS="glx"
1408 fi
1409
Benjamin Franzke184bb092011-04-30 11:18:23 +02001410 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1411 [have_libudev=yes],[have_libudev=no])
Benjamin Franzkea7cd65f2011-05-31 11:14:46 +02001412 if test "$have_libudev" = yes; then
1413 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1414 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001415 if test "x$enable_dri" = xyes; then
Chia-I Wu39ae9652010-07-16 19:48:52 +08001416 # build egl_dri2 when xcb-dri2 is available
1417 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1418 [have_xcb_dri2=yes],[have_xcb_dri2=no])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001419
1420 if test "$have_xcb_dri2" = yes; then
1421 EGL_DRIVER_DRI2=dri2
1422 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
Benjamin Franzke4ca075a2011-03-02 21:23:04 +01001423 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1424 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1425 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001426 fi
1427 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001428
1429 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001430 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001431fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001432AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001433AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001434
1435dnl
Marek Olšák1251e1d2011-06-18 20:33:55 +02001436dnl EGL Gallium configuration
1437dnl
1438if test "x$enable_gallium_egl" = xyes; then
1439 if test "x$with_gallium_drivers" = x; then
1440 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1441 fi
1442 if test "x$enable_egl" = xno; then
1443 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1444 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +09001445 if test "x$have_libdrm" != xyes; then
1446 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1447 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001448
1449 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wub8f097f2011-06-20 12:01:39 +09001450 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
Marek Olšák1251e1d2011-06-18 20:33:55 +02001451 HAVE_ST_EGL="yes"
1452fi
1453
1454dnl
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001455dnl gbm Gallium configuration
1456dnl
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001457if test "x$enable_gallium_gbm" = xauto; then
Chia-I Wu95ef0692011-11-05 15:09:36 +08001458 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1459 yesyesyes*drm*)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001460 enable_gallium_gbm=yes ;;
1461 *)
1462 enable_gallium_gbm=no ;;
1463 esac
1464fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001465if test "x$enable_gallium_gbm" = xyes; then
1466 if test "x$with_gallium_drivers" = x; then
1467 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1468 fi
1469 if test "x$enable_gbm" = xno; then
1470 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1471 fi
Chia-I Wu95ef0692011-11-05 15:09:36 +08001472 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1473 if test "x$enable_dri" = xno; then
1474 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1475 fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001476
1477 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1478 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1479 HAVE_ST_GBM="yes"
1480fi
1481
1482dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001483dnl X.Org DDX configuration
1484dnl
1485if test "x$enable_xorg" = xyes; then
1486 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1487 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1488 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1489 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1490 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1491 HAVE_XEXTPROTO_71="no")
1492 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1493 HAVE_ST_XORG=yes
1494fi
1495
1496dnl
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001497dnl XA configuration
1498dnl
1499if test "x$enable_xa" = xyes; then
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001500AC_PROG_AWK
1501AC_PROG_GREP
1502AC_CHECK_PROG(NM, nm, "nm")
1503if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1504AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1505enable_xa=no
1506fi
1507fi
1508if test "x$enable_xa" = xyes; then
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001509 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1510 HAVE_ST_XA=yes
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001511 AC_SUBST(AWK)
1512 AC_SUBST(GREP)
1513 AC_SUBST(NM)
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001514fi
1515
1516dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001517dnl OpenVG configuration
1518dnl
1519VG_LIB_DEPS=""
1520
1521if test "x$enable_openvg" = xyes; then
1522 if test "x$enable_egl" = xno; then
1523 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1524 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001525 if test "x$with_gallium_drivers" = x; then
Marek Olšák440d71d2011-06-14 05:38:58 +02001526 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1527 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001528 if test "x$enable_gallium_egl" = xno; then
1529 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1530 fi
Marek Olšák440d71d2011-06-14 05:38:58 +02001531
1532 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1533 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1534 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1535 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1536 HAVE_ST_VEGA=yes
1537fi
1538
1539dnl
1540dnl D3D1X configuration
1541dnl
1542
1543if test "x$enable_d3d1x" = xyes; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001544 if test "x$with_gallium_drivers" = x; then
1545 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1546 fi
1547
Marek Olšák440d71d2011-06-14 05:38:58 +02001548 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1549 HAVE_ST_D3D1X=yes
1550fi
1551
1552dnl
Christian Königc3b22302011-07-04 15:04:41 +02001553dnl Gallium G3DVL configuration
1554dnl
1555AC_ARG_ENABLE([gallium-g3dvl],
1556 [AS_HELP_STRING([--enable-gallium-g3dvl],
1557 [build gallium g3dvl @<:@default=disabled@:>@])],
1558 [enable_gallium_g3dvl="$enableval"],
1559 [enable_gallium_g3dvl=no])
1560if test "x$enable_gallium_g3dvl" = xyes; then
1561 if test "x$with_gallium_drivers" = x; then
1562 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1563 fi
1564
1565 if test "x$enable_xvmc" = xauto; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001566 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
Christian Königc3b22302011-07-04 15:04:41 +02001567 fi
1568
1569 if test "x$enable_vdpau" = xauto; then
Christian König33bf4102011-07-14 13:57:23 +02001570 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001571 fi
1572
1573 if test "x$enable_va" = xauto; then
Christian König8619aa52011-07-14 14:09:25 +02001574 #don't enable vaapi state tracker even if package exists
1575 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001576 enable_va=no
1577 fi
1578fi
1579
Christian Königc3b22302011-07-04 15:04:41 +02001580if test "x$enable_xvmc" = xyes; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001581 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
Christian Königc3b22302011-07-04 15:04:41 +02001582 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1583 HAVE_ST_XVMC="yes"
1584fi
1585
Christian Königc3b22302011-07-04 15:04:41 +02001586if test "x$enable_vdpau" = xyes; then
Christian König33bf4102011-07-14 13:57:23 +02001587 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
Christian Königc3b22302011-07-04 15:04:41 +02001588 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1589 HAVE_ST_VDPAU="yes"
1590fi
1591
Christian Königc3b22302011-07-04 15:04:41 +02001592if test "x$enable_va" = xyes; then
Christian König8619aa52011-07-14 14:09:25 +02001593 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1594 AC_MSG_WARN([vaapi state tracker currently unmaintained])
Christian Königc3b22302011-07-04 15:04:41 +02001595 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1596 HAVE_ST_VA="yes"
1597fi
1598
Christian Königc3b22302011-07-04 15:04:41 +02001599dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001600dnl GLU configuration
1601dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001602AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001603 [AS_HELP_STRING([--disable-glu],
1604 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001605 [enable_glu="$enableval"],
1606 [enable_glu=yes])
Chia-I Wube5f34a2010-10-27 16:14:27 +08001607
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001608if test "x$enable_glu" = xyes; then
1609 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1610 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1611 enable_glu=no
1612 fi
Chia-I Wube5f34a2010-10-27 16:14:27 +08001613fi
1614
Dan Nicholsondca1b792007-10-23 09:25:58 -07001615if test "x$enable_glu" = xyes; then
1616 SRC_DIRS="$SRC_DIRS glu"
1617
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001618 if test "x$enable_glx" = xno; then
Dan Nicholson979ff512007-12-05 18:47:01 -08001619 # Link libGLU to libOSMesa instead of libGL
1620 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001621 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001622 if test "$enable_static" = no; then
1623 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1624 else
1625 GLU_MESA_DEPS=""
1626 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001627 else
Dan Nicholson88586332007-11-15 08:59:57 -08001628 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001629 GLU_PC_REQ="gl"
1630 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001631 if test "$enable_static" = no; then
1632 GLU_LIB_DEPS="-lm"
1633 GLU_MESA_DEPS='-l$(GL_LIB)'
1634 else
1635 GLU_LIB_DEPS=""
1636 GLU_MESA_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -08001637 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001638 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001639fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001640if test "$enable_static" = no; then
1641 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1642fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001643GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001644AC_SUBST([GLU_LIB_DEPS])
1645AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001646AC_SUBST([GLU_PC_REQ])
1647AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001648AC_SUBST([GLU_PC_LIB_PRIV])
1649AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001650
Dan Nicholson297e16c2008-05-05 15:42:53 -07001651AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001652
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001653dnl
1654dnl Gallium configuration
1655dnl
Marek Olšák58b6a192011-06-14 07:46:59 +02001656if test "x$with_gallium_drivers" != x; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001657 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001658fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001659
Dave Airlie81fe1982010-04-22 14:59:29 +10001660AC_SUBST([LLVM_CFLAGS])
1661AC_SUBST([LLVM_LIBS])
1662AC_SUBST([LLVM_LDFLAGS])
1663AC_SUBST([LLVM_VERSION])
1664
Chia-I Wube5f34a2010-10-27 16:14:27 +08001665case "x$enable_opengl$enable_gles1$enable_gles2" in
1666x*yes*)
1667 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1668 ;;
1669esac
Chia-I Wube5f34a2010-10-27 16:14:27 +08001670
Chia-I Wu874ccd52010-05-04 22:43:05 +08001671AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001672AC_SUBST([EGL_CLIENT_APIS])
1673
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001674AC_ARG_WITH([egl-platforms],
1675 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1676 [comma delimited native platforms libEGL supports, e.g.
Chia-I Wue7424d72010-09-19 16:54:39 +08001677 "x11,drm" @<:@default=auto@:>@])],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001678 [with_egl_platforms="$withval"],
1679 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001680
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001681EGL_PLATFORMS=""
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001682WAYLAND_EGL_LIB_DEPS=""
1683
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001684case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001685yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001686 if test "x$enable_egl" = xyes; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001687 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001688 fi
1689 ;;
1690*)
1691 if test "x$enable_egl" != xyes; then
1692 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1693 fi
1694 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001695 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1696 for plat in $egl_platforms; do
1697 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
Kristian Høgsberg1a8899d2011-02-10 10:45:06 -05001698 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001699 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001700 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1701 fi
Chia-I Wua5f8d372011-09-20 14:01:45 +08001702 if test "$plat" = "null"; then
1703 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1704 fi
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001705 if test "$plat" = "wayland"; then
Benjamin Franzke6b369c42011-02-21 16:22:34 +01001706 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001707 [AC_MSG_ERROR([cannot find libwayland-client])])
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001708 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
Benjamin Franzkeaaa3c0d2011-04-23 14:14:29 +02001709 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001710 fi
Benjamin Franzke9b8cd492011-07-02 13:46:09 +02001711 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
Benjamin Franzkee5fc4c82011-05-30 10:50:52 +02001712 AC_MSG_ERROR([EGL platform drm needs gbm])
1713 fi
Benjamin Franzke7ed18262011-07-02 13:46:42 +02001714 case "$plat$have_libudev" in
1715 waylandno|drmno)
1716 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1717 esac
Chia-I Wu49381d62010-01-11 01:23:01 +08001718 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001719 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001720 ;;
1721esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001722AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001723
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001724AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1725WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1726WAYLAND_EGL_PC_LIB_PRIV=
1727WAYLAND_EGL_PC_CFLAGS=
1728
1729AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1730AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1731AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1732
1733
Chia-I Wu28c3e572010-01-23 20:18:43 +08001734AC_ARG_WITH([egl-driver-dir],
1735 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1736 [directory for EGL drivers [[default=${libdir}/egl]]])],
1737 [EGL_DRIVER_INSTALL_DIR="$withval"],
1738 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1739AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1740
Joel Bosveld8acca482009-03-06 08:46:08 +09001741AC_ARG_WITH([xorg-driver-dir],
1742 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1743 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1744 [XORG_DRIVER_INSTALL_DIR="$withval"],
1745 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1746AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1747
Tom Fogal7085dce2009-08-13 19:40:30 -06001748AC_ARG_WITH([max-width],
1749 [AS_HELP_STRING([--with-max-width=N],
1750 [Maximum framebuffer width (4096)])],
1751 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1752 AS_IF([test "${withval}" -gt "4096"],
1753 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1754)
1755AC_ARG_WITH([max-height],
1756 [AS_HELP_STRING([--with-max-height=N],
1757 [Maximum framebuffer height (4096)])],
1758 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1759 AS_IF([test "${withval}" -gt "4096"],
1760 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1761)
1762
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001763dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001764dnl Gallium LLVM
1765dnl
1766AC_ARG_ENABLE([gallium-llvm],
1767 [AS_HELP_STRING([--enable-gallium-llvm],
Marek Olšáka86fc712011-04-21 13:27:55 +02001768 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
Dave Airlie81fe1982010-04-22 14:59:29 +10001769 [enable_gallium_llvm="$enableval"],
1770 [enable_gallium_llvm=auto])
Marek Olšák58b6a192011-06-14 07:46:59 +02001771if test "x$with_gallium_drivers" = x; then
1772 enable_gallium_llvm=no
1773fi
Marek Olšáka86fc712011-04-21 13:27:55 +02001774if test "x$enable_gallium_llvm" = xauto; then
1775 case "$host_cpu" in
1776 i*86|x86_64) enable_gallium_llvm=yes;;
1777 esac
1778fi
Dave Airlie81fe1982010-04-22 14:59:29 +10001779if test "x$enable_gallium_llvm" = xyes; then
Marek Olšák99fba502011-07-23 15:57:51 +02001780 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1781
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001782 if test "x$LLVM_CONFIG" != xno; then
ojab2fe6c252012-01-05 14:18:34 +04001783 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
Johannes Obermayraa284042011-12-19 23:11:46 +01001784 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
Marcin Slusarz75739042011-10-13 21:45:45 +02001785 LLVM_LIBS="`$LLVM_CONFIG --libs`"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001786
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001787 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
Marek Olšák67aba792011-06-27 08:25:09 +02001788 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001789 MESA_LLVM=1
1790 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001791 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001792 fi
1793else
1794 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001795fi
1796
Thomas Balling Sørensen32999972010-07-14 00:34:56 +02001797dnl Directory for VDPAU libs
1798AC_ARG_WITH([vdpau-libdir],
1799 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1800 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1801 [VDPAU_LIB_INSTALL_DIR="$withval"],
1802 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1803AC_SUBST([VDPAU_LIB_INSTALL_DIR])
Younes Manton40cd0822010-03-05 23:11:05 -05001804
Thomas Balling Sørensen501ac572010-10-24 19:27:29 +02001805dnl Directory for VA libs
1806AC_ARG_WITH([va-libdir],
1807 [AS_HELP_STRING([--with-va-libdir=DIR],
1808 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1809 [VA_LIB_INSTALL_DIR="$withval"],
1810 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1811AC_SUBST([VA_LIB_INSTALL_DIR])
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001812
Dave Airlie81fe1982010-04-22 14:59:29 +10001813dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001814dnl Gallium helper functions
1815dnl
1816gallium_check_st() {
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001817 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
Christian Königc3b22302011-07-04 15:04:41 +02001818 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1819 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
Chia-I Wu81239342011-07-02 09:49:17 +09001820 if test "x$have_libdrm" != xyes; then
1821 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1822 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001823 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1824 fi
1825 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1826 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1827 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001828 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001829 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1830 fi
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001831 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1832 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1833 fi
Christian Königc3b22302011-07-04 15:04:41 +02001834 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1835 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
Younes Mantonb97816d2011-07-14 12:22:20 -04001836 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001837 fi
1838 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1839 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
Younes Mantonb97816d2011-07-14 12:22:20 -04001840 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001841 fi
1842 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1843 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
Younes Mantonb97816d2011-07-14 12:22:20 -04001844 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001845 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001846}
1847
Marek Olšákc17fb852011-06-14 04:03:17 +02001848gallium_require_llvm() {
1849 if test "x$MESA_LLVM" = x0; then
1850 case "$host_cpu" in
1851 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1852 esac
1853 fi
1854}
1855
Marek Olšák58b6a192011-06-14 07:46:59 +02001856dnl Gallium drivers
Marek Olšák02c8ee22011-06-27 08:02:31 +02001857dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
Marek Olšák58b6a192011-06-14 07:46:59 +02001858if test "x$with_gallium_drivers" != x; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001859 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1860 for driver in $gallium_drivers; do
1861 case "x$driver" in
1862 xsvga)
Marek Olšák02c8ee22011-06-27 08:02:31 +02001863 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
Thomas Hellstromd742a642011-09-29 21:41:21 +02001864 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
Marek Olšák58b6a192011-06-14 07:46:59 +02001865 ;;
1866 xi915)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001867 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Marek Olšák02c8ee22011-06-27 08:02:31 +02001868 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1869 if test "x$MESA_LLVM" = x1; then
1870 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1871 fi
1872 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Marek Olšák58b6a192011-06-14 07:46:59 +02001873 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1874 ;;
Marek Olšák58b6a192011-06-14 07:46:59 +02001875 xr300)
1876 gallium_require_llvm "Gallium R300"
Marek Olšák02c8ee22011-06-27 08:02:31 +02001877 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1878 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
Marek Olšák58b6a192011-06-14 07:46:59 +02001879 ;;
1880 xr600)
1881 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
Marek Olšákbf0baa72011-09-27 16:42:01 +02001882 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
Marek Olšák58b6a192011-06-14 07:46:59 +02001883 ;;
1884 xnouveau)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001885 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
Marek Olšák58b6a192011-06-14 07:46:59 +02001886 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
Maarten Lankhorstdf8f8642011-10-18 14:24:30 +02001887 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
Marek Olšák58b6a192011-06-14 07:46:59 +02001888 ;;
1889 xswrast)
Marek Olšákc6f59fc2011-07-26 01:05:13 +02001890 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1891 if test "x$MESA_LLVM" = x1; then
1892 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1893 fi
1894
Marek Olšák58b6a192011-06-14 07:46:59 +02001895 if test "x$HAVE_ST_DRI" = xyes; then
1896 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1897 fi
Christian Königc3b22302011-07-04 15:04:41 +02001898 if test "x$HAVE_ST_VDPAU" = xyes; then
1899 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1900 fi
1901 if test "x$HAVE_ST_XVMC" = xyes; then
1902 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1903 fi
1904 if test "x$HAVE_ST_VA" = xyes; then
1905 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1906 fi
Eric Anholt48c99252011-10-14 14:33:00 -07001907 if test "x$HAVE_ST_VDPAU" = xyes ||
1908 test "x$HAVE_ST_XVMC" = xyes ||
1909 test "x$HAVE_ST_VA" = xyes; then
Younes Mantonb97816d2011-07-14 12:22:20 -04001910 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1911 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1912 fi
1913 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001914 ;;
1915 *)
1916 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1917 ;;
1918 esac
1919 done
Chia-I Wua1306f42010-01-22 15:51:51 +08001920fi
1921
Younes Mantonb97816d2011-07-14 12:22:20 -04001922if test "x$NEED_G3DVL_DRI" = xyes; then
1923 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1924fi
1925
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001926dnl prepend CORE_DIRS to SRC_DIRS
1927SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001928
1929dnl Restore LDFLAGS and CPPFLAGS
1930LDFLAGS="$_SAVE_LDFLAGS"
1931CPPFLAGS="$_SAVE_CPPFLAGS"
1932
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +02001933dnl Add user CFLAGS and CXXFLAGS
1934CFLAGS="$CFLAGS $USER_CFLAGS"
1935CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1936
Dan Nicholsondca1b792007-10-23 09:25:58 -07001937dnl Substitute the config
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001938AC_CONFIG_FILES([configs/autoconf
Eric Anholte3264802012-01-12 14:28:37 -08001939 src/mesa/drivers/dri/i965/Makefile
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001940 tests/Makefile
1941 tests/glx/Makefile])
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001942
Dan Nicholsondca1b792007-10-23 09:25:58 -07001943dnl Replace the configs/current symlink
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001944AC_CONFIG_COMMANDS([configs],[
1945if test -f configs/current || test -L configs/current; then
1946 rm -f configs/current
1947fi
1948ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001949])
1950
Marek Olšák618dbc82011-06-27 03:12:57 +02001951dnl Sort the dirs alphabetically
Marek Olšák3c799622011-09-27 16:51:05 +02001952GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1953GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1954GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1955GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
Marek Olšák618dbc82011-06-27 03:12:57 +02001956
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001957AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001958
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001959dnl
1960dnl Output some configuration info for the user
1961dnl
1962echo ""
1963echo " prefix: $prefix"
1964echo " exec_prefix: $exec_prefix"
1965echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001966echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001967
Chia-I Wu815faa42010-10-29 12:34:44 +08001968dnl API info
1969echo ""
1970echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
Chia-I Wu815faa42010-10-29 12:34:44 +08001971echo " OpenVG: $enable_openvg"
1972
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001973dnl Driver info
1974echo ""
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001975if test "x$enable_osmesa" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001976 echo " OSMesa: lib$OSMESA_LIB"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001977else
Chia-I Wu815faa42010-10-29 12:34:44 +08001978 echo " OSMesa: no"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001979fi
1980
1981if test "x$enable_dri" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001982 # cleanup the drivers var
1983 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1984 if test "x$DRI_DIRS" = x; then
1985 echo " DRI drivers: no"
1986 else
1987 echo " DRI drivers: $dri_dirs"
1988 fi
1989 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001990 echo " Shared dricore: $enable_dricore"
Dan Nicholson544ab202007-12-30 08:41:53 -08001991fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001992
1993case "x$enable_glx$enable_xlib_glx" in
1994xyesyes)
1995 echo " GLX: Xlib-based"
1996 ;;
1997xyesno)
1998 echo " GLX: DRI-based"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001999 ;;
2000*)
2001 echo " GLX: $enable_glx"
2002 ;;
2003esac
2004
Chia-I Wu815faa42010-10-29 12:34:44 +08002005echo ""
2006echo " GLU: $enable_glu"
Chia-I Wu815faa42010-10-29 12:34:44 +08002007
2008dnl EGL
2009echo ""
2010echo " EGL: $enable_egl"
2011if test "$enable_egl" = yes; then
2012 echo " EGL platforms: $EGL_PLATFORMS"
Chia-I Wu12300502010-10-31 21:01:54 +08002013
2014 egl_drivers=""
2015 for d in $EGL_DRIVERS_DIRS; do
Chia-I Wuc98ea262011-01-07 16:30:08 +08002016 egl_drivers="$egl_drivers builtin:egl_$d"
Chia-I Wu12300502010-10-31 21:01:54 +08002017 done
2018
Marek Olšák1251e1d2011-06-18 20:33:55 +02002019 if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wu12300502010-10-31 21:01:54 +08002020 echo " EGL drivers: ${egl_drivers} egl_gallium"
2021 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
Chia-I Wu815faa42010-10-29 12:34:44 +08002022 else
Chia-I Wu12300502010-10-31 21:01:54 +08002023 echo " EGL drivers: $egl_drivers"
Chia-I Wu815faa42010-10-29 12:34:44 +08002024 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01002025fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002026
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002027echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07002028if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01002029 echo " llvm: yes"
2030 echo " llvm-config: $LLVM_CONFIG"
2031 echo " llvm-version: $LLVM_VERSION"
2032else
2033 echo " llvm: no"
2034fi
2035
2036echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002037if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2038 echo " Gallium: yes"
2039 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00002040 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002041 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00002042 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002043 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2044else
2045 echo " Gallium: no"
2046fi
2047
Daniel Vetter8f15c312011-11-28 22:24:26 +01002048
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002049dnl Libraries
2050echo ""
2051echo " Shared libs: $enable_shared"
2052echo " Static libs: $enable_static"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002053
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002054dnl Compiler options
2055# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2056cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2057 $SED 's/^ *//;s/ */ /;s/ *$//'`
2058cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2059 $SED 's/^ *//;s/ */ /;s/ *$//'`
2060defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2061echo ""
2062echo " CFLAGS: $cflags"
2063echo " CXXFLAGS: $cxxflags"
2064echo " Macros: $defines"
Kenneth Graunke3acc8262010-10-25 13:52:58 -07002065echo ""
2066echo " PYTHON2: $PYTHON2"
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002067
Dan Nicholsondca1b792007-10-23 09:25:58 -07002068echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07002069echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07002070echo ""