blob: 1f94248824c2e3e103586edfa0a4931e9837ec02 [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],
7 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n'])])
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
Jesse Barnesa35f6bb2009-07-17 03:30:29 -040023DRI2PROTO_REQUIRED=2.2
Jesse Barnesf2f83d92010-01-11 17:28:10 -050024GLPROTO_REQUIRED=1.4.11
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070025
Dan Nicholsondca1b792007-10-23 09:25:58 -070026dnl Check for progs
27AC_PROG_CPP
28AC_PROG_CC
29AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070030AC_CHECK_PROGS([MAKE], [gmake make])
31AC_PATH_PROG([MKDEP], [makedepend])
32AC_PATH_PROG([SED], [sed])
Dan Nicholson41b00702007-12-12 08:48:30 -080033
Dan Nicholsonbc302b22009-05-22 09:39:02 -070034dnl Our fallback install-sh is a symlink to minstall. Use the existing
35dnl configuration in that case.
36AC_PROG_INSTALL
37test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
38
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070039dnl We need a POSIX shell for parts of the build. Assume we have one
40dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070041case "$host_os" in
42solaris*)
43 # Solaris /bin/sh is too old/non-POSIX compliant
44 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070045 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070046 ;;
47esac
48
Dan Nicholsondb7fc632008-03-07 11:48:09 -080049MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050050dnl Ask gcc where it's keeping its secret headers
51if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -080052 for dir in include include-fixed; do
53 GCC_INCLUDES=`$CC -print-file-name=$dir`
54 if test "x$GCC_INCLUDES" != x && \
55 test "$GCC_INCLUDES" != "$dir" && \
56 test -d "$GCC_INCLUDES"; then
57 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
58 fi
59 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050060fi
Dan Nicholson297e16c2008-05-05 15:42:53 -070061AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050062
Dan Nicholson41b00702007-12-12 08:48:30 -080063dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -070064m4_ifndef([PKG_PROG_PKG_CONFIG],
65 [m4_fatal([Could not locate the pkg-config autoconf macros.
66 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
67 are in a different location, try setting the environment variable
68 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -070069PKG_PROG_PKG_CONFIG()
70
71dnl LIB_DIR - library basename
72LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -070073AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -070074
75dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
76_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -070077AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
78AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -070079
80dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
81_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -070082AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
83AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -070084
85dnl Compiler macros
86DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -070087AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -070088case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -070089linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -080090 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -070091 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070092solaris*)
93 DEFINES="$DEFINES -DPTHREADS -DSVR4"
94 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -070095esac
96
97dnl Add flags for gcc and g++
98if test "x$GCC" = xyes; then
Kristian Høgsberge388d622010-01-02 18:59:54 -050099 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math -fvisibility=hidden"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800100
101 # Work around aliasing bugs - developers should comment this out
102 CFLAGS="$CFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700103fi
104if test "x$GXX" = xyes; then
105 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800106
107 # Work around aliasing bugs - developers should comment this out
108 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700109fi
110
111dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700112AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700113 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700114AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700115 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700116AC_SUBST([OPT_FLAGS])
117AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700118
119dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600120dnl Hacks to enable 32 or 64 bit build
121dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700122AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600123 [AS_HELP_STRING([--enable-32-bit],
124 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700125 [enable_32bit="$enableval"],
126 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600127)
128if test "x$enable_32bit" = xyes; then
129 if test "x$GCC" = xyes; then
130 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700131 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600132 fi
133 if test "x$GXX" = xyes; then
134 CXXFLAGS="$CXXFLAGS -m32"
135 fi
136fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700137AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600138 [AS_HELP_STRING([--enable-64-bit],
139 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700140 [enable_64bit="$enableval"],
141 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600142)
143if test "x$enable_64bit" = xyes; then
144 if test "x$GCC" = xyes; then
145 CFLAGS="$CFLAGS -m64"
146 fi
147 if test "x$GXX" = xyes; then
148 CXXFLAGS="$CXXFLAGS -m64"
149 fi
150fi
151
152dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800153dnl shared/static libraries, mimic libtool options
154dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700155AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800156 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800157 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700158 [enable_static="$enableval"],
159 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800160)
161case "x$enable_static" in
162xyes|xno ) ;;
163x ) enable_static=no ;;
164* )
165 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
166 ;;
167esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700168AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800169 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800170 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700171 [enable_shared="$enableval"],
172 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800173)
174case "x$enable_shared" in
175xyes|xno ) ;;
176x ) enable_shared=yes ;;
177* )
178 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
179 ;;
180esac
181
182dnl Can't have static and shared libraries, default to static if user
183dnl explicitly requested. If both disabled, set to static since shared
184dnl was explicitly requirested.
185case "x$enable_static$enable_shared" in
186xyesyes )
187 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
188 enable_shared=no
189 ;;
190xnono )
191 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
192 enable_static=yes
193 ;;
194esac
195
196dnl
197dnl mklib options
198dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700199AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800200if test "$enable_static" = yes; then
201 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
202fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700203AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800204
Dan Nicholson23656c42007-12-12 09:02:31 -0800205dnl
206dnl other compiler options
207dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700208AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800209 [AS_HELP_STRING([--enable-debug],
210 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700211 [enable_debug="$enableval"],
212 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800213)
214if test "x$enable_debug" = xyes; then
215 DEFINES="$DEFINES -DDEBUG"
216 if test "x$GCC" = xyes; then
217 CFLAGS="$CFLAGS -g"
218 fi
219 if test "x$GXX" = xyes; then
220 CXXFLAGS="$CXXFLAGS -g"
221 fi
222fi
Dan Nicholson88586332007-11-15 08:59:57 -0800223
224dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700225dnl library names
226dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800227if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800228 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800229else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700230 case "$host_os" in
231 darwin* )
232 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100233 cygwin* )
234 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700235 aix* )
236 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700237 * )
238 LIB_EXTENSION='so' ;;
239 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800240fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800241
242GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
243GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
244GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
245GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
246OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800247EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800248
249GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
250GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
251GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
252GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
253OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800254EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800255
Dan Nicholson297e16c2008-05-05 15:42:53 -0700256AC_SUBST([GL_LIB_NAME])
257AC_SUBST([GLU_LIB_NAME])
258AC_SUBST([GLUT_LIB_NAME])
259AC_SUBST([GLW_LIB_NAME])
260AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800261AC_SUBST([EGL_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700262
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700263AC_SUBST([GL_LIB_GLOB])
264AC_SUBST([GLU_LIB_GLOB])
265AC_SUBST([GLUT_LIB_GLOB])
266AC_SUBST([GLW_LIB_GLOB])
267AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800268AC_SUBST([EGL_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700269
Dan Nicholsondca1b792007-10-23 09:25:58 -0700270dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700271dnl Arch/platform-specific settings
272dnl
273AC_ARG_ENABLE([asm],
274 [AS_HELP_STRING([--disable-asm],
275 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
276 [enable_asm="$enableval"],
277 [enable_asm=yes]
278)
279asm_arch=""
280ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800281MESA_ASM_SOURCES=""
282GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700283AC_MSG_CHECKING([whether to enable assembly])
284test "x$enable_asm" = xno && AC_MSG_RESULT([no])
285# disable if cross compiling on x86/x86_64 since we must run gen_matypes
286if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
287 case "$host_cpu" in
288 i?86 | x86_64)
289 enable_asm=no
290 AC_MSG_RESULT([no, cross compiling])
291 ;;
292 esac
293fi
294# check for supported arches
295if test "x$enable_asm" = xyes; then
296 case "$host_cpu" in
297 i?86)
298 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100299 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700300 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
301 ;;
302 esac
303 ;;
304 x86_64)
305 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100306 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700307 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
308 ;;
309 esac
310 ;;
311 powerpc)
312 case "$host_os" in
313 linux*)
314 asm_arch=ppc
315 ;;
316 esac
317 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800318 sparc*)
319 case "$host_os" in
320 linux*)
321 asm_arch=sparc
322 ;;
323 esac
324 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700325 esac
326
327 case "$asm_arch" in
328 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800329 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800330 MESA_ASM_SOURCES='$(X86_SOURCES)'
331 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700332 AC_MSG_RESULT([yes, x86])
333 ;;
334 x86_64)
335 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800336 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
337 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700338 AC_MSG_RESULT([yes, x86_64])
339 ;;
340 ppc)
341 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800342 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700343 AC_MSG_RESULT([yes, ppc])
344 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800345 sparc)
346 ASM_FLAGS="-DUSE_SPARC_ASM"
347 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
348 GLAPI_ASM_SOURCES='$(SPARC_API)'
349 AC_MSG_RESULT([yes, sparc])
350 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700351 *)
352 AC_MSG_RESULT([no, platform not supported])
353 ;;
354 esac
355fi
356AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800357AC_SUBST([MESA_ASM_SOURCES])
358AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700359
360dnl PIC code macro
361MESA_PIC_FLAGS
362
363dnl Check to see if dlopen is in default libraries (like Solaris, which
364dnl has it in libc), or if libdl is needed to get it.
365AC_CHECK_FUNC([dlopen], [],
366 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
367
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700368dnl See if posix_memalign is available
369AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
370
Dan Nicholson871125a2008-06-04 13:00:35 -0700371dnl SELinux awareness.
372AC_ARG_ENABLE([selinux],
373 [AS_HELP_STRING([--enable-selinux],
374 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
375 [MESA_SELINUX="$enableval"],
376 [MESA_SELINUX=no])
377if test "x$enable_selinux" = "xyes"; then
378 AC_CHECK_HEADER([selinux/selinux.h],[],
379 [AC_MSG_ERROR([SELinux headers not found])])
380 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
381 [AC_MSG_ERROR([SELinux library not found])])
382 SELINUX_LIBS="-lselinux"
383 DEFINES="$DEFINES -DMESA_SELINUX"
384fi
385
Dan Nicholson871125a2008-06-04 13:00:35 -0700386dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800387dnl Driver configuration. Options are xlib, dri and osmesa right now.
Dan Nicholson979ff512007-12-05 18:47:01 -0800388dnl More later: directfb, fbdev, ...
Dan Nicholson44d99142007-12-05 18:47:01 -0800389dnl
Eric Anholt711222b2008-04-18 15:03:01 -0700390default_driver="xlib"
391
392case "$host_os" in
393linux*)
394 case "$host_cpu" in
David S. Miller32dc28a2009-02-24 20:06:05 -0700395 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700396 esac
397 ;;
Julien Cristau98fcdf32008-10-28 18:56:05 +0100398*freebsd* | dragonfly*)
Eric Anholt711222b2008-04-18 15:03:01 -0700399 case "$host_cpu" in
Robert Noland48f05432009-04-10 11:41:27 -0500400 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700401 esac
402 ;;
403esac
404
Dan Nicholson297e16c2008-05-05 15:42:53 -0700405AC_ARG_WITH([driver],
Dan Nicholson44d99142007-12-05 18:47:01 -0800406 [AS_HELP_STRING([--with-driver=DRIVER],
Eric Anholt711222b2008-04-18 15:03:01 -0700407 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700408 [mesa_driver="$withval"],
409 [mesa_driver="$default_driver"])
Dan Nicholson44d99142007-12-05 18:47:01 -0800410dnl Check for valid option
411case "x$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800412xxlib|xdri|xosmesa)
Dan Nicholson44d99142007-12-05 18:47:01 -0800413 ;;
414*)
415 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
416 ;;
417esac
418
419dnl
420dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700421dnl
Sedat Dilek2f127e52009-12-17 19:14:53 +0100422SRC_DIRS="glsl mesa glew"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700423GLU_DIRS="sgi"
Dan Nicholson44d99142007-12-05 18:47:01 -0800424WINDOW_SYSTEM=""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100425GALLIUM_DIRS="auxiliary drivers state_trackers"
Jerome Glisse14f79d42008-12-18 13:36:07 +0100426GALLIUM_WINSYS_DIRS=""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100427GALLIUM_WINSYS_DRM_DIRS=""
Jakob Bornecrantzd60b2c62009-06-24 02:42:41 +0200428GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100429GALLIUM_STATE_TRACKERS_DIRS=""
430
Dan Nicholson44d99142007-12-05 18:47:01 -0800431case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800432xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800433 DRIVER_DIRS="x11"
Jakob Bornecrantz373e6712009-04-18 23:13:56 +0100434 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
Dan Nicholson44d99142007-12-05 18:47:01 -0800435 ;;
436dri)
437 SRC_DIRS="glx/x11 $SRC_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100438 DRIVER_DIRS="dri"
Dan Nicholson44d99142007-12-05 18:47:01 -0800439 WINDOW_SYSTEM="dri"
Jakob Bornecrantz373e6712009-04-18 23:13:56 +0100440 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
Dan Nicholson44d99142007-12-05 18:47:01 -0800441 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800442osmesa)
443 DRIVER_DIRS="osmesa"
444 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800445esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700446AC_SUBST([SRC_DIRS])
447AC_SUBST([GLU_DIRS])
448AC_SUBST([DRIVER_DIRS])
449AC_SUBST([WINDOW_SYSTEM])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100450AC_SUBST([GALLIUM_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100451AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100452AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000453AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100454AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700455
456dnl
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800457dnl User supplied program configuration
458dnl
459if test -d "$srcdir/progs/demos"; then
460 default_demos=yes
461else
462 default_demos=no
463fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700464AC_ARG_WITH([demos],
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800465 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
466 [optional comma delimited demo directories to build
Dan Nicholsonc79c93c2007-12-12 18:13:04 -0800467 @<:@default=auto if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700468 [with_demos="$withval"],
469 [with_demos="$default_demos"])
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800470if test "x$with_demos" = x; then
471 with_demos=no
472fi
473
474dnl If $with_demos is yes, directories will be added as libs available
475PROGRAM_DIRS=""
476case "$with_demos" in
Dan Nicholsonb9576552008-03-10 14:05:46 -0700477no) ;;
478yes)
479 # If the driver isn't osmesa, we have libGL and can build xdemos
480 if test "$mesa_driver" != osmesa; then
481 PROGRAM_DIRS="xdemos"
482 fi
483 ;;
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800484*)
485 # verify the requested demos directories exist
486 demos=`IFS=,; echo $with_demos`
487 for demo in $demos; do
488 test -d "$srcdir/progs/$demo" || \
489 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
490 done
491 PROGRAM_DIRS="$demos"
492 ;;
493esac
494
495dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700496dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700497dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700498dnl
499if test -n "$PKG_CONFIG"; then
500 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700501 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700502 x11_pkgconfig=yes
503 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700504 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700505 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700506 ])
507 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700508else
509 x11_pkgconfig=no
510fi
511dnl Use the autoconf macro if no pkg-config files
512if test "$x11_pkgconfig" = no; then
513 AC_PATH_XTRA
514fi
515
Dan Nicholson99803a42008-07-01 09:03:15 -0700516dnl Try to tell the user that the --x-* options are only used when
517dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
518m4_divert_once([HELP_BEGIN],
519[These options are only used when the X libraries cannot be found by the
520pkg-config utility.])
521
Dan Nicholson44d99142007-12-05 18:47:01 -0800522dnl We need X for xlib and dri, so bomb now if it's not found
523case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800524xlib|dri)
Dan Nicholson44d99142007-12-05 18:47:01 -0800525 if test "$no_x" = yes; then
526 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
527 fi
528 ;;
529esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700530
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700531dnl XCB - this is only used for GLX right now
532AC_ARG_ENABLE([xcb],
533 [AS_HELP_STRING([--enable-xcb],
534 [use XCB for GLX @<:@default=disabled@:>@])],
535 [enable_xcb="$enableval"],
536 [enable_xcb=no])
537if test "x$enable_xcb" = xyes; then
538 DEFINES="$DEFINES -DUSE_XCB"
539else
540 enable_xcb=no
541fi
542
Dan Nicholson44d99142007-12-05 18:47:01 -0800543dnl
544dnl libGL configuration per driver
545dnl
546case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800547xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800548 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700549 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800550 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800551 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
552 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800553 else
554 # should check these...
555 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
556 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800557 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
558 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800559 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700560 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
561 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson88586332007-11-15 08:59:57 -0800562
563 # if static, move the external libraries to the programs
564 # and empty the libraries for libGL
565 if test "$enable_static" = yes; then
566 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
567 GL_LIB_DEPS=""
568 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800569 ;;
570dri)
Dan Nicholson88586332007-11-15 08:59:57 -0800571 # DRI must be shared, I think
572 if test "$enable_static" = yes; then
573 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
574 fi
575
Dan Nicholson44d99142007-12-05 18:47:01 -0800576 # Check for libdrm
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -0700577 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
578 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800579 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
580 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Jesse Barnesf2f83d92010-01-11 17:28:10 -0500581 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
Dave Airlieb0e8ac82009-02-15 17:03:47 +1000582
Dan Nicholson44d99142007-12-05 18:47:01 -0800583 # find the DRI deps for libGL
584 if test "$x11_pkgconfig" = yes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700585 # add xcb modules if necessary
586 dri_modules="x11 xext xxf86vm xdamage xfixes"
587 if test "$enable_xcb" = yes; then
588 dri_modules="$dri_modules x11-xcb xcb-glx"
589 fi
590
591 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800592 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800593 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
594 GL_LIB_DEPS="$DRIGL_LIBS"
595 else
596 # should check these...
597 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
598 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800599 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
600 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700601
602 # XCB can only be used from pkg-config
603 if test "$enable_xcb" = yes; then
604 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800605 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700606 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
607 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
608 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800609 fi
610
611 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700612 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
613 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800614 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800615osmesa)
616 # No libGL for osmesa
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700617 GL_LIB_DEPS=""
Dan Nicholson979ff512007-12-05 18:47:01 -0800618 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800619esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700620AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800621AC_SUBST([GL_PC_REQ_PRIV])
622AC_SUBST([GL_PC_LIB_PRIV])
623AC_SUBST([GL_PC_CFLAGS])
624AC_SUBST([DRI_PC_REQ_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700625
626dnl
627dnl More X11 setup
628dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800629if test "$mesa_driver" = xlib; then
Dan Nicholsondca1b792007-10-23 09:25:58 -0700630 DEFINES="$DEFINES -DUSE_XSHM"
631fi
632
633dnl
Dan Nicholson44d99142007-12-05 18:47:01 -0800634dnl More DRI setup
635dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700636AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -0800637 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800638 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700639 [GLX_USE_TLS="$enableval"],
640 [GLX_USE_TLS=no])
Dan Nicholson44d99142007-12-05 18:47:01 -0800641dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -0700642AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800643 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700644 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700645 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700646 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700647AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +0800648dnl Extra search path for DRI drivers
649AC_ARG_WITH([dri-searchpath],
650 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
651 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
652 [DRI_DRIVER_SEARCH_DIR="$withval"],
653 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
654AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholson44d99142007-12-05 18:47:01 -0800655dnl Direct rendering or just indirect rendering
Dan Nicholson297e16c2008-05-05 15:42:53 -0700656AC_ARG_ENABLE([driglx-direct],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800657 [AS_HELP_STRING([--disable-driglx-direct],
658 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700659 [driglx_direct="$enableval"],
660 [driglx_direct="yes"])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800661dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -0700662AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800663 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -0700664 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +0200665 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700666 [with_dri_drivers="$withval"],
667 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800668if test "x$with_dri_drivers" = x; then
669 with_dri_drivers=no
670fi
671
672dnl If $with_dri_drivers is yes, directories will be added through
673dnl platform checks
674DRI_DIRS=""
675case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100676no) ;;
677yes)
678 DRI_DIRS="yes"
679 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800680*)
681 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -0700682 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800683 for driver in $dri_drivers; do
684 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
685 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
686 done
687 DRI_DIRS="$dri_drivers"
688 ;;
689esac
690
Dan Nicholson44d99142007-12-05 18:47:01 -0800691dnl Just default to no EGL for now
692USING_EGL=0
Dan Nicholson297e16c2008-05-05 15:42:53 -0700693AC_SUBST([USING_EGL])
Dan Nicholson44d99142007-12-05 18:47:01 -0800694
695dnl Set DRI_DIRS, DEFINES and LIB_DEPS
696if test "$mesa_driver" = dri; then
697 # Use TLS in GLX?
698 if test "x$GLX_USE_TLS" = xyes; then
699 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
700 fi
701
702 if test "x$USING_EGL" = x1; then
703 PROGRAM_DIRS="egl"
704 fi
705
706 # Platform specific settings and drivers to build
707 case "$host_os" in
708 linux*)
709 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Dan Nicholson44d99142007-12-05 18:47:01 -0800710 if test "x$driglx_direct" = xyes; then
711 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
712 fi
Jerome Glisse14f79d42008-12-18 13:36:07 +0100713 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800714
715 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -0800716 x86_64)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800717 # ffb, gamma, and sis are missing because they have not be
718 # converted to use the new interface. i810 are missing
719 # because there is no x86-64 system where they could *ever*
720 # be used.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100721 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400722 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
George Sapountzis280bf892008-05-11 14:43:40 +0300723 savage tdfx unichrome swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800724 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800725 ;;
726 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800727 # Build only the drivers for cards that exist on PowerPC.
728 # At some point MGA will be added, but not yet.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100729 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400730 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800731 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800732 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000733 sparc*)
734 # Build only the drivers for cards that exist on sparc`
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100735 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400736 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000737 fi
738 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800739 esac
740 ;;
Hasso Tepper9f8df2d2008-04-09 10:51:21 -0700741 freebsd* | dragonfly*)
Dan Nicholson44d99142007-12-05 18:47:01 -0800742 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
743 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
744 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
745 if test "x$driglx_direct" = xyes; then
746 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
747 fi
748 if test "x$GXX" = xyes; then
749 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
750 fi
751
Dan Nicholsona76e2452007-12-07 11:25:08 -0800752 # ffb and gamma are missing because they have not been converted
753 # to use the new interface.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100754 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400755 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
George Sapountzis280bf892008-05-11 14:43:40 +0300756 unichrome savage sis swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800757 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800758 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700759 gnu*)
760 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
761 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
762 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700763 solaris*)
764 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
765 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
766 if test "x$driglx_direct" = xyes; then
767 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
768 fi
769 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800770 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -0800771
772 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100773 if test "x$DRI_DIRS" = "xyes"; then
Corbin Simpson8e4657a2009-10-22 12:29:30 -0700774 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
Corbin Simpsonfd7ee2b2009-10-22 12:57:13 -0700775 savage sis tdfx unichrome ffb swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -0800776 fi
777
Dan Nicholson44d99142007-12-05 18:47:01 -0800778 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
779
780 # Check for expat
781 EXPAT_INCLUDES=""
782 EXPAT_LIB=-lexpat
Dan Nicholson297e16c2008-05-05 15:42:53 -0700783 AC_ARG_WITH([expat],
784 [AS_HELP_STRING([--with-expat=DIR],
785 [expat install directory])],[
Dan Nicholson44d99142007-12-05 18:47:01 -0800786 EXPAT_INCLUDES="-I$withval/include"
787 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
788 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
789 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
790 ])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700791 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
792 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
793 [AC_MSG_ERROR([Expat required for DRI.])])
Dan Nicholson44d99142007-12-05 18:47:01 -0800794
795 # put all the necessary libs together
Eric Anholt050c5332008-03-20 17:28:58 -0700796 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800797fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700798AC_SUBST([DRI_DIRS])
799AC_SUBST([EXPAT_INCLUDES])
800AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -0800801
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500802case $DRI_DIRS in
803*i915*|*i965*)
804 PKG_CHECK_MODULES([INTEL], [libdrm_intel])
805 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500806esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500807
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500808case $DRI_DIRS in
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500809*radeon*|*r200*|*r300*|*r600*)
810 PKG_CHECK_MODULES([LIBDRM_RADEON],
811 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
812 HAVE_LIBDRM_RADEON=yes,
813 HAVE_LIBDRM_RADEON=no)
814
815 if test "$HAVE_LIBDRM_RADEON" = yes; then
816 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
817 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
818 fi
819 ;;
820esac
821AC_SUBST([RADEON_CFLAGS])
822AC_SUBST([RADEON_LDFLAGS])
823
824
Dan Nicholson44d99142007-12-05 18:47:01 -0800825dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700826dnl OSMesa configuration
827dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800828if test "$mesa_driver" = xlib; then
Dan Nicholson544ab202007-12-30 08:41:53 -0800829 default_gl_osmesa=yes
Dan Nicholson979ff512007-12-05 18:47:01 -0800830else
Dan Nicholson544ab202007-12-30 08:41:53 -0800831 default_gl_osmesa=no
Dan Nicholson44d99142007-12-05 18:47:01 -0800832fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700833AC_ARG_ENABLE([gl-osmesa],
Dan Nicholson544ab202007-12-30 08:41:53 -0800834 [AS_HELP_STRING([--enable-gl-osmesa],
835 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700836 [gl_osmesa="$enableval"],
837 [gl_osmesa="$default_gl_osmesa"])
Dan Nicholson544ab202007-12-30 08:41:53 -0800838if test "x$gl_osmesa" = xyes; then
839 if test "$mesa_driver" = osmesa; then
840 AC_MSG_ERROR([libGL is not available for OSMesa driver])
Dan Nicholson979ff512007-12-05 18:47:01 -0800841 else
Dan Nicholson544ab202007-12-30 08:41:53 -0800842 DRIVER_DIRS="$DRIVER_DIRS osmesa"
Dan Nicholson979ff512007-12-05 18:47:01 -0800843 fi
844fi
845
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800846dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -0700847AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800848 [AS_HELP_STRING([--with-osmesa-bits=BITS],
849 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700850 [osmesa_bits="$withval"],
851 [osmesa_bits=8])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800852if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
853 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
854 osmesa_bits=8
855fi
856case "x$osmesa_bits" in
857x8)
858 OSMESA_LIB=OSMesa
859 ;;
860x16|x32)
861 OSMESA_LIB="OSMesa$osmesa_bits"
862 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
863 ;;
864*)
865 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
866 ;;
867esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700868AC_SUBST([OSMESA_LIB])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800869
Dan Nicholson979ff512007-12-05 18:47:01 -0800870case "$mesa_driver" in
871osmesa)
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700872 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800873 if test "$enable_static" = no; then
Dan Nicholson4795dd52009-06-04 19:42:08 -0700874 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -0800875 else
876 OSMESA_LIB_DEPS=""
877 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800878 OSMESA_MESA_DEPS=""
Dan Nicholson4795dd52009-06-04 19:42:08 -0700879 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -0800880 ;;
881*)
882 # Link OSMesa to libGL otherwise
883 OSMESA_LIB_DEPS=""
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700884 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800885 if test "$enable_static" = no; then
886 OSMESA_MESA_DEPS='-l$(GL_LIB)'
887 else
888 OSMESA_MESA_DEPS=""
889 fi
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800890 OSMESA_PC_REQ="gl"
Dan Nicholson979ff512007-12-05 18:47:01 -0800891 ;;
892esac
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700893OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700894AC_SUBST([OSMESA_LIB_DEPS])
895AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800896AC_SUBST([OSMESA_PC_REQ])
897AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700898
899dnl
Dan Nicholson53b37342009-02-25 17:45:34 -0800900dnl EGL configuration
901dnl
Dan Nicholson66f97862009-04-29 12:11:43 -0700902AC_ARG_ENABLE([egl],
903 [AS_HELP_STRING([--disable-egl],
904 [disable EGL library @<:@default=enabled@:>@])],
905 [enable_egl="$enableval"],
906 [enable_egl=yes])
907if test "x$enable_egl" = xyes; then
908 SRC_DIRS="$SRC_DIRS egl"
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800909 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
910 EGL_DRIVERS_DIRS=""
911 if test "$enable_static" != yes && test "$mesa_driver" != osmesa; then
912 # build egl_glx when libGL is built
913 EGL_DRIVERS_DIRS="glx"
Dan Nicholson66f97862009-04-29 12:11:43 -0700914 fi
Dan Nicholson53b37342009-02-25 17:45:34 -0800915fi
Dan Nicholson53b37342009-02-25 17:45:34 -0800916AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800917AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -0800918
919dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700920dnl GLU configuration
921dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700922AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800923 [AS_HELP_STRING([--disable-glu],
924 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700925 [enable_glu="$enableval"],
926 [enable_glu=yes])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700927if test "x$enable_glu" = xyes; then
928 SRC_DIRS="$SRC_DIRS glu"
929
Dan Nicholson979ff512007-12-05 18:47:01 -0800930 case "$mesa_driver" in
931 osmesa)
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800932 # If GLU is available and we have libOSMesa (not 16 or 32),
933 # we can build the osdemos
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800934 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800935 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
936 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700937
Dan Nicholson979ff512007-12-05 18:47:01 -0800938 # Link libGLU to libOSMesa instead of libGL
939 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800940 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -0800941 if test "$enable_static" = no; then
942 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
943 else
944 GLU_MESA_DEPS=""
945 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800946 ;;
947 *)
Dan Nicholson88586332007-11-15 08:59:57 -0800948 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -0800949 GLU_PC_REQ="gl"
950 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -0800951 if test "$enable_static" = no; then
952 GLU_LIB_DEPS="-lm"
953 GLU_MESA_DEPS='-l$(GL_LIB)'
954 else
955 GLU_LIB_DEPS=""
956 GLU_MESA_DEPS=""
957 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
958 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800959 ;;
960 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700961fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700962if test "$enable_static" = no; then
963 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
964fi
Dan Nicholson71e208b2008-11-24 11:01:57 -0800965GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700966AC_SUBST([GLU_LIB_DEPS])
967AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800968AC_SUBST([GLU_PC_REQ])
969AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800970AC_SUBST([GLU_PC_LIB_PRIV])
971AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700972
973dnl
974dnl GLw configuration
975dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700976AC_ARG_ENABLE([glw],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800977 [AS_HELP_STRING([--disable-glw],
978 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700979 [enable_glw="$enableval"],
980 [enable_glw=yes])
Dan Nicholson979ff512007-12-05 18:47:01 -0800981dnl Don't build GLw on osmesa
982if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
983 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
984 enable_glw=no
985fi
Dan Nicholson776c60d2008-07-18 07:40:41 -0700986AC_ARG_ENABLE([motif],
987 [AS_HELP_STRING([--enable-motif],
988 [use Motif widgets in GLw @<:@default=disabled@:>@])],
989 [enable_motif="$enableval"],
990 [enable_motif=no])
991
Dan Nicholsondca1b792007-10-23 09:25:58 -0700992if test "x$enable_glw" = xyes; then
993 SRC_DIRS="$SRC_DIRS glw"
994 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700995 PKG_CHECK_MODULES([GLW],[x11 xt])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800996 GLW_PC_REQ_PRIV="x11 xt"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700997 GLW_LIB_DEPS="$GLW_LIBS"
998 else
999 # should check these...
Dan Nicholson776c60d2008-07-18 07:40:41 -07001000 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001001 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1002 GLW_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001003 fi
1004
1005 GLW_SOURCES="GLwDrawA.c"
1006 MOTIF_CFLAGS=
1007 if test "x$enable_motif" = xyes; then
1008 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1009 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1010 if test "x$MOTIF_CONFIG" != xno; then
1011 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1012 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1013 else
1014 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1015 [AC_MSG_ERROR([Can't locate Motif headers])])
1016 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1017 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1018 fi
1019 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1020 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001021 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1022 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001023 fi
1024
Dan Nicholson88586332007-11-15 08:59:57 -08001025 # If static, empty GLW_LIB_DEPS and add libs for programs to link
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001026 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
Dan Nicholson88586332007-11-15 08:59:57 -08001027 if test "$enable_static" = no; then
1028 GLW_MESA_DEPS='-l$(GL_LIB)'
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001029 GLW_LIB_DEPS="$GLW_LIB_DEPS"
Dan Nicholson88586332007-11-15 08:59:57 -08001030 else
1031 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1032 GLW_LIB_DEPS=""
1033 GLW_MESA_DEPS=""
1034 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001035fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001036AC_SUBST([GLW_LIB_DEPS])
1037AC_SUBST([GLW_MESA_DEPS])
Dan Nicholson776c60d2008-07-18 07:40:41 -07001038AC_SUBST([GLW_SOURCES])
1039AC_SUBST([MOTIF_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001040AC_SUBST([GLW_PC_REQ_PRIV])
1041AC_SUBST([GLW_PC_LIB_PRIV])
1042AC_SUBST([GLW_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001043
1044dnl
1045dnl GLUT configuration
1046dnl
1047if test -f "$srcdir/include/GL/glut.h"; then
1048 default_glut=yes
1049else
1050 default_glut=no
1051fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001052AC_ARG_ENABLE([glut],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001053 [AS_HELP_STRING([--disable-glut],
1054 [enable GLUT library @<:@default=enabled if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001055 [enable_glut="$enableval"],
1056 [enable_glut="$default_glut"])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001057
1058dnl Can't build glut if GLU not available
1059if test "x$enable_glu$enable_glut" = xnoyes; then
1060 AC_MSG_WARN([Disabling glut since GLU is disabled])
1061 enable_glut=no
1062fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001063dnl Don't build glut on osmesa
1064if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1065 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1066 enable_glut=no
1067fi
1068
Dan Nicholsondca1b792007-10-23 09:25:58 -07001069if test "x$enable_glut" = xyes; then
1070 SRC_DIRS="$SRC_DIRS glut/glx"
1071 GLUT_CFLAGS=""
1072 if test "x$GCC" = xyes; then
1073 GLUT_CFLAGS="-fexceptions"
1074 fi
1075 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -07001076 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001077 GLUT_PC_REQ_PRIV="x11 xmu xi"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001078 GLUT_LIB_DEPS="$GLUT_LIBS"
1079 else
1080 # should check these...
Dan Nicholson70d0c832007-12-07 11:12:20 -08001081 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001082 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1083 GLUT_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001084 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001085 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1086 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001087
1088 # If glut is available, we can build most programs
Dan Nicholson8e4d1472007-11-15 08:59:57 -08001089 if test "$with_demos" = yes; then
1090 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1091 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001092
Dan Nicholson88586332007-11-15 08:59:57 -08001093 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1094 if test "$enable_static" = no; then
1095 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1096 else
1097 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1098 GLUT_LIB_DEPS=""
1099 GLUT_MESA_DEPS=""
1100 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001101fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001102AC_SUBST([GLUT_LIB_DEPS])
1103AC_SUBST([GLUT_MESA_DEPS])
1104AC_SUBST([GLUT_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001105AC_SUBST([GLUT_PC_REQ_PRIV])
1106AC_SUBST([GLUT_PC_LIB_PRIV])
1107AC_SUBST([GLUT_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001108
1109dnl
1110dnl Program library dependencies
1111dnl Only libm is added here if necessary as the libraries should
1112dnl be pulled in by the linker
1113dnl
1114if test "x$APP_LIB_DEPS" = x; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001115 case "$host_os" in
1116 solaris*)
1117 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1118 ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +01001119 cygwin*)
1120 APP_LIB_DEPS="-lX11"
1121 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001122 *)
1123 APP_LIB_DEPS="-lm"
1124 ;;
1125 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001126fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001127AC_SUBST([APP_LIB_DEPS])
1128AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001129
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001130dnl
1131dnl Gallium configuration
1132dnl
1133AC_ARG_ENABLE([gallium],
1134 [AS_HELP_STRING([--disable-gallium],
1135 [build gallium @<:@default=enabled@:>@])],
1136 [enable_gallium="$enableval"],
1137 [enable_gallium=yes])
1138if test "x$enable_gallium" = xyes; then
1139 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1140fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001141
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001142dnl
1143dnl Gallium state trackers configuration
1144dnl
1145AC_ARG_WITH([state-trackers],
1146 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1147 [comma delimited state_trackers list, e.g.
1148 "egl,glx" @<:@default=auto@:>@])],
1149 [with_state_trackers="$withval"],
1150 [with_state_trackers=yes])
1151
1152case "$with_state_trackers" in
1153no)
1154 GALLIUM_STATE_TRACKERS_DIRS=""
1155 ;;
1156yes)
1157 # look at what else is built
1158 case "$mesa_driver" in
Jakob Bornecrantz373e6712009-04-18 23:13:56 +01001159 xlib)
1160 GALLIUM_STATE_TRACKERS_DIRS=glx
1161 ;;
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001162 dri)
Jakob Bornecrantzbc0532b2009-12-04 18:50:29 +00001163 GALLIUM_STATE_TRACKERS_DIRS="dri"
1164 if test "x$enable_egl" = xyes; then
Chia-I Wu077d6dd2010-01-10 23:08:39 +08001165 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl egl_g3d"
Jakob Bornecrantzbc0532b2009-12-04 18:50:29 +00001166 fi
1167 # Have only tested st/xorg on 1.6.0 servers
1168 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1169 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1170 HAVE_XORG="no")
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001171 ;;
1172 esac
1173 ;;
1174*)
1175 # verify the requested state tracker exist
1176 state_trackers=`IFS=', '; echo $with_state_trackers`
1177 for tracker in $state_trackers; do
1178 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1179 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
Dan Nicholson66f97862009-04-29 12:11:43 -07001180
Chia-I Wue5d351d2009-12-23 11:18:00 +08001181 case "$tracker" in
1182 egl)
1183 if test "x$enable_egl" != xyes; then
1184 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1185 fi
1186 ;;
1187 xorg)
Dave Airliee9d6ab72009-09-21 13:26:48 +10001188 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
Jakob Bornecrantz5c4bdbd2009-10-15 01:24:53 +01001189 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
Dave Airliee9d6ab72009-09-21 13:26:48 +10001190 HAVE_XEXTPROTO_71="no")
Chia-I Wue5d351d2009-12-23 11:18:00 +08001191 ;;
1192 es)
1193 # mesa/es is required to build es state tracker
1194 SRC_DIRS="mesa/es $SRC_DIRS"
1195 ;;
1196 esac
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001197 done
1198 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1199 ;;
1200esac
1201
Chia-I Wu49381d62010-01-11 01:23:01 +08001202AC_ARG_WITH([egl-displays],
1203 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1204 [comma delimited native displays libEGL supports, e.g.
Chia-I Wua68b51d2010-01-03 19:24:04 +08001205 "x11,kms" @<:@default=auto@:>@])],
Chia-I Wu49381d62010-01-11 01:23:01 +08001206 [with_egl_displays="$withval"],
1207 [with_egl_displays=yes])
1208
1209EGL_DISPLAYS=""
1210case "$with_egl_displays" in
1211yes)
1212 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1213 EGL_DISPLAYS="x11"
1214 fi
1215 ;;
1216*)
1217 if test "x$enable_egl" != xyes; then
1218 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1219 fi
1220 # verify the requested driver directories exist
1221 egl_displays=`IFS=', '; echo $with_egl_displays`
1222 for dpy in $egl_displays; do
1223 test -d "$srcdir/src/gallium/state_trackers/egl_g3d/$dpy" || \
1224 AC_MSG_ERROR([EGL display '$dpy' does't exist])
1225 done
1226 EGL_DISPLAYS="$egl_displays"
1227 ;;
1228esac
1229AC_SUBST([EGL_DISPLAYS])
1230
Joel Bosveld8acca482009-03-06 08:46:08 +09001231AC_ARG_WITH([xorg-driver-dir],
1232 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1233 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1234 [XORG_DRIVER_INSTALL_DIR="$withval"],
1235 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1236AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1237
Tom Fogal7085dce2009-08-13 19:40:30 -06001238AC_ARG_WITH([max-width],
1239 [AS_HELP_STRING([--with-max-width=N],
1240 [Maximum framebuffer width (4096)])],
1241 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1242 AS_IF([test "${withval}" -gt "4096"],
1243 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1244)
1245AC_ARG_WITH([max-height],
1246 [AS_HELP_STRING([--with-max-height=N],
1247 [Maximum framebuffer height (4096)])],
1248 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1249 AS_IF([test "${withval}" -gt "4096"],
1250 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1251)
1252
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001253dnl
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001254dnl Gallium SVGA configuration
1255dnl
1256AC_ARG_ENABLE([gallium-svga],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001257 [AS_HELP_STRING([--enable-gallium-svga],
1258 [build gallium SVGA @<:@default=disabled@:>@])],
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001259 [enable_gallium_svga="$enableval"],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001260 [enable_gallium_svga=auto])
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001261if test "x$enable_gallium_svga" = xyes; then
1262 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1263 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001264elif test "x$enable_gallium_svga" = xauto; then
1265 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001266fi
1267
1268dnl
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001269dnl Gallium Intel configuration
1270dnl
1271AC_ARG_ENABLE([gallium-intel],
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001272 [AS_HELP_STRING([--enable-gallium-intel],
1273 [build gallium intel @<:@default=disabled@:>@])],
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001274 [enable_gallium_intel="$enableval"],
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001275 [enable_gallium_intel=auto])
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001276if test "x$enable_gallium_intel" = xyes; then
Jakob Bornecrantzce4f23a2009-11-04 23:02:13 +00001277 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1278 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001279elif test "x$enable_gallium_intel" = xauto; then
Keith Whitwellaa026832009-12-22 09:40:39 +00001280 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001281fi
1282
1283dnl
1284dnl Gallium Radeon configuration
1285dnl
1286AC_ARG_ENABLE([gallium-radeon],
1287 [AS_HELP_STRING([--enable-gallium-radeon],
1288 [build gallium radeon @<:@default=disabled@:>@])],
1289 [enable_gallium_radeon="$enableval"],
1290 [enable_gallium_radeon=no])
1291if test "x$enable_gallium_radeon" = xyes; then
1292 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001293 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001294fi
1295
1296dnl
Thierry Vignaud1402ea82009-09-14 11:48:51 -06001297dnl Gallium Nouveau configuration
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001298dnl
1299AC_ARG_ENABLE([gallium-nouveau],
1300 [AS_HELP_STRING([--enable-gallium-nouveau],
1301 [build gallium nouveau @<:@default=disabled@:>@])],
1302 [enable_gallium_nouveau="$enableval"],
1303 [enable_gallium_nouveau=no])
1304if test "x$enable_gallium_nouveau" = xyes; then
1305 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
Ben Skeggsbc466be2009-06-04 10:19:04 +10001306 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001307fi
1308
1309
Dan Nicholsondca1b792007-10-23 09:25:58 -07001310dnl Restore LDFLAGS and CPPFLAGS
1311LDFLAGS="$_SAVE_LDFLAGS"
1312CPPFLAGS="$_SAVE_CPPFLAGS"
1313
1314dnl Substitute the config
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001315AC_CONFIG_FILES([configs/autoconf])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001316
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001317dnl Replace the configs/current symlink
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001318AC_CONFIG_COMMANDS([configs],[
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001319if test -f configs/current || test -L configs/current; then
1320 rm -f configs/current
1321fi
1322ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001323])
1324
1325AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001326
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001327dnl
1328dnl Output some configuration info for the user
1329dnl
1330echo ""
1331echo " prefix: $prefix"
1332echo " exec_prefix: $exec_prefix"
1333echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001334echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001335
1336dnl Driver info
1337echo ""
1338echo " Driver: $mesa_driver"
Dan Nicholson544ab202007-12-30 08:41:53 -08001339if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1340 echo " OSMesa: lib$OSMESA_LIB"
1341else
1342 echo " OSMesa: no"
1343fi
1344if test "$mesa_driver" = dri; then
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001345 # cleanup the drivers var
1346 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001347if test "x$DRI_DIRS" = x; then
1348 echo " DRI drivers: no"
1349else
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001350 echo " DRI drivers: $dri_dirs"
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001351fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001352 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -08001353fi
RALOVICH, Kristóf5f19f5c2008-11-04 11:53:32 +01001354echo " Use XCB: $enable_xcb"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001355
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001356echo ""
1357if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1358 echo " Gallium: yes"
1359 echo " Gallium dirs: $GALLIUM_DIRS"
1360 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001361 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001362 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001363 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1364else
1365 echo " Gallium: no"
1366fi
1367
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001368dnl Libraries
1369echo ""
1370echo " Shared libs: $enable_shared"
1371echo " Static libs: $enable_static"
Dan Nicholson66f97862009-04-29 12:11:43 -07001372echo " EGL: $enable_egl"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001373echo " GLU: $enable_glu"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001374echo " GLw: $enable_glw (Motif: $enable_motif)"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001375echo " glut: $enable_glut"
1376
1377dnl Programs
1378# cleanup the programs var for display
1379program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1380if test "x$program_dirs" = x; then
1381 echo " Demos: no"
1382else
1383 echo " Demos: $program_dirs"
1384fi
1385
Dan Nicholson16a07fb2007-12-12 09:12:15 -08001386dnl Compiler options
1387# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1388cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1389 $SED 's/^ *//;s/ */ /;s/ *$//'`
1390cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1391 $SED 's/^ *//;s/ */ /;s/ *$//'`
1392defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1393echo ""
1394echo " CFLAGS: $cflags"
1395echo " CXXFLAGS: $cxxflags"
1396echo " Macros: $defines"
1397
Dan Nicholsondca1b792007-10-23 09:25:58 -07001398echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07001399echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001400echo ""