blob: 33437f54f89db5519f3c2d7b6638af8eb4ef3fa8 [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
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}
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800246EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
Dan Nicholson8217f242009-02-11 15:16:00 -0800247
248GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
249GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
250GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
251GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
252OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800253EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
Dan Nicholson8217f242009-02-11 15:16:00 -0800254
Dan Nicholson297e16c2008-05-05 15:42:53 -0700255AC_SUBST([GL_LIB_NAME])
256AC_SUBST([GLU_LIB_NAME])
257AC_SUBST([GLUT_LIB_NAME])
258AC_SUBST([GLW_LIB_NAME])
259AC_SUBST([OSMESA_LIB_NAME])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800260AC_SUBST([EGL_LIB_NAME])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700261
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700262AC_SUBST([GL_LIB_GLOB])
263AC_SUBST([GLU_LIB_GLOB])
264AC_SUBST([GLUT_LIB_GLOB])
265AC_SUBST([GLW_LIB_GLOB])
266AC_SUBST([OSMESA_LIB_GLOB])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800267AC_SUBST([EGL_LIB_GLOB])
Siddhartha Chaudhuri1a46c8a2009-02-09 07:58:38 -0700268
Dan Nicholsondca1b792007-10-23 09:25:58 -0700269dnl
Dan Nicholson871125a2008-06-04 13:00:35 -0700270dnl Arch/platform-specific settings
271dnl
272AC_ARG_ENABLE([asm],
273 [AS_HELP_STRING([--disable-asm],
274 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
275 [enable_asm="$enableval"],
276 [enable_asm=yes]
277)
278asm_arch=""
279ASM_FLAGS=""
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800280MESA_ASM_SOURCES=""
281GLAPI_ASM_SOURCES=""
Dan Nicholson871125a2008-06-04 13:00:35 -0700282AC_MSG_CHECKING([whether to enable assembly])
283test "x$enable_asm" = xno && AC_MSG_RESULT([no])
284# disable if cross compiling on x86/x86_64 since we must run gen_matypes
285if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
286 case "$host_cpu" in
287 i?86 | x86_64)
288 enable_asm=no
289 AC_MSG_RESULT([no, cross compiling])
290 ;;
291 esac
292fi
293# check for supported arches
294if test "x$enable_asm" = xyes; then
295 case "$host_cpu" in
296 i?86)
297 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100298 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700299 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
300 ;;
301 esac
302 ;;
303 x86_64)
304 case "$host_os" in
Julien Cristau98fcdf32008-10-28 18:56:05 +0100305 linux* | *freebsd* | dragonfly*)
Dan Nicholson871125a2008-06-04 13:00:35 -0700306 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
307 ;;
308 esac
309 ;;
310 powerpc)
311 case "$host_os" in
312 linux*)
313 asm_arch=ppc
314 ;;
315 esac
316 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800317 sparc*)
318 case "$host_os" in
319 linux*)
320 asm_arch=sparc
321 ;;
322 esac
323 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700324 esac
325
326 case "$asm_arch" in
327 x86)
Dan Nicholson61e925f2009-02-11 10:42:34 -0800328 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800329 MESA_ASM_SOURCES='$(X86_SOURCES)'
330 GLAPI_ASM_SOURCES='$(X86_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700331 AC_MSG_RESULT([yes, x86])
332 ;;
333 x86_64)
334 ASM_FLAGS="-DUSE_X86_64_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800335 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
336 GLAPI_ASM_SOURCES='$(X86-64_API)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700337 AC_MSG_RESULT([yes, x86_64])
338 ;;
339 ppc)
340 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800341 MESA_ASM_SOURCES='$(PPC_SOURCES)'
Dan Nicholson871125a2008-06-04 13:00:35 -0700342 AC_MSG_RESULT([yes, ppc])
343 ;;
David S. Miller857ac1e2009-02-26 05:35:15 -0800344 sparc)
345 ASM_FLAGS="-DUSE_SPARC_ASM"
346 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
347 GLAPI_ASM_SOURCES='$(SPARC_API)'
348 AC_MSG_RESULT([yes, sparc])
349 ;;
Dan Nicholson871125a2008-06-04 13:00:35 -0700350 *)
351 AC_MSG_RESULT([no, platform not supported])
352 ;;
353 esac
354fi
355AC_SUBST([ASM_FLAGS])
Dan Nicholsonc5bae142009-02-11 11:04:29 -0800356AC_SUBST([MESA_ASM_SOURCES])
357AC_SUBST([GLAPI_ASM_SOURCES])
Dan Nicholson871125a2008-06-04 13:00:35 -0700358
359dnl PIC code macro
360MESA_PIC_FLAGS
361
362dnl Check to see if dlopen is in default libraries (like Solaris, which
363dnl has it in libc), or if libdl is needed to get it.
364AC_CHECK_FUNC([dlopen], [],
365 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
366
Dan Nicholson985e1cd2008-06-04 13:17:06 -0700367dnl See if posix_memalign is available
368AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
369
Dan Nicholson871125a2008-06-04 13:00:35 -0700370dnl SELinux awareness.
371AC_ARG_ENABLE([selinux],
372 [AS_HELP_STRING([--enable-selinux],
373 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
374 [MESA_SELINUX="$enableval"],
375 [MESA_SELINUX=no])
376if test "x$enable_selinux" = "xyes"; then
377 AC_CHECK_HEADER([selinux/selinux.h],[],
378 [AC_MSG_ERROR([SELinux headers not found])])
379 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
380 [AC_MSG_ERROR([SELinux library not found])])
381 SELINUX_LIBS="-lselinux"
382 DEFINES="$DEFINES -DMESA_SELINUX"
383fi
384
Dan Nicholson871125a2008-06-04 13:00:35 -0700385dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800386dnl Driver configuration. Options are xlib, dri and osmesa right now.
Dan Nicholson979ff512007-12-05 18:47:01 -0800387dnl More later: directfb, fbdev, ...
Dan Nicholson44d99142007-12-05 18:47:01 -0800388dnl
Eric Anholt711222b2008-04-18 15:03:01 -0700389default_driver="xlib"
390
391case "$host_os" in
392linux*)
393 case "$host_cpu" in
David S. Miller32dc28a2009-02-24 20:06:05 -0700394 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700395 esac
396 ;;
Julien Cristau98fcdf32008-10-28 18:56:05 +0100397*freebsd* | dragonfly*)
Eric Anholt711222b2008-04-18 15:03:01 -0700398 case "$host_cpu" in
Robert Noland48f05432009-04-10 11:41:27 -0500399 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
Eric Anholt711222b2008-04-18 15:03:01 -0700400 esac
401 ;;
402esac
403
Dan Nicholson297e16c2008-05-05 15:42:53 -0700404AC_ARG_WITH([driver],
Dan Nicholson44d99142007-12-05 18:47:01 -0800405 [AS_HELP_STRING([--with-driver=DRIVER],
Eric Anholt711222b2008-04-18 15:03:01 -0700406 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700407 [mesa_driver="$withval"],
408 [mesa_driver="$default_driver"])
Dan Nicholson44d99142007-12-05 18:47:01 -0800409dnl Check for valid option
410case "x$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800411xxlib|xdri|xosmesa)
Dan Nicholson44d99142007-12-05 18:47:01 -0800412 ;;
413*)
414 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
415 ;;
416esac
417
418dnl
419dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700420dnl
Sedat Dilek2f127e52009-12-17 19:14:53 +0100421SRC_DIRS="glsl mesa glew"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700422GLU_DIRS="sgi"
Dan Nicholson44d99142007-12-05 18:47:01 -0800423WINDOW_SYSTEM=""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100424GALLIUM_DIRS="auxiliary drivers state_trackers"
Jerome Glisse14f79d42008-12-18 13:36:07 +0100425GALLIUM_WINSYS_DIRS=""
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100426GALLIUM_WINSYS_DRM_DIRS=""
Jakob Bornecrantzd60b2c62009-06-24 02:42:41 +0200427GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100428GALLIUM_STATE_TRACKERS_DIRS=""
429
Dan Nicholson44d99142007-12-05 18:47:01 -0800430case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800431xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800432 DRIVER_DIRS="x11"
Jakob Bornecrantz373e6712009-04-18 23:13:56 +0100433 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
Dan Nicholson44d99142007-12-05 18:47:01 -0800434 ;;
435dri)
436 SRC_DIRS="glx/x11 $SRC_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100437 DRIVER_DIRS="dri"
Dan Nicholson44d99142007-12-05 18:47:01 -0800438 WINDOW_SYSTEM="dri"
Jakob Bornecrantz373e6712009-04-18 23:13:56 +0100439 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
Dan Nicholson44d99142007-12-05 18:47:01 -0800440 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800441osmesa)
442 DRIVER_DIRS="osmesa"
443 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800444esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700445AC_SUBST([SRC_DIRS])
446AC_SUBST([GLU_DIRS])
447AC_SUBST([DRIVER_DIRS])
448AC_SUBST([WINDOW_SYSTEM])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100449AC_SUBST([GALLIUM_DIRS])
Jerome Glisse14f79d42008-12-18 13:36:07 +0100450AC_SUBST([GALLIUM_WINSYS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100451AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +0000452AC_SUBST([GALLIUM_DRIVERS_DIRS])
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +0100453AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700454
455dnl
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800456dnl User supplied program configuration
457dnl
458if test -d "$srcdir/progs/demos"; then
459 default_demos=yes
460else
461 default_demos=no
462fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700463AC_ARG_WITH([demos],
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800464 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
465 [optional comma delimited demo directories to build
Dan Nicholsonc79c93c2007-12-12 18:13:04 -0800466 @<:@default=auto if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700467 [with_demos="$withval"],
468 [with_demos="$default_demos"])
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800469if test "x$with_demos" = x; then
470 with_demos=no
471fi
472
473dnl If $with_demos is yes, directories will be added as libs available
474PROGRAM_DIRS=""
475case "$with_demos" in
Dan Nicholsonb9576552008-03-10 14:05:46 -0700476no) ;;
477yes)
478 # If the driver isn't osmesa, we have libGL and can build xdemos
479 if test "$mesa_driver" != osmesa; then
480 PROGRAM_DIRS="xdemos"
481 fi
482 ;;
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800483*)
484 # verify the requested demos directories exist
485 demos=`IFS=,; echo $with_demos`
486 for demo in $demos; do
487 test -d "$srcdir/progs/$demo" || \
488 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
489 done
490 PROGRAM_DIRS="$demos"
491 ;;
492esac
493
494dnl
Dan Nicholsone6a06092008-05-05 15:16:22 -0700495dnl Find out if X is available. The variable have_x is set if libX11 is
Dan Nicholson99803a42008-07-01 09:03:15 -0700496dnl found to mimic AC_PATH_XTRA.
Dan Nicholsondca1b792007-10-23 09:25:58 -0700497dnl
498if test -n "$PKG_CONFIG"; then
499 AC_MSG_CHECKING([pkg-config files for X11 are available])
Dan Nicholsone6a06092008-05-05 15:16:22 -0700500 PKG_CHECK_EXISTS([x11],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700501 x11_pkgconfig=yes
502 have_x=yes
Dan Nicholsone6a06092008-05-05 15:16:22 -0700503 ],[
Dan Nicholsondca1b792007-10-23 09:25:58 -0700504 x11_pkgconfig=no
Dan Nicholsone6a06092008-05-05 15:16:22 -0700505 ])
506 AC_MSG_RESULT([$x11_pkgconfig])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700507else
508 x11_pkgconfig=no
509fi
510dnl Use the autoconf macro if no pkg-config files
511if test "$x11_pkgconfig" = no; then
512 AC_PATH_XTRA
513fi
514
Dan Nicholson99803a42008-07-01 09:03:15 -0700515dnl Try to tell the user that the --x-* options are only used when
516dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
517m4_divert_once([HELP_BEGIN],
518[These options are only used when the X libraries cannot be found by the
519pkg-config utility.])
520
Dan Nicholson44d99142007-12-05 18:47:01 -0800521dnl We need X for xlib and dri, so bomb now if it's not found
522case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800523xlib|dri)
Dan Nicholson44d99142007-12-05 18:47:01 -0800524 if test "$no_x" = yes; then
525 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
526 fi
527 ;;
528esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700529
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700530dnl XCB - this is only used for GLX right now
531AC_ARG_ENABLE([xcb],
532 [AS_HELP_STRING([--enable-xcb],
533 [use XCB for GLX @<:@default=disabled@:>@])],
534 [enable_xcb="$enableval"],
535 [enable_xcb=no])
536if test "x$enable_xcb" = xyes; then
537 DEFINES="$DEFINES -DUSE_XCB"
538else
539 enable_xcb=no
540fi
541
Dan Nicholson44d99142007-12-05 18:47:01 -0800542dnl
543dnl libGL configuration per driver
544dnl
545case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800546xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800547 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700548 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800549 GL_PC_REQ_PRIV="x11 xext"
Dan Nicholsona1307182007-12-12 17:49:49 -0800550 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
551 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800552 else
553 # should check these...
554 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
555 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800556 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
557 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson44d99142007-12-05 18:47:01 -0800558 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700559 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
560 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
Dan Nicholson88586332007-11-15 08:59:57 -0800561
562 # if static, move the external libraries to the programs
563 # and empty the libraries for libGL
564 if test "$enable_static" = yes; then
565 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
566 GL_LIB_DEPS=""
567 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800568 ;;
569dri)
Dan Nicholson88586332007-11-15 08:59:57 -0800570 # DRI must be shared, I think
571 if test "$enable_static" = yes; then
572 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
573 fi
574
Dan Nicholson44d99142007-12-05 18:47:01 -0800575 # Check for libdrm
Dan Nicholsoncc77e8f2008-05-05 14:38:22 -0700576 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
577 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800578 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
579 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
Dan Nicholson44d99142007-12-05 18:47:01 -0800580
581 # find the DRI deps for libGL
582 if test "$x11_pkgconfig" = yes; then
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700583 # add xcb modules if necessary
584 dri_modules="x11 xext xxf86vm xdamage xfixes"
585 if test "$enable_xcb" = yes; then
586 dri_modules="$dri_modules x11-xcb xcb-glx"
587 fi
588
589 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800590 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
Dan Nicholson44d99142007-12-05 18:47:01 -0800591 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
592 GL_LIB_DEPS="$DRIGL_LIBS"
593 else
594 # should check these...
595 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
596 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800597 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
598 GL_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700599
600 # XCB can only be used from pkg-config
601 if test "$enable_xcb" = yes; then
602 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800603 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
Dan Nicholson2d709fe2008-05-06 10:51:49 -0700604 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
605 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
606 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800607 fi
608
609 # need DRM libs, -lpthread, etc.
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700610 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
611 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800612 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800613osmesa)
614 # No libGL for osmesa
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700615 GL_LIB_DEPS=""
Dan Nicholson979ff512007-12-05 18:47:01 -0800616 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800617esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700618AC_SUBST([GL_LIB_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800619AC_SUBST([GL_PC_REQ_PRIV])
620AC_SUBST([GL_PC_LIB_PRIV])
621AC_SUBST([GL_PC_CFLAGS])
622AC_SUBST([DRI_PC_REQ_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700623
624dnl
625dnl More X11 setup
626dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800627if test "$mesa_driver" = xlib; then
Dan Nicholsondca1b792007-10-23 09:25:58 -0700628 DEFINES="$DEFINES -DUSE_XSHM"
629fi
630
631dnl
Dan Nicholson44d99142007-12-05 18:47:01 -0800632dnl More DRI setup
633dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700634AC_ARG_ENABLE([glx-tls],
Dan Nicholson44d99142007-12-05 18:47:01 -0800635 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800636 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700637 [GLX_USE_TLS="$enableval"],
638 [GLX_USE_TLS=no])
Dan Nicholson44d99142007-12-05 18:47:01 -0800639dnl Directory for DRI drivers
Dan Nicholson297e16c2008-05-05 15:42:53 -0700640AC_ARG_WITH([dri-driverdir],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800641 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700642 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700643 [DRI_DRIVER_INSTALL_DIR="$withval"],
Dan Nicholson5dbbde52008-05-06 06:21:41 -0700644 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700645AC_SUBST([DRI_DRIVER_INSTALL_DIR])
Chow Loong Jin35506de2009-10-28 14:34:14 +0800646dnl Extra search path for DRI drivers
647AC_ARG_WITH([dri-searchpath],
648 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
649 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
650 [DRI_DRIVER_SEARCH_DIR="$withval"],
651 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
652AC_SUBST([DRI_DRIVER_SEARCH_DIR])
Dan Nicholson44d99142007-12-05 18:47:01 -0800653dnl Direct rendering or just indirect rendering
Dan Nicholson297e16c2008-05-05 15:42:53 -0700654AC_ARG_ENABLE([driglx-direct],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800655 [AS_HELP_STRING([--disable-driglx-direct],
656 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700657 [driglx_direct="$enableval"],
658 [driglx_direct="yes"])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800659dnl Which drivers to build - default is chosen by platform
Dan Nicholson297e16c2008-05-05 15:42:53 -0700660AC_ARG_WITH([dri-drivers],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800661 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholson5cae1b72008-06-30 10:28:02 -0700662 [comma delimited DRI drivers list, e.g.
Michel Dänzercade0712009-07-10 14:49:46 +0200663 "swrast,i965,radeon" @<:@default=auto@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700664 [with_dri_drivers="$withval"],
665 [with_dri_drivers=yes])
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800666if test "x$with_dri_drivers" = x; then
667 with_dri_drivers=no
668fi
669
670dnl If $with_dri_drivers is yes, directories will be added through
671dnl platform checks
672DRI_DIRS=""
673case "$with_dri_drivers" in
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100674no) ;;
675yes)
676 DRI_DIRS="yes"
677 ;;
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800678*)
679 # verify the requested driver directories exist
Dan Nicholsone6e4f252008-07-06 14:17:39 -0700680 dri_drivers=`IFS=', '; echo $with_dri_drivers`
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800681 for driver in $dri_drivers; do
682 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
683 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
684 done
685 DRI_DIRS="$dri_drivers"
686 ;;
687esac
688
Dan Nicholson44d99142007-12-05 18:47:01 -0800689dnl Just default to no EGL for now
690USING_EGL=0
Dan Nicholson297e16c2008-05-05 15:42:53 -0700691AC_SUBST([USING_EGL])
Dan Nicholson44d99142007-12-05 18:47:01 -0800692
693dnl Set DRI_DIRS, DEFINES and LIB_DEPS
694if test "$mesa_driver" = dri; then
695 # Use TLS in GLX?
696 if test "x$GLX_USE_TLS" = xyes; then
697 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
698 fi
699
700 if test "x$USING_EGL" = x1; then
701 PROGRAM_DIRS="egl"
702 fi
703
704 # Platform specific settings and drivers to build
705 case "$host_os" in
706 linux*)
707 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
Dan Nicholson44d99142007-12-05 18:47:01 -0800708 if test "x$driglx_direct" = xyes; then
709 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
710 fi
Jerome Glisse14f79d42008-12-18 13:36:07 +0100711 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800712
713 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -0800714 x86_64)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800715 # ffb, gamma, and sis are missing because they have not be
716 # converted to use the new interface. i810 are missing
717 # because there is no x86-64 system where they could *ever*
718 # be used.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100719 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400720 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
George Sapountzis280bf892008-05-11 14:43:40 +0300721 savage tdfx unichrome swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800722 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800723 ;;
724 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800725 # Build only the drivers for cards that exist on PowerPC.
726 # At some point MGA will be added, but not yet.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100727 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400728 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800729 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800730 ;;
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000731 sparc*)
732 # Build only the drivers for cards that exist on sparc`
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100733 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400734 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
Dave Airlie2b0e75e2008-06-12 12:06:50 +1000735 fi
736 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800737 esac
738 ;;
Hasso Tepper9f8df2d2008-04-09 10:51:21 -0700739 freebsd* | dragonfly*)
Dan Nicholson44d99142007-12-05 18:47:01 -0800740 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
741 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
742 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
743 if test "x$driglx_direct" = xyes; then
744 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
745 fi
746 if test "x$GXX" = xyes; then
747 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
748 fi
749
Dan Nicholsona76e2452007-12-07 11:25:08 -0800750 # ffb and gamma are missing because they have not been converted
751 # to use the new interface.
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100752 if test "x$DRI_DIRS" = "xyes"; then
Alex Deucher4138bdb2009-04-08 15:16:35 -0400753 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
George Sapountzis280bf892008-05-11 14:43:40 +0300754 unichrome savage sis swrast"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800755 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800756 ;;
Samuel Thibaultd18dd6a2009-04-23 05:43:22 -0700757 gnu*)
758 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
759 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
760 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700761 solaris*)
762 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
763 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
764 if test "x$driglx_direct" = xyes; then
765 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
766 fi
767 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800768 esac
Dan Nicholson112a40e2008-02-21 10:17:19 -0800769
770 # default drivers
Florent Thoumieb5095ab2008-07-28 14:44:43 +0100771 if test "x$DRI_DIRS" = "xyes"; then
Corbin Simpson8e4657a2009-10-22 12:29:30 -0700772 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
Corbin Simpsonfd7ee2b2009-10-22 12:57:13 -0700773 savage sis tdfx unichrome ffb swrast"
Dan Nicholson112a40e2008-02-21 10:17:19 -0800774 fi
775
Dan Nicholson44d99142007-12-05 18:47:01 -0800776 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
777
778 # Check for expat
779 EXPAT_INCLUDES=""
780 EXPAT_LIB=-lexpat
Dan Nicholson297e16c2008-05-05 15:42:53 -0700781 AC_ARG_WITH([expat],
782 [AS_HELP_STRING([--with-expat=DIR],
783 [expat install directory])],[
Dan Nicholson44d99142007-12-05 18:47:01 -0800784 EXPAT_INCLUDES="-I$withval/include"
785 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
786 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
787 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
788 ])
Dan Nicholson297e16c2008-05-05 15:42:53 -0700789 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
790 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
791 [AC_MSG_ERROR([Expat required for DRI.])])
Dan Nicholson44d99142007-12-05 18:47:01 -0800792
793 # put all the necessary libs together
Eric Anholt050c5332008-03-20 17:28:58 -0700794 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800795fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700796AC_SUBST([DRI_DIRS])
797AC_SUBST([EXPAT_INCLUDES])
798AC_SUBST([DRI_LIB_DEPS])
Dan Nicholson44d99142007-12-05 18:47:01 -0800799
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500800case $DRI_DIRS in
801*i915*|*i965*)
802 PKG_CHECK_MODULES([INTEL], [libdrm_intel])
803 ;;
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500804esac
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500805
Kristian Høgsberg27fe7a72010-01-07 10:29:29 -0500806case $DRI_DIRS in
Kristian Høgsberg8616cec2010-01-01 17:03:33 -0500807*radeon*|*r200*|*r300*|*r600*)
808 PKG_CHECK_MODULES([LIBDRM_RADEON],
809 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
810 HAVE_LIBDRM_RADEON=yes,
811 HAVE_LIBDRM_RADEON=no)
812
813 if test "$HAVE_LIBDRM_RADEON" = yes; then
814 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
815 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
816 fi
817 ;;
818esac
819AC_SUBST([RADEON_CFLAGS])
820AC_SUBST([RADEON_LDFLAGS])
821
822
Dan Nicholson44d99142007-12-05 18:47:01 -0800823dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700824dnl OSMesa configuration
825dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800826if test "$mesa_driver" = xlib; then
Dan Nicholson544ab202007-12-30 08:41:53 -0800827 default_gl_osmesa=yes
Dan Nicholson979ff512007-12-05 18:47:01 -0800828else
Dan Nicholson544ab202007-12-30 08:41:53 -0800829 default_gl_osmesa=no
Dan Nicholson44d99142007-12-05 18:47:01 -0800830fi
Dan Nicholson297e16c2008-05-05 15:42:53 -0700831AC_ARG_ENABLE([gl-osmesa],
Dan Nicholson544ab202007-12-30 08:41:53 -0800832 [AS_HELP_STRING([--enable-gl-osmesa],
833 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700834 [gl_osmesa="$enableval"],
835 [gl_osmesa="$default_gl_osmesa"])
Dan Nicholson544ab202007-12-30 08:41:53 -0800836if test "x$gl_osmesa" = xyes; then
837 if test "$mesa_driver" = osmesa; then
838 AC_MSG_ERROR([libGL is not available for OSMesa driver])
Dan Nicholson979ff512007-12-05 18:47:01 -0800839 else
Dan Nicholson544ab202007-12-30 08:41:53 -0800840 DRIVER_DIRS="$DRIVER_DIRS osmesa"
Dan Nicholson979ff512007-12-05 18:47:01 -0800841 fi
842fi
843
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800844dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
Dan Nicholson297e16c2008-05-05 15:42:53 -0700845AC_ARG_WITH([osmesa-bits],
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800846 [AS_HELP_STRING([--with-osmesa-bits=BITS],
847 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700848 [osmesa_bits="$withval"],
849 [osmesa_bits=8])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800850if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
851 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
852 osmesa_bits=8
853fi
854case "x$osmesa_bits" in
855x8)
856 OSMESA_LIB=OSMesa
857 ;;
858x16|x32)
859 OSMESA_LIB="OSMesa$osmesa_bits"
860 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
861 ;;
862*)
863 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
864 ;;
865esac
Dan Nicholson297e16c2008-05-05 15:42:53 -0700866AC_SUBST([OSMESA_LIB])
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800867
Dan Nicholson979ff512007-12-05 18:47:01 -0800868case "$mesa_driver" in
869osmesa)
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700870 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800871 if test "$enable_static" = no; then
Dan Nicholson4795dd52009-06-04 19:42:08 -0700872 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson88586332007-11-15 08:59:57 -0800873 else
874 OSMESA_LIB_DEPS=""
875 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800876 OSMESA_MESA_DEPS=""
Dan Nicholson4795dd52009-06-04 19:42:08 -0700877 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
Dan Nicholson979ff512007-12-05 18:47:01 -0800878 ;;
879*)
880 # Link OSMesa to libGL otherwise
881 OSMESA_LIB_DEPS=""
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700882 # only link libraries with osmesa if shared
Dan Nicholson88586332007-11-15 08:59:57 -0800883 if test "$enable_static" = no; then
884 OSMESA_MESA_DEPS='-l$(GL_LIB)'
885 else
886 OSMESA_MESA_DEPS=""
887 fi
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800888 OSMESA_PC_REQ="gl"
Dan Nicholson979ff512007-12-05 18:47:01 -0800889 ;;
890esac
Alan Coopersmith3cf6e622009-03-23 16:51:54 -0700891OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700892AC_SUBST([OSMESA_LIB_DEPS])
893AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800894AC_SUBST([OSMESA_PC_REQ])
895AC_SUBST([OSMESA_PC_LIB_PRIV])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700896
897dnl
Dan Nicholson53b37342009-02-25 17:45:34 -0800898dnl EGL configuration
899dnl
Dan Nicholson66f97862009-04-29 12:11:43 -0700900AC_ARG_ENABLE([egl],
901 [AS_HELP_STRING([--disable-egl],
902 [disable EGL library @<:@default=enabled@:>@])],
903 [enable_egl="$enableval"],
904 [enable_egl=yes])
905if test "x$enable_egl" = xyes; then
906 SRC_DIRS="$SRC_DIRS egl"
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800907 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
908 EGL_DRIVERS_DIRS=""
909 if test "$enable_static" != yes && test "$mesa_driver" != osmesa; then
910 # build egl_glx when libGL is built
911 EGL_DRIVERS_DIRS="glx"
Dan Nicholson66f97862009-04-29 12:11:43 -0700912 fi
Dan Nicholson53b37342009-02-25 17:45:34 -0800913fi
Dan Nicholson53b37342009-02-25 17:45:34 -0800914AC_SUBST([EGL_LIB_DEPS])
Chia-I Wud4c1ee02009-12-21 11:13:18 +0800915AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson53b37342009-02-25 17:45:34 -0800916
917dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700918dnl GLU configuration
919dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700920AC_ARG_ENABLE([glu],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800921 [AS_HELP_STRING([--disable-glu],
922 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700923 [enable_glu="$enableval"],
924 [enable_glu=yes])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700925if test "x$enable_glu" = xyes; then
926 SRC_DIRS="$SRC_DIRS glu"
927
Dan Nicholson979ff512007-12-05 18:47:01 -0800928 case "$mesa_driver" in
929 osmesa)
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800930 # If GLU is available and we have libOSMesa (not 16 or 32),
931 # we can build the osdemos
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800932 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800933 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
934 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700935
Dan Nicholson979ff512007-12-05 18:47:01 -0800936 # Link libGLU to libOSMesa instead of libGL
937 GLU_LIB_DEPS=""
Dan Nicholson8be02fc2008-12-14 09:35:29 -0800938 GLU_PC_REQ="osmesa"
Dan Nicholson88586332007-11-15 08:59:57 -0800939 if test "$enable_static" = no; then
940 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
941 else
942 GLU_MESA_DEPS=""
943 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800944 ;;
945 *)
Dan Nicholson88586332007-11-15 08:59:57 -0800946 # If static, empty GLU_LIB_DEPS and add libs for programs to link
Dan Nicholson71e208b2008-11-24 11:01:57 -0800947 GLU_PC_REQ="gl"
948 GLU_PC_LIB_PRIV="-lm"
Dan Nicholson88586332007-11-15 08:59:57 -0800949 if test "$enable_static" = no; then
950 GLU_LIB_DEPS="-lm"
951 GLU_MESA_DEPS='-l$(GL_LIB)'
952 else
953 GLU_LIB_DEPS=""
954 GLU_MESA_DEPS=""
955 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
956 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800957 ;;
958 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700959fi
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -0700960if test "$enable_static" = no; then
961 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
962fi
Dan Nicholson71e208b2008-11-24 11:01:57 -0800963GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
Dan Nicholson297e16c2008-05-05 15:42:53 -0700964AC_SUBST([GLU_LIB_DEPS])
965AC_SUBST([GLU_MESA_DEPS])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800966AC_SUBST([GLU_PC_REQ])
967AC_SUBST([GLU_PC_REQ_PRIV])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800968AC_SUBST([GLU_PC_LIB_PRIV])
969AC_SUBST([GLU_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -0700970
971dnl
972dnl GLw configuration
973dnl
Dan Nicholson297e16c2008-05-05 15:42:53 -0700974AC_ARG_ENABLE([glw],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800975 [AS_HELP_STRING([--disable-glw],
976 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -0700977 [enable_glw="$enableval"],
978 [enable_glw=yes])
Dan Nicholson979ff512007-12-05 18:47:01 -0800979dnl Don't build GLw on osmesa
980if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
981 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
982 enable_glw=no
983fi
Dan Nicholson776c60d2008-07-18 07:40:41 -0700984AC_ARG_ENABLE([motif],
985 [AS_HELP_STRING([--enable-motif],
986 [use Motif widgets in GLw @<:@default=disabled@:>@])],
987 [enable_motif="$enableval"],
988 [enable_motif=no])
989
Dan Nicholsondca1b792007-10-23 09:25:58 -0700990if test "x$enable_glw" = xyes; then
991 SRC_DIRS="$SRC_DIRS glw"
992 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -0700993 PKG_CHECK_MODULES([GLW],[x11 xt])
Dan Nicholson71e208b2008-11-24 11:01:57 -0800994 GLW_PC_REQ_PRIV="x11 xt"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700995 GLW_LIB_DEPS="$GLW_LIBS"
996 else
997 # should check these...
Dan Nicholson776c60d2008-07-18 07:40:41 -0700998 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
Dan Nicholson71e208b2008-11-24 11:01:57 -0800999 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1000 GLW_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001001 fi
1002
1003 GLW_SOURCES="GLwDrawA.c"
1004 MOTIF_CFLAGS=
1005 if test "x$enable_motif" = xyes; then
1006 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1007 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1008 if test "x$MOTIF_CONFIG" != xno; then
1009 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1010 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1011 else
1012 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1013 [AC_MSG_ERROR([Can't locate Motif headers])])
1014 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1015 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1016 fi
1017 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1018 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001019 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1020 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001021 fi
1022
Dan Nicholson88586332007-11-15 08:59:57 -08001023 # If static, empty GLW_LIB_DEPS and add libs for programs to link
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001024 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
Dan Nicholson88586332007-11-15 08:59:57 -08001025 if test "$enable_static" = no; then
1026 GLW_MESA_DEPS='-l$(GL_LIB)'
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001027 GLW_LIB_DEPS="$GLW_LIB_DEPS"
Dan Nicholson88586332007-11-15 08:59:57 -08001028 else
1029 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1030 GLW_LIB_DEPS=""
1031 GLW_MESA_DEPS=""
1032 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001033fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001034AC_SUBST([GLW_LIB_DEPS])
1035AC_SUBST([GLW_MESA_DEPS])
Dan Nicholson776c60d2008-07-18 07:40:41 -07001036AC_SUBST([GLW_SOURCES])
1037AC_SUBST([MOTIF_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001038AC_SUBST([GLW_PC_REQ_PRIV])
1039AC_SUBST([GLW_PC_LIB_PRIV])
1040AC_SUBST([GLW_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001041
1042dnl
1043dnl GLUT configuration
1044dnl
1045if test -f "$srcdir/include/GL/glut.h"; then
1046 default_glut=yes
1047else
1048 default_glut=no
1049fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001050AC_ARG_ENABLE([glut],
Dan Nicholson79ad4582007-12-07 19:11:01 -08001051 [AS_HELP_STRING([--disable-glut],
1052 [enable GLUT library @<:@default=enabled if source available@:>@])],
Dan Nicholson297e16c2008-05-05 15:42:53 -07001053 [enable_glut="$enableval"],
1054 [enable_glut="$default_glut"])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001055
1056dnl Can't build glut if GLU not available
1057if test "x$enable_glu$enable_glut" = xnoyes; then
1058 AC_MSG_WARN([Disabling glut since GLU is disabled])
1059 enable_glut=no
1060fi
Dan Nicholson979ff512007-12-05 18:47:01 -08001061dnl Don't build glut on osmesa
1062if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1063 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1064 enable_glut=no
1065fi
1066
Dan Nicholsondca1b792007-10-23 09:25:58 -07001067if test "x$enable_glut" = xyes; then
1068 SRC_DIRS="$SRC_DIRS glut/glx"
1069 GLUT_CFLAGS=""
1070 if test "x$GCC" = xyes; then
1071 GLUT_CFLAGS="-fexceptions"
1072 fi
1073 if test "$x11_pkgconfig" = yes; then
Dan Nicholson297e16c2008-05-05 15:42:53 -07001074 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001075 GLUT_PC_REQ_PRIV="x11 xmu xi"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001076 GLUT_LIB_DEPS="$GLUT_LIBS"
1077 else
1078 # should check these...
Dan Nicholson70d0c832007-12-07 11:12:20 -08001079 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
Dan Nicholson71e208b2008-11-24 11:01:57 -08001080 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1081 GLUT_PC_CFLAGS="$X11_INCLUDES"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001082 fi
Alan Coopersmith3cf6e622009-03-23 16:51:54 -07001083 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1084 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001085
1086 # If glut is available, we can build most programs
Dan Nicholson8e4d1472007-11-15 08:59:57 -08001087 if test "$with_demos" = yes; then
1088 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1089 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001090
Dan Nicholson88586332007-11-15 08:59:57 -08001091 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1092 if test "$enable_static" = no; then
1093 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1094 else
1095 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1096 GLUT_LIB_DEPS=""
1097 GLUT_MESA_DEPS=""
1098 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001099fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001100AC_SUBST([GLUT_LIB_DEPS])
1101AC_SUBST([GLUT_MESA_DEPS])
1102AC_SUBST([GLUT_CFLAGS])
Dan Nicholson71e208b2008-11-24 11:01:57 -08001103AC_SUBST([GLUT_PC_REQ_PRIV])
1104AC_SUBST([GLUT_PC_LIB_PRIV])
1105AC_SUBST([GLUT_PC_CFLAGS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001106
1107dnl
1108dnl Program library dependencies
1109dnl Only libm is added here if necessary as the libraries should
1110dnl be pulled in by the linker
1111dnl
1112if test "x$APP_LIB_DEPS" = x; then
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001113 case "$host_os" in
1114 solaris*)
1115 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1116 ;;
Jon TURNEY7eed6ab2009-06-08 16:02:18 +01001117 cygwin*)
1118 APP_LIB_DEPS="-lX11"
1119 ;;
Alan Coopersmithe1f9adc2008-06-20 17:58:53 -07001120 *)
1121 APP_LIB_DEPS="-lm"
1122 ;;
1123 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -07001124fi
Dan Nicholson297e16c2008-05-05 15:42:53 -07001125AC_SUBST([APP_LIB_DEPS])
1126AC_SUBST([PROGRAM_DIRS])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001127
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001128dnl
1129dnl Gallium configuration
1130dnl
1131AC_ARG_ENABLE([gallium],
1132 [AS_HELP_STRING([--disable-gallium],
1133 [build gallium @<:@default=enabled@:>@])],
1134 [enable_gallium="$enableval"],
1135 [enable_gallium=yes])
1136if test "x$enable_gallium" = xyes; then
1137 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1138fi
Dan Nicholsondca1b792007-10-23 09:25:58 -07001139
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001140dnl
1141dnl Gallium state trackers configuration
1142dnl
1143AC_ARG_WITH([state-trackers],
1144 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1145 [comma delimited state_trackers list, e.g.
1146 "egl,glx" @<:@default=auto@:>@])],
1147 [with_state_trackers="$withval"],
1148 [with_state_trackers=yes])
1149
1150case "$with_state_trackers" in
1151no)
1152 GALLIUM_STATE_TRACKERS_DIRS=""
1153 ;;
1154yes)
1155 # look at what else is built
1156 case "$mesa_driver" in
Jakob Bornecrantz373e6712009-04-18 23:13:56 +01001157 xlib)
1158 GALLIUM_STATE_TRACKERS_DIRS=glx
1159 ;;
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001160 dri)
Jakob Bornecrantzbc0532b2009-12-04 18:50:29 +00001161 GALLIUM_STATE_TRACKERS_DIRS="dri"
1162 if test "x$enable_egl" = xyes; then
1163 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1164 fi
1165 # Have only tested st/xorg on 1.6.0 servers
1166 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1167 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1168 HAVE_XORG="no")
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001169 ;;
1170 esac
1171 ;;
1172*)
1173 # verify the requested state tracker exist
1174 state_trackers=`IFS=', '; echo $with_state_trackers`
1175 for tracker in $state_trackers; do
1176 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1177 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
Dan Nicholson66f97862009-04-29 12:11:43 -07001178
1179 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1180 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1181 fi
Dave Airliee9d6ab72009-09-21 13:26:48 +10001182 if test "$tracker" = xorg; then
1183 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
Jakob Bornecrantz5c4bdbd2009-10-15 01:24:53 +01001184 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
Dave Airliee9d6ab72009-09-21 13:26:48 +10001185 HAVE_XEXTPROTO_71="no")
Jakob Bornecrantz5c4bdbd2009-10-15 01:24:53 +01001186 fi
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001187 done
1188 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1189 ;;
1190esac
1191
Joel Bosveld8acca482009-03-06 08:46:08 +09001192AC_ARG_WITH([xorg-driver-dir],
1193 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1194 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1195 [XORG_DRIVER_INSTALL_DIR="$withval"],
1196 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1197AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1198
Tom Fogal7085dce2009-08-13 19:40:30 -06001199AC_ARG_WITH([max-width],
1200 [AS_HELP_STRING([--with-max-width=N],
1201 [Maximum framebuffer width (4096)])],
1202 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1203 AS_IF([test "${withval}" -gt "4096"],
1204 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1205)
1206AC_ARG_WITH([max-height],
1207 [AS_HELP_STRING([--with-max-height=N],
1208 [Maximum framebuffer height (4096)])],
1209 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1210 AS_IF([test "${withval}" -gt "4096"],
1211 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1212)
1213
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001214dnl
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001215dnl Gallium SVGA configuration
1216dnl
1217AC_ARG_ENABLE([gallium-svga],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001218 [AS_HELP_STRING([--enable-gallium-svga],
1219 [build gallium SVGA @<:@default=disabled@:>@])],
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001220 [enable_gallium_svga="$enableval"],
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001221 [enable_gallium_svga=auto])
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001222if test "x$enable_gallium_svga" = xyes; then
1223 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1224 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz5e6fff72009-07-19 09:22:31 +02001225elif test "x$enable_gallium_svga" = xauto; then
1226 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
Jakob Bornecrantz60769b22009-11-12 01:28:26 +01001227fi
1228
1229dnl
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001230dnl Gallium Intel configuration
1231dnl
1232AC_ARG_ENABLE([gallium-intel],
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001233 [AS_HELP_STRING([--enable-gallium-intel],
1234 [build gallium intel @<:@default=disabled@:>@])],
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001235 [enable_gallium_intel="$enableval"],
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001236 [enable_gallium_intel=auto])
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001237if test "x$enable_gallium_intel" = xyes; then
Jakob Bornecrantzce4f23a2009-11-04 23:02:13 +00001238 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1239 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
Jakob Bornecrantz8ac25032009-12-04 16:01:41 +00001240elif test "x$enable_gallium_intel" = xauto; then
Keith Whitwellaa026832009-12-22 09:40:39 +00001241 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001242fi
1243
1244dnl
1245dnl Gallium Radeon configuration
1246dnl
1247AC_ARG_ENABLE([gallium-radeon],
1248 [AS_HELP_STRING([--enable-gallium-radeon],
1249 [build gallium radeon @<:@default=disabled@:>@])],
1250 [enable_gallium_radeon="$enableval"],
1251 [enable_gallium_radeon=no])
1252if test "x$enable_gallium_radeon" = xyes; then
1253 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001254 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001255fi
1256
1257dnl
Thierry Vignaud1402ea82009-09-14 11:48:51 -06001258dnl Gallium Nouveau configuration
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001259dnl
1260AC_ARG_ENABLE([gallium-nouveau],
1261 [AS_HELP_STRING([--enable-gallium-nouveau],
1262 [build gallium nouveau @<:@default=disabled@:>@])],
1263 [enable_gallium_nouveau="$enableval"],
1264 [enable_gallium_nouveau=no])
1265if test "x$enable_gallium_nouveau" = xyes; then
1266 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
Ben Skeggsbc466be2009-06-04 10:19:04 +10001267 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001268fi
1269
1270
Dan Nicholsondca1b792007-10-23 09:25:58 -07001271dnl Restore LDFLAGS and CPPFLAGS
1272LDFLAGS="$_SAVE_LDFLAGS"
1273CPPFLAGS="$_SAVE_CPPFLAGS"
1274
1275dnl Substitute the config
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -08001276AC_CONFIG_FILES([configs/autoconf])
Dan Nicholsondca1b792007-10-23 09:25:58 -07001277
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001278dnl Replace the configs/current symlink
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001279AC_CONFIG_COMMANDS([configs],[
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001280if test -f configs/current || test -L configs/current; then
1281 rm -f configs/current
1282fi
1283ln -s autoconf configs/current
Dan Nicholsone14ebbc2008-05-06 11:28:43 -07001284])
1285
1286AC_OUTPUT
Dan Nicholsonaab38cf2007-12-11 08:21:51 -08001287
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001288dnl
1289dnl Output some configuration info for the user
1290dnl
1291echo ""
1292echo " prefix: $prefix"
1293echo " exec_prefix: $exec_prefix"
1294echo " libdir: $libdir"
Dan Nicholson11ac5b22008-07-03 09:17:44 -07001295echo " includedir: $includedir"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001296
1297dnl Driver info
1298echo ""
1299echo " Driver: $mesa_driver"
Dan Nicholson544ab202007-12-30 08:41:53 -08001300if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1301 echo " OSMesa: lib$OSMESA_LIB"
1302else
1303 echo " OSMesa: no"
1304fi
1305if test "$mesa_driver" = dri; then
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001306 # cleanup the drivers var
1307 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001308if test "x$DRI_DIRS" = x; then
1309 echo " DRI drivers: no"
1310else
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001311 echo " DRI drivers: $dri_dirs"
Florent Thoumieb5095ab2008-07-28 14:44:43 +01001312fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001313 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -08001314fi
RALOVICH, Kristóf5f19f5c2008-11-04 11:53:32 +01001315echo " Use XCB: $enable_xcb"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001316
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001317echo ""
1318if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1319 echo " Gallium: yes"
1320 echo " Gallium dirs: $GALLIUM_DIRS"
1321 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
Jakob Bornecrantz3ede3772009-02-13 00:57:47 +01001322 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
Jakob Bornecrantzd67bd602009-02-20 11:03:18 +00001323 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
Jakob Bornecrantz7e54d7d2009-02-11 02:38:21 +01001324 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1325else
1326 echo " Gallium: no"
1327fi
1328
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001329dnl Libraries
1330echo ""
1331echo " Shared libs: $enable_shared"
1332echo " Static libs: $enable_static"
Dan Nicholson66f97862009-04-29 12:11:43 -07001333echo " EGL: $enable_egl"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001334echo " GLU: $enable_glu"
Dan Nicholson776c60d2008-07-18 07:40:41 -07001335echo " GLw: $enable_glw (Motif: $enable_motif)"
Dan Nicholson9cad8e32007-11-30 08:49:57 -08001336echo " glut: $enable_glut"
1337
1338dnl Programs
1339# cleanup the programs var for display
1340program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1341if test "x$program_dirs" = x; then
1342 echo " Demos: no"
1343else
1344 echo " Demos: $program_dirs"
1345fi
1346
Dan Nicholson16a07fb2007-12-12 09:12:15 -08001347dnl Compiler options
1348# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1349cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1350 $SED 's/^ *//;s/ */ /;s/ *$//'`
1351cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1352 $SED 's/^ *//;s/ */ /;s/ *$//'`
1353defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1354echo ""
1355echo " CFLAGS: $cflags"
1356echo " CXXFLAGS: $cxxflags"
1357echo " Macros: $defines"
1358
Dan Nicholsondca1b792007-10-23 09:25:58 -07001359echo ""
Dan Nicholsonb6459422008-03-24 10:01:50 -07001360echo " Run '${MAKE-make}' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -07001361echo ""