blob: 06d400f159ec9d94f377eb01501e26bce11745e6 [file] [log] [blame]
Matt Turner2f1ab632012-01-03 21:58:37 -05001dnl Process this file with autoconf to create configure.
Dan Nicholsondca1b792007-10-23 09:25:58 -07002
Matt Turner51723832011-12-23 19:21:04 -05003AC_PREREQ([2.60])
Dan Nicholsondca1b792007-10-23 09:25:58 -07004
Dan Nicholson00994ac2008-04-30 15:06:00 -07005dnl Versioning - scrape the version from configs/default
6m4_define([mesa_version],
Vinson Lee48f8a762010-05-11 12:33:30 -07007 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
Dan Nicholson356f3112009-04-29 06:49:27 -07008m4_ifval(mesa_version,,
9 [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
Dan Nicholsondca1b792007-10-23 09:25:58 -070010
Dan Nicholsone97ab722008-07-01 08:55:42 -070011dnl Tell the user about autoconf.html in the --help output
12m4_divert_once([HELP_END], [
13See docs/autoconf.html for more details on the options for Mesa.])
14
Dan Nicholson00994ac2008-04-30 15:06:00 -070015AC_INIT([Mesa],[mesa_version],
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -080016 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
Dan Nicholson297e16c2008-05-05 15:42:53 -070017AC_CONFIG_AUX_DIR([bin])
Dan Nicholsondca1b792007-10-23 09:25:58 -070018AC_CANONICAL_HOST
Ian Romanick3ef3ba42011-12-15 18:45:27 -080019AM_INIT_AUTOMAKE([foreign])
Dan Nicholsondca1b792007-10-23 09:25:58 -070020
Eric Anholt7fa5c912012-01-12 14:56:56 -080021# Support silent build rules, requires at least automake-1.11. Disable
22# by either passing --disable-silent-rules to configure or passing V=1
23# to make
24m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25
Eric Anholte3264802012-01-12 14:28:37 -080026LT_PREREQ([2.2])
27LT_INIT([disable-static])
28
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +020029dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
30USER_CFLAGS="$CFLAGS"
31USER_CXXFLAGS="$CXXFLAGS"
32
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070033dnl Versions for external dependencies
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000034LIBDRM_REQUIRED=2.4.24
35LIBDRM_RADEON_REQUIRED=2.4.24
Eric Anholtc4089d42011-12-29 18:12:48 -080036LIBDRM_INTEL_REQUIRED=2.4.30
Johannes Obermayr873379a2011-06-02 17:15:44 -060037LIBDRM_NOUVEAU_REQUIRED=0.6
Jesse Barnes1e39fc72011-05-05 13:09:16 -070038DRI2PROTO_REQUIRED=2.6
39GLPROTO_REQUIRED=1.4.14
Chris Wilsonfaf1dda2011-03-01 18:39:15 +000040LIBDRM_XORG_REQUIRED=2.4.24
Jakob Bornecrantz683a0992010-03-11 19:23:15 +000041LIBKMS_XORG_REQUIRED=1.0.0
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070042
Dan Nicholsondca1b792007-10-23 09:25:58 -070043dnl Check for progs
44AC_PROG_CPP
45AC_PROG_CC
46AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070047AC_CHECK_PROGS([MAKE], [gmake make])
Kenneth Graunke3acc8262010-10-25 13:52:58 -070048AC_CHECK_PROGS([PYTHON2], [python2 python])
Matt Turner3a343ef2012-01-11 01:05:56 -050049AC_PROG_SED
Matt Turnerfd827a82012-01-21 22:43:02 -050050AC_PROG_MKDIR_P
Dan Nicholson297e16c2008-05-05 15:42:53 -070051AC_PATH_PROG([MKDEP], [makedepend])
Dan Nicholson41b00702007-12-12 08:48:30 -080052
Luca Barbierif762f7b2010-09-24 10:10:09 +020053if test "x$MKDEP" = "x"; then
54 AC_MSG_ERROR([makedepend is required to build Mesa])
55fi
56
Brian Paulde1df262011-05-18 07:50:21 -060057AC_PATH_PROG([FLEX], [flex])
58test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
59
60AC_PATH_PROG([BISON], [bison])
61test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
62
Dan Nicholsonbc302b22009-05-22 09:39:02 -070063dnl Our fallback install-sh is a symlink to minstall. Use the existing
64dnl configuration in that case.
65AC_PROG_INSTALL
66test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
67
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070068dnl We need a POSIX shell for parts of the build. Assume we have one
69dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070070case "$host_os" in
71solaris*)
72 # Solaris /bin/sh is too old/non-POSIX compliant
73 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070074 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070075 ;;
76esac
77
Ian Romanick3ef3ba42011-12-15 18:45:27 -080078AC_PATH_PROG([GTESTCONFIG], [gtest-config])
79if test "x$GTESTCONFIG" != "x"; then
80 GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
81 GTEST_LIBS=`gtest-config --ldflags --libs`
Ian Romanick3ef3ba42011-12-15 18:45:27 -080082 AC_SUBST([GTEST_CFLAGS])
83 AC_SUBST([GTEST_LIBS])
84 HAVE_GTEST=yes
85else
86 HAVE_GTEST=no
87fi
88AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
89
nobled2a501872010-08-29 20:03:37 -040090dnl clang is mostly GCC-compatible, but its version is much lower,
91dnl so we have to check for it.
92AC_MSG_CHECKING([if compiling with clang])
93
94AC_COMPILE_IFELSE(
95[AC_LANG_PROGRAM([], [[
96#ifndef __clang__
97 not clang
98#endif
99]])],
Jeremy Huddlestonb728eef2011-05-05 14:08:57 -0700100[acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
nobled2a501872010-08-29 20:03:37 -0400101
Jeremy Huddlestonb728eef2011-05-05 14:08:57 -0700102AC_MSG_RESULT([$acv_mesa_CLANG])
nobled2a501872010-08-29 20:03:37 -0400103
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800104dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
105dnl versions are explictly not supported.
Jeremy Huddlestonb728eef2011-05-05 14:08:57 -0700106if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800107 AC_MSG_CHECKING([whether gcc version is sufficient])
108 major=0
109 minor=0
110
111 GCC_VERSION=`$CC -dumpversion`
112 if test $? -eq 0; then
113 major=`echo $GCC_VERSION | cut -d. -f1`
Marcin Baczyńskifa013412011-07-13 21:26:50 +0200114 minor=`echo $GCC_VERSION | cut -d. -f2`
Ian Romanick9aa3aa72010-03-03 15:59:37 -0800115 fi
116
117 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
118 AC_MSG_RESULT([no])
119 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
120 else
121 AC_MSG_RESULT([yes])
122 fi
123fi
124
125
Dan Nicholsondb7fc632008-03-07 11:48:09 -0800126MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500127dnl Ask gcc where it's keeping its secret headers
128if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -0800129 for dir in include include-fixed; do
130 GCC_INCLUDES=`$CC -print-file-name=$dir`
131 if test "x$GCC_INCLUDES" != x && \
132 test "$GCC_INCLUDES" != "$dir" && \
133 test -d "$GCC_INCLUDES"; then
134 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
135 fi
136 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500137fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700138AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500139
Dan Nicholson41b00702007-12-12 08:48:30 -0800140dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700141m4_ifndef([PKG_PROG_PKG_CONFIG],
142 [m4_fatal([Could not locate the pkg-config autoconf macros.
143 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
144 are in a different location, try setting the environment variable
145 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700146PKG_PROG_PKG_CONFIG()
147
148dnl LIB_DIR - library basename
149LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700150AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700151
152dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
153_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700154AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
155AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700156
157dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
158_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700159AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
160AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700161
162dnl Compiler macros
163DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700164AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700165case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700166linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800167 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700168 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700169solaris*)
170 DEFINES="$DEFINES -DPTHREADS -DSVR4"
171 ;;
Brian Paul97988902010-02-18 12:46:12 -0700172cygwin*)
173 DEFINES="$DEFINES -DPTHREADS"
174 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700175esac
176
177dnl Add flags for gcc and g++
178if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700179 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800180
181 # Enable -fvisibility=hidden if using a gcc that supports it
182 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800183 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100184 VISIBILITY_CFLAGS="-fvisibility=hidden"
185 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800186 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100187 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
188
189 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
190 CFLAGS=$save_CFLAGS
Dan Nicholson0c275b62008-01-15 22:52:25 -0800191
192 # Work around aliasing bugs - developers should comment this out
193 CFLAGS="$CFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100194
195 # gcc's builtin memcmp is slower than glibc's
196 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
197 CFLAGS="$CFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700198fi
199if test "x$GXX" = xyes; then
200 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800201
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400202 # Enable -fvisibility=hidden if using a gcc that supports it
203 save_CXXFLAGS="$CXXFLAGS"
204 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100205 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
206 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
Jon TURNEY560f7622011-04-26 11:49:01 +0100207 AC_LANG_PUSH([C++])
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400208 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100209 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
Jon TURNEY560f7622011-04-26 11:49:01 +0100210 AC_LANG_POP([C++])
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100211
212 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
213 CXXFLAGS=$save_CXXFLAGS
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400214
Dan Nicholson0c275b62008-01-15 22:52:25 -0800215 # Work around aliasing bugs - developers should comment this out
216 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
José Fonseca1448bdf2011-10-14 18:28:55 +0100217
218 # gcc's builtin memcmp is slower than glibc's
219 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
220 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700221fi
222
Jon TURNEYdb786432011-04-26 11:56:02 +0100223dnl even if the compiler appears to support it, using visibility attributes isn't
224dnl going to do anything useful currently on cygwin apart from emit lots of warnings
225case "$host_os" in
226cygwin*)
227 VISIBILITY_CFLAGS=""
228 VISIBILITY_CXXFLAGS=""
229 ;;
230esac
231
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +1100232AC_SUBST([VISIBILITY_CFLAGS])
233AC_SUBST([VISIBILITY_CXXFLAGS])
234
Dan Nicholsondca1b792007-10-23 09:25:58 -0700235dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700236AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700237 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700238AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700239 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700240AC_SUBST([OPT_FLAGS])
241AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700242
243dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600244dnl Hacks to enable 32 or 64 bit build
245dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700246AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600247 [AS_HELP_STRING([--enable-32-bit],
248 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700249 [enable_32bit="$enableval"],
250 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600251)
252if test "x$enable_32bit" = xyes; then
253 if test "x$GCC" = xyes; then
254 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700255 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600256 fi
257 if test "x$GXX" = xyes; then
258 CXXFLAGS="$CXXFLAGS -m32"
259 fi
260fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700261AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600262 [AS_HELP_STRING([--enable-64-bit],
263 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700264 [enable_64bit="$enableval"],
265 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600266)
267if test "x$enable_64bit" = xyes; then
268 if test "x$GCC" = xyes; then
269 CFLAGS="$CFLAGS -m64"
270 fi
271 if test "x$GXX" = xyes; then
272 CXXFLAGS="$CXXFLAGS -m64"
273 fi
274fi
275
Dan Nicholson88586332007-11-15 08:59:57 -0800276dnl Can't have static and shared libraries, default to static if user
277dnl explicitly requested. If both disabled, set to static since shared
Matt Turner0c178232012-01-14 11:10:06 -0500278dnl was explicitly requested.
Dan Nicholson88586332007-11-15 08:59:57 -0800279case "x$enable_static$enable_shared" in
280xyesyes )
281 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
282 enable_shared=no
283 ;;
284xnono )
285 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
286 enable_static=yes
287 ;;
288esac
289
290dnl
291dnl mklib options
292dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700293AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800294if test "$enable_static" = yes; then
295 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
296fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700297AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800298
Dan Nicholson23656c42007-12-12 09:02:31 -0800299dnl
300dnl other compiler options
301dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700302AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800303 [AS_HELP_STRING([--enable-debug],
304 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700305 [enable_debug="$enableval"],
306 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800307)
308if test "x$enable_debug" = xyes; then
309 DEFINES="$DEFINES -DDEBUG"
310 if test "x$GCC" = xyes; then
311 CFLAGS="$CFLAGS -g"
312 fi
313 if test "x$GXX" = xyes; then
314 CXXFLAGS="$CXXFLAGS -g"
315 fi
316fi
Dan Nicholson88586332007-11-15 08:59:57 -0800317
318dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700319dnl library names
320dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100321LIB_PREFIX_GLOB='lib'
322LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800323if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800324 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800325else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700326 case "$host_os" in
327 darwin* )
328 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100329 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100330 dnl prefix can be 'cyg' or 'lib'
331 LIB_PREFIX_GLOB='???'
332 LIB_VERSION_SEPARATOR='-'
333 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700334 aix* )
335 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700336 * )
337 LIB_EXTENSION='so' ;;
338 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800339fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800340
Marek Olšák848f7d32011-04-01 01:12:41 +0200341dnl
Tom Fogalc0573fb2011-10-10 10:33:18 -0600342dnl Mangled Mesa support
343dnl
344AC_ARG_ENABLE([mangling],
345 [AS_HELP_STRING([--enable-mangling],
346 [enable mangled symbols and library name @<:@default=disabled@:>@])],
347 [enable_mangling="${enableval}"],
348 [enable_mangling=no]
349)
350GL_LIB="GL"
351GLU_LIB="GLU"
352OSMESA_LIB="OSMesa"
353if test "x${enable_mangling}" = "xyes" ; then
354 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
355 GL_LIB="MangledGL"
356 GLU_LIB="MangledGLU"
357 OSMESA_LIB="MangledOSMesa"
358fi
359AC_SUBST([GL_LIB])
360AC_SUBST([GLU_LIB])
361AC_SUBST([OSMESA_LIB])
362
363dnl
Marek Olšák848f7d32011-04-01 01:12:41 +0200364dnl potentially-infringing-but-nobody-knows-for-sure stuff
365dnl
366AC_ARG_ENABLE([texture-float],
367 [AS_HELP_STRING([--enable-texture-float],
368 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
369 [enable_texture_float="$enableval"],
370 [enable_texture_float=no]
371)
372if test "x$enable_texture_float" = xyes; then
373 AC_MSG_WARN([Floating-point textures enabled.])
374 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
375 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
376fi
377
Dan Nicholson8217f242009-02-11 15:16:00 -0800378GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
379GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800380OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800381EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500382GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
383GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800384VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800385GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800386
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100387GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
388GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100389OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
390EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
391EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
392GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
393GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
394VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800395GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800396
Dan Nicholson297e16c2008-05-05 15:42:53 -0700397AC_SUBST([GL_LIB_NAME])
398AC_SUBST([GLU_LIB_NAME])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700399AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800400AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500401AC_SUBST([GLESv1_CM_LIB_NAME])
402AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800403AC_SUBST([VG_LIB_NAME])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800404AC_SUBST([GLAPI_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700405
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700406AC_SUBST([GL_LIB_GLOB])
407AC_SUBST([GLU_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700408AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800409AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500410AC_SUBST([GLESv1_CM_LIB_GLOB])
411AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800412AC_SUBST([VG_LIB_GLOB])
Chia-I Wu9767d3b2010-12-26 18:02:59 +0800413AC_SUBST([GLAPI_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700414
Dan Nicholsondca1b792007-10-23 09:25:58 -0700415dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700416dnl Arch/platform-specific settings
417dnl
418AC_ARG_ENABLE([asm],
419 [AS_HELP_STRING([--disable-asm],
420 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
421 [enable_asm="$enableval"],
422 [enable_asm=yes]
423)
424asm_arch=""
425ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800426MESA_ASM_SOURCES=""
427GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700428AC_MSG_CHECKING([whether to enable assembly])
429test "x$enable_asm" = xno && AC_MSG_RESULT([no])
430# disable if cross compiling on x86/x86_64 since we must run gen_matypes
431if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
432 case "$host_cpu" in
433 i?86 | x86_64)
434 enable_asm=no
435 AC_MSG_RESULT([no, cross compiling])
436 ;;
437 esac
438fi
439# check for supported arches
440if test "x$enable_asm" = xyes; then
441 case "$host_cpu" in
442 i?86)
443 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700444 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700445 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
446 ;;
447 esac
448 ;;
449 x86_64)
450 case "$host_os" in
Pierre Allegraud8fd8de32011-01-06 07:58:57 -0700451 linux* | *freebsd* | dragonfly* | *netbsd*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700452 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
453 ;;
454 esac
455 ;;
456 powerpc)
457 case "$host_os" in
458 linux*)
459 asm_arch=ppc
460 ;;
461 esac
462 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800463 sparc*)
464 case "$host_os" in
465 linux*)
466 asm_arch=sparc
467 ;;
468 esac
469 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700470 esac
471
472 case "$asm_arch" in
473 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800474 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800475 MESA_ASM_SOURCES='$(X86_SOURCES)'
476 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700477 AC_MSG_RESULT([yes, x86])
478 ;;
479 x86_64)
480 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800481 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
482 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700483 AC_MSG_RESULT([yes, x86_64])
484 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800485 sparc)
486 ASM_FLAGS="-DUSE_SPARC_ASM"
487 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
488 GLAPI_ASM_SOURCES='$(SPARC_API)'
489 AC_MSG_RESULT([yes, sparc])
490 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700491 *)
492 AC_MSG_RESULT([no, platform not supported])
493 ;;
494 esac
495fi
496AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800497AC_SUBST([MESA_ASM_SOURCES])
498AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700499
500dnl PIC code macro
501MESA_PIC_FLAGS
502
503dnl Check to see if dlopen is in default libraries (like Solaris, which
504dnl has it in libc), or if libdl is needed to get it.
505AC_CHECK_FUNC([dlopen], [],
506 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800507AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700508
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700509dnl See if posix_memalign is available
510AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
511
Dan Nicholson871125a2008-06-04 13:00:35 -0700512dnl SELinux awareness.
513AC_ARG_ENABLE([selinux],
514 [AS_HELP_STRING([--enable-selinux],
515 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
516 [MESA_SELINUX="$enableval"],
517 [MESA_SELINUX=no])
518if test "x$enable_selinux" = "xyes"; then
519 AC_CHECK_HEADER([selinux/selinux.h],[],
520 [AC_MSG_ERROR([SELinux headers not found])])
521 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
522 [AC_MSG_ERROR([SELinux library not found])])
523 SELINUX_LIBS="-lselinux"
524 DEFINES="$DEFINES -DMESA_SELINUX"
525fi
526
Marek Olšák440d71d2011-06-14 05:38:58 +0200527dnl Options for APIs
Chia-I Wube5f34a2010-10-27 16:14:27 +0800528AC_ARG_ENABLE([opengl],
529 [AS_HELP_STRING([--disable-opengl],
530 [disable support for standard OpenGL API @<:@default=no@:>@])],
531 [enable_opengl="$enableval"],
532 [enable_opengl=yes])
533AC_ARG_ENABLE([gles1],
534 [AS_HELP_STRING([--enable-gles1],
535 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
536 [enable_gles1="$enableval"],
537 [enable_gles1=no])
538AC_ARG_ENABLE([gles2],
539 [AS_HELP_STRING([--enable-gles2],
540 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
541 [enable_gles2="$enableval"],
542 [enable_gles2=no])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800543AC_ARG_ENABLE([openvg],
544 [AS_HELP_STRING([--enable-openvg],
545 [enable support for OpenVG API @<:@default=no@:>@])],
546 [enable_openvg="$enableval"],
547 [enable_openvg=no])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900548
549AC_ARG_ENABLE([dri],
550 [AS_HELP_STRING([--enable-dri],
551 [enable DRI modules @<:@default=auto@:>@])],
552 [enable_dri="$enableval"],
553 [enable_dri=auto])
554AC_ARG_ENABLE([glx],
555 [AS_HELP_STRING([--enable-glx],
556 [enable GLX library @<:@default=auto@:>@])],
557 [enable_glx="$enableval"],
558 [enable_glx=auto])
559AC_ARG_ENABLE([osmesa],
560 [AS_HELP_STRING([--enable-osmesa],
561 [enable OSMesa library @<:@default=auto@:>@])],
562 [enable_osmesa="$enableval"],
563 [enable_osmesa=auto])
564AC_ARG_ENABLE([egl],
565 [AS_HELP_STRING([--disable-egl],
566 [disable EGL library @<:@default=enabled@:>@])],
567 [enable_egl="$enableval"],
568 [enable_egl=yes])
569
Marek Olšák440d71d2011-06-14 05:38:58 +0200570AC_ARG_ENABLE([xorg],
571 [AS_HELP_STRING([--enable-xorg],
572 [enable support for X.Org DDX API @<:@default=no@:>@])],
573 [enable_xorg="$enableval"],
574 [enable_xorg=no])
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200575AC_ARG_ENABLE([xa],
576 [AS_HELP_STRING([--enable-xa],
577 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
578 [enable_xa="$enableval"],
579 [enable_xa=no])
Marek Olšák440d71d2011-06-14 05:38:58 +0200580AC_ARG_ENABLE([d3d1x],
581 [AS_HELP_STRING([--enable-d3d1x],
582 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
583 [enable_d3d1x="$enableval"],
584 [enable_d3d1x=no])
Benjamin Franzkeeddcecb2011-05-26 15:09:39 +0200585AC_ARG_ENABLE([gbm],
586 [AS_HELP_STRING([--enable-gbm],
587 [enable gbm library @<:@default=auto@:>@])],
588 [enable_gbm="$enableval"],
589 [enable_gbm=auto])
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900590
Christian Königc3b22302011-07-04 15:04:41 +0200591AC_ARG_ENABLE([xvmc],
592 [AS_HELP_STRING([--enable-xvmc],
593 [enable xvmc library @<:@default=auto@:>@])],
594 [enable_xvmc="$enableval"],
595 [enable_xvmc=auto])
596AC_ARG_ENABLE([vdpau],
597 [AS_HELP_STRING([--enable-vdpau],
598 [enable vdpau library @<:@default=auto@:>@])],
599 [enable_vdpau="$enableval"],
600 [enable_vdpau=auto])
601AC_ARG_ENABLE([va],
602 [AS_HELP_STRING([--enable-va],
603 [enable va library @<:@default=auto@:>@])],
604 [enable_va="$enableval"],
605 [enable_va=auto])
606
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900607AC_ARG_ENABLE([xlib_glx],
608 [AS_HELP_STRING([--enable-xlib-glx],
609 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
610 [enable_xlib_glx="$enableval"],
611 [enable_xlib_glx=auto])
Marek Olšák1251e1d2011-06-18 20:33:55 +0200612AC_ARG_ENABLE([gallium_egl],
613 [AS_HELP_STRING([--enable-gallium-egl],
614 [enable optional EGL state tracker (not required
615 for EGL support in Gallium with OpenGL and OpenGL ES)
616 @<:@default=disable@:>@])],
617 [enable_gallium_egl="$enableval"],
618 [enable_gallium_egl=no])
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200619AC_ARG_ENABLE([gallium_gbm],
620 [AS_HELP_STRING([--enable-gallium-gbm],
621 [enable optional gbm state tracker (not required for
622 gbm support in Gallium)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200623 @<:@default=auto@:>@])],
Benjamin Franzke48d4a002011-05-26 15:11:50 +0200624 [enable_gallium_gbm="$enableval"],
Benjamin Franzkeb18b2992011-07-02 13:45:14 +0200625 [enable_gallium_gbm=auto])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800626
Marek Olšák58b6a192011-06-14 07:46:59 +0200627# Option for Gallium drivers
Thomas Hellstrom87118d82012-01-12 12:10:53 +0100628GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
Marek Olšák58b6a192011-06-14 07:46:59 +0200629
630AC_ARG_WITH([gallium-drivers],
631 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
632 [comma delimited Gallium drivers list, e.g.
Daniel Vetter8f15c312011-11-28 22:24:26 +0100633 "i915,nouveau,r300,r600,svga,swrast"
Marek Olšák0c7c5b62011-06-14 08:31:11 +0200634 @<:@default=r300,r600,swrast@:>@])],
Marek Olšák58b6a192011-06-14 07:46:59 +0200635 [with_gallium_drivers="$withval"],
636 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
Chia-I Wu156e9552010-10-30 14:26:01 +0800637
Ian Romanickdb311b42011-06-22 11:35:27 -0700638# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
639# here so that the script doesn't choke on an unknown driver name later.
640case "$with_gallium_drivers" in
641 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
642 no) with_gallium_drivers='' ;;
643esac
644
Chia-I Wube5f34a2010-10-27 16:14:27 +0800645if test "x$enable_opengl" = xno -a \
646 "x$enable_gles1" = xno -a \
647 "x$enable_gles2" = xno -a \
Marek Olšák440d71d2011-06-14 05:38:58 +0200648 "x$enable_openvg" = xno -a \
649 "x$enable_xorg" = xno -a \
Thomas Hellstrom424b1212011-07-04 10:21:35 +0200650 "x$enable_xa" = xno -a \
Christian Königc3b22302011-07-04 15:04:41 +0200651 "x$enable_d3d1x" = xno -a \
652 "x$enable_xvmc" = xno -a \
653 "x$enable_vdpau" = xno -a \
654 "x$enable_va" = xno; then
Chia-I Wube5f34a2010-10-27 16:14:27 +0800655 AC_MSG_ERROR([at least one API should be enabled])
656fi
657
658API_DEFINES=""
Chia-I Wube5f34a2010-10-27 16:14:27 +0800659if test "x$enable_opengl" = xno; then
660 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
661else
662 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
663fi
664if test "x$enable_gles1" = xyes; then
665 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
666fi
667if test "x$enable_gles2" = xyes; then
668 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
669fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800670AC_SUBST([API_DEFINES])
Chia-I Wube5f34a2010-10-27 16:14:27 +0800671
Matt Turner027ce0c2012-01-24 11:34:42 -0500672AC_ARG_ENABLE([shared-glapi],
673 [AS_HELP_STRING([--enable-shared-glapi],
674 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
675 [enable_shared_glapi="$enableval"],
676 [enable_shared_glapi=no])
677
678SHARED_GLAPI="0"
679if test "x$enable_shared_glapi" = xyes; then
680 SHARED_GLAPI="1"
681fi
682AC_SUBST([SHARED_GLAPI])
683
Kenneth Graunke9d21b5d2012-01-04 23:49:18 -0800684dnl
685dnl Driver configuration. Options are xlib, dri and osmesa right now.
686dnl More later: fbdev, ...
687dnl
688default_driver="xlib"
689
690case "$host_os" in
691linux*)
692 case "$host_cpu" in
693 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
694 esac
695 ;;
696*freebsd* | dragonfly* | *netbsd*)
697 case "$host_cpu" in
698 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
699 esac
700 ;;
701esac
702
703if test "x$enable_opengl" = xno; then
704 default_driver="no"
705fi
706
707AC_ARG_WITH([driver],
708 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
709 [mesa_driver="$withval"],
710 [mesa_driver=auto])
711dnl Check for valid option
712case "x$mesa_driver" in
713xxlib|xdri|xosmesa|xno)
714 if test "x$enable_dri" != xauto -o \
715 "x$enable_glx" != xauto -o \
716 "x$enable_osmesa" != xauto -o \
717 "x$enable_xlib_glx" != xauto; then
718 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
719 fi
720 ;;
721xauto)
722 mesa_driver="$default_driver"
723 ;;
724*)
725 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
726 ;;
727esac
728
729# map $mesa_driver to APIs
730if test "x$enable_dri" = xauto; then
731 case "x$mesa_driver" in
732 xdri) enable_dri=yes ;;
733 *) enable_dri=no ;;
734 esac
735fi
736
737if test "x$enable_glx" = xauto; then
738 case "x$mesa_driver" in
739 xdri|xxlib) enable_glx=yes ;;
740 *) enable_glx=no ;;
741 esac
742fi
743
744if test "x$enable_osmesa" = xauto; then
745 case "x$mesa_driver" in
746 xxlib|xosmesa) enable_osmesa=yes ;;
747 *) enable_osmesa=no ;;
748 esac
749fi
750
751if test "x$enable_xlib_glx" = xauto; then
752 case "x$mesa_driver" in
753 xxlib) enable_xlib_glx=yes ;;
754 *) enable_xlib_glx=no ;;
755 esac
756fi
757
758if test "x$enable_glx" = xno; then
759 enable_xlib_glx=no
760fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900761
Matt Turner06ad64a2012-01-15 21:30:26 -0500762AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
763
Dan Nicholson44d99142007-12-05 18:47:01 -0800764dnl
765dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700766dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800767
768dnl this variable will be prepended to SRC_DIRS and is not exported
Matt Turner027ce0c2012-01-24 11:34:42 -0500769CORE_DIRS=""
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800770
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200771SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700772GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100773GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000774GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000775GALLIUM_WINSYS_DIRS="sw"
Kai Wasserbäch0a22fb62011-11-29 22:36:02 +0100776GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100777GALLIUM_STATE_TRACKERS_DIRS=""
778
Matt Turner027ce0c2012-01-24 11:34:42 -0500779# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
780case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
781x*yes*)
782 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
783 ;;
784esac
785
Chia-I Wube5f34a2010-10-27 16:14:27 +0800786# build glapi if OpenGL is enabled
787if test "x$enable_opengl" = xyes; then
788 CORE_DIRS="$CORE_DIRS mapi/glapi"
789fi
790
Chia-I Wu12583172011-01-07 17:24:16 +0800791# build es1api if OpenGL ES 1.x is enabled
792if test "x$enable_gles1" = xyes; then
793 CORE_DIRS="$CORE_DIRS mapi/es1api"
794fi
795
796# build es2api if OpenGL ES 2.x is enabled
797if test "x$enable_gles2" = xyes; then
798 CORE_DIRS="$CORE_DIRS mapi/es2api"
799fi
Chia-I Wube5f34a2010-10-27 16:14:27 +0800800
Chia-I Wube5f34a2010-10-27 16:14:27 +0800801# build glsl and mesa if OpenGL or OpenGL ES is enabled
Chia-I Wu12583172011-01-07 17:24:16 +0800802case "x$enable_opengl$enable_gles1$enable_gles2" in
Chia-I Wube5f34a2010-10-27 16:14:27 +0800803x*yes*)
804 CORE_DIRS="$CORE_DIRS glsl mesa"
805 ;;
806esac
807
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900808case "x$enable_glx$enable_xlib_glx" in
809xyesyes)
810 DRIVER_DIRS="$DRIVER_DIRS x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000811 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000812 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Marek Olšák440d71d2011-06-14 05:38:58 +0200813 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
Younes Mantonb97816d2011-07-14 12:22:20 -0400814 HAVE_WINSYS_XLIB="yes"
Dan Nicholson44d99142007-12-05 18:47:01 -0800815 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900816xyesno)
817 # DRI-based GLX
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500818 SRC_DIRS="$SRC_DIRS glx"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900819 ;;
820esac
821
822if test "x$enable_dri" = xyes; then
823 DRIVER_DIRS="$DRIVER_DIRS dri"
824
Emil Velikov4ef9c3d2011-07-11 15:58:29 +0100825 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
Marek Olšák440d71d2011-06-14 05:38:58 +0200826 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
827 HAVE_ST_DRI="yes"
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900828fi
829
830if test "x$enable_osmesa" = xyes; then
831 # the empty space matters for osmesa... (see src/mesa/Makefile)
832 if test -n "$DRIVER_DIRS"; then
833 DRIVER_DIRS="$DRIVER_DIRS osmesa"
834 else
835 DRIVER_DIRS="osmesa"
836 fi
837fi
838
Dan Nicholson297e16c2008-05-05 15:42:53 -0700839AC_SUBST([SRC_DIRS])
840AC_SUBST([GLU_DIRS])
841AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100842AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000843AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100844AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000845AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100846AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000847AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700848
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900849# Check for libdrm
850PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
851 [have_libdrm=yes], [have_libdrm=no])
852
853if test "x$enable_dri" = xyes; then
854 # DRI must be shared, I think
855 if test "$enable_static" = yes; then
856 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
857 fi
858
Chia-I Wu81239342011-07-02 09:49:17 +0900859 # not a hard requirement as swrast does not depend on it
860 if test "x$have_libdrm" = xyes; then
861 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900862 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900863fi
864
Dan Nicholsondca1b792007-10-23 09:25:58 -0700865dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700866dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700867dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700868dnl
869if test -n "$PKG_CONFIG"; then
870 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700871 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700872 x11_pkgconfig=yes
873 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700874 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700875 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700876 ])
877 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700878else
879 x11_pkgconfig=no
880fi
881dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600882if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700883 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600884else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700885 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700886 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
887 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
888 AC_SUBST([X11_CFLAGS])
889 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700890fi
891
Dan Nicholson99803a42008-07-01 09:03:15 -0700892dnl Try to tell the user that the --x-* options are only used when
893dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
894m4_divert_once([HELP_BEGIN],
895[These options are only used when the X libraries cannot be found by the
896pkg-config utility.])
897
Dan Nicholson44d99142007-12-05 18:47:01 -0800898dnl We need X for xlib and dri, so bomb now if it's not found
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900899if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
900 AC_MSG_ERROR([X11 development libraries needed for GLX])
901fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700902
Ian Romanickb518dfb2012-01-02 17:44:30 -0800903if test "x$enable_glx" = xyes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700904 DEFINES="$DEFINES -DUSE_XCB"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700905fi
906
Samuel Thibault75856172011-03-14 22:08:21 +0000907dnl Direct rendering or just indirect rendering
noblede7d18ed2011-03-14 22:08:22 +0000908case "$host_os" in
909gnu*)
910 dnl Disable by default on GNU/Hurd
911 driglx_direct_default="no"
912 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +0000913cygwin*)
914 dnl Disable by default on cygwin
915 driglx_direct_default="no"
916 ;;
noblede7d18ed2011-03-14 22:08:22 +0000917*)
918 driglx_direct_default="yes"
919 ;;
920esac
Samuel Thibault75856172011-03-14 22:08:21 +0000921AC_ARG_ENABLE([driglx-direct],
922 [AS_HELP_STRING([--disable-driglx-direct],
923 [enable direct rendering in GLX and EGL for DRI \
noblede7d18ed2011-03-14 22:08:22 +0000924 @<:@default=auto@:>@])],
Samuel Thibault75856172011-03-14 22:08:21 +0000925 [driglx_direct="$enableval"],
noblede7d18ed2011-03-14 22:08:22 +0000926 [driglx_direct="$driglx_direct_default"])
Samuel Thibault75856172011-03-14 22:08:21 +0000927
Dan Nicholson44d99142007-12-05 18:47:01 -0800928dnl
929dnl libGL configuration per driver
930dnl
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900931case "x$enable_glx$enable_xlib_glx" in
932xyesyes)
933 # Xlib-based GLX
Dan Nicholson44d99142007-12-05 18:47:01 -0800934 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700935 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800936 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800937 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
938 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800939 else
940 # should check these...
941 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
942 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800943 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
944 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800945 fi
Marek Olšák0aed27e2011-07-26 01:05:51 +0200946 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
Kenneth Graunked1d812052011-01-16 16:01:54 -0800947 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson44d99142007-12-05 18:47:01 -0800948 ;;
Chia-I Wu9e7a4142011-06-26 13:24:32 +0900949xyesno)
950 # DRI-based GLX
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500951 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Samuel Thibault75856172011-03-14 22:08:21 +0000952 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000953 if test x"$driglx_direct" = xyes; then
Chia-I Wu94ec5fd2011-06-27 09:19:02 +0900954 if test "x$have_libdrm" != xyes; then
955 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
956 fi
Samuel Thibault75856172011-03-14 22:08:21 +0000957 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
958 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
Samuel Thibault75856172011-03-14 22:08:21 +0000959 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800960
961 # find the DRI deps for libGL
962 if test "$x11_pkgconfig" = yes; then
Ian Romanickb518dfb2012-01-02 17:44:30 -0800963 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
Jon TURNEY2b9dac32010-04-21 12:58:54 +0100964
965 # add xf86vidmode if available
966 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
967 if test "$HAVE_XF86VIDMODE" = yes ; then
968 dri_modules="$dri_modules xxf86vm"
969 fi
970
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700971 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800972 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800973 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
974 GL_LIB_DEPS="$DRIGL_LIBS"
975 else
976 # should check these...
977 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
Alan Hourihane64799222011-06-28 17:40:24 +0100978 if test "x$HAVE_XF86VIDMODE" == xyes; then
979 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
980 else
981 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
982 fi
Dan Nicholson71e208b2008-11-24 11:01:57 -0800983 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
984 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700985
986 # XCB can only be used from pkg-config
Ian Romanickb518dfb2012-01-02 17:44:30 -0800987 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
988 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
989 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
990 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800991 fi
992
Ian Romanick4becf672012-01-03 11:35:59 -0800993 # Check to see if the xcb-glx library is new enough to support
994 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
995 # is released.
996 save_CPPFLAGS="$CPPFLAGS"
997 save_LDFLAGS="$LDFLAGS"
998 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
999 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1000 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1001 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1002 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1003 CPPFLAGS="$save_CPPFLAGS"
1004 LDFLAGS="$save_LDFLAGS"
1005
1006 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1007 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1008 fi
1009
Dan Nicholson44d99142007-12-05 18:47:01 -08001010 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001011 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1012 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -08001013 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001014esac
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001015
Ian Romanick4becf672012-01-03 11:35:59 -08001016# This is outside the case (above) so that it is invoked even for non-GLX
1017# builds.
1018AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1019 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1020
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001021GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1022GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1023GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1024GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1025
Dan Nicholson297e16c2008-05-05 15:42:53 -07001026AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001027AC_SUBST([GL_PC_REQ_PRIV])
1028AC_SUBST([GL_PC_LIB_PRIV])
1029AC_SUBST([GL_PC_CFLAGS])
1030AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +08001031AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001032AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -05001033AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -04001034AC_SUBST([GLESv2_PC_LIB_PRIV])
1035
Chia-I Wu0c771e22011-11-04 16:32:17 +08001036GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
Chia-I Wu9767d3b2010-12-26 18:02:59 +08001037AC_SUBST([GLAPI_LIB_DEPS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001038
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001039
1040dnl Setup default DRI CFLAGS
1041DRI_CFLAGS='$(CFLAGS)'
1042DRI_CXXFLAGS='$(CXXFLAGS)'
1043DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1044MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1045
Jon TURNEY0fce6d32012-01-22 14:21:56 +00001046if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
Matt Turner2b3a8cb2012-01-13 14:30:36 -05001047 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1048 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1049 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1050 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1051 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1052 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1053 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001054fi
1055AC_SUBST([DRICORE_LIBS])
1056AC_SUBST([DRICORE_GLSL_LIBS])
1057AC_SUBST([DRICORE_LIB_DEPS])
1058AC_SUBST([DRI_CXXFLAGS])
1059AC_SUBST([DRI_CFLAGS])
1060AC_SUBST([MESA_MODULES])
1061
Jon TURNEY2b9dac32010-04-21 12:58:54 +01001062AC_SUBST([HAVE_XF86VIDMODE])
1063
Dan Nicholsondca1b792007-10-23 09:25:58 -07001064dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001065dnl More GLX setup
Dan Nicholsondca1b792007-10-23 09:25:58 -07001066dnl
Chia-I Wu5029ea42011-06-27 13:06:39 +09001067case "x$enable_glx$enable_xlib_glx" in
1068xyesyes)
Dan Nicholsondca1b792007-10-23 09:25:58 -07001069 DEFINES="$DEFINES -DUSE_XSHM"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001070 ;;
1071xyesno)
1072 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1073 if test "x$driglx_direct" = xyes; then
1074 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1075 fi
1076 ;;
1077esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001078
1079dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001080dnl TLS detection
Dan Nicholson44d99142007-12-05 18:47:01 -08001081dnl
Tom Fogal31351dc2010-12-05 17:58:32 -07001082
Dan Nicholson297e16c2008-05-05 15:42:53 -07001083AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -08001084 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001085 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001086 [GLX_USE_TLS="$enableval"],
1087 [GLX_USE_TLS=no])
Tom Fogal31351dc2010-12-05 17:58:32 -07001088AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1089
Tom Fogal44842972011-02-21 22:32:18 -07001090AS_IF([test "x$GLX_USE_TLS" = xyes],
1091 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1092
Tom Fogal31351dc2010-12-05 17:58:32 -07001093dnl
1094dnl More DRI setup
1095dnl
Dan Nicholson44d99142007-12-05 18:47:01 -08001096dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -07001097AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001098 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001099 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001100 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -07001101 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -07001102AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +08001103dnl Extra search path for DRI drivers
1104AC_ARG_WITH([dri-searchpath],
1105 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1106 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1107 [DRI_DRIVER_SEARCH_DIR="$withval"],
1108 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1109AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001110dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -07001111AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001112 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -07001113 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +02001114 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001115 [with_dri_drivers="$withval"],
1116 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001117if test "x$with_dri_drivers" = x; then
1118 with_dri_drivers=no
1119fi
1120
1121dnl If $with_dri_drivers is yes, directories will be added through
1122dnl platform checks
1123DRI_DIRS=""
1124case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001125no) ;;
1126yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001127 # classic DRI drivers require FEATURE_GL to build
1128 if test "x$enable_opengl" = xyes; then
1129 DRI_DIRS="yes"
1130 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001131 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001132*)
1133 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -07001134 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001135 for driver in $dri_drivers; do
1136 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1137 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1138 done
1139 DRI_DIRS="$dri_drivers"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001140 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1141 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1142 fi
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001143 ;;
1144esac
1145
Dan Nicholson44d99142007-12-05 18:47:01 -08001146dnl Set DRI_DIRS, DEFINES and LIB_DEPS
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001147if test "x$enable_dri" = xyes; then
Dan Nicholson44d99142007-12-05 18:47:01 -08001148 # Platform specific settings and drivers to build
1149 case "$host_os" in
1150 linux*)
1151 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001152 DEFINES="$DEFINES -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001153
1154 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -08001155 x86_64)
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001156 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001157 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001158 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001159 ;;
1160 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -08001161 # Build only the drivers for cards that exist on PowerPC.
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001162 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001163 DRI_DIRS="r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001164 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001165 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001166 sparc*)
Ian Romanicke4344162011-08-24 15:21:58 -07001167 # Build only the drivers for cards that exist on sparc
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001168 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001169 DRI_DIRS="r200 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +10001170 fi
1171 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001172 esac
1173 ;;
Pierre Allegraud8fd8de32011-01-06 07:58:57 -07001174 freebsd* | dragonfly* | *netbsd*)
Dan Nicholson44d99142007-12-05 18:47:01 -08001175 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1176 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001177
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001178 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001179 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -08001180 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001181 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001182 gnu*)
1183 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Chia-I Wu5029ea42011-06-27 13:06:39 +09001184 DEFINES="$DEFINES -DHAVE_ALIAS"
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -07001185 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001186 solaris*)
1187 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001188 ;;
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001189 cygwin*)
1190 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Jon TURNEYc6e33ca2011-03-14 22:08:23 +00001191 if test "x$DRI_DIRS" = "xyes"; then
1192 DRI_DIRS="swrast"
1193 fi
1194 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -08001195 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -08001196
1197 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001198 if test "x$DRI_DIRS" = "xyes"; then
Eric Anholt2f4c7eb2011-10-20 14:55:53 -07001199 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -08001200 fi
1201
Dan Nicholson44d99142007-12-05 18:47:01 -08001202 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1203
1204 # Check for expat
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001205 if test "x$enable_dri" = xyes; then
Chia-I Wube5f34a2010-10-27 16:14:27 +08001206 EXPAT_INCLUDES=""
1207 EXPAT_LIB=-lexpat
1208 AC_ARG_WITH([expat],
1209 [AS_HELP_STRING([--with-expat=DIR],
1210 [expat install directory])],[
1211 EXPAT_INCLUDES="-I$withval/include"
1212 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1213 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1214 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1215 ])
1216 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
Eric Anholt36473392012-01-18 11:27:24 -08001217 save_LIBS="$LIBS"
Chia-I Wube5f34a2010-10-27 16:14:27 +08001218 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1219 [AC_MSG_ERROR([Expat required for DRI.])])
Eric Anholt36473392012-01-18 11:27:24 -08001220 LIBS="$save_LIBS"
Chia-I Wube5f34a2010-10-27 16:14:27 +08001221 fi
Dan Nicholson44d99142007-12-05 18:47:01 -08001222
Chia-I Wu81239342011-07-02 09:49:17 +09001223 # libdrm is required for all except swrast
1224 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1225 if test "x$have_libdrm" != xyes; then
1226 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1227 fi
1228 fi
1229
Matt Turner2b3a8cb2012-01-13 14:30:36 -05001230 # put all the necessary libs together
Christopher James Halse Rogersd1e28b22011-02-03 11:19:32 +11001231 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -08001232fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001233AC_SUBST([DRI_DIRS])
1234AC_SUBST([EXPAT_INCLUDES])
1235AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -08001236
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001237case $DRI_DIRS in
1238*i915*|*i965*)
Tormod Volden903185b2011-01-25 13:25:18 -08001239 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Eric Anholte3264802012-01-12 14:28:37 -08001240
Matt Turner3c87dfc2012-01-14 21:57:32 -05001241 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1242 case $d in
1243 i915)
1244 HAVE_I915_DRI=yes;
1245 ;;
1246 i965)
1247 HAVE_I965_DRI=yes;
1248 ;;
1249 esac
1250 done
Eric Anholte3264802012-01-12 14:28:37 -08001251
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001252 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -05001253esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -05001254
Matt Turnere0ee8182012-01-14 22:21:30 -05001255case $DRI_DIRS in
Matt Turner3f964342012-01-15 10:20:30 -05001256*nouveau*)
1257 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1258 HAVE_NOUVEAU_DRI=yes;
1259 ;;
1260esac
1261
1262case $DRI_DIRS in
Matt Turnerb38d7a02012-01-15 10:04:58 -05001263*radeon*|*r200*)
Matt Turnere0ee8182012-01-14 22:21:30 -05001264 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1265
1266 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1267 case $d in
1268 radeon)
1269 HAVE_RADEON_DRI=yes;
1270 ;;
Matt Turnerb38d7a02012-01-15 10:04:58 -05001271 r200)
1272 HAVE_R200_DRI=yes;
1273 ;;
Matt Turnere0ee8182012-01-14 22:21:30 -05001274 esac
1275 done
1276
1277 ;;
1278esac
1279
Matt Turner349845f2012-01-15 11:39:48 -05001280case $DRI_DIRS in
1281*swrast*)
1282 HAVE_SWRAST_DRI=yes;
1283 ;;
1284esac
1285
Matt Turner3c87dfc2012-01-14 21:57:32 -05001286AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
Eric Anholte3264802012-01-12 14:28:37 -08001287AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
Matt Turner3f964342012-01-15 10:20:30 -05001288AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
Matt Turnerb38d7a02012-01-15 10:04:58 -05001289AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
Matt Turnere0ee8182012-01-14 22:21:30 -05001290AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
Matt Turner349845f2012-01-15 11:39:48 -05001291AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
Eric Anholte3264802012-01-12 14:28:37 -08001292
Dan Nicholson44d99142007-12-05 18:47:01 -08001293dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001294dnl OSMesa configuration
1295dnl
Dan Nicholson979ff512007-12-05 18:47:01 -08001296
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001297dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -07001298AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001299 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1300 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001301 [osmesa_bits="$withval"],
1302 [osmesa_bits=8])
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001303if test "x$osmesa_bits" != x8; then
1304 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1305 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1306 osmesa_bits=8
1307 fi
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001308fi
1309case "x$osmesa_bits" in
1310x8)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001311 OSMESA_LIB="${OSMESA_LIB}"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001312 ;;
1313x16|x32)
Tom Fogalc0573fb2011-10-10 10:33:18 -06001314 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001315 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1316 ;;
1317*)
1318 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1319 ;;
1320esac
Dan Nicholson6689f9e2007-12-05 21:04:15 -08001321
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001322if test "x$enable_osmesa" = xyes; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001323 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -08001324 if test "$enable_static" = no; then
Kenneth Graunked1d812052011-01-16 16:01:54 -08001325 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -08001326 else
1327 OSMESA_LIB_DEPS=""
1328 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001329 OSMESA_MESA_DEPS=""
Kenneth Graunked1d812052011-01-16 16:01:54 -08001330 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001331fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001332AC_SUBST([OSMESA_LIB_DEPS])
1333AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001334AC_SUBST([OSMESA_PC_REQ])
1335AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001336
1337dnl
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001338dnl gbm configuration
1339dnl
1340if test "x$enable_gbm" = xauto; then
1341 case "$with_egl_platforms" in
1342 *drm*)
1343 enable_gbm=yes ;;
1344 *)
1345 enable_gbm=no ;;
1346 esac
1347fi
1348if test "x$enable_gbm" = xyes; then
1349 SRC_DIRS="$SRC_DIRS gbm"
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001350
1351 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1352 AC_MSG_ERROR([gbm needs udev]))
Matt Turner027ce0c2012-01-24 11:34:42 -05001353
1354 if test "x$enable_dri" = xyes; then
1355 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1356 if test "$SHARED_GLAPI" -eq 0; then
1357 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1358 fi
1359 fi
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001360fi
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001361GBM_PC_REQ_PRIV="libudev"
1362GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001363AC_SUBST([GBM_PC_REQ_PRIV])
1364AC_SUBST([GBM_PC_LIB_PRIV])
Benjamin Franzke42cdf402011-07-25 09:37:02 +02001365
1366dnl
Dan Nicholson53b37342009-02-25 17:45:34 -08001367dnl EGL configuration
1368dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001369EGL_CLIENT_APIS=""
1370
Dan Nicholson66f97862009-04-29 12:11:43 -07001371if test "x$enable_egl" = xyes; then
1372 SRC_DIRS="$SRC_DIRS egl"
Tapani Pälli2758e652011-05-16 16:56:43 +03001373 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001374 EGL_DRIVERS_DIRS=""
Marek Olšákad50abba2011-06-14 05:14:27 +02001375
Benjamin Franzke85fe9482011-08-09 14:23:18 +02001376 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1377
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001378 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001379 # build egl_glx when libGL is built
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001380 if test "x$enable_glx" = xyes; then
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001381 EGL_DRIVERS_DIRS="glx"
1382 fi
1383
Benjamin Franzke184bb092011-04-30 11:18:23 +02001384 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1385 [have_libudev=yes],[have_libudev=no])
Benjamin Franzkea7cd65f2011-05-31 11:14:46 +02001386 if test "$have_libudev" = yes; then
1387 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1388 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001389 if test "x$enable_dri" = xyes; then
Chia-I Wu39ae9652010-07-16 19:48:52 +08001390 # build egl_dri2 when xcb-dri2 is available
1391 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1392 [have_xcb_dri2=yes],[have_xcb_dri2=no])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001393
1394 if test "$have_xcb_dri2" = yes; then
1395 EGL_DRIVER_DRI2=dri2
1396 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
Benjamin Franzke4ca075a2011-03-02 21:23:04 +01001397 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1398 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1399 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
Chia-I Wu39ae9652010-07-16 19:48:52 +08001400 fi
1401 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001402
1403 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001404 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001405fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001406AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001407AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001408
1409dnl
Marek Olšák1251e1d2011-06-18 20:33:55 +02001410dnl EGL Gallium configuration
1411dnl
1412if test "x$enable_gallium_egl" = xyes; then
1413 if test "x$with_gallium_drivers" = x; then
1414 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1415 fi
1416 if test "x$enable_egl" = xno; then
1417 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1418 fi
Chia-I Wu94ec5fd2011-06-27 09:19:02 +09001419 if test "x$have_libdrm" != xyes; then
1420 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1421 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001422
1423 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wub8f097f2011-06-20 12:01:39 +09001424 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
Marek Olšák1251e1d2011-06-18 20:33:55 +02001425 HAVE_ST_EGL="yes"
1426fi
1427
1428dnl
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001429dnl gbm Gallium configuration
1430dnl
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001431if test "x$enable_gallium_gbm" = xauto; then
Chia-I Wu95ef0692011-11-05 15:09:36 +08001432 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1433 yesyesyes*drm*)
Benjamin Franzkeb18b2992011-07-02 13:45:14 +02001434 enable_gallium_gbm=yes ;;
1435 *)
1436 enable_gallium_gbm=no ;;
1437 esac
1438fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001439if test "x$enable_gallium_gbm" = xyes; then
1440 if test "x$with_gallium_drivers" = x; then
1441 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1442 fi
1443 if test "x$enable_gbm" = xno; then
1444 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1445 fi
Chia-I Wu95ef0692011-11-05 15:09:36 +08001446 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1447 if test "x$enable_dri" = xno; then
1448 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1449 fi
Benjamin Franzke48d4a002011-05-26 15:11:50 +02001450
1451 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1452 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1453 HAVE_ST_GBM="yes"
1454fi
1455
1456dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001457dnl X.Org DDX configuration
1458dnl
1459if test "x$enable_xorg" = xyes; then
1460 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1461 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1462 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1463 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1464 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1465 HAVE_XEXTPROTO_71="no")
1466 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1467 HAVE_ST_XORG=yes
1468fi
1469
1470dnl
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001471dnl XA configuration
1472dnl
1473if test "x$enable_xa" = xyes; then
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001474AC_PROG_AWK
1475AC_PROG_GREP
1476AC_CHECK_PROG(NM, nm, "nm")
1477if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1478AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1479enable_xa=no
1480fi
1481fi
1482if test "x$enable_xa" = xyes; then
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001483 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1484 HAVE_ST_XA=yes
Thomas Hellstrom32b16412011-11-24 21:54:54 +01001485 AC_SUBST(AWK)
1486 AC_SUBST(GREP)
1487 AC_SUBST(NM)
Thomas Hellstrom424b1212011-07-04 10:21:35 +02001488fi
1489
1490dnl
Marek Olšák440d71d2011-06-14 05:38:58 +02001491dnl OpenVG configuration
1492dnl
1493VG_LIB_DEPS=""
1494
1495if test "x$enable_openvg" = xyes; then
1496 if test "x$enable_egl" = xno; then
1497 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1498 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001499 if test "x$with_gallium_drivers" = x; then
Marek Olšák440d71d2011-06-14 05:38:58 +02001500 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1501 fi
Marek Olšák1251e1d2011-06-18 20:33:55 +02001502 if test "x$enable_gallium_egl" = xno; then
1503 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1504 fi
Marek Olšák440d71d2011-06-14 05:38:58 +02001505
1506 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1507 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1508 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1509 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1510 HAVE_ST_VEGA=yes
1511fi
1512
1513dnl
1514dnl D3D1X configuration
1515dnl
1516
1517if test "x$enable_d3d1x" = xyes; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001518 if test "x$with_gallium_drivers" = x; then
1519 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1520 fi
1521
Marek Olšák440d71d2011-06-14 05:38:58 +02001522 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1523 HAVE_ST_D3D1X=yes
1524fi
1525
1526dnl
Christian Königc3b22302011-07-04 15:04:41 +02001527dnl Gallium G3DVL configuration
1528dnl
1529AC_ARG_ENABLE([gallium-g3dvl],
1530 [AS_HELP_STRING([--enable-gallium-g3dvl],
1531 [build gallium g3dvl @<:@default=disabled@:>@])],
1532 [enable_gallium_g3dvl="$enableval"],
1533 [enable_gallium_g3dvl=no])
1534if test "x$enable_gallium_g3dvl" = xyes; then
1535 if test "x$with_gallium_drivers" = x; then
1536 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1537 fi
1538
1539 if test "x$enable_xvmc" = xauto; then
Christian Königa8ae8cf2011-07-14 12:42:17 +02001540 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
Christian Königc3b22302011-07-04 15:04:41 +02001541 fi
1542
1543 if test "x$enable_vdpau" = xauto; then
Christian König33bf4102011-07-14 13:57:23 +02001544 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001545 fi
1546
1547 if test "x$enable_va" = xauto; then
Christian König8619aa52011-07-14 14:09:25 +02001548 #don't enable vaapi state tracker even if package exists
1549 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
Christian Königc3b22302011-07-04 15:04:41 +02001550 enable_va=no
1551 fi
1552fi
1553
Christian Königc3b22302011-07-04 15:04:41 +02001554if test "x$enable_xvmc" = xyes; then
Christian Königc2e2b582012-01-24 12:19:59 +01001555 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6])
Christian Königc3b22302011-07-04 15:04:41 +02001556 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1557 HAVE_ST_XVMC="yes"
1558fi
1559
Christian Königc3b22302011-07-04 15:04:41 +02001560if test "x$enable_vdpau" = xyes; then
Christian König33bf4102011-07-14 13:57:23 +02001561 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
Christian Königc3b22302011-07-04 15:04:41 +02001562 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1563 HAVE_ST_VDPAU="yes"
1564fi
1565
Christian Königc3b22302011-07-04 15:04:41 +02001566if test "x$enable_va" = xyes; then
Christian König8619aa52011-07-14 14:09:25 +02001567 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1568 AC_MSG_WARN([vaapi state tracker currently unmaintained])
Christian Königc3b22302011-07-04 15:04:41 +02001569 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1570 HAVE_ST_VA="yes"
1571fi
1572
Christian Königc3b22302011-07-04 15:04:41 +02001573dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001574dnl GLU configuration
1575dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001576AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001577 [AS_HELP_STRING([--disable-glu],
1578 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001579 [enable_glu="$enableval"],
1580 [enable_glu=yes])
Chia-I Wube5f34a2010-10-27 16:14:27 +08001581
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001582if test "x$enable_glu" = xyes; then
1583 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1584 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1585 enable_glu=no
1586 fi
Chia-I Wube5f34a2010-10-27 16:14:27 +08001587fi
1588
Dan Nicholsondca1b792007-10-23 09:25:58 -07001589if test "x$enable_glu" = xyes; then
1590 SRC_DIRS="$SRC_DIRS glu"
1591
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001592 if test "x$enable_glx" = xno; then
Dan Nicholson979ff512007-12-05 18:47:01 -08001593 # Link libGLU to libOSMesa instead of libGL
1594 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001595 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001596 if test "$enable_static" = no; then
1597 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1598 else
1599 GLU_MESA_DEPS=""
1600 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001601 else
Dan Nicholson88586332007-11-15 08:59:57 -08001602 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001603 GLU_PC_REQ="gl"
1604 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001605 if test "$enable_static" = no; then
1606 GLU_LIB_DEPS="-lm"
1607 GLU_MESA_DEPS='-l$(GL_LIB)'
1608 else
1609 GLU_LIB_DEPS=""
1610 GLU_MESA_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -08001611 fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001612 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001613fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001614if test "$enable_static" = no; then
1615 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1616fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001617GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001618AC_SUBST([GLU_LIB_DEPS])
1619AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001620AC_SUBST([GLU_PC_REQ])
1621AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001622AC_SUBST([GLU_PC_LIB_PRIV])
1623AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001624
Dan Nicholson297e16c2008-05-05 15:42:53 -07001625AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001626
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001627dnl
1628dnl Gallium configuration
1629dnl
Marek Olšák58b6a192011-06-14 07:46:59 +02001630if test "x$with_gallium_drivers" != x; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001631 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001632fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001633
Dave Airlie81fe1982010-04-22 14:59:29 +10001634AC_SUBST([LLVM_CFLAGS])
1635AC_SUBST([LLVM_LIBS])
1636AC_SUBST([LLVM_LDFLAGS])
1637AC_SUBST([LLVM_VERSION])
1638
Chia-I Wube5f34a2010-10-27 16:14:27 +08001639case "x$enable_opengl$enable_gles1$enable_gles2" in
1640x*yes*)
1641 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1642 ;;
1643esac
Chia-I Wube5f34a2010-10-27 16:14:27 +08001644
Chia-I Wu874ccd52010-05-04 22:43:05 +08001645AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001646AC_SUBST([EGL_CLIENT_APIS])
1647
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001648AC_ARG_WITH([egl-platforms],
1649 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1650 [comma delimited native platforms libEGL supports, e.g.
Chia-I Wue7424d72010-09-19 16:54:39 +08001651 "x11,drm" @<:@default=auto@:>@])],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001652 [with_egl_platforms="$withval"],
1653 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001654
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001655EGL_PLATFORMS=""
Benjamin Franzke214fc6e2011-02-04 12:24:08 +01001656
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001657case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001658yes)
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001659 if test "x$enable_egl" = xyes; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001660 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001661 fi
1662 ;;
1663*)
1664 if test "x$enable_egl" != xyes; then
1665 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1666 fi
1667 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001668 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1669 for plat in $egl_platforms; do
1670 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
Benjamin Franzke8b902052012-01-24 20:38:01 +01001671 AC_MSG_ERROR([EGL platform '$plat' does not exist])
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001672 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001673 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1674 fi
Chia-I Wua5f8d372011-09-20 14:01:45 +08001675 if test "$plat" = "null"; then
1676 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1677 fi
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001678 if test "$plat" = "wayland"; then
Benjamin Franzke6b369c42011-02-21 16:22:34 +01001679 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001680 [AC_MSG_ERROR([cannot find libwayland-client])])
Benjamin Franzkeaaa3c0d2011-04-23 14:14:29 +02001681 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
Benjamin Franzke8b902052012-01-24 20:38:01 +01001682
Benjamin Franzke41204252012-01-26 10:50:04 +01001683 m4_ifdef([WAYLAND_SCANNER_RULES],
1684 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
Benjamin Franzkee586c4b2011-02-04 12:22:58 +01001685 fi
Benjamin Franzke9b8cd492011-07-02 13:46:09 +02001686 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
Benjamin Franzkee5fc4c82011-05-30 10:50:52 +02001687 AC_MSG_ERROR([EGL platform drm needs gbm])
1688 fi
Benjamin Franzke7ed18262011-07-02 13:46:42 +02001689 case "$plat$have_libudev" in
1690 waylandno|drmno)
1691 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1692 esac
Chia-I Wu49381d62010-01-11 01:23:01 +08001693 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001694 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001695 ;;
1696esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001697AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001698
Chia-I Wu28c3e572010-01-23 20:18:43 +08001699AC_ARG_WITH([egl-driver-dir],
1700 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1701 [directory for EGL drivers [[default=${libdir}/egl]]])],
1702 [EGL_DRIVER_INSTALL_DIR="$withval"],
1703 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1704AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1705
Joel Bosveld8acca482009-03-06 08:46:08 +09001706AC_ARG_WITH([xorg-driver-dir],
1707 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1708 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1709 [XORG_DRIVER_INSTALL_DIR="$withval"],
1710 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1711AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1712
Tom Fogal7085dce2009-08-13 19:40:30 -06001713AC_ARG_WITH([max-width],
1714 [AS_HELP_STRING([--with-max-width=N],
1715 [Maximum framebuffer width (4096)])],
1716 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1717 AS_IF([test "${withval}" -gt "4096"],
1718 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1719)
1720AC_ARG_WITH([max-height],
1721 [AS_HELP_STRING([--with-max-height=N],
1722 [Maximum framebuffer height (4096)])],
1723 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1724 AS_IF([test "${withval}" -gt "4096"],
1725 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1726)
1727
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001728dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001729dnl Gallium LLVM
1730dnl
1731AC_ARG_ENABLE([gallium-llvm],
1732 [AS_HELP_STRING([--enable-gallium-llvm],
Marek Olšáka86fc712011-04-21 13:27:55 +02001733 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
Dave Airlie81fe1982010-04-22 14:59:29 +10001734 [enable_gallium_llvm="$enableval"],
1735 [enable_gallium_llvm=auto])
Marek Olšák58b6a192011-06-14 07:46:59 +02001736if test "x$with_gallium_drivers" = x; then
1737 enable_gallium_llvm=no
1738fi
Marek Olšáka86fc712011-04-21 13:27:55 +02001739if test "x$enable_gallium_llvm" = xauto; then
1740 case "$host_cpu" in
1741 i*86|x86_64) enable_gallium_llvm=yes;;
1742 esac
1743fi
Dave Airlie81fe1982010-04-22 14:59:29 +10001744if test "x$enable_gallium_llvm" = xyes; then
Marek Olšák99fba502011-07-23 15:57:51 +02001745 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1746
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001747 if test "x$LLVM_CONFIG" != xno; then
ojab2fe6c252012-01-05 14:18:34 +04001748 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
Johannes Obermayraa284042011-12-19 23:11:46 +01001749 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
Marcin Slusarz75739042011-10-13 21:45:45 +02001750 LLVM_LIBS="`$LLVM_CONFIG --libs`"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001751
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001752 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
Marek Olšák67aba792011-06-27 08:25:09 +02001753 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001754 MESA_LLVM=1
1755 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001756 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001757 fi
1758else
1759 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001760fi
1761
Thomas Balling Sørensen32999972010-07-14 00:34:56 +02001762dnl Directory for VDPAU libs
1763AC_ARG_WITH([vdpau-libdir],
1764 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1765 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1766 [VDPAU_LIB_INSTALL_DIR="$withval"],
1767 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1768AC_SUBST([VDPAU_LIB_INSTALL_DIR])
Younes Manton40cd0822010-03-05 23:11:05 -05001769
Thomas Balling Sørensen501ac572010-10-24 19:27:29 +02001770dnl Directory for VA libs
1771AC_ARG_WITH([va-libdir],
1772 [AS_HELP_STRING([--with-va-libdir=DIR],
1773 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1774 [VA_LIB_INSTALL_DIR="$withval"],
1775 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1776AC_SUBST([VA_LIB_INSTALL_DIR])
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001777
Dave Airlie81fe1982010-04-22 14:59:29 +10001778dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001779dnl Gallium helper functions
1780dnl
1781gallium_check_st() {
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001782 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
Christian Königc3b22302011-07-04 15:04:41 +02001783 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1784 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
Chia-I Wu81239342011-07-02 09:49:17 +09001785 if test "x$have_libdrm" != xyes; then
1786 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1787 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001788 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1789 fi
1790 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1791 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1792 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001793 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001794 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1795 fi
Thomas Hellstrom9f2f5b32011-06-15 10:46:24 +02001796 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1797 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1798 fi
Christian Königc3b22302011-07-04 15:04:41 +02001799 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1800 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
Younes Mantonb97816d2011-07-14 12:22:20 -04001801 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001802 fi
1803 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1804 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
Younes Mantonb97816d2011-07-14 12:22:20 -04001805 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001806 fi
1807 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1808 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
Younes Mantonb97816d2011-07-14 12:22:20 -04001809 NEED_G3DVL_DRI="yes"
Christian Königc3b22302011-07-04 15:04:41 +02001810 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001811}
1812
Marek Olšákc17fb852011-06-14 04:03:17 +02001813gallium_require_llvm() {
1814 if test "x$MESA_LLVM" = x0; then
1815 case "$host_cpu" in
1816 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1817 esac
1818 fi
1819}
1820
Marek Olšák58b6a192011-06-14 07:46:59 +02001821dnl Gallium drivers
Marek Olšák02c8ee22011-06-27 08:02:31 +02001822dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
Marek Olšák58b6a192011-06-14 07:46:59 +02001823if test "x$with_gallium_drivers" != x; then
Marek Olšák58b6a192011-06-14 07:46:59 +02001824 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1825 for driver in $gallium_drivers; do
1826 case "x$driver" in
1827 xsvga)
Marek Olšák02c8ee22011-06-27 08:02:31 +02001828 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
Thomas Hellstromd742a642011-09-29 21:41:21 +02001829 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
Marek Olšák58b6a192011-06-14 07:46:59 +02001830 ;;
1831 xi915)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001832 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
Marek Olšák02c8ee22011-06-27 08:02:31 +02001833 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1834 if test "x$MESA_LLVM" = x1; then
1835 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1836 fi
1837 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Marek Olšák58b6a192011-06-14 07:46:59 +02001838 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1839 ;;
Marek Olšák58b6a192011-06-14 07:46:59 +02001840 xr300)
1841 gallium_require_llvm "Gallium R300"
Marek Olšák02c8ee22011-06-27 08:02:31 +02001842 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1843 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
Marek Olšák58b6a192011-06-14 07:46:59 +02001844 ;;
1845 xr600)
1846 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
Marek Olšákbf0baa72011-09-27 16:42:01 +02001847 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
Marek Olšák58b6a192011-06-14 07:46:59 +02001848 ;;
1849 xnouveau)
Emil Velikovc2426bb2011-07-14 23:07:19 +01001850 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
Marek Olšák58b6a192011-06-14 07:46:59 +02001851 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
Maarten Lankhorstdf8f8642011-10-18 14:24:30 +02001852 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
Marek Olšák58b6a192011-06-14 07:46:59 +02001853 ;;
1854 xswrast)
Marek Olšákc6f59fc2011-07-26 01:05:13 +02001855 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1856 if test "x$MESA_LLVM" = x1; then
1857 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1858 fi
1859
Marek Olšák58b6a192011-06-14 07:46:59 +02001860 if test "x$HAVE_ST_DRI" = xyes; then
1861 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1862 fi
Christian Königc3b22302011-07-04 15:04:41 +02001863 if test "x$HAVE_ST_VDPAU" = xyes; then
1864 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1865 fi
1866 if test "x$HAVE_ST_XVMC" = xyes; then
1867 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1868 fi
1869 if test "x$HAVE_ST_VA" = xyes; then
1870 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1871 fi
Eric Anholt48c99252011-10-14 14:33:00 -07001872 if test "x$HAVE_ST_VDPAU" = xyes ||
1873 test "x$HAVE_ST_XVMC" = xyes ||
1874 test "x$HAVE_ST_VA" = xyes; then
Younes Mantonb97816d2011-07-14 12:22:20 -04001875 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1876 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1877 fi
1878 fi
Marek Olšák58b6a192011-06-14 07:46:59 +02001879 ;;
1880 *)
1881 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1882 ;;
1883 esac
1884 done
Chia-I Wua1306f42010-01-22 15:51:51 +08001885fi
1886
Younes Mantonb97816d2011-07-14 12:22:20 -04001887if test "x$NEED_G3DVL_DRI" = xyes; then
1888 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1889fi
1890
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001891dnl prepend CORE_DIRS to SRC_DIRS
1892SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001893
1894dnl Restore LDFLAGS and CPPFLAGS
1895LDFLAGS="$_SAVE_LDFLAGS"
1896CPPFLAGS="$_SAVE_CPPFLAGS"
1897
Marcin Baczyńskiff2efdf2011-07-13 21:26:49 +02001898dnl Add user CFLAGS and CXXFLAGS
1899CFLAGS="$CFLAGS $USER_CFLAGS"
1900CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1901
Dan Nicholsondca1b792007-10-23 09:25:58 -07001902dnl Substitute the config
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001903AC_CONFIG_FILES([configs/autoconf
Matt Turner06ad64a2012-01-15 21:30:26 -05001904 src/gbm/Makefile
1905 src/gbm/main/gbm.pc
Benjamin Franzke8b902052012-01-24 20:38:01 +01001906 src/egl/wayland/Makefile
1907 src/egl/wayland/wayland-egl/Makefile
1908 src/egl/wayland/wayland-egl/wayland-egl.pc
1909 src/egl/wayland/wayland-drm/Makefile
Matt Turner129213e2012-01-15 11:50:20 -05001910 src/mesa/drivers/dri/dri.pc
1911 src/mesa/drivers/dri/Makefile
Matt Turner80aa7812012-01-26 19:31:12 -05001912 src/mesa/drivers/dri/common/Makefile
Matt Turner3c87dfc2012-01-14 21:57:32 -05001913 src/mesa/drivers/dri/i915/Makefile
Eric Anholte3264802012-01-12 14:28:37 -08001914 src/mesa/drivers/dri/i965/Makefile
Matt Turner3f964342012-01-15 10:20:30 -05001915 src/mesa/drivers/dri/nouveau/Makefile
Matt Turnerb38d7a02012-01-15 10:04:58 -05001916 src/mesa/drivers/dri/r200/Makefile
Matt Turnere0ee8182012-01-14 22:21:30 -05001917 src/mesa/drivers/dri/radeon/Makefile
Matt Turner349845f2012-01-15 11:39:48 -05001918 src/mesa/drivers/dri/swrast/Makefile
Ian Romanick3ef3ba42011-12-15 18:45:27 -08001919 tests/Makefile
1920 tests/glx/Makefile])
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001921
Dan Nicholsondca1b792007-10-23 09:25:58 -07001922dnl Replace the configs/current symlink
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001923AC_CONFIG_COMMANDS([configs],[
1924if test -f configs/current || test -L configs/current; then
1925 rm -f configs/current
1926fi
1927ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001928])
1929
Marek Olšák618dbc82011-06-27 03:12:57 +02001930dnl Sort the dirs alphabetically
Marek Olšák3c799622011-09-27 16:51:05 +02001931GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1932GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1933GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1934GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
Marek Olšák618dbc82011-06-27 03:12:57 +02001935
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001936AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001937
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001938dnl
1939dnl Output some configuration info for the user
1940dnl
1941echo ""
1942echo " prefix: $prefix"
1943echo " exec_prefix: $exec_prefix"
1944echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001945echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001946
Chia-I Wu815faa42010-10-29 12:34:44 +08001947dnl API info
1948echo ""
1949echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
Chia-I Wu815faa42010-10-29 12:34:44 +08001950echo " OpenVG: $enable_openvg"
1951
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001952dnl Driver info
1953echo ""
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001954if test "x$enable_osmesa" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001955 echo " OSMesa: lib$OSMESA_LIB"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001956else
Chia-I Wu815faa42010-10-29 12:34:44 +08001957 echo " OSMesa: no"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001958fi
1959
1960if test "x$enable_dri" != xno; then
Chia-I Wu815faa42010-10-29 12:34:44 +08001961 # cleanup the drivers var
1962 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1963 if test "x$DRI_DIRS" = x; then
1964 echo " DRI drivers: no"
1965 else
1966 echo " DRI drivers: $dri_dirs"
1967 fi
1968 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -08001969fi
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001970
1971case "x$enable_glx$enable_xlib_glx" in
1972xyesyes)
1973 echo " GLX: Xlib-based"
1974 ;;
1975xyesno)
1976 echo " GLX: DRI-based"
Chia-I Wu9e7a4142011-06-26 13:24:32 +09001977 ;;
1978*)
1979 echo " GLX: $enable_glx"
1980 ;;
1981esac
1982
Chia-I Wu815faa42010-10-29 12:34:44 +08001983echo ""
1984echo " GLU: $enable_glu"
Chia-I Wu815faa42010-10-29 12:34:44 +08001985
1986dnl EGL
1987echo ""
1988echo " EGL: $enable_egl"
1989if test "$enable_egl" = yes; then
1990 echo " EGL platforms: $EGL_PLATFORMS"
Chia-I Wu12300502010-10-31 21:01:54 +08001991
1992 egl_drivers=""
1993 for d in $EGL_DRIVERS_DIRS; do
Chia-I Wuc98ea262011-01-07 16:30:08 +08001994 egl_drivers="$egl_drivers builtin:egl_$d"
Chia-I Wu12300502010-10-31 21:01:54 +08001995 done
1996
Marek Olšák1251e1d2011-06-18 20:33:55 +02001997 if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wu12300502010-10-31 21:01:54 +08001998 echo " EGL drivers: ${egl_drivers} egl_gallium"
1999 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
Chia-I Wu815faa42010-10-29 12:34:44 +08002000 else
Chia-I Wu12300502010-10-31 21:01:54 +08002001 echo " EGL drivers: $egl_drivers"
Chia-I Wu815faa42010-10-29 12:34:44 +08002002 fi
Florent Thoumieb5095ab2008-07-28 14:44:43 +01002003fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002004
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002005echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07002006if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01002007 echo " llvm: yes"
2008 echo " llvm-config: $LLVM_CONFIG"
2009 echo " llvm-version: $LLVM_VERSION"
2010else
2011 echo " llvm: no"
2012fi
2013
2014echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002015if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2016 echo " Gallium: yes"
2017 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00002018 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002019 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00002020 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01002021 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2022else
2023 echo " Gallium: no"
2024fi
2025
Daniel Vetter8f15c312011-11-28 22:24:26 +01002026
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002027dnl Libraries
2028echo ""
2029echo " Shared libs: $enable_shared"
2030echo " Static libs: $enable_static"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08002031
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002032dnl Compiler options
2033# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2034cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2035 $SED 's/^ *//;s/ */ /;s/ *$//'`
2036cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2037 $SED 's/^ *//;s/ */ /;s/ *$//'`
2038defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2039echo ""
2040echo " CFLAGS: $cflags"
2041echo " CXXFLAGS: $cxxflags"
2042echo " Macros: $defines"
Kenneth Graunke3acc8262010-10-25 13:52:58 -07002043echo ""
2044echo " PYTHON2: $PYTHON2"
Dan Nicholson16a07fb2007-12-12 09:12:15 -08002045
Dan Nicholsondca1b792007-10-23 09:25:58 -07002046echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07002047echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07002048echo ""