blob: bf8feb63528ad7ecdbb2da04c311efc31a9128d3 [file] [log] [blame]
Dan Nicholsondca1b792007-10-23 09:25:58 -07001dnl Process this file with autoconf to create configure.
2
Dan Nicholson297e16c2008-05-05 15:42:53 -07003AC_PREREQ([2.59])
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
19
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070020dnl Versions for external dependencies
Eric Anholt859828c2009-10-08 17:18:12 -070021LIBDRM_REQUIRED=2.4.15
Fabio Pedrettiae1c0a02009-12-22 10:43:35 +100022LIBDRM_RADEON_REQUIRED=2.4.17
Kristian Høgsbergaa0cd702010-02-15 10:44:05 -050023DRI2PROTO_REQUIRED=2.1
Jesse Barnesf2f83d92010-01-11 17:28:10 -050024GLPROTO_REQUIRED=1.4.11
Jakob Bornecrantz683a0992010-03-11 19:23:15 +000025LIBDRM_XORG_REQUIRED=2.4.17
26LIBKMS_XORG_REQUIRED=1.0.0
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070027
Dan Nicholsondca1b792007-10-23 09:25:58 -070028dnl Check for progs
29AC_PROG_CPP
30AC_PROG_CC
31AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070032AC_CHECK_PROGS([MAKE], [gmake make])
33AC_PATH_PROG([MKDEP], [makedepend])
34AC_PATH_PROG([SED], [sed])
Dan Nicholson41b00702007-12-12 08:48:30 -080035
Dan Nicholsonbc302b22009-05-22 09:39:02 -070036dnl Our fallback install-sh is a symlink to minstall. Use the existing
37dnl configuration in that case.
38AC_PROG_INSTALL
39test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
40
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070041dnl We need a POSIX shell for parts of the build. Assume we have one
42dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070043case "$host_os" in
44solaris*)
45 # Solaris /bin/sh is too old/non-POSIX compliant
46 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070047 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070048 ;;
49esac
50
nobled2a501872010-08-29 20:03:37 -040051dnl clang is mostly GCC-compatible, but its version is much lower,
52dnl so we have to check for it.
53AC_MSG_CHECKING([if compiling with clang])
54
55AC_COMPILE_IFELSE(
56[AC_LANG_PROGRAM([], [[
57#ifndef __clang__
58 not clang
59#endif
60]])],
61[CLANG=yes], [CLANG=no])
62
63AC_MSG_RESULT([$CLANG])
64
Ian Romanick9aa3aa72010-03-03 15:59:37 -080065dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
66dnl versions are explictly not supported.
nobled2a501872010-08-29 20:03:37 -040067if test "x$GCC" = xyes -a "x$CLANG" = xno; then
Ian Romanick9aa3aa72010-03-03 15:59:37 -080068 AC_MSG_CHECKING([whether gcc version is sufficient])
69 major=0
70 minor=0
71
72 GCC_VERSION=`$CC -dumpversion`
73 if test $? -eq 0; then
74 major=`echo $GCC_VERSION | cut -d. -f1`
75 minor=`echo $GCC_VERSION | cut -d. -f1`
76 fi
77
78 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
79 AC_MSG_RESULT([no])
80 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
81 else
82 AC_MSG_RESULT([yes])
83 fi
84fi
85
86
Dan Nicholsondb7fc632008-03-07 11:48:09 -080087MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050088dnl Ask gcc where it's keeping its secret headers
89if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -080090 for dir in include include-fixed; do
91 GCC_INCLUDES=`$CC -print-file-name=$dir`
92 if test "x$GCC_INCLUDES" != x && \
93 test "$GCC_INCLUDES" != "$dir" && \
94 test -d "$GCC_INCLUDES"; then
95 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
96 fi
97 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050098fi
Dan Nicholson297e16c2008-05-05 15:42:53 -070099AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -0500100
Dan Nicholson41b00702007-12-12 08:48:30 -0800101dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -0700102m4_ifndef([PKG_PROG_PKG_CONFIG],
103 [m4_fatal([Could not locate the pkg-config autoconf macros.
104 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
105 are in a different location, try setting the environment variable
106 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700107PKG_PROG_PKG_CONFIG()
108
109dnl LIB_DIR - library basename
110LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -0700111AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700112
113dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
114_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700115AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
116AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700117
118dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
119_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700120AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
121AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700122
123dnl Compiler macros
124DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -0700125AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700126case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700127linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -0800128 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700129 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700130solaris*)
131 DEFINES="$DEFINES -DPTHREADS -DSVR4"
132 ;;
Brian Paul97988902010-02-18 12:46:12 -0700133cygwin*)
134 DEFINES="$DEFINES -DPTHREADS"
135 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -0700136esac
137
138dnl Add flags for gcc and g++
139if test "x$GCC" = xyes; then
Eric Anholta3c2bd42010-08-30 14:19:23 -0700140 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
141 if test "x$CLANG" = "xno"; then
142 CFLAGS="$CFLAGS -ffast-math"
143 fi
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800144
145 # Enable -fvisibility=hidden if using a gcc that supports it
146 save_CFLAGS="$CFLAGS"
Alan Coopersmithf8107a42010-01-21 16:42:58 -0800147 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
Alan Coopersmithadda7f32010-01-16 18:34:23 -0800148 CFLAGS="$CFLAGS -fvisibility=hidden"
149 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
150 [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]);
Dan Nicholson0c275b62008-01-15 22:52:25 -0800151
152 # Work around aliasing bugs - developers should comment this out
153 CFLAGS="$CFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700154fi
155if test "x$GXX" = xyes; then
156 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800157
Kristian Høgsberg7b34fcc2010-09-08 20:34:07 -0400158 # Enable -fvisibility=hidden if using a gcc that supports it
159 save_CXXFLAGS="$CXXFLAGS"
160 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
161 CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
162 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
163 [CXXFLAGS="$save_CXXFLAGS" ; AC_MSG_RESULT([no])]);
164
Dan Nicholson0c275b62008-01-15 22:52:25 -0800165 # Work around aliasing bugs - developers should comment this out
166 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700167fi
168
169dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700170AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700171 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700172AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700173 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700174AC_SUBST([OPT_FLAGS])
175AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700176
177dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600178dnl Hacks to enable 32 or 64 bit build
179dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700180AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600181 [AS_HELP_STRING([--enable-32-bit],
182 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700183 [enable_32bit="$enableval"],
184 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600185)
186if test "x$enable_32bit" = xyes; then
187 if test "x$GCC" = xyes; then
188 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700189 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600190 fi
191 if test "x$GXX" = xyes; then
192 CXXFLAGS="$CXXFLAGS -m32"
193 fi
194fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700195AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600196 [AS_HELP_STRING([--enable-64-bit],
197 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700198 [enable_64bit="$enableval"],
199 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600200)
201if test "x$enable_64bit" = xyes; then
202 if test "x$GCC" = xyes; then
203 CFLAGS="$CFLAGS -m64"
204 fi
205 if test "x$GXX" = xyes; then
206 CXXFLAGS="$CXXFLAGS -m64"
207 fi
208fi
209
210dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800211dnl shared/static libraries, mimic libtool options
212dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700213AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800214 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800215 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700216 [enable_static="$enableval"],
217 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800218)
219case "x$enable_static" in
220xyes|xno ) ;;
221x ) enable_static=no ;;
222* )
223 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
224 ;;
225esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700226AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800227 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800228 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700229 [enable_shared="$enableval"],
230 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800231)
232case "x$enable_shared" in
233xyes|xno ) ;;
234x ) enable_shared=yes ;;
235* )
236 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
237 ;;
238esac
239
240dnl Can't have static and shared libraries, default to static if user
241dnl explicitly requested. If both disabled, set to static since shared
242dnl was explicitly requirested.
243case "x$enable_static$enable_shared" in
244xyesyes )
245 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
246 enable_shared=no
247 ;;
248xnono )
249 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
250 enable_static=yes
251 ;;
252esac
253
254dnl
255dnl mklib options
256dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700257AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800258if test "$enable_static" = yes; then
259 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
260fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700261AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800262
Dan Nicholson23656c42007-12-12 09:02:31 -0800263dnl
264dnl other compiler options
265dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700266AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800267 [AS_HELP_STRING([--enable-debug],
268 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700269 [enable_debug="$enableval"],
270 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800271)
272if test "x$enable_debug" = xyes; then
273 DEFINES="$DEFINES -DDEBUG"
274 if test "x$GCC" = xyes; then
275 CFLAGS="$CFLAGS -g"
276 fi
277 if test "x$GXX" = xyes; then
278 CXXFLAGS="$CXXFLAGS -g"
279 fi
280fi
Dan Nicholson88586332007-11-15 08:59:57 -0800281
282dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700283dnl library names
284dnl
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100285LIB_PREFIX_GLOB='lib'
286LIB_VERSION_SEPARATOR='.'
Dan Nicholson88586332007-11-15 08:59:57 -0800287if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800288 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800289else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700290 case "$host_os" in
291 darwin* )
292 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100293 cygwin* )
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100294 dnl prefix can be 'cyg' or 'lib'
295 LIB_PREFIX_GLOB='???'
296 LIB_VERSION_SEPARATOR='-'
297 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700298 aix* )
299 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700300 * )
301 LIB_EXTENSION='so' ;;
302 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800303fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800304
305GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
306GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
307GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
308GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
309OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800310EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500311GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
312GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
Chia-I Wu874ccd52010-05-04 22:43:05 +0800313VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800314
Jon TURNEYc55a8a72010-07-24 12:05:34 +0100315GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
316GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
317GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
318GLW_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLW_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
319OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
320EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
321EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
322GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
323GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
324VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800325
Dan Nicholson297e16c2008-05-05 15:42:53 -0700326AC_SUBST([GL_LIB_NAME])
327AC_SUBST([GLU_LIB_NAME])
328AC_SUBST([GLUT_LIB_NAME])
329AC_SUBST([GLW_LIB_NAME])
330AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800331AC_SUBST([EGL_LIB_NAME])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500332AC_SUBST([GLESv1_CM_LIB_NAME])
333AC_SUBST([GLESv2_LIB_NAME])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800334AC_SUBST([VG_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700335
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700336AC_SUBST([GL_LIB_GLOB])
337AC_SUBST([GLU_LIB_GLOB])
338AC_SUBST([GLUT_LIB_GLOB])
339AC_SUBST([GLW_LIB_GLOB])
340AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800341AC_SUBST([EGL_LIB_GLOB])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500342AC_SUBST([GLESv1_CM_LIB_GLOB])
343AC_SUBST([GLESv2_LIB_GLOB])
Chia-I Wu874ccd52010-05-04 22:43:05 +0800344AC_SUBST([VG_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700345
Dan Nicholsondca1b792007-10-23 09:25:58 -0700346dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700347dnl Arch/platform-specific settings
348dnl
349AC_ARG_ENABLE([asm],
350 [AS_HELP_STRING([--disable-asm],
351 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
352 [enable_asm="$enableval"],
353 [enable_asm=yes]
354)
355asm_arch=""
356ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800357MESA_ASM_SOURCES=""
358GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700359AC_MSG_CHECKING([whether to enable assembly])
360test "x$enable_asm" = xno && AC_MSG_RESULT([no])
361# disable if cross compiling on x86/x86_64 since we must run gen_matypes
362if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
363 case "$host_cpu" in
364 i?86 | x86_64)
365 enable_asm=no
366 AC_MSG_RESULT([no, cross compiling])
367 ;;
368 esac
369fi
370# check for supported arches
371if test "x$enable_asm" = xyes; then
372 case "$host_cpu" in
373 i?86)
374 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100375 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700376 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
377 ;;
378 esac
379 ;;
380 x86_64)
381 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100382 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700383 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
384 ;;
385 esac
386 ;;
387 powerpc)
388 case "$host_os" in
389 linux*)
390 asm_arch=ppc
391 ;;
392 esac
393 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800394 sparc*)
395 case "$host_os" in
396 linux*)
397 asm_arch=sparc
398 ;;
399 esac
400 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700401 esac
402
403 case "$asm_arch" in
404 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800405 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800406 MESA_ASM_SOURCES='$(X86_SOURCES)'
407 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700408 AC_MSG_RESULT([yes, x86])
409 ;;
410 x86_64)
411 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800412 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
413 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700414 AC_MSG_RESULT([yes, x86_64])
415 ;;
416 ppc)
417 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800418 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700419 AC_MSG_RESULT([yes, ppc])
420 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800421 sparc)
422 ASM_FLAGS="-DUSE_SPARC_ASM"
423 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
424 GLAPI_ASM_SOURCES='$(SPARC_API)'
425 AC_MSG_RESULT([yes, sparc])
426 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700427 *)
428 AC_MSG_RESULT([no, platform not supported])
429 ;;
430 esac
431fi
432AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800433AC_SUBST([MESA_ASM_SOURCES])
434AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700435
436dnl PIC code macro
437MESA_PIC_FLAGS
438
439dnl Check to see if dlopen is in default libraries (like Solaris, which
440dnl has it in libc), or if libdl is needed to get it.
441AC_CHECK_FUNC([dlopen], [],
442 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu08f4bc02010-07-16 20:09:29 +0800443AC_SUBST([DLOPEN_LIBS])
Dan Nicholson871125a2008-06-04 13:00:35 -0700444
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700445dnl See if posix_memalign is available
446AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
447
Dan Nicholson871125a2008-06-04 13:00:35 -0700448dnl SELinux awareness.
449AC_ARG_ENABLE([selinux],
450 [AS_HELP_STRING([--enable-selinux],
451 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
452 [MESA_SELINUX="$enableval"],
453 [MESA_SELINUX=no])
454if test "x$enable_selinux" = "xyes"; then
455 AC_CHECK_HEADER([selinux/selinux.h],[],
456 [AC_MSG_ERROR([SELinux headers not found])])
457 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
458 [AC_MSG_ERROR([SELinux library not found])])
459 SELINUX_LIBS="-lselinux"
460 DEFINES="$DEFINES -DMESA_SELINUX"
461fi
462
Dan Nicholson871125a2008-06-04 13:00:35 -0700463dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800464dnl Driver configuration. Options are xlib, dri and osmesa right now.
Kristian Høgsberg43875802010-02-25 15:49:18 -0500465dnl More later: fbdev, ...
Dan Nicholson44d99142007-12-05 18:47:01 -0800466dnl
Eric Anholt711222b2008-04-18 15:03:01 -0700467default_driver="xlib"
468
469case "$host_os" in
470linux*)
471 case "$host_cpu" in
David S. Miller32dc28a2009-02-24 20:06:05 -0700472 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700473 esac
474 ;;
Julien Cristau98fcdf32008-10-28 18:56:05 +0100475*freebsd* | dragonfly*)
Eric Anholt711222b2008-04-18 15:03:01 -0700476 case "$host_cpu" in
Robert Noland48f05432009-04-10 11:41:27 -0500477 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700478 esac
479 ;;
480esac
481
Dan Nicholson297e16c2008-05-05 15:42:53 -0700482AC_ARG_WITH([driver],
Dan Nicholson44d99142007-12-05 18:47:01 -0800483 [AS_HELP_STRING([--with-driver=DRIVER],
Eric Anholt711222b2008-04-18 15:03:01 -0700484 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700485 [mesa_driver="$withval"],
486 [mesa_driver="$default_driver"])
Dan Nicholson44d99142007-12-05 18:47:01 -0800487dnl Check for valid option
488case "x$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800489xxlib|xdri|xosmesa)
Dan Nicholson44d99142007-12-05 18:47:01 -0800490 ;;
491*)
492 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
493 ;;
494esac
495
Eric Anholt0a1b54d2010-06-21 11:29:15 -0700496PKG_CHECK_MODULES([TALLOC], [talloc])
Eric Anholt639cdd32010-08-22 17:34:18 -0700497AC_SUBST([TALLOC_LIBS])
498AC_SUBST([TALLOC_CFLAGS])
Eric Anholt0a1b54d2010-06-21 11:29:15 -0700499
Dan Nicholson44d99142007-12-05 18:47:01 -0800500dnl
501dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700502dnl
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800503
504dnl this variable will be prepended to SRC_DIRS and is not exported
Chia-I Wu296adbd2010-04-26 12:56:44 +0800505CORE_DIRS="mapi/glapi glsl mesa"
Chia-I Wu99a37ed2010-01-05 17:39:05 +0800506
Jakob Bornecrantz05281062010-06-05 13:33:58 +0200507SRC_DIRS=""
Dan Nicholsondca1b792007-10-23 09:25:58 -0700508GLU_DIRS="sgi"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100509GALLIUM_DIRS="auxiliary drivers state_trackers"
Keith Whitwell51bff092010-03-11 14:43:00 +0000510GALLIUM_TARGET_DIRS=""
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000511GALLIUM_WINSYS_DIRS="sw"
Corbin Simpson25609782010-06-22 22:00:43 -0700512GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100513GALLIUM_STATE_TRACKERS_DIRS=""
514
Dan Nicholson44d99142007-12-05 18:47:01 -0800515case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800516xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800517 DRIVER_DIRS="x11"
Jakob Bornecrantzc9f98672010-03-16 13:54:18 +0000518 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
Keith Whitwell51bff092010-03-11 14:43:00 +0000519 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
Dan Nicholson44d99142007-12-05 18:47:01 -0800520 ;;
521dri)
Kristian Høgsberg6e8897f2010-02-09 09:58:36 -0500522 SRC_DIRS="$SRC_DIRS glx"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100523 DRIVER_DIRS="dri"
Jakob Bornecrantz23a915e2010-06-23 03:31:18 +0200524 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
Dan Nicholson44d99142007-12-05 18:47:01 -0800525 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800526osmesa)
527 DRIVER_DIRS="osmesa"
528 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800529esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700530AC_SUBST([SRC_DIRS])
531AC_SUBST([GLU_DIRS])
532AC_SUBST([DRIVER_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100533AC_SUBST([GALLIUM_DIRS])
Keith Whitwell51bff092010-03-11 14:43:00 +0000534AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100535AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000536AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100537AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dave Airlie81fe1982010-04-22 14:59:29 +1000538AC_SUBST([MESA_LLVM])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700539
540dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700541dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700542dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700543dnl
544if test -n "$PKG_CONFIG"; then
545 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700546 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700547 x11_pkgconfig=yes
548 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700549 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700550 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700551 ])
552 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700553else
554 x11_pkgconfig=no
555fi
556dnl Use the autoconf macro if no pkg-config files
Jeff Smith8d86d392010-03-12 18:55:09 -0600557if test "$x11_pkgconfig" = yes; then
Dan Nicholsone725ef12010-03-15 20:53:56 -0700558 PKG_CHECK_MODULES([X11], [x11])
Jeff Smith8d86d392010-03-12 18:55:09 -0600559else
Dan Nicholsondca1b792007-10-23 09:25:58 -0700560 AC_PATH_XTRA
Dan Nicholsone725ef12010-03-15 20:53:56 -0700561 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
562 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
563 AC_SUBST([X11_CFLAGS])
564 AC_SUBST([X11_LIBS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700565fi
566
Dan Nicholson99803a42008-07-01 09:03:15 -0700567dnl Try to tell the user that the --x-* options are only used when
568dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
569m4_divert_once([HELP_BEGIN],
570[These options are only used when the X libraries cannot be found by the
571pkg-config utility.])
572
Dan Nicholson44d99142007-12-05 18:47:01 -0800573dnl We need X for xlib and dri, so bomb now if it's not found
574case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800575xlib|dri)
Dan Nicholson44d99142007-12-05 18:47:01 -0800576 if test "$no_x" = yes; then
577 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
578 fi
579 ;;
580esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700581
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700582dnl XCB - this is only used for GLX right now
583AC_ARG_ENABLE([xcb],
584 [AS_HELP_STRING([--enable-xcb],
585 [use XCB for GLX @<:@default=disabled@:>@])],
586 [enable_xcb="$enableval"],
587 [enable_xcb=no])
588if test "x$enable_xcb" = xyes; then
589 DEFINES="$DEFINES -DUSE_XCB"
590else
591 enable_xcb=no
592fi
593
Dan Nicholson44d99142007-12-05 18:47:01 -0800594dnl
595dnl libGL configuration per driver
596dnl
597case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800598xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800599 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700600 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800601 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800602 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
603 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800604 else
605 # should check these...
606 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
607 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800608 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
609 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800610 fi
Jon TURNEY63563032010-08-30 12:41:15 +0100611 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
612 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -0800613
614 # if static, move the external libraries to the programs
615 # and empty the libraries for libGL
616 if test "$enable_static" = yes; then
617 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
618 GL_LIB_DEPS=""
619 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800620 ;;
621dri)
Dan Nicholson88586332007-11-15 08:59:57 -0800622 # DRI must be shared, I think
623 if test "$enable_static" = yes; then
624 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
625 fi
626
Dan Nicholson44d99142007-12-05 18:47:01 -0800627 # Check for libdrm
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -0700628 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
629 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500630 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Jesse Barnesed59b132010-01-13 15:48:14 -0500631 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
632 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Dan Nicholson44d99142007-12-05 18:47:01 -0800633
634 # find the DRI deps for libGL
635 if test "$x11_pkgconfig" = yes; then
Jon TURNEY2b9dac32010-04-21 12:58:54 +0100636 dri_modules="x11 xext xdamage xfixes"
637
638 # add xf86vidmode if available
639 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
640 if test "$HAVE_XF86VIDMODE" = yes ; then
641 dri_modules="$dri_modules xxf86vm"
642 fi
643
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700644 # add xcb modules if necessary
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700645 if test "$enable_xcb" = yes; then
646 dri_modules="$dri_modules x11-xcb xcb-glx"
647 fi
648
649 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800650 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800651 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
652 GL_LIB_DEPS="$DRIGL_LIBS"
653 else
654 # should check these...
655 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
656 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800657 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
658 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700659
660 # XCB can only be used from pkg-config
661 if test "$enable_xcb" = yes; then
662 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800663 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700664 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
665 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
666 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800667 fi
668
669 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700670 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
671 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500672 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
Kristian Høgsberg74399d42010-05-02 09:51:13 -0400673 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500674 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
Kristian Høgsberg74399d42010-05-02 09:51:13 -0400675 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800676 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800677osmesa)
678 # No libGL for osmesa
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700679 GL_LIB_DEPS=""
Dan Nicholson979ff512007-12-05 18:47:01 -0800680 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800681esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700682AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800683AC_SUBST([GL_PC_REQ_PRIV])
684AC_SUBST([GL_PC_LIB_PRIV])
685AC_SUBST([GL_PC_CFLAGS])
686AC_SUBST([DRI_PC_REQ_PRIV])
Li Pengc33c1912010-07-30 12:26:15 +0800687AC_SUBST([GLESv1_CM_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -0400688AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500689AC_SUBST([GLESv2_LIB_DEPS])
Kristian Høgsberg9e4f2da2010-05-04 14:13:11 -0400690AC_SUBST([GLESv2_PC_LIB_PRIV])
691
Dan Nicholsondca1b792007-10-23 09:25:58 -0700692
Jon TURNEY2b9dac32010-04-21 12:58:54 +0100693AC_SUBST([HAVE_XF86VIDMODE])
694
Dan Nicholsondca1b792007-10-23 09:25:58 -0700695dnl
696dnl More X11 setup
697dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800698if test "$mesa_driver" = xlib; then
Dan Nicholsondca1b792007-10-23 09:25:58 -0700699 DEFINES="$DEFINES -DUSE_XSHM"
700fi
701
702dnl
Dan Nicholson44d99142007-12-05 18:47:01 -0800703dnl More DRI setup
704dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700705AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -0800706 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800707 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700708 [GLX_USE_TLS="$enableval"],
709 [GLX_USE_TLS=no])
Dan Nicholson44d99142007-12-05 18:47:01 -0800710dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -0700711AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800712 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700713 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700714 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700715 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700716AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +0800717dnl Extra search path for DRI drivers
718AC_ARG_WITH([dri-searchpath],
719 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
720 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
721 [DRI_DRIVER_SEARCH_DIR="$withval"],
722 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
723AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholson44d99142007-12-05 18:47:01 -0800724dnl Direct rendering or just indirect rendering
Dan Nicholson297e16c2008-05-05 15:42:53 -0700725AC_ARG_ENABLE([driglx-direct],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800726 [AS_HELP_STRING([--disable-driglx-direct],
Chia-I Wucf588ab2010-07-06 14:34:43 +0800727 [enable direct rendering in GLX and EGL for DRI @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700728 [driglx_direct="$enableval"],
729 [driglx_direct="yes"])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800730dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -0700731AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800732 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -0700733 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +0200734 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700735 [with_dri_drivers="$withval"],
736 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800737if test "x$with_dri_drivers" = x; then
738 with_dri_drivers=no
739fi
740
Kristian Høgsberg0f680322010-04-27 13:42:33 -0400741dnl Determine which APIs to support
742AC_ARG_ENABLE([opengl],
743 [AS_HELP_STRING([--disable-opengl],
744 [disable support for standard OpenGL API @<:@default=no@:>@])],
745 [enable_opengl="$enableval"],
746 [enable_opengl=yes])
747AC_ARG_ENABLE([gles1],
748 [AS_HELP_STRING([--enable-gles1],
749 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
750 [enable_gles1="$enableval"],
751 [enable_gles1=no])
752AC_ARG_ENABLE([gles2],
753 [AS_HELP_STRING([--enable-gles2],
754 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
755 [enable_gles2="$enableval"],
756 [enable_gles2=no])
Chia-I Wu63ab2502010-05-05 15:38:02 +0800757AC_ARG_ENABLE([gles-overlay],
758 [AS_HELP_STRING([--enable-gles-overlay],
759 [build separate OpenGL ES only libraries @<:@default=no@:>@])],
760 [enable_gles_overlay="$enableval"],
761 [enable_gles_overlay=no])
Kristian Høgsberg0f680322010-04-27 13:42:33 -0400762
763API_DEFINES=""
Chia-I Wu87cc2da2010-05-12 14:17:17 +0800764GLES_OVERLAY=0
Kristian Høgsberg0f680322010-04-27 13:42:33 -0400765if test "x$enable_opengl" = xno; then
766 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
767else
768 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
769fi
770if test "x$enable_gles1" = xyes; then
771 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
772fi
773if test "x$enable_gles2" = xyes; then
774 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
775fi
Chia-I Wu63ab2502010-05-05 15:38:02 +0800776if test "x$enable_gles_overlay" = xyes -o \
777 "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
Chia-I Wu296adbd2010-04-26 12:56:44 +0800778 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
Chia-I Wu63ab2502010-05-05 15:38:02 +0800779 if test "x$enable_gles_overlay" = xyes; then
Chia-I Wu87cc2da2010-05-12 14:17:17 +0800780 GLES_OVERLAY=1
Chia-I Wu63ab2502010-05-05 15:38:02 +0800781 fi
Kristian Høgsberg9339c122010-03-05 19:01:43 -0500782fi
Kristian Høgsberg0f680322010-04-27 13:42:33 -0400783AC_SUBST([API_DEFINES])
Chia-I Wu87cc2da2010-05-12 14:17:17 +0800784AC_SUBST([GLES_OVERLAY])
Kristian Høgsberg0f680322010-04-27 13:42:33 -0400785
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800786dnl If $with_dri_drivers is yes, directories will be added through
787dnl platform checks
788DRI_DIRS=""
789case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100790no) ;;
791yes)
792 DRI_DIRS="yes"
793 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800794*)
795 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -0700796 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800797 for driver in $dri_drivers; do
798 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
799 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
800 done
801 DRI_DIRS="$dri_drivers"
802 ;;
803esac
804
Dan Nicholson44d99142007-12-05 18:47:01 -0800805dnl Set DRI_DIRS, DEFINES and LIB_DEPS
806if test "$mesa_driver" = dri; then
807 # Use TLS in GLX?
808 if test "x$GLX_USE_TLS" = xyes; then
809 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
810 fi
811
Dan Nicholson44d99142007-12-05 18:47:01 -0800812 # Platform specific settings and drivers to build
813 case "$host_os" in
814 linux*)
815 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Dan Nicholson44d99142007-12-05 18:47:01 -0800816 if test "x$driglx_direct" = xyes; then
817 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
818 fi
Jerome Glisse14f79d42008-12-18 13:36:07 +0100819 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800820
821 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -0800822 x86_64)
Kristian Høgsberg79aeafd2010-02-25 16:12:58 -0500823 # sis is missing because they have not be converted to use
824 # the new interface. i810 are missing because there is no
825 # x86-64 system where they could *ever* be used.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100826 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400827 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
George Sapountzis280bf892008-05-11 14:43:40 +0300828 savage tdfx unichrome swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800829 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800830 ;;
831 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800832 # Build only the drivers for cards that exist on PowerPC.
833 # At some point MGA will be added, but not yet.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100834 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400835 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800836 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800837 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000838 sparc*)
839 # Build only the drivers for cards that exist on sparc`
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100840 if test "x$DRI_DIRS" = "xyes"; then
Kristian Høgsberg79aeafd2010-02-25 16:12:58 -0500841 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000842 fi
843 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800844 esac
845 ;;
Hasso Tepper9f8df2d2008-04-09 10:51:21 -0700846 freebsd* | dragonfly*)
Dan Nicholson44d99142007-12-05 18:47:01 -0800847 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
848 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
849 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
850 if test "x$driglx_direct" = xyes; then
851 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
852 fi
853 if test "x$GXX" = xyes; then
854 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
855 fi
856
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100857 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400858 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
George Sapountzis280bf892008-05-11 14:43:40 +0300859 unichrome savage sis swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800860 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800861 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700862 gnu*)
863 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
864 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
865 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700866 solaris*)
867 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
868 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
869 if test "x$driglx_direct" = xyes; then
870 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
871 fi
872 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800873 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -0800874
875 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100876 if test "x$DRI_DIRS" = "xyes"; then
Corbin Simpson8e4657a2009-10-22 12:29:30 -0700877 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
Kristian Høgsberg79aeafd2010-02-25 16:12:58 -0500878 savage sis tdfx unichrome swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -0800879 fi
880
Dan Nicholson44d99142007-12-05 18:47:01 -0800881 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
882
883 # Check for expat
884 EXPAT_INCLUDES=""
885 EXPAT_LIB=-lexpat
Dan Nicholson297e16c2008-05-05 15:42:53 -0700886 AC_ARG_WITH([expat],
887 [AS_HELP_STRING([--with-expat=DIR],
888 [expat install directory])],[
Dan Nicholson44d99142007-12-05 18:47:01 -0800889 EXPAT_INCLUDES="-I$withval/include"
890 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
891 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
892 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
893 ])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700894 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
895 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
896 [AC_MSG_ERROR([Expat required for DRI.])])
Dan Nicholson44d99142007-12-05 18:47:01 -0800897
898 # put all the necessary libs together
Eric Anholt0a1b54d2010-06-21 11:29:15 -0700899 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800900fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700901AC_SUBST([DRI_DIRS])
902AC_SUBST([EXPAT_INCLUDES])
903AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -0800904
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500905case $DRI_DIRS in
906*i915*|*i965*)
Eric Anholt73de09f2010-06-07 09:25:10 -0700907 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500908 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500909esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500910
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500911case $DRI_DIRS in
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500912*radeon*|*r200*|*r300*|*r600*)
913 PKG_CHECK_MODULES([LIBDRM_RADEON],
914 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
915 HAVE_LIBDRM_RADEON=yes,
916 HAVE_LIBDRM_RADEON=no)
917
918 if test "$HAVE_LIBDRM_RADEON" = yes; then
919 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
920 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
921 fi
922 ;;
923esac
924AC_SUBST([RADEON_CFLAGS])
925AC_SUBST([RADEON_LDFLAGS])
926
927
Dan Nicholson44d99142007-12-05 18:47:01 -0800928dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700929dnl OSMesa configuration
930dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800931if test "$mesa_driver" = xlib; then
Dan Nicholson544ab202007-12-30 08:41:53 -0800932 default_gl_osmesa=yes
Dan Nicholson979ff512007-12-05 18:47:01 -0800933else
Dan Nicholson544ab202007-12-30 08:41:53 -0800934 default_gl_osmesa=no
Dan Nicholson44d99142007-12-05 18:47:01 -0800935fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700936AC_ARG_ENABLE([gl-osmesa],
Dan Nicholson544ab202007-12-30 08:41:53 -0800937 [AS_HELP_STRING([--enable-gl-osmesa],
Dan Nicholsoncbf30fc2010-06-16 09:23:17 -0700938 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700939 [gl_osmesa="$enableval"],
940 [gl_osmesa="$default_gl_osmesa"])
Dan Nicholson544ab202007-12-30 08:41:53 -0800941if test "x$gl_osmesa" = xyes; then
942 if test "$mesa_driver" = osmesa; then
943 AC_MSG_ERROR([libGL is not available for OSMesa driver])
Dan Nicholson979ff512007-12-05 18:47:01 -0800944 else
Dan Nicholson544ab202007-12-30 08:41:53 -0800945 DRIVER_DIRS="$DRIVER_DIRS osmesa"
Dan Nicholson979ff512007-12-05 18:47:01 -0800946 fi
947fi
948
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800949dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -0700950AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800951 [AS_HELP_STRING([--with-osmesa-bits=BITS],
952 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700953 [osmesa_bits="$withval"],
954 [osmesa_bits=8])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800955if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
956 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
957 osmesa_bits=8
958fi
959case "x$osmesa_bits" in
960x8)
961 OSMESA_LIB=OSMesa
962 ;;
963x16|x32)
964 OSMESA_LIB="OSMesa$osmesa_bits"
965 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
966 ;;
967*)
968 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
969 ;;
970esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700971AC_SUBST([OSMESA_LIB])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800972
Dan Nicholsoncbf30fc2010-06-16 09:23:17 -0700973case "$DRIVER_DIRS" in
974*osmesa*)
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700975 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800976 if test "$enable_static" = no; then
Jon TURNEYe637f8b2010-08-30 12:41:16 +0100977 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -0800978 else
979 OSMESA_LIB_DEPS=""
980 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800981 OSMESA_MESA_DEPS=""
Jon TURNEYe637f8b2010-08-30 12:41:16 +0100982 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -0800983 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800984esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700985AC_SUBST([OSMESA_LIB_DEPS])
986AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800987AC_SUBST([OSMESA_PC_REQ])
988AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700989
990dnl
Dan Nicholson53b37342009-02-25 17:45:34 -0800991dnl EGL configuration
992dnl
Dan Nicholson66f97862009-04-29 12:11:43 -0700993AC_ARG_ENABLE([egl],
994 [AS_HELP_STRING([--disable-egl],
995 [disable EGL library @<:@default=enabled@:>@])],
996 [enable_egl="$enableval"],
997 [enable_egl=yes])
998if test "x$enable_egl" = xyes; then
999 SRC_DIRS="$SRC_DIRS egl"
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001000 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
1001 EGL_DRIVERS_DIRS=""
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001002 if test "$enable_static" != yes; then
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001003 # build egl_glx when libGL is built
Chia-I Wu2eb7a2f2010-02-05 10:46:11 +08001004 if test "$mesa_driver" != osmesa; then
1005 EGL_DRIVERS_DIRS="glx"
1006 fi
1007
Chia-I Wu39ae9652010-07-16 19:48:52 +08001008 if test "$mesa_driver" = dri; then
1009 # build egl_dri2 when xcb-dri2 is available
1010 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1011 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1012 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1013 [have_libudev=yes],[have_libudev=no])
1014
1015 if test "$have_xcb_dri2" = yes; then
1016 EGL_DRIVER_DRI2=dri2
1017 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1018 if test "$have_libudev" = yes; then
1019 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1020 fi
1021 fi
1022 fi
Kristian Høgsberg2168b872010-06-02 22:48:06 -04001023
1024 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001025 fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001026fi
Dan Nicholson53b37342009-02-25 17:45:34 -08001027AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +08001028AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -08001029
1030dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -07001031dnl GLU configuration
1032dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001033AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001034 [AS_HELP_STRING([--disable-glu],
1035 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001036 [enable_glu="$enableval"],
1037 [enable_glu=yes])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001038if test "x$enable_glu" = xyes; then
1039 SRC_DIRS="$SRC_DIRS glu"
1040
Dan Nicholson979ff512007-12-05 18:47:01 -08001041 case "$mesa_driver" in
1042 osmesa)
Dan Nicholson979ff512007-12-05 18:47:01 -08001043 # Link libGLU to libOSMesa instead of libGL
1044 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -08001045 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -08001046 if test "$enable_static" = no; then
1047 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1048 else
1049 GLU_MESA_DEPS=""
1050 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001051 ;;
1052 *)
Dan Nicholson88586332007-11-15 08:59:57 -08001053 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -08001054 GLU_PC_REQ="gl"
1055 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -08001056 if test "$enable_static" = no; then
1057 GLU_LIB_DEPS="-lm"
1058 GLU_MESA_DEPS='-l$(GL_LIB)'
1059 else
1060 GLU_LIB_DEPS=""
1061 GLU_MESA_DEPS=""
1062 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1063 fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001064 ;;
1065 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001066fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001067if test "$enable_static" = no; then
1068 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1069fi
Dan Nicholson71e208b2008-11-24 11:01:57 -08001070GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -07001071AC_SUBST([GLU_LIB_DEPS])
1072AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001073AC_SUBST([GLU_PC_REQ])
1074AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001075AC_SUBST([GLU_PC_LIB_PRIV])
1076AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001077
1078dnl
1079dnl GLw configuration
1080dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -07001081AC_ARG_ENABLE([glw],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001082 [AS_HELP_STRING([--disable-glw],
1083 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001084 [enable_glw="$enableval"],
1085 [enable_glw=yes])
Dan Nicholson979ff512007-12-05 18:47:01 -08001086dnl Don't build GLw on osmesa
1087if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1088 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1089 enable_glw=no
1090fi
Dan Nicholson776c60d2008-07-18 07:40:41 -07001091AC_ARG_ENABLE([motif],
1092 [AS_HELP_STRING([--enable-motif],
1093 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1094 [enable_motif="$enableval"],
1095 [enable_motif=no])
1096
Dan Nicholsondca1b792007-10-23 09:25:58 -07001097if test "x$enable_glw" = xyes; then
1098 SRC_DIRS="$SRC_DIRS glw"
1099 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -07001100 PKG_CHECK_MODULES([GLW],[x11 xt])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001101 GLW_PC_REQ_PRIV="x11 xt"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001102 GLW_LIB_DEPS="$GLW_LIBS"
1103 else
1104 # should check these...
Dan Nicholson776c60d2008-07-18 07:40:41 -07001105 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001106 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1107 GLW_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001108 fi
1109
1110 GLW_SOURCES="GLwDrawA.c"
1111 MOTIF_CFLAGS=
1112 if test "x$enable_motif" = xyes; then
1113 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1114 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1115 if test "x$MOTIF_CONFIG" != xno; then
1116 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1117 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1118 else
1119 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1120 [AC_MSG_ERROR([Can't locate Motif headers])])
1121 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1122 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1123 fi
1124 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1125 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001126 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1127 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001128 fi
1129
Dan Nicholson88586332007-11-15 08:59:57 -08001130 # If static, empty GLW_LIB_DEPS and add libs for programs to link
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001131 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
Dan Nicholson88586332007-11-15 08:59:57 -08001132 if test "$enable_static" = no; then
1133 GLW_MESA_DEPS='-l$(GL_LIB)'
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001134 GLW_LIB_DEPS="$GLW_LIB_DEPS"
Dan Nicholson88586332007-11-15 08:59:57 -08001135 else
1136 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1137 GLW_LIB_DEPS=""
1138 GLW_MESA_DEPS=""
1139 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001140fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001141AC_SUBST([GLW_LIB_DEPS])
1142AC_SUBST([GLW_MESA_DEPS])
Dan Nicholson776c60d2008-07-18 07:40:41 -07001143AC_SUBST([GLW_SOURCES])
1144AC_SUBST([MOTIF_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001145AC_SUBST([GLW_PC_REQ_PRIV])
1146AC_SUBST([GLW_PC_LIB_PRIV])
1147AC_SUBST([GLW_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001148
1149dnl
1150dnl GLUT configuration
1151dnl
1152if test -f "$srcdir/include/GL/glut.h"; then
1153 default_glut=yes
1154else
1155 default_glut=no
1156fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001157AC_ARG_ENABLE([glut],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001158 [AS_HELP_STRING([--disable-glut],
1159 [enable GLUT library @<:@default=enabled if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001160 [enable_glut="$enableval"],
1161 [enable_glut="$default_glut"])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001162
1163dnl Can't build glut if GLU not available
1164if test "x$enable_glu$enable_glut" = xnoyes; then
1165 AC_MSG_WARN([Disabling glut since GLU is disabled])
1166 enable_glut=no
1167fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001168dnl Don't build glut on osmesa
1169if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1170 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1171 enable_glut=no
1172fi
1173
Dan Nicholsondca1b792007-10-23 09:25:58 -07001174if test "x$enable_glut" = xyes; then
1175 SRC_DIRS="$SRC_DIRS glut/glx"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001176 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -07001177 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001178 GLUT_PC_REQ_PRIV="x11 xmu xi"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001179 GLUT_LIB_DEPS="$GLUT_LIBS"
1180 else
1181 # should check these...
Dan Nicholson70d0c832007-12-07 11:12:20 -08001182 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001183 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1184 GLUT_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001185 fi
John Hein96172542010-07-01 12:53:28 -07001186 if test "x$GCC" = xyes; then
1187 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1188 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001189 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1190 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001191
Dan Nicholson88586332007-11-15 08:59:57 -08001192 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1193 if test "$enable_static" = no; then
1194 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1195 else
1196 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1197 GLUT_LIB_DEPS=""
1198 GLUT_MESA_DEPS=""
1199 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001200fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001201AC_SUBST([GLUT_LIB_DEPS])
1202AC_SUBST([GLUT_MESA_DEPS])
1203AC_SUBST([GLUT_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001204AC_SUBST([GLUT_PC_REQ_PRIV])
1205AC_SUBST([GLUT_PC_LIB_PRIV])
1206AC_SUBST([GLUT_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001207
1208dnl
1209dnl Program library dependencies
1210dnl Only libm is added here if necessary as the libraries should
1211dnl be pulled in by the linker
1212dnl
1213if test "x$APP_LIB_DEPS" = x; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001214 case "$host_os" in
1215 solaris*)
1216 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1217 ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +01001218 cygwin*)
1219 APP_LIB_DEPS="-lX11"
1220 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001221 *)
1222 APP_LIB_DEPS="-lm"
1223 ;;
1224 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001225fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001226AC_SUBST([APP_LIB_DEPS])
1227AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001228
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001229dnl
1230dnl Gallium configuration
1231dnl
1232AC_ARG_ENABLE([gallium],
1233 [AS_HELP_STRING([--disable-gallium],
1234 [build gallium @<:@default=enabled@:>@])],
1235 [enable_gallium="$enableval"],
1236 [enable_gallium=yes])
1237if test "x$enable_gallium" = xyes; then
Jakob Bornecrantzbe38b322010-03-23 13:23:26 +00001238 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
Dave Airlie81fe1982010-04-22 14:59:29 +10001239 AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
1240 [HAS_UDIS86="no"])
1241 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001242fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001243
Dave Airlie81fe1982010-04-22 14:59:29 +10001244AC_SUBST([LLVM_CFLAGS])
1245AC_SUBST([LLVM_LIBS])
1246AC_SUBST([LLVM_LDFLAGS])
1247AC_SUBST([LLVM_VERSION])
1248
Chia-I Wu874ccd52010-05-04 22:43:05 +08001249VG_LIB_DEPS=""
Chia-I Wu63ab2502010-05-05 15:38:02 +08001250EGL_CLIENT_APIS='$(GL_LIB)'
1251if test "x$enable_gles_overlay" = xyes; then
1252 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1253fi
Chia-I Wu874ccd52010-05-04 22:43:05 +08001254
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001255dnl
1256dnl Gallium state trackers configuration
1257dnl
1258AC_ARG_WITH([state-trackers],
1259 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1260 [comma delimited state_trackers list, e.g.
1261 "egl,glx" @<:@default=auto@:>@])],
1262 [with_state_trackers="$withval"],
1263 [with_state_trackers=yes])
1264
1265case "$with_state_trackers" in
1266no)
1267 GALLIUM_STATE_TRACKERS_DIRS=""
1268 ;;
1269yes)
1270 # look at what else is built
1271 case "$mesa_driver" in
Jakob Bornecrantz373e6712009-04-18 23:13:56 +01001272 xlib)
1273 GALLIUM_STATE_TRACKERS_DIRS=glx
1274 ;;
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001275 dri)
Jakob Bornecrantz5b1fc142010-03-25 18:29:51 +01001276 GALLIUM_STATE_TRACKERS_DIRS="dri"
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001277 HAVE_ST_DRI="yes"
Jakob Bornecrantzbc0532b2009-12-04 18:50:29 +00001278 if test "x$enable_egl" = xyes; then
Chia-I Wu3c967a92010-01-22 16:31:43 +08001279 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001280 HAVE_ST_EGL="yes"
Jakob Bornecrantzbc0532b2009-12-04 18:50:29 +00001281 fi
1282 # Have only tested st/xorg on 1.6.0 servers
Jakob Bornecrantz683a0992010-03-11 19:23:15 +00001283 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001284 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1285 HAVE_ST_XORG="no")
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001286 ;;
1287 esac
1288 ;;
1289*)
1290 # verify the requested state tracker exist
Chia-I Wu63ab2502010-05-05 15:38:02 +08001291 state_trackers=""
1292 _state_trackers=`IFS=', '; echo $with_state_trackers`
1293 for tracker in $_state_trackers; do
Chia-I Wue5d351d2009-12-23 11:18:00 +08001294 case "$tracker" in
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001295 dri)
1296 if test "x$mesa_driver" != xdri; then
1297 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1298 fi
1299 HAVE_ST_DRI="yes"
1300 ;;
Chia-I Wu3c967a92010-01-22 16:31:43 +08001301 egl)
Chia-I Wue5d351d2009-12-23 11:18:00 +08001302 if test "x$enable_egl" != xyes; then
Chia-I Wu3c967a92010-01-22 16:31:43 +08001303 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
Chia-I Wue5d351d2009-12-23 11:18:00 +08001304 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001305 HAVE_ST_EGL="yes"
Chia-I Wue5d351d2009-12-23 11:18:00 +08001306 ;;
1307 xorg)
Jakob Bornecrantz4f956882010-07-13 07:40:47 -07001308 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
Jakob Bornecrantz683a0992010-03-11 19:23:15 +00001309 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1310 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001311 HAVE_ST_XORG="yes"
Chia-I Wue5d351d2009-12-23 11:18:00 +08001312 ;;
1313 es)
Chia-I Wu63ab2502010-05-05 15:38:02 +08001314 AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
1315
1316 if test "x$enable_gles_overlay" != xyes; then
1317 if test "x$enable_gles1" != xyes -a "x$enable_gles2" != xyes; then
1318 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
1319 fi
Chia-I Wu87cc2da2010-05-12 14:17:17 +08001320 GLES_OVERLAY=1
Chia-I Wu63ab2502010-05-05 15:38:02 +08001321 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
Chia-I Wu296adbd2010-04-26 12:56:44 +08001322 fi
Chia-I Wu63ab2502010-05-05 15:38:02 +08001323 tracker=""
Chia-I Wue5d351d2009-12-23 11:18:00 +08001324 ;;
Chia-I Wu75143ef2010-04-16 18:12:37 +08001325 vega)
1326 CORE_DIRS="$CORE_DIRS mapi/vgapi"
Chia-I Wu874ccd52010-05-04 22:43:05 +08001327 VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
Chia-I Wu63ab2502010-05-05 15:38:02 +08001328 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
Chia-I Wu75143ef2010-04-16 18:12:37 +08001329 ;;
Chia-I Wue5d351d2009-12-23 11:18:00 +08001330 esac
Chia-I Wu63ab2502010-05-05 15:38:02 +08001331
1332 if test -n "$tracker"; then
1333 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1334 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1335 if test -n "$state_trackers"; then
1336 state_trackers="$state_trackers $tracker"
1337 else
1338 state_trackers="$tracker"
1339 fi
1340 fi
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001341 done
1342 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1343 ;;
1344esac
1345
Chia-I Wu874ccd52010-05-04 22:43:05 +08001346AC_SUBST([VG_LIB_DEPS])
Chia-I Wu63ab2502010-05-05 15:38:02 +08001347AC_SUBST([EGL_CLIENT_APIS])
1348
1349if test "x$HAVE_ST_EGL" = xyes; then
Chia-I Wud8e0e112010-06-29 14:04:27 +08001350 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
Chia-I Wucf588ab2010-07-06 14:34:43 +08001351 # define GLX_DIRECT_RENDERING even when the driver is not dri
1352 if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
1353 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1354 fi
Chia-I Wu63ab2502010-05-05 15:38:02 +08001355fi
Chia-I Wu874ccd52010-05-04 22:43:05 +08001356
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001357if test "x$HAVE_ST_XORG" = xyes; then
Jakob Bornecrantz683a0992010-03-11 19:23:15 +00001358 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1359 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1360 HAVE_XEXTPROTO_71="no")
1361fi
1362
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001363AC_ARG_WITH([egl-platforms],
1364 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1365 [comma delimited native platforms libEGL supports, e.g.
1366 "x11,kms" @<:@default=auto@:>@])],
1367 [with_egl_platforms="$withval"],
1368 [with_egl_platforms=yes])
Chia-I Wu49381d62010-01-11 01:23:01 +08001369AC_ARG_WITH([egl-displays],
1370 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001371 [DEPRECATED. Use --with-egl-platforms instead])],
1372 [with_egl_platforms="$withval"])
Chia-I Wu49381d62010-01-11 01:23:01 +08001373
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001374EGL_PLATFORMS=""
1375case "$with_egl_platforms" in
Chia-I Wu49381d62010-01-11 01:23:01 +08001376yes)
1377 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001378 EGL_PLATFORMS="x11"
Chia-I Wu49381d62010-01-11 01:23:01 +08001379 fi
1380 ;;
1381*)
1382 if test "x$enable_egl" != xyes; then
1383 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1384 fi
1385 # verify the requested driver directories exist
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001386 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1387 for plat in $egl_platforms; do
1388 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1389 AC_MSG_ERROR([EGL platform '$plat' does't exist])
1390 if test "$plat" = "fbdev"; then
Chia-I Wu8f3e48e2010-06-17 14:10:53 +08001391 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1392 fi
Chia-I Wu49381d62010-01-11 01:23:01 +08001393 done
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001394 EGL_PLATFORMS="$egl_platforms"
Chia-I Wu49381d62010-01-11 01:23:01 +08001395 ;;
1396esac
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001397AC_SUBST([EGL_PLATFORMS])
Chia-I Wu49381d62010-01-11 01:23:01 +08001398
Chia-I Wu28c3e572010-01-23 20:18:43 +08001399AC_ARG_WITH([egl-driver-dir],
1400 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1401 [directory for EGL drivers [[default=${libdir}/egl]]])],
1402 [EGL_DRIVER_INSTALL_DIR="$withval"],
1403 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1404AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1405
Joel Bosveld8acca482009-03-06 08:46:08 +09001406AC_ARG_WITH([xorg-driver-dir],
1407 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1408 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1409 [XORG_DRIVER_INSTALL_DIR="$withval"],
1410 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1411AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1412
Tom Fogal7085dce2009-08-13 19:40:30 -06001413AC_ARG_WITH([max-width],
1414 [AS_HELP_STRING([--with-max-width=N],
1415 [Maximum framebuffer width (4096)])],
1416 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1417 AS_IF([test "${withval}" -gt "4096"],
1418 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1419)
1420AC_ARG_WITH([max-height],
1421 [AS_HELP_STRING([--with-max-height=N],
1422 [Maximum framebuffer height (4096)])],
1423 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1424 AS_IF([test "${withval}" -gt "4096"],
1425 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1426)
1427
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001428dnl
Dave Airlie81fe1982010-04-22 14:59:29 +10001429dnl Gallium LLVM
1430dnl
1431AC_ARG_ENABLE([gallium-llvm],
1432 [AS_HELP_STRING([--enable-gallium-llvm],
1433 [build gallium LLVM support @<:@default=disabled@:>@])],
1434 [enable_gallium_llvm="$enableval"],
1435 [enable_gallium_llvm=auto])
1436if test "x$enable_gallium_llvm" = xyes; then
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001437 if test "x$LLVM_CONFIG" != xno; then
1438 LLVM_VERSION=`$LLVM_CONFIG --version`
1439 LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
1440 LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
1441
1442 if test "x$HAS_UDIS86" != xno; then
1443 LLVM_LIBS="$LLVM_LIBS -ludis86"
1444 DEFINES="$DEFINES -DHAVE_UDIS86"
Dave Airlie81fe1982010-04-22 14:59:29 +10001445 fi
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001446 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1447 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
Chia-I Wu3ecb8c22010-05-11 12:36:49 +08001448 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001449 MESA_LLVM=1
1450 else
Dave Airlie81fe1982010-04-22 14:59:29 +10001451 MESA_LLVM=0
Dave Airlie22e8ddc2010-04-25 07:48:48 +10001452 fi
1453else
1454 MESA_LLVM=0
Dave Airlie81fe1982010-04-22 14:59:29 +10001455fi
1456
1457dnl
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001458dnl Gallium helper functions
1459dnl
1460gallium_check_st() {
Chia-I Wud8e0e112010-06-29 14:04:27 +08001461 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001462 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1463 fi
1464 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1465 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1466 fi
Chia-I Wud8e0e112010-06-29 14:04:27 +08001467 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001468 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1469 fi
Jakob Bornecrantza82e37b2010-03-25 22:21:39 +01001470}
1471
1472
1473dnl
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001474dnl Gallium SVGA configuration
1475dnl
1476AC_ARG_ENABLE([gallium-svga],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001477 [AS_HELP_STRING([--enable-gallium-svga],
1478 [build gallium SVGA @<:@default=disabled@:>@])],
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001479 [enable_gallium_svga="$enableval"],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001480 [enable_gallium_svga=auto])
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001481if test "x$enable_gallium_svga" = xyes; then
Xavier Chantryff0987a2010-03-26 11:02:03 +01001482 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Chia-I Wud8e0e112010-06-29 14:04:27 +08001483 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001484elif test "x$enable_gallium_svga" = xauto; then
1485 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001486fi
1487
1488dnl
Jakob Bornecrantz7dce4f32010-06-11 13:00:16 +02001489dnl Gallium i915 configuration
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001490dnl
Jakob Bornecrantz7dce4f32010-06-11 13:00:16 +02001491AC_ARG_ENABLE([gallium-i915],
1492 [AS_HELP_STRING([--enable-gallium-i915],
1493 [build gallium i915 @<:@default=disabled@:>@])],
1494 [enable_gallium_i915="$enableval"],
1495 [enable_gallium_i915=auto])
1496if test "x$enable_gallium_i915" = xyes; then
Jakob Bornecrantz44bafca2010-04-17 15:17:33 +01001497 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Jakob Bornecrantz7dce4f32010-06-11 13:00:16 +02001498 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
Chia-I Wud8e0e112010-06-29 14:04:27 +08001499 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
Jakob Bornecrantz7dce4f32010-06-11 13:00:16 +02001500elif test "x$enable_gallium_i915" = xauto; then
Jakob Bornecrantz44bafca2010-04-17 15:17:33 +01001501 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
Jakob Bornecrantz7dce4f32010-06-11 13:00:16 +02001502 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1503fi
1504
1505dnl
1506dnl Gallium i965 configuration
1507dnl
1508AC_ARG_ENABLE([gallium-i965],
1509 [AS_HELP_STRING([--enable-gallium-i965],
1510 [build gallium i965 @<:@default=disabled@:>@])],
1511 [enable_gallium_i965="$enableval"],
1512 [enable_gallium_i965=auto])
1513if test "x$enable_gallium_i965" = xyes; then
1514 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
Chia-I Wud8e0e112010-06-29 14:04:27 +08001515 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
Jakob Bornecrantz7dce4f32010-06-11 13:00:16 +02001516elif test "x$enable_gallium_i965" = xauto; then
1517 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001518fi
1519
1520dnl
1521dnl Gallium Radeon configuration
1522dnl
1523AC_ARG_ENABLE([gallium-radeon],
1524 [AS_HELP_STRING([--enable-gallium-radeon],
1525 [build gallium radeon @<:@default=disabled@:>@])],
1526 [enable_gallium_radeon="$enableval"],
Jakob Bornecrantz877cadb2010-01-14 22:51:25 +00001527 [enable_gallium_radeon=auto])
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001528if test "x$enable_gallium_radeon" = xyes; then
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001529 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
Dave Airlie37f06542010-08-22 17:28:20 +10001530 gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon"
Jakob Bornecrantz877cadb2010-01-14 22:51:25 +00001531elif test "x$enable_gallium_radeon" = xauto; then
1532 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001533fi
1534
1535dnl
Jakob Bornecrantzaeee5262010-05-13 20:29:18 +01001536dnl Gallium Radeon r600g configuration
1537dnl
1538AC_ARG_ENABLE([gallium-r600],
1539 [AS_HELP_STRING([--enable-gallium-r600],
1540 [build gallium radeon @<:@default=disabled@:>@])],
1541 [enable_gallium_r600="$enableval"],
1542 [enable_gallium_r600=auto])
1543if test "x$enable_gallium_r600" = xyes; then
1544 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1545 gallium_check_st "r600/drm" "dri-r600"
1546fi
1547
1548dnl
Thierry Vignaud1402ea82009-09-14 11:48:51 -06001549dnl Gallium Nouveau configuration
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001550dnl
1551AC_ARG_ENABLE([gallium-nouveau],
1552 [AS_HELP_STRING([--enable-gallium-nouveau],
1553 [build gallium nouveau @<:@default=disabled@:>@])],
1554 [enable_gallium_nouveau="$enableval"],
1555 [enable_gallium_nouveau=no])
1556if test "x$enable_gallium_nouveau" = xyes; then
Luca Barbierif9d09a22010-02-21 15:13:12 +01001557 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
Chia-I Wud8e0e112010-06-29 14:04:27 +08001558 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001559fi
1560
Chia-I Wua1306f42010-01-22 15:51:51 +08001561dnl
1562dnl Gallium swrast configuration
1563dnl
1564AC_ARG_ENABLE([gallium-swrast],
1565 [AS_HELP_STRING([--enable-gallium-swrast],
Jakob Bornecrantzf5ba2cd2010-03-24 10:58:45 +01001566 [build gallium swrast @<:@default=auto@:>@])],
Chia-I Wua1306f42010-01-22 15:51:51 +08001567 [enable_gallium_swrast="$enableval"],
1568 [enable_gallium_swrast=auto])
George Sapountzis7b333292010-03-25 17:01:54 +02001569if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
Jakob Bornecrantz5b1fc142010-03-25 18:29:51 +01001570 if test "x$HAVE_ST_DRI" = xyes; then
George Sapountzis7b333292010-03-25 17:01:54 +02001571 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
Jakob Bornecrantzf5ba2cd2010-03-24 10:58:45 +01001572 fi
Chia-I Wua1306f42010-01-22 15:51:51 +08001573fi
1574
Chia-I Wu99a37ed2010-01-05 17:39:05 +08001575dnl prepend CORE_DIRS to SRC_DIRS
1576SRC_DIRS="$CORE_DIRS $SRC_DIRS"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001577
Dan Nicholsondca1b792007-10-23 09:25:58 -07001578dnl Restore LDFLAGS and CPPFLAGS
1579LDFLAGS="$_SAVE_LDFLAGS"
1580CPPFLAGS="$_SAVE_CPPFLAGS"
1581
1582dnl Substitute the config
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001583AC_CONFIG_FILES([configs/autoconf])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001584
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001585dnl Replace the configs/current symlink
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001586AC_CONFIG_COMMANDS([configs],[
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001587if test -f configs/current || test -L configs/current; then
1588 rm -f configs/current
1589fi
1590ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001591])
1592
1593AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001594
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001595dnl
1596dnl Output some configuration info for the user
1597dnl
1598echo ""
1599echo " prefix: $prefix"
1600echo " exec_prefix: $exec_prefix"
1601echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001602echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001603
1604dnl Driver info
1605echo ""
1606echo " Driver: $mesa_driver"
Dan Nicholson544ab202007-12-30 08:41:53 -08001607if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1608 echo " OSMesa: lib$OSMESA_LIB"
1609else
1610 echo " OSMesa: no"
1611fi
1612if test "$mesa_driver" = dri; then
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001613 # cleanup the drivers var
1614 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001615if test "x$DRI_DIRS" = x; then
1616 echo " DRI drivers: no"
1617else
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001618 echo " DRI drivers: $dri_dirs"
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001619fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001620 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -08001621fi
RALOVICH, Kristóf5f19f5c2008-11-04 11:53:32 +01001622echo " Use XCB: $enable_xcb"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001623
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001624echo ""
Eric Anholt1a8b1272010-05-21 12:17:24 -07001625if test "x$MESA_LLVM" = x1; then
Jakob Bornecrantzfe0fe672010-04-28 13:38:58 +01001626 echo " llvm: yes"
1627 echo " llvm-config: $LLVM_CONFIG"
1628 echo " llvm-version: $LLVM_VERSION"
1629else
1630 echo " llvm: no"
1631fi
1632
1633echo ""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001634if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1635 echo " Gallium: yes"
1636 echo " Gallium dirs: $GALLIUM_DIRS"
Keith Whitwell51bff092010-03-11 14:43:00 +00001637 echo " Target dirs: $GALLIUM_TARGET_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001638 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001639 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001640 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
Chia-I Wu63ab2502010-05-05 15:38:02 +08001641 if test "x$HAVE_ST_EGL" = xyes; then
1642 echo " EGL client APIs: $EGL_CLIENT_APIS"
1643 fi
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001644else
1645 echo " Gallium: no"
1646fi
1647
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001648dnl Libraries
1649echo ""
1650echo " Shared libs: $enable_shared"
1651echo " Static libs: $enable_static"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001652if test "$enable_egl" = yes; then
1653 echo " EGL: $EGL_DRIVERS_DIRS"
Chia-I Wuda39d5d2010-06-17 16:07:46 +08001654 echo " EGL platforms: $EGL_PLATFORMS"
Kristian Høgsberg42fa0092010-02-03 10:18:28 -05001655else
1656 echo " EGL: no"
1657fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001658echo " GLU: $enable_glu"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001659echo " GLw: $enable_glw (Motif: $enable_motif)"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001660echo " glut: $enable_glut"
1661
Dan Nicholson16a07fb2007-12-12 09:12:15 -08001662dnl Compiler options
1663# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1664cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1665 $SED 's/^ *//;s/ */ /;s/ *$//'`
1666cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1667 $SED 's/^ *//;s/ */ /;s/ *$//'`
1668defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1669echo ""
1670echo " CFLAGS: $cflags"
1671echo " CXXFLAGS: $cxxflags"
1672echo " Macros: $defines"
1673
Dan Nicholsondca1b792007-10-23 09:25:58 -07001674echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07001675echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001676echo ""