blob: d8af5ea9ef98b3e398cedbff1b2bf093b23fc2b5 [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
Kristian Høgsberg154a9e52008-12-01 21:44:03 -050023DRI2PROTO_REQUIRED=1.99.3
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -070024
Dan Nicholsondca1b792007-10-23 09:25:58 -070025dnl Check for progs
26AC_PROG_CPP
27AC_PROG_CC
28AC_PROG_CXX
Dan Nicholson297e16c2008-05-05 15:42:53 -070029AC_CHECK_PROGS([MAKE], [gmake make])
30AC_PATH_PROG([MKDEP], [makedepend])
31AC_PATH_PROG([SED], [sed])
Dan Nicholson41b00702007-12-12 08:48:30 -080032
Dan Nicholsonbc302b22009-05-22 09:39:02 -070033dnl Our fallback install-sh is a symlink to minstall. Use the existing
34dnl configuration in that case.
35AC_PROG_INSTALL
36test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
37
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070038dnl We need a POSIX shell for parts of the build. Assume we have one
39dnl in most cases.
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070040case "$host_os" in
41solaris*)
42 # Solaris /bin/sh is too old/non-POSIX compliant
43 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
Dan Nicholsonbfb27b52008-06-30 09:40:30 -070044 SHELL="$POSIX_SHELL"
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070045 ;;
46esac
47
Dan Nicholsondb7fc632008-03-07 11:48:09 -080048MKDEP_OPTIONS=-fdepend
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050049dnl Ask gcc where it's keeping its secret headers
50if test "x$GCC" = xyes; then
Dan Nicholsona3d223f2009-01-30 10:52:09 -080051 for dir in include include-fixed; do
52 GCC_INCLUDES=`$CC -print-file-name=$dir`
53 if test "x$GCC_INCLUDES" != x && \
54 test "$GCC_INCLUDES" != "$dir" && \
55 test -d "$GCC_INCLUDES"; then
56 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
57 fi
58 done
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050059fi
Dan Nicholson297e16c2008-05-05 15:42:53 -070060AC_SUBST([MKDEP_OPTIONS])
Kristian Høgsbergbcecea62008-02-25 18:50:26 -050061
Dan Nicholson41b00702007-12-12 08:48:30 -080062dnl Make sure the pkg-config macros are defined
Dan Nicholson356f3112009-04-29 06:49:27 -070063m4_ifndef([PKG_PROG_PKG_CONFIG],
64 [m4_fatal([Could not locate the pkg-config autoconf macros.
65 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
66 are in a different location, try setting the environment variable
67 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
Dan Nicholsondca1b792007-10-23 09:25:58 -070068PKG_PROG_PKG_CONFIG()
69
70dnl LIB_DIR - library basename
71LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
Dan Nicholson297e16c2008-05-05 15:42:53 -070072AC_SUBST([LIB_DIR])
Dan Nicholsondca1b792007-10-23 09:25:58 -070073
74dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
75_SAVE_LDFLAGS="$LDFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -070076AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
77AC_SUBST([EXTRA_LIB_PATH])
Dan Nicholsondca1b792007-10-23 09:25:58 -070078
79dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
80_SAVE_CPPFLAGS="$CPPFLAGS"
Dan Nicholson297e16c2008-05-05 15:42:53 -070081AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
82AC_SUBST([X11_INCLUDES])
Dan Nicholsondca1b792007-10-23 09:25:58 -070083
84dnl Compiler macros
85DEFINES=""
Dan Nicholson297e16c2008-05-05 15:42:53 -070086AC_SUBST([DEFINES])
Dan Nicholsondca1b792007-10-23 09:25:58 -070087case "$host_os" in
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -070088linux*|*-gnu*|gnu*)
Dan Nicholson29f603a2009-01-12 11:10:31 -080089 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
Dan Nicholsondca1b792007-10-23 09:25:58 -070090 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -070091solaris*)
92 DEFINES="$DEFINES -DPTHREADS -DSVR4"
93 ;;
Dan Nicholsondca1b792007-10-23 09:25:58 -070094esac
95
96dnl Add flags for gcc and g++
97if test "x$GCC" = xyes; then
Kristian Høgsberge388d622010-01-02 18:59:54 -050098 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math -fvisibility=hidden"
Dan Nicholson0c275b62008-01-15 22:52:25 -080099
100 # Work around aliasing bugs - developers should comment this out
101 CFLAGS="$CFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700102fi
103if test "x$GXX" = xyes; then
104 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -0800105
106 # Work around aliasing bugs - developers should comment this out
107 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700108fi
109
110dnl These should be unnecessary, but let the user set them if they want
Dan Nicholson297e16c2008-05-05 15:42:53 -0700111AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700112 Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700113AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
Dan Nicholsondca1b792007-10-23 09:25:58 -0700114 compiler. Default is to use CFLAGS.])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700115AC_SUBST([OPT_FLAGS])
116AC_SUBST([ARCH_FLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700117
118dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600119dnl Hacks to enable 32 or 64 bit build
120dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700121AC_ARG_ENABLE([32-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600122 [AS_HELP_STRING([--enable-32-bit],
123 [build 32-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700124 [enable_32bit="$enableval"],
125 [enable_32bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600126)
127if test "x$enable_32bit" = xyes; then
128 if test "x$GCC" = xyes; then
129 CFLAGS="$CFLAGS -m32"
Marc Dietrichc705e722009-08-31 08:56:33 -0700130 ARCH_FLAGS="$ARCH_FLAGS -m32"
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600131 fi
132 if test "x$GXX" = xyes; then
133 CXXFLAGS="$CXXFLAGS -m32"
134 fi
135fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700136AC_ARG_ENABLE([64-bit],
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600137 [AS_HELP_STRING([--enable-64-bit],
138 [build 64-bit libraries @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700139 [enable_64bit="$enableval"],
140 [enable_64bit=auto]
Dan Nicholsonab57cba2007-12-26 11:12:29 -0600141)
142if test "x$enable_64bit" = xyes; then
143 if test "x$GCC" = xyes; then
144 CFLAGS="$CFLAGS -m64"
145 fi
146 if test "x$GXX" = xyes; then
147 CXXFLAGS="$CXXFLAGS -m64"
148 fi
149fi
150
151dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800152dnl shared/static libraries, mimic libtool options
153dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700154AC_ARG_ENABLE([static],
Dan Nicholson88586332007-11-15 08:59:57 -0800155 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800156 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700157 [enable_static="$enableval"],
158 [enable_static=no]
Dan Nicholson88586332007-11-15 08:59:57 -0800159)
160case "x$enable_static" in
161xyes|xno ) ;;
162x ) enable_static=no ;;
163* )
164 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
165 ;;
166esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700167AC_ARG_ENABLE([shared],
Dan Nicholson88586332007-11-15 08:59:57 -0800168 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800169 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700170 [enable_shared="$enableval"],
171 [enable_shared=yes]
Dan Nicholson88586332007-11-15 08:59:57 -0800172)
173case "x$enable_shared" in
174xyes|xno ) ;;
175x ) enable_shared=yes ;;
176* )
177 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
178 ;;
179esac
180
181dnl Can't have static and shared libraries, default to static if user
182dnl explicitly requested. If both disabled, set to static since shared
183dnl was explicitly requirested.
184case "x$enable_static$enable_shared" in
185xyesyes )
186 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
187 enable_shared=no
188 ;;
189xnono )
190 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
191 enable_static=yes
192 ;;
193esac
194
195dnl
196dnl mklib options
197dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700198AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
Dan Nicholson88586332007-11-15 08:59:57 -0800199if test "$enable_static" = yes; then
200 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
201fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700202AC_SUBST([MKLIB_OPTIONS])
Dan Nicholson88586332007-11-15 08:59:57 -0800203
Dan Nicholson23656c42007-12-12 09:02:31 -0800204dnl
205dnl other compiler options
206dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700207AC_ARG_ENABLE([debug],
Dan Nicholson23656c42007-12-12 09:02:31 -0800208 [AS_HELP_STRING([--enable-debug],
209 [use debug compiler flags and macros @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700210 [enable_debug="$enableval"],
211 [enable_debug=no]
Dan Nicholson23656c42007-12-12 09:02:31 -0800212)
213if test "x$enable_debug" = xyes; then
214 DEFINES="$DEFINES -DDEBUG"
215 if test "x$GCC" = xyes; then
216 CFLAGS="$CFLAGS -g"
217 fi
218 if test "x$GXX" = xyes; then
219 CXXFLAGS="$CXXFLAGS -g"
220 fi
221fi
Dan Nicholson88586332007-11-15 08:59:57 -0800222
223dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700224dnl library names
225dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800226if test "$enable_static" = yes; then
Dan Nicholson8217f242009-02-11 15:16:00 -0800227 LIB_EXTENSION='a'
Dan Nicholson88586332007-11-15 08:59:57 -0800228else
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700229 case "$host_os" in
230 darwin* )
231 LIB_EXTENSION='dylib' ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +0100232 cygwin* )
233 LIB_EXTENSION='dll' ;;
Tom Fogal9282edf2009-10-13 10:55:33 -0700234 aix* )
235 LIB_EXTENSION='a' ;;
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700236 * )
237 LIB_EXTENSION='so' ;;
238 esac
Dan Nicholson88586332007-11-15 08:59:57 -0800239fi
Dan Nicholson8217f242009-02-11 15:16:00 -0800240
241GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
242GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
243GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
244GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
245OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
246
247GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
248GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
249GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
250GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
251OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
252
Dan Nicholson297e16c2008-05-05 15:42:53 -0700253AC_SUBST([GL_LIB_NAME])
254AC_SUBST([GLU_LIB_NAME])
255AC_SUBST([GLUT_LIB_NAME])
256AC_SUBST([GLW_LIB_NAME])
257AC_SUBST([OSMESA_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700258
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700259AC_SUBST([GL_LIB_GLOB])
260AC_SUBST([GLU_LIB_GLOB])
261AC_SUBST([GLUT_LIB_GLOB])
262AC_SUBST([GLW_LIB_GLOB])
263AC_SUBST([OSMESA_LIB_GLOB])
264
Dan Nicholsondca1b792007-10-23 09:25:58 -0700265dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700266dnl Arch/platform-specific settings
267dnl
268AC_ARG_ENABLE([asm],
269 [AS_HELP_STRING([--disable-asm],
270 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
271 [enable_asm="$enableval"],
272 [enable_asm=yes]
273)
274asm_arch=""
275ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800276MESA_ASM_SOURCES=""
277GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700278AC_MSG_CHECKING([whether to enable assembly])
279test "x$enable_asm" = xno && AC_MSG_RESULT([no])
280# disable if cross compiling on x86/x86_64 since we must run gen_matypes
281if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
282 case "$host_cpu" in
283 i?86 | x86_64)
284 enable_asm=no
285 AC_MSG_RESULT([no, cross compiling])
286 ;;
287 esac
288fi
289# check for supported arches
290if test "x$enable_asm" = xyes; then
291 case "$host_cpu" in
292 i?86)
293 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100294 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700295 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
296 ;;
297 esac
298 ;;
299 x86_64)
300 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100301 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700302 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
303 ;;
304 esac
305 ;;
306 powerpc)
307 case "$host_os" in
308 linux*)
309 asm_arch=ppc
310 ;;
311 esac
312 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800313 sparc*)
314 case "$host_os" in
315 linux*)
316 asm_arch=sparc
317 ;;
318 esac
319 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700320 esac
321
322 case "$asm_arch" in
323 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800324 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800325 MESA_ASM_SOURCES='$(X86_SOURCES)'
326 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700327 AC_MSG_RESULT([yes, x86])
328 ;;
329 x86_64)
330 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800331 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
332 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700333 AC_MSG_RESULT([yes, x86_64])
334 ;;
335 ppc)
336 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800337 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700338 AC_MSG_RESULT([yes, ppc])
339 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800340 sparc)
341 ASM_FLAGS="-DUSE_SPARC_ASM"
342 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
343 GLAPI_ASM_SOURCES='$(SPARC_API)'
344 AC_MSG_RESULT([yes, sparc])
345 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700346 *)
347 AC_MSG_RESULT([no, platform not supported])
348 ;;
349 esac
350fi
351AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800352AC_SUBST([MESA_ASM_SOURCES])
353AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700354
355dnl PIC code macro
356MESA_PIC_FLAGS
357
358dnl Check to see if dlopen is in default libraries (like Solaris, which
359dnl has it in libc), or if libdl is needed to get it.
360AC_CHECK_FUNC([dlopen], [],
361 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
362
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700363dnl See if posix_memalign is available
364AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
365
Dan Nicholson871125a2008-06-04 13:00:35 -0700366dnl SELinux awareness.
367AC_ARG_ENABLE([selinux],
368 [AS_HELP_STRING([--enable-selinux],
369 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
370 [MESA_SELINUX="$enableval"],
371 [MESA_SELINUX=no])
372if test "x$enable_selinux" = "xyes"; then
373 AC_CHECK_HEADER([selinux/selinux.h],[],
374 [AC_MSG_ERROR([SELinux headers not found])])
375 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
376 [AC_MSG_ERROR([SELinux library not found])])
377 SELINUX_LIBS="-lselinux"
378 DEFINES="$DEFINES -DMESA_SELINUX"
379fi
380
Dan Nicholson871125a2008-06-04 13:00:35 -0700381dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800382dnl Driver configuration. Options are xlib, dri and osmesa right now.
Dan Nicholson979ff512007-12-05 18:47:01 -0800383dnl More later: directfb, fbdev, ...
Dan Nicholson44d99142007-12-05 18:47:01 -0800384dnl
Eric Anholt711222b2008-04-18 15:03:01 -0700385default_driver="xlib"
386
387case "$host_os" in
388linux*)
389 case "$host_cpu" in
David S. Miller32dc28a2009-02-24 20:06:05 -0700390 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700391 esac
392 ;;
Julien Cristau98fcdf32008-10-28 18:56:05 +0100393*freebsd* | dragonfly*)
Eric Anholt711222b2008-04-18 15:03:01 -0700394 case "$host_cpu" in
Robert Noland48f05432009-04-10 11:41:27 -0500395 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700396 esac
397 ;;
398esac
399
Dan Nicholson297e16c2008-05-05 15:42:53 -0700400AC_ARG_WITH([driver],
Dan Nicholson44d99142007-12-05 18:47:01 -0800401 [AS_HELP_STRING([--with-driver=DRIVER],
Eric Anholt711222b2008-04-18 15:03:01 -0700402 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700403 [mesa_driver="$withval"],
404 [mesa_driver="$default_driver"])
Dan Nicholson44d99142007-12-05 18:47:01 -0800405dnl Check for valid option
406case "x$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800407xxlib|xdri|xosmesa)
Dan Nicholson44d99142007-12-05 18:47:01 -0800408 ;;
409*)
410 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
411 ;;
412esac
413
414dnl
415dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700416dnl
Sedat Dilek2f127e52009-12-17 19:14:53 +0100417SRC_DIRS="glsl mesa glew"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700418GLU_DIRS="sgi"
Dan Nicholson44d99142007-12-05 18:47:01 -0800419WINDOW_SYSTEM=""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100420GALLIUM_DIRS="auxiliary drivers state_trackers"
Jerome Glisse14f79d42008-12-18 13:36:07 +0100421GALLIUM_WINSYS_DIRS=""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100422GALLIUM_WINSYS_DRM_DIRS=""
Jakob Bornecrantzd60b2c62009-06-24 02:42:41 +0200423GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100424GALLIUM_STATE_TRACKERS_DIRS=""
425
Dan Nicholson44d99142007-12-05 18:47:01 -0800426case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800427xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800428 DRIVER_DIRS="x11"
Jakob Bornecrantz373e6712009-04-18 23:13:56 +0100429 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
Dan Nicholson44d99142007-12-05 18:47:01 -0800430 ;;
431dri)
432 SRC_DIRS="glx/x11 $SRC_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100433 DRIVER_DIRS="dri"
Dan Nicholson44d99142007-12-05 18:47:01 -0800434 WINDOW_SYSTEM="dri"
Jakob Bornecrantz373e6712009-04-18 23:13:56 +0100435 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
Dan Nicholson44d99142007-12-05 18:47:01 -0800436 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800437osmesa)
438 DRIVER_DIRS="osmesa"
439 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800440esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700441AC_SUBST([SRC_DIRS])
442AC_SUBST([GLU_DIRS])
443AC_SUBST([DRIVER_DIRS])
444AC_SUBST([WINDOW_SYSTEM])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100445AC_SUBST([GALLIUM_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100446AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100447AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000448AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100449AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700450
451dnl
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800452dnl User supplied program configuration
453dnl
454if test -d "$srcdir/progs/demos"; then
455 default_demos=yes
456else
457 default_demos=no
458fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700459AC_ARG_WITH([demos],
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800460 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
461 [optional comma delimited demo directories to build
Dan Nicholsonc79c93c2007-12-12 18:13:04 -0800462 @<:@default=auto if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700463 [with_demos="$withval"],
464 [with_demos="$default_demos"])
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800465if test "x$with_demos" = x; then
466 with_demos=no
467fi
468
469dnl If $with_demos is yes, directories will be added as libs available
470PROGRAM_DIRS=""
471case "$with_demos" in
Dan Nicholsonb9576552008-03-10 14:05:46 -0700472no) ;;
473yes)
474 # If the driver isn't osmesa, we have libGL and can build xdemos
475 if test "$mesa_driver" != osmesa; then
476 PROGRAM_DIRS="xdemos"
477 fi
478 ;;
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800479*)
480 # verify the requested demos directories exist
481 demos=`IFS=,; echo $with_demos`
482 for demo in $demos; do
483 test -d "$srcdir/progs/$demo" || \
484 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
485 done
486 PROGRAM_DIRS="$demos"
487 ;;
488esac
489
490dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700491dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700492dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700493dnl
494if test -n "$PKG_CONFIG"; then
495 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700496 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700497 x11_pkgconfig=yes
498 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700499 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700500 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700501 ])
502 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700503else
504 x11_pkgconfig=no
505fi
506dnl Use the autoconf macro if no pkg-config files
507if test "$x11_pkgconfig" = no; then
508 AC_PATH_XTRA
509fi
510
Dan Nicholson99803a42008-07-01 09:03:15 -0700511dnl Try to tell the user that the --x-* options are only used when
512dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
513m4_divert_once([HELP_BEGIN],
514[These options are only used when the X libraries cannot be found by the
515pkg-config utility.])
516
Dan Nicholson44d99142007-12-05 18:47:01 -0800517dnl We need X for xlib and dri, so bomb now if it's not found
518case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800519xlib|dri)
Dan Nicholson44d99142007-12-05 18:47:01 -0800520 if test "$no_x" = yes; then
521 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
522 fi
523 ;;
524esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700525
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700526dnl XCB - this is only used for GLX right now
527AC_ARG_ENABLE([xcb],
528 [AS_HELP_STRING([--enable-xcb],
529 [use XCB for GLX @<:@default=disabled@:>@])],
530 [enable_xcb="$enableval"],
531 [enable_xcb=no])
532if test "x$enable_xcb" = xyes; then
533 DEFINES="$DEFINES -DUSE_XCB"
534else
535 enable_xcb=no
536fi
537
Dan Nicholson44d99142007-12-05 18:47:01 -0800538dnl
539dnl libGL configuration per driver
540dnl
541case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800542xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800543 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700544 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800545 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800546 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
547 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800548 else
549 # should check these...
550 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
551 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800552 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
553 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800554 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700555 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
556 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson88586332007-11-15 08:59:57 -0800557
558 # if static, move the external libraries to the programs
559 # and empty the libraries for libGL
560 if test "$enable_static" = yes; then
561 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
562 GL_LIB_DEPS=""
563 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800564 ;;
565dri)
Dan Nicholson88586332007-11-15 08:59:57 -0800566 # DRI must be shared, I think
567 if test "$enable_static" = yes; then
568 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
569 fi
570
Dan Nicholson44d99142007-12-05 18:47:01 -0800571 # Check for libdrm
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -0700572 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
573 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800574 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
575 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Dan Nicholson44d99142007-12-05 18:47:01 -0800576
577 # find the DRI deps for libGL
578 if test "$x11_pkgconfig" = yes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700579 # add xcb modules if necessary
580 dri_modules="x11 xext xxf86vm xdamage xfixes"
581 if test "$enable_xcb" = yes; then
582 dri_modules="$dri_modules x11-xcb xcb-glx"
583 fi
584
585 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800586 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800587 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
588 GL_LIB_DEPS="$DRIGL_LIBS"
589 else
590 # should check these...
591 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
592 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800593 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
594 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700595
596 # XCB can only be used from pkg-config
597 if test "$enable_xcb" = yes; then
598 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800599 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700600 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
601 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
602 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800603 fi
604
605 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700606 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
607 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800608 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800609osmesa)
610 # No libGL for osmesa
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700611 GL_LIB_DEPS=""
Dan Nicholson979ff512007-12-05 18:47:01 -0800612 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800613esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700614AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800615AC_SUBST([GL_PC_REQ_PRIV])
616AC_SUBST([GL_PC_LIB_PRIV])
617AC_SUBST([GL_PC_CFLAGS])
618AC_SUBST([DRI_PC_REQ_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700619
620dnl
621dnl More X11 setup
622dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800623if test "$mesa_driver" = xlib; then
Dan Nicholsondca1b792007-10-23 09:25:58 -0700624 DEFINES="$DEFINES -DUSE_XSHM"
625fi
626
627dnl
Dan Nicholson44d99142007-12-05 18:47:01 -0800628dnl More DRI setup
629dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700630AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -0800631 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800632 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700633 [GLX_USE_TLS="$enableval"],
634 [GLX_USE_TLS=no])
Dan Nicholson44d99142007-12-05 18:47:01 -0800635dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -0700636AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800637 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700638 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700639 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700640 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700641AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +0800642dnl Extra search path for DRI drivers
643AC_ARG_WITH([dri-searchpath],
644 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
645 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
646 [DRI_DRIVER_SEARCH_DIR="$withval"],
647 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
648AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholson44d99142007-12-05 18:47:01 -0800649dnl Direct rendering or just indirect rendering
Dan Nicholson297e16c2008-05-05 15:42:53 -0700650AC_ARG_ENABLE([driglx-direct],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800651 [AS_HELP_STRING([--disable-driglx-direct],
652 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700653 [driglx_direct="$enableval"],
654 [driglx_direct="yes"])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800655dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -0700656AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800657 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -0700658 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +0200659 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700660 [with_dri_drivers="$withval"],
661 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800662if test "x$with_dri_drivers" = x; then
663 with_dri_drivers=no
664fi
665
666dnl If $with_dri_drivers is yes, directories will be added through
667dnl platform checks
668DRI_DIRS=""
669case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100670no) ;;
671yes)
672 DRI_DIRS="yes"
673 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800674*)
675 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -0700676 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800677 for driver in $dri_drivers; do
678 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
679 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
680 done
681 DRI_DIRS="$dri_drivers"
682 ;;
683esac
684
Dan Nicholson44d99142007-12-05 18:47:01 -0800685dnl Just default to no EGL for now
686USING_EGL=0
Dan Nicholson297e16c2008-05-05 15:42:53 -0700687AC_SUBST([USING_EGL])
Dan Nicholson44d99142007-12-05 18:47:01 -0800688
689dnl Set DRI_DIRS, DEFINES and LIB_DEPS
690if test "$mesa_driver" = dri; then
691 # Use TLS in GLX?
692 if test "x$GLX_USE_TLS" = xyes; then
693 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
694 fi
695
696 if test "x$USING_EGL" = x1; then
697 PROGRAM_DIRS="egl"
698 fi
699
700 # Platform specific settings and drivers to build
701 case "$host_os" in
702 linux*)
703 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Dan Nicholson44d99142007-12-05 18:47:01 -0800704 if test "x$driglx_direct" = xyes; then
705 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
706 fi
Jerome Glisse14f79d42008-12-18 13:36:07 +0100707 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800708
709 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -0800710 x86_64)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800711 # ffb, gamma, and sis are missing because they have not be
712 # converted to use the new interface. i810 are missing
713 # because there is no x86-64 system where they could *ever*
714 # be used.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100715 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400716 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
George Sapountzis280bf892008-05-11 14:43:40 +0300717 savage tdfx unichrome swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800718 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800719 ;;
720 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800721 # Build only the drivers for cards that exist on PowerPC.
722 # At some point MGA will be added, but not yet.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100723 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400724 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800725 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800726 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000727 sparc*)
728 # Build only the drivers for cards that exist on sparc`
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 ffb swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000731 fi
732 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800733 esac
734 ;;
Hasso Tepper9f8df2d2008-04-09 10:51:21 -0700735 freebsd* | dragonfly*)
Dan Nicholson44d99142007-12-05 18:47:01 -0800736 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
737 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
738 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
739 if test "x$driglx_direct" = xyes; then
740 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
741 fi
742 if test "x$GXX" = xyes; then
743 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
744 fi
745
Dan Nicholsona76e2452007-12-07 11:25:08 -0800746 # ffb and gamma are missing because they have not been converted
747 # to use the new interface.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100748 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400749 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
George Sapountzis280bf892008-05-11 14:43:40 +0300750 unichrome savage sis swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800751 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800752 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700753 gnu*)
754 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
755 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
756 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700757 solaris*)
758 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
759 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
760 if test "x$driglx_direct" = xyes; then
761 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
762 fi
763 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800764 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -0800765
766 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100767 if test "x$DRI_DIRS" = "xyes"; then
Corbin Simpson8e4657a2009-10-22 12:29:30 -0700768 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
Corbin Simpsonfd7ee2b2009-10-22 12:57:13 -0700769 savage sis tdfx unichrome ffb swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -0800770 fi
771
Dan Nicholson44d99142007-12-05 18:47:01 -0800772 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
773
774 # Check for expat
775 EXPAT_INCLUDES=""
776 EXPAT_LIB=-lexpat
Dan Nicholson297e16c2008-05-05 15:42:53 -0700777 AC_ARG_WITH([expat],
778 [AS_HELP_STRING([--with-expat=DIR],
779 [expat install directory])],[
Dan Nicholson44d99142007-12-05 18:47:01 -0800780 EXPAT_INCLUDES="-I$withval/include"
781 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
782 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
783 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
784 ])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700785 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
786 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
787 [AC_MSG_ERROR([Expat required for DRI.])])
Dan Nicholson44d99142007-12-05 18:47:01 -0800788
789 # put all the necessary libs together
Eric Anholt050c5332008-03-20 17:28:58 -0700790 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800791fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700792AC_SUBST([DRI_DIRS])
793AC_SUBST([EXPAT_INCLUDES])
794AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -0800795
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500796case $DRI_DIRS in
797*i915*|*i965*)
798 PKG_CHECK_MODULES([INTEL], [libdrm_intel])
799 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500800esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500801
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500802case $DRI_DIRS in
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500803*radeon*|*r200*|*r300*|*r600*)
804 PKG_CHECK_MODULES([LIBDRM_RADEON],
805 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
806 HAVE_LIBDRM_RADEON=yes,
807 HAVE_LIBDRM_RADEON=no)
808
809 if test "$HAVE_LIBDRM_RADEON" = yes; then
810 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
811 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
812 fi
813 ;;
814esac
815AC_SUBST([RADEON_CFLAGS])
816AC_SUBST([RADEON_LDFLAGS])
817
818
Dan Nicholson44d99142007-12-05 18:47:01 -0800819dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700820dnl OSMesa configuration
821dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800822if test "$mesa_driver" = xlib; then
Dan Nicholson544ab202007-12-30 08:41:53 -0800823 default_gl_osmesa=yes
Dan Nicholson979ff512007-12-05 18:47:01 -0800824else
Dan Nicholson544ab202007-12-30 08:41:53 -0800825 default_gl_osmesa=no
Dan Nicholson44d99142007-12-05 18:47:01 -0800826fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700827AC_ARG_ENABLE([gl-osmesa],
Dan Nicholson544ab202007-12-30 08:41:53 -0800828 [AS_HELP_STRING([--enable-gl-osmesa],
829 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700830 [gl_osmesa="$enableval"],
831 [gl_osmesa="$default_gl_osmesa"])
Dan Nicholson544ab202007-12-30 08:41:53 -0800832if test "x$gl_osmesa" = xyes; then
833 if test "$mesa_driver" = osmesa; then
834 AC_MSG_ERROR([libGL is not available for OSMesa driver])
Dan Nicholson979ff512007-12-05 18:47:01 -0800835 else
Dan Nicholson544ab202007-12-30 08:41:53 -0800836 DRIVER_DIRS="$DRIVER_DIRS osmesa"
Dan Nicholson979ff512007-12-05 18:47:01 -0800837 fi
838fi
839
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800840dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -0700841AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800842 [AS_HELP_STRING([--with-osmesa-bits=BITS],
843 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700844 [osmesa_bits="$withval"],
845 [osmesa_bits=8])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800846if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
847 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
848 osmesa_bits=8
849fi
850case "x$osmesa_bits" in
851x8)
852 OSMESA_LIB=OSMesa
853 ;;
854x16|x32)
855 OSMESA_LIB="OSMesa$osmesa_bits"
856 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
857 ;;
858*)
859 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
860 ;;
861esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700862AC_SUBST([OSMESA_LIB])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800863
Dan Nicholson979ff512007-12-05 18:47:01 -0800864case "$mesa_driver" in
865osmesa)
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700866 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800867 if test "$enable_static" = no; then
Dan Nicholson4795dd52009-06-04 19:42:08 -0700868 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -0800869 else
870 OSMESA_LIB_DEPS=""
871 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800872 OSMESA_MESA_DEPS=""
Dan Nicholson4795dd52009-06-04 19:42:08 -0700873 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -0800874 ;;
875*)
876 # Link OSMesa to libGL otherwise
877 OSMESA_LIB_DEPS=""
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700878 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800879 if test "$enable_static" = no; then
880 OSMESA_MESA_DEPS='-l$(GL_LIB)'
881 else
882 OSMESA_MESA_DEPS=""
883 fi
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800884 OSMESA_PC_REQ="gl"
Dan Nicholson979ff512007-12-05 18:47:01 -0800885 ;;
886esac
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700887OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700888AC_SUBST([OSMESA_LIB_DEPS])
889AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800890AC_SUBST([OSMESA_PC_REQ])
891AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700892
893dnl
Dan Nicholson53b37342009-02-25 17:45:34 -0800894dnl EGL configuration
895dnl
Dan Nicholson66f97862009-04-29 12:11:43 -0700896AC_ARG_ENABLE([egl],
897 [AS_HELP_STRING([--disable-egl],
898 [disable EGL library @<:@default=enabled@:>@])],
899 [enable_egl="$enableval"],
900 [enable_egl=yes])
901if test "x$enable_egl" = xyes; then
902 SRC_DIRS="$SRC_DIRS egl"
903
904 if test "$x11_pkgconfig" = yes; then
905 PKG_CHECK_MODULES([EGL], [x11])
906 EGL_LIB_DEPS="$EGL_LIBS"
907 else
908 # should check these...
909 EGL_LIB_DEPS="$X_LIBS -lX11"
910 fi
911 EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
Dan Nicholson53b37342009-02-25 17:45:34 -0800912fi
Dan Nicholson53b37342009-02-25 17:45:34 -0800913AC_SUBST([EGL_LIB_DEPS])
914
915dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700916dnl GLU configuration
917dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700918AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800919 [AS_HELP_STRING([--disable-glu],
920 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700921 [enable_glu="$enableval"],
922 [enable_glu=yes])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700923if test "x$enable_glu" = xyes; then
924 SRC_DIRS="$SRC_DIRS glu"
925
Dan Nicholson979ff512007-12-05 18:47:01 -0800926 case "$mesa_driver" in
927 osmesa)
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800928 # If GLU is available and we have libOSMesa (not 16 or 32),
929 # we can build the osdemos
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800930 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800931 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
932 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700933
Dan Nicholson979ff512007-12-05 18:47:01 -0800934 # Link libGLU to libOSMesa instead of libGL
935 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800936 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -0800937 if test "$enable_static" = no; then
938 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
939 else
940 GLU_MESA_DEPS=""
941 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800942 ;;
943 *)
Dan Nicholson88586332007-11-15 08:59:57 -0800944 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -0800945 GLU_PC_REQ="gl"
946 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -0800947 if test "$enable_static" = no; then
948 GLU_LIB_DEPS="-lm"
949 GLU_MESA_DEPS='-l$(GL_LIB)'
950 else
951 GLU_LIB_DEPS=""
952 GLU_MESA_DEPS=""
953 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
954 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800955 ;;
956 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700957fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700958if test "$enable_static" = no; then
959 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
960fi
Dan Nicholson71e208b2008-11-24 11:01:57 -0800961GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700962AC_SUBST([GLU_LIB_DEPS])
963AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800964AC_SUBST([GLU_PC_REQ])
965AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800966AC_SUBST([GLU_PC_LIB_PRIV])
967AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700968
969dnl
970dnl GLw configuration
971dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700972AC_ARG_ENABLE([glw],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800973 [AS_HELP_STRING([--disable-glw],
974 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700975 [enable_glw="$enableval"],
976 [enable_glw=yes])
Dan Nicholson979ff512007-12-05 18:47:01 -0800977dnl Don't build GLw on osmesa
978if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
979 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
980 enable_glw=no
981fi
Dan Nicholson776c60d2008-07-18 07:40:41 -0700982AC_ARG_ENABLE([motif],
983 [AS_HELP_STRING([--enable-motif],
984 [use Motif widgets in GLw @<:@default=disabled@:>@])],
985 [enable_motif="$enableval"],
986 [enable_motif=no])
987
Dan Nicholsondca1b792007-10-23 09:25:58 -0700988if test "x$enable_glw" = xyes; then
989 SRC_DIRS="$SRC_DIRS glw"
990 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700991 PKG_CHECK_MODULES([GLW],[x11 xt])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800992 GLW_PC_REQ_PRIV="x11 xt"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700993 GLW_LIB_DEPS="$GLW_LIBS"
994 else
995 # should check these...
Dan Nicholson776c60d2008-07-18 07:40:41 -0700996 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800997 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
998 GLW_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson776c60d2008-07-18 07:40:41 -0700999 fi
1000
1001 GLW_SOURCES="GLwDrawA.c"
1002 MOTIF_CFLAGS=
1003 if test "x$enable_motif" = xyes; then
1004 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1005 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1006 if test "x$MOTIF_CONFIG" != xno; then
1007 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1008 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1009 else
1010 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1011 [AC_MSG_ERROR([Can't locate Motif headers])])
1012 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1013 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1014 fi
1015 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1016 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001017 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1018 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001019 fi
1020
Dan Nicholson88586332007-11-15 08:59:57 -08001021 # If static, empty GLW_LIB_DEPS and add libs for programs to link
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001022 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
Dan Nicholson88586332007-11-15 08:59:57 -08001023 if test "$enable_static" = no; then
1024 GLW_MESA_DEPS='-l$(GL_LIB)'
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001025 GLW_LIB_DEPS="$GLW_LIB_DEPS"
Dan Nicholson88586332007-11-15 08:59:57 -08001026 else
1027 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1028 GLW_LIB_DEPS=""
1029 GLW_MESA_DEPS=""
1030 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001031fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001032AC_SUBST([GLW_LIB_DEPS])
1033AC_SUBST([GLW_MESA_DEPS])
Dan Nicholson776c60d2008-07-18 07:40:41 -07001034AC_SUBST([GLW_SOURCES])
1035AC_SUBST([MOTIF_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001036AC_SUBST([GLW_PC_REQ_PRIV])
1037AC_SUBST([GLW_PC_LIB_PRIV])
1038AC_SUBST([GLW_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001039
1040dnl
1041dnl GLUT configuration
1042dnl
1043if test -f "$srcdir/include/GL/glut.h"; then
1044 default_glut=yes
1045else
1046 default_glut=no
1047fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001048AC_ARG_ENABLE([glut],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001049 [AS_HELP_STRING([--disable-glut],
1050 [enable GLUT library @<:@default=enabled if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001051 [enable_glut="$enableval"],
1052 [enable_glut="$default_glut"])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001053
1054dnl Can't build glut if GLU not available
1055if test "x$enable_glu$enable_glut" = xnoyes; then
1056 AC_MSG_WARN([Disabling glut since GLU is disabled])
1057 enable_glut=no
1058fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001059dnl Don't build glut on osmesa
1060if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1061 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1062 enable_glut=no
1063fi
1064
Dan Nicholsondca1b792007-10-23 09:25:58 -07001065if test "x$enable_glut" = xyes; then
1066 SRC_DIRS="$SRC_DIRS glut/glx"
1067 GLUT_CFLAGS=""
1068 if test "x$GCC" = xyes; then
1069 GLUT_CFLAGS="-fexceptions"
1070 fi
1071 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -07001072 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001073 GLUT_PC_REQ_PRIV="x11 xmu xi"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001074 GLUT_LIB_DEPS="$GLUT_LIBS"
1075 else
1076 # should check these...
Dan Nicholson70d0c832007-12-07 11:12:20 -08001077 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001078 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1079 GLUT_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001080 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001081 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1082 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001083
1084 # If glut is available, we can build most programs
Dan Nicholson8e4d1472007-11-15 08:59:57 -08001085 if test "$with_demos" = yes; then
1086 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1087 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001088
Dan Nicholson88586332007-11-15 08:59:57 -08001089 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1090 if test "$enable_static" = no; then
1091 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1092 else
1093 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1094 GLUT_LIB_DEPS=""
1095 GLUT_MESA_DEPS=""
1096 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001097fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001098AC_SUBST([GLUT_LIB_DEPS])
1099AC_SUBST([GLUT_MESA_DEPS])
1100AC_SUBST([GLUT_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001101AC_SUBST([GLUT_PC_REQ_PRIV])
1102AC_SUBST([GLUT_PC_LIB_PRIV])
1103AC_SUBST([GLUT_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001104
1105dnl
1106dnl Program library dependencies
1107dnl Only libm is added here if necessary as the libraries should
1108dnl be pulled in by the linker
1109dnl
1110if test "x$APP_LIB_DEPS" = x; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001111 case "$host_os" in
1112 solaris*)
1113 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1114 ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +01001115 cygwin*)
1116 APP_LIB_DEPS="-lX11"
1117 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001118 *)
1119 APP_LIB_DEPS="-lm"
1120 ;;
1121 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001122fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001123AC_SUBST([APP_LIB_DEPS])
1124AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001125
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001126dnl
1127dnl Gallium configuration
1128dnl
1129AC_ARG_ENABLE([gallium],
1130 [AS_HELP_STRING([--disable-gallium],
1131 [build gallium @<:@default=enabled@:>@])],
1132 [enable_gallium="$enableval"],
1133 [enable_gallium=yes])
1134if test "x$enable_gallium" = xyes; then
1135 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1136fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001137
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001138dnl
1139dnl Gallium state trackers configuration
1140dnl
1141AC_ARG_WITH([state-trackers],
1142 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1143 [comma delimited state_trackers list, e.g.
1144 "egl,glx" @<:@default=auto@:>@])],
1145 [with_state_trackers="$withval"],
1146 [with_state_trackers=yes])
1147
1148case "$with_state_trackers" in
1149no)
1150 GALLIUM_STATE_TRACKERS_DIRS=""
1151 ;;
1152yes)
1153 # look at what else is built
1154 case "$mesa_driver" in
Jakob Bornecrantz373e6712009-04-18 23:13:56 +01001155 xlib)
1156 GALLIUM_STATE_TRACKERS_DIRS=glx
1157 ;;
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001158 dri)
Jakob Bornecrantzbc0532b2009-12-04 18:50:29 +00001159 GALLIUM_STATE_TRACKERS_DIRS="dri"
1160 if test "x$enable_egl" = xyes; then
1161 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1162 fi
1163 # Have only tested st/xorg on 1.6.0 servers
1164 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1165 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1166 HAVE_XORG="no")
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001167 ;;
1168 esac
1169 ;;
1170*)
1171 # verify the requested state tracker exist
1172 state_trackers=`IFS=', '; echo $with_state_trackers`
1173 for tracker in $state_trackers; do
1174 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1175 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
Dan Nicholson66f97862009-04-29 12:11:43 -07001176
1177 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1178 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1179 fi
Dave Airliee9d6ab72009-09-21 13:26:48 +10001180 if test "$tracker" = xorg; then
1181 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
Jakob Bornecrantz5c4bdbd2009-10-15 01:24:53 +01001182 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
Dave Airliee9d6ab72009-09-21 13:26:48 +10001183 HAVE_XEXTPROTO_71="no")
Jakob Bornecrantz5c4bdbd2009-10-15 01:24:53 +01001184 fi
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001185 done
1186 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1187 ;;
1188esac
1189
Joel Bosveld8acca482009-03-06 08:46:08 +09001190AC_ARG_WITH([xorg-driver-dir],
1191 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1192 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1193 [XORG_DRIVER_INSTALL_DIR="$withval"],
1194 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1195AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1196
Tom Fogal7085dce2009-08-13 19:40:30 -06001197AC_ARG_WITH([max-width],
1198 [AS_HELP_STRING([--with-max-width=N],
1199 [Maximum framebuffer width (4096)])],
1200 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1201 AS_IF([test "${withval}" -gt "4096"],
1202 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1203)
1204AC_ARG_WITH([max-height],
1205 [AS_HELP_STRING([--with-max-height=N],
1206 [Maximum framebuffer height (4096)])],
1207 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1208 AS_IF([test "${withval}" -gt "4096"],
1209 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1210)
1211
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001212dnl
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001213dnl Gallium SVGA configuration
1214dnl
1215AC_ARG_ENABLE([gallium-svga],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001216 [AS_HELP_STRING([--enable-gallium-svga],
1217 [build gallium SVGA @<:@default=disabled@:>@])],
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001218 [enable_gallium_svga="$enableval"],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001219 [enable_gallium_svga=auto])
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001220if test "x$enable_gallium_svga" = xyes; then
1221 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1222 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001223elif test "x$enable_gallium_svga" = xauto; then
1224 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001225fi
1226
1227dnl
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001228dnl Gallium Intel configuration
1229dnl
1230AC_ARG_ENABLE([gallium-intel],
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001231 [AS_HELP_STRING([--enable-gallium-intel],
1232 [build gallium intel @<:@default=disabled@:>@])],
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001233 [enable_gallium_intel="$enableval"],
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001234 [enable_gallium_intel=auto])
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001235if test "x$enable_gallium_intel" = xyes; then
Jakob Bornecrantzce4f23a2009-11-04 23:02:13 +00001236 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1237 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001238elif test "x$enable_gallium_intel" = xauto; then
Keith Whitwellaa026832009-12-22 09:40:39 +00001239 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001240fi
1241
1242dnl
1243dnl Gallium Radeon configuration
1244dnl
1245AC_ARG_ENABLE([gallium-radeon],
1246 [AS_HELP_STRING([--enable-gallium-radeon],
1247 [build gallium radeon @<:@default=disabled@:>@])],
1248 [enable_gallium_radeon="$enableval"],
1249 [enable_gallium_radeon=no])
1250if test "x$enable_gallium_radeon" = xyes; then
1251 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001252 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001253fi
1254
1255dnl
Thierry Vignaud1402ea82009-09-14 11:48:51 -06001256dnl Gallium Nouveau configuration
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001257dnl
1258AC_ARG_ENABLE([gallium-nouveau],
1259 [AS_HELP_STRING([--enable-gallium-nouveau],
1260 [build gallium nouveau @<:@default=disabled@:>@])],
1261 [enable_gallium_nouveau="$enableval"],
1262 [enable_gallium_nouveau=no])
1263if test "x$enable_gallium_nouveau" = xyes; then
1264 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
Ben Skeggsbc466be2009-06-04 10:19:04 +10001265 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001266fi
1267
1268
Dan Nicholsondca1b792007-10-23 09:25:58 -07001269dnl Restore LDFLAGS and CPPFLAGS
1270LDFLAGS="$_SAVE_LDFLAGS"
1271CPPFLAGS="$_SAVE_CPPFLAGS"
1272
1273dnl Substitute the config
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001274AC_CONFIG_FILES([configs/autoconf])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001275
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001276dnl Replace the configs/current symlink
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001277AC_CONFIG_COMMANDS([configs],[
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001278if test -f configs/current || test -L configs/current; then
1279 rm -f configs/current
1280fi
1281ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001282])
1283
1284AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001285
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001286dnl
1287dnl Output some configuration info for the user
1288dnl
1289echo ""
1290echo " prefix: $prefix"
1291echo " exec_prefix: $exec_prefix"
1292echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001293echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001294
1295dnl Driver info
1296echo ""
1297echo " Driver: $mesa_driver"
Dan Nicholson544ab202007-12-30 08:41:53 -08001298if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1299 echo " OSMesa: lib$OSMESA_LIB"
1300else
1301 echo " OSMesa: no"
1302fi
1303if test "$mesa_driver" = dri; then
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001304 # cleanup the drivers var
1305 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001306if test "x$DRI_DIRS" = x; then
1307 echo " DRI drivers: no"
1308else
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001309 echo " DRI drivers: $dri_dirs"
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001310fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001311 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -08001312fi
RALOVICH, Kristóf5f19f5c2008-11-04 11:53:32 +01001313echo " Use XCB: $enable_xcb"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001314
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001315echo ""
1316if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1317 echo " Gallium: yes"
1318 echo " Gallium dirs: $GALLIUM_DIRS"
1319 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001320 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001321 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001322 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1323else
1324 echo " Gallium: no"
1325fi
1326
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001327dnl Libraries
1328echo ""
1329echo " Shared libs: $enable_shared"
1330echo " Static libs: $enable_static"
Dan Nicholson66f97862009-04-29 12:11:43 -07001331echo " EGL: $enable_egl"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001332echo " GLU: $enable_glu"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001333echo " GLw: $enable_glw (Motif: $enable_motif)"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001334echo " glut: $enable_glut"
1335
1336dnl Programs
1337# cleanup the programs var for display
1338program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1339if test "x$program_dirs" = x; then
1340 echo " Demos: no"
1341else
1342 echo " Demos: $program_dirs"
1343fi
1344
Dan Nicholson16a07fb2007-12-12 09:12:15 -08001345dnl Compiler options
1346# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1347cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1348 $SED 's/^ *//;s/ */ /;s/ *$//'`
1349cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1350 $SED 's/^ *//;s/ */ /;s/ *$//'`
1351defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1352echo ""
1353echo " CFLAGS: $cflags"
1354echo " CXXFLAGS: $cxxflags"
1355echo " Macros: $defines"
1356
Dan Nicholsondca1b792007-10-23 09:25:58 -07001357echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07001358echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001359echo ""