blob: 89328486b4a570f7e3fa7b770aa1a9642e4e44ef [file] [log] [blame]
Dan Nicholsondca1b792007-10-23 09:25:58 -07001dnl Process this file with autoconf to create configure.
2
3AC_PREREQ(2.59)
4
5dnl Versioning
6dnl Make version number available to autoconf and configure
7m4_define(mesa_major, 7)
8m4_define(mesa_minor, 1)
9m4_define(mesa_tiny, 0)
10m4_define(mesa_version, [mesa_major().mesa_minor().mesa_tiny()])
11
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -080012AC_INIT([Mesa],[mesa_version()],
13 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
Dan Nicholsondca1b792007-10-23 09:25:58 -070014AC_CONFIG_AUX_DIR(bin)
15AC_CANONICAL_HOST
16
17dnl Substitute the version number into shell variables
18MESA_MAJOR=mesa_major()
19MESA_MINOR=mesa_minor()
20MESA_TINY=mesa_tiny()
21AC_SUBST(MESA_MAJOR)
22AC_SUBST(MESA_MINOR)
23AC_SUBST(MESA_TINY)
24
25dnl Check for progs
26AC_PROG_CPP
27AC_PROG_CC
28AC_PROG_CXX
29AC_PATH_PROG(MAKE, make)
30AC_PATH_PROG(MKDEP, makedepend)
31AC_PATH_PROG(SED, sed)
Dan Nicholson41b00702007-12-12 08:48:30 -080032
33dnl Make sure the pkg-config macros are defined
34m4_ifdef([PKG_PROG_PKG_CONFIG],,[
35 AC_MSG_ERROR([The pkg-config autoconf macros are not defined.
36 Did you run 'make configure'?])]
37)
Dan Nicholsondca1b792007-10-23 09:25:58 -070038PKG_PROG_PKG_CONFIG()
39
40dnl LIB_DIR - library basename
41LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
42AC_SUBST(LIB_DIR)
43
44dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
45_SAVE_LDFLAGS="$LDFLAGS"
46AC_ARG_VAR(EXTRA_LIB_PATH,[Extra -L paths for the linker])
47AC_SUBST(EXTRA_LIB_PATH)
48
49dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
50_SAVE_CPPFLAGS="$CPPFLAGS"
51AC_ARG_VAR(X11_INCLUDES,[Extra -I paths for X11 headers])
52AC_SUBST(X11_INCLUDES)
53
54dnl Compiler macros
55DEFINES=""
56AC_SUBST(DEFINES)
57if test "x$GCC" = xyes; then
58 DEFINES="-D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
59fi
60case "$host_os" in
61linux*)
62 DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
63 ;;
64esac
65
66dnl Add flags for gcc and g++
67if test "x$GCC" = xyes; then
68 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
Dan Nicholson0c275b62008-01-15 22:52:25 -080069
70 # Work around aliasing bugs - developers should comment this out
71 CFLAGS="$CFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -070072fi
73if test "x$GXX" = xyes; then
74 CXXFLAGS="$CXXFLAGS -Wall"
Dan Nicholson0c275b62008-01-15 22:52:25 -080075
76 # Work around aliasing bugs - developers should comment this out
77 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
Dan Nicholsondca1b792007-10-23 09:25:58 -070078fi
79
80dnl These should be unnecessary, but let the user set them if they want
81AC_ARG_VAR(OPT_FLAGS, [Additional optimization flags for the compiler.
82 Default is to use CFLAGS.])
83AC_ARG_VAR(ARCH_FLAGS, [Additional architecture specific flags for the
84 compiler. Default is to use CFLAGS.])
85AC_SUBST(OPT_FLAGS)
86AC_SUBST(ARCH_FLAGS)
87
88dnl
Dan Nicholsonab57cba2007-12-26 11:12:29 -060089dnl Hacks to enable 32 or 64 bit build
90dnl
91AC_ARG_ENABLE(32-bit,
92 [AS_HELP_STRING([--enable-32-bit],
93 [build 32-bit libraries @<:@default=auto@:>@])],
94 enable_32bit="$enableval",
95 enable_32bit=auto
96)
97if test "x$enable_32bit" = xyes; then
98 if test "x$GCC" = xyes; then
99 CFLAGS="$CFLAGS -m32"
100 fi
101 if test "x$GXX" = xyes; then
102 CXXFLAGS="$CXXFLAGS -m32"
103 fi
104fi
105AC_ARG_ENABLE(64-bit,
106 [AS_HELP_STRING([--enable-64-bit],
107 [build 64-bit libraries @<:@default=auto@:>@])],
108 enable_64bit="$enableval",
109 enable_64bit=auto
110)
111if test "x$enable_64bit" = xyes; then
112 if test "x$GCC" = xyes; then
113 CFLAGS="$CFLAGS -m64"
114 fi
115 if test "x$GXX" = xyes; then
116 CXXFLAGS="$CXXFLAGS -m64"
117 fi
118fi
119
120dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800121dnl shared/static libraries, mimic libtool options
122dnl
123AC_ARG_ENABLE(static,
124 [AS_HELP_STRING([--enable-static],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800125 [build static libraries @<:@default=disabled@:>@])],
Dan Nicholson88586332007-11-15 08:59:57 -0800126 enable_static="$enableval",
127 enable_static=no
128)
129case "x$enable_static" in
130xyes|xno ) ;;
131x ) enable_static=no ;;
132* )
133 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
134 ;;
135esac
136AC_ARG_ENABLE(shared,
137 [AS_HELP_STRING([--disable-shared],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800138 [build shared libraries @<:@default=enabled@:>@])],
Dan Nicholson88586332007-11-15 08:59:57 -0800139 enable_shared="$enableval",
140 enable_shared=yes
141)
142case "x$enable_shared" in
143xyes|xno ) ;;
144x ) enable_shared=yes ;;
145* )
146 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
147 ;;
148esac
149
150dnl Can't have static and shared libraries, default to static if user
151dnl explicitly requested. If both disabled, set to static since shared
152dnl was explicitly requirested.
153case "x$enable_static$enable_shared" in
154xyesyes )
155 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
156 enable_shared=no
157 ;;
158xnono )
159 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
160 enable_static=yes
161 ;;
162esac
163
164dnl
165dnl mklib options
166dnl
167AC_ARG_VAR(MKLIB_OPTIONS,[Options for the Mesa library script, mklib])
168if test "$enable_static" = yes; then
169 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
170fi
171AC_SUBST(MKLIB_OPTIONS)
172
Dan Nicholson23656c42007-12-12 09:02:31 -0800173dnl
174dnl other compiler options
175dnl
176AC_ARG_ENABLE(debug,
177 [AS_HELP_STRING([--enable-debug],
178 [use debug compiler flags and macros @<:@default=disabled@:>@])],
179 enable_debug="$enableval",
180 enable_debug=no
181)
182if test "x$enable_debug" = xyes; then
183 DEFINES="$DEFINES -DDEBUG"
184 if test "x$GCC" = xyes; then
185 CFLAGS="$CFLAGS -g"
186 fi
187 if test "x$GXX" = xyes; then
188 CXXFLAGS="$CXXFLAGS -g"
189 fi
190fi
Dan Nicholson3e288622007-12-12 09:02:31 -0800191dnl These will be used near the end in the arch specific options
192AC_ARG_ENABLE(asm,
193 [AS_HELP_STRING([--disable-asm],
194 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
195 enable_asm="$enableval",
196 enable_asm=yes
197)
Dan Nicholson88586332007-11-15 08:59:57 -0800198
199dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700200dnl library names
201dnl
Dan Nicholson88586332007-11-15 08:59:57 -0800202if test "$enable_static" = yes; then
203 GL_LIB_NAME='lib$(GL_LIB).a'
204 GLU_LIB_NAME='lib$(GLU_LIB).a'
205 GLUT_LIB_NAME='lib$(GLUT_LIB).a'
206 GLW_LIB_NAME='lib$(GLW_LIB).a'
207 OSMESA_LIB_NAME='lib$(OSMESA_LIB).a'
208else
209 GL_LIB_NAME='lib$(GL_LIB).so'
210 GLU_LIB_NAME='lib$(GLU_LIB).so'
211 GLUT_LIB_NAME='lib$(GLUT_LIB).so'
212 GLW_LIB_NAME='lib$(GLW_LIB).so'
213 OSMESA_LIB_NAME='lib$(OSMESA_LIB).so'
214fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700215AC_SUBST(GL_LIB_NAME)
216AC_SUBST(GLU_LIB_NAME)
217AC_SUBST(GLUT_LIB_NAME)
218AC_SUBST(GLW_LIB_NAME)
219AC_SUBST(OSMESA_LIB_NAME)
220
221dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800222dnl Driver configuration. Options are xlib, dri and osmesa right now.
Dan Nicholson979ff512007-12-05 18:47:01 -0800223dnl More later: directfb, fbdev, ...
Dan Nicholson44d99142007-12-05 18:47:01 -0800224dnl
225AC_ARG_WITH(driver,
226 [AS_HELP_STRING([--with-driver=DRIVER],
Dan Nicholsona1307182007-12-12 17:49:49 -0800227 [driver for Mesa: xlib,dri,osmesa @<:@default=xlib@:>@])],
Dan Nicholson44d99142007-12-05 18:47:01 -0800228 mesa_driver="$withval",
Dan Nicholsona1307182007-12-12 17:49:49 -0800229 mesa_driver="xlib")
Dan Nicholson44d99142007-12-05 18:47:01 -0800230dnl Check for valid option
231case "x$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800232xxlib|xdri|xosmesa)
Dan Nicholson44d99142007-12-05 18:47:01 -0800233 ;;
234*)
235 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
236 ;;
237esac
238
239dnl
240dnl Driver specific build directories
Dan Nicholsondca1b792007-10-23 09:25:58 -0700241dnl
242SRC_DIRS="mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700243GLU_DIRS="sgi"
Dan Nicholson44d99142007-12-05 18:47:01 -0800244WINDOW_SYSTEM=""
245case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800246xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800247 DRIVER_DIRS="x11"
248 ;;
249dri)
250 SRC_DIRS="glx/x11 $SRC_DIRS"
251 DRIVER_DIRS="dri"
252 WINDOW_SYSTEM="dri"
253 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800254osmesa)
255 DRIVER_DIRS="osmesa"
256 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800257esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700258AC_SUBST(SRC_DIRS)
259AC_SUBST(GLU_DIRS)
260AC_SUBST(DRIVER_DIRS)
Dan Nicholson44d99142007-12-05 18:47:01 -0800261AC_SUBST(WINDOW_SYSTEM)
Dan Nicholsondca1b792007-10-23 09:25:58 -0700262
263dnl
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800264dnl User supplied program configuration
265dnl
266if test -d "$srcdir/progs/demos"; then
267 default_demos=yes
268else
269 default_demos=no
270fi
271AC_ARG_WITH(demos,
272 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
273 [optional comma delimited demo directories to build
Dan Nicholsonc79c93c2007-12-12 18:13:04 -0800274 @<:@default=auto if source available@:>@])],
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800275 with_demos="$withval",
276 with_demos="$default_demos")
277if test "x$with_demos" = x; then
278 with_demos=no
279fi
280
281dnl If $with_demos is yes, directories will be added as libs available
282PROGRAM_DIRS=""
283case "$with_demos" in
284no|yes) ;;
285*)
286 # verify the requested demos directories exist
287 demos=`IFS=,; echo $with_demos`
288 for demo in $demos; do
289 test -d "$srcdir/progs/$demo" || \
290 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
291 done
292 PROGRAM_DIRS="$demos"
293 ;;
294esac
295
296dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700297dnl Find out if X is available. The variables have_x or no_x will be
298dnl set and used later in the driver setups
299dnl
300if test -n "$PKG_CONFIG"; then
301 AC_MSG_CHECKING([pkg-config files for X11 are available])
302 if $PKG_CONFIG --exists x11; then
303 x11_pkgconfig=yes
304 have_x=yes
305 AC_MSG_RESULT(yes)
306 else
307 x11_pkgconfig=no
308 no_x=yes
309 AC_MSG_RESULT(no)
310 fi
311else
312 x11_pkgconfig=no
313fi
314dnl Use the autoconf macro if no pkg-config files
315if test "$x11_pkgconfig" = no; then
316 AC_PATH_XTRA
317fi
318
Dan Nicholson44d99142007-12-05 18:47:01 -0800319dnl We need X for xlib and dri, so bomb now if it's not found
320case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800321xlib|dri)
Dan Nicholson44d99142007-12-05 18:47:01 -0800322 if test "$no_x" = yes; then
323 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
324 fi
325 ;;
326esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700327
Dan Nicholson44d99142007-12-05 18:47:01 -0800328dnl
329dnl libGL configuration per driver
330dnl
331case "$mesa_driver" in
Dan Nicholsona1307182007-12-12 17:49:49 -0800332xlib)
Dan Nicholson44d99142007-12-05 18:47:01 -0800333 if test "$x11_pkgconfig" = yes; then
Dan Nicholsona1307182007-12-12 17:49:49 -0800334 PKG_CHECK_MODULES(XLIBGL, x11 xext)
335 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
336 GL_LIB_DEPS="$XLIBGL_LIBS"
Dan Nicholson44d99142007-12-05 18:47:01 -0800337 else
338 # should check these...
339 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
340 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
341 fi
342 GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread"
Dan Nicholson88586332007-11-15 08:59:57 -0800343
344 # if static, move the external libraries to the programs
345 # and empty the libraries for libGL
346 if test "$enable_static" = yes; then
347 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
348 GL_LIB_DEPS=""
349 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800350 ;;
351dri)
Dan Nicholson88586332007-11-15 08:59:57 -0800352 # DRI must be shared, I think
353 if test "$enable_static" = yes; then
354 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
355 fi
356
Dan Nicholson44d99142007-12-05 18:47:01 -0800357 # Check for libdrm
358 PKG_CHECK_MODULES(LIBDRM, libdrm)
359
360 # find the DRI deps for libGL
361 if test "$x11_pkgconfig" = yes; then
362 PKG_CHECK_MODULES(DRIGL, x11 xext xxf86vm xdamage xfixes)
363 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
364 GL_LIB_DEPS="$DRIGL_LIBS"
365 else
366 # should check these...
367 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
368 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
369 fi
370
371 # need DRM libs, -lpthread, etc.
372 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread -ldl"
373 ;;
Dan Nicholson979ff512007-12-05 18:47:01 -0800374osmesa)
375 # No libGL for osmesa
376 GL_LIB_DEPS=""
377 ;;
Dan Nicholson44d99142007-12-05 18:47:01 -0800378esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700379AC_SUBST(GL_LIB_DEPS)
380
381dnl
382dnl More X11 setup
383dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800384if test "$mesa_driver" = xlib; then
Dan Nicholsondca1b792007-10-23 09:25:58 -0700385 DEFINES="$DEFINES -DUSE_XSHM"
386fi
387
388dnl
Dan Nicholson44d99142007-12-05 18:47:01 -0800389dnl More DRI setup
390dnl
391AC_ARG_ENABLE(glx-tls,
392 [AS_HELP_STRING([--enable-glx-tls],
Dan Nicholson79ad4582007-12-07 19:11:01 -0800393 [enable TLS support in GLX @<:@default=disabled@:>@])],
Dan Nicholson44d99142007-12-05 18:47:01 -0800394 GLX_USE_TLS="$enableval",
395 GLX_USE_TLS=no)
396dnl Directory for DRI drivers
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800397AC_ARG_WITH(dri-driverdir,
398 [AS_HELP_STRING([--with-dri-driverdir=DIR],
Dan Nicholson44d99142007-12-05 18:47:01 -0800399 [directory for the DRI drivers @<:@/usr/X11R6/lib/modules/dri@:>@])],
400 DRI_DRIVER_INSTALL_DIR="$withval",
401 DRI_DRIVER_INSTALL_DIR='/usr/X11R6/lib/modules/dri')
402AC_SUBST(DRI_DRIVER_INSTALL_DIR)
403dnl Direct rendering or just indirect rendering
404AC_ARG_ENABLE(driglx-direct,
Dan Nicholson79ad4582007-12-07 19:11:01 -0800405 [AS_HELP_STRING([--disable-driglx-direct],
406 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
Dan Nicholson44d99142007-12-05 18:47:01 -0800407 driglx_direct="$enableval",
408 driglx_direct="yes")
409
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800410dnl Which drivers to build - default is chosen by platform
411AC_ARG_WITH(dri-drivers,
412 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
Dan Nicholsonc79c93c2007-12-12 18:13:04 -0800413 [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])],
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800414 with_dri_drivers="$withval",
415 with_dri_drivers=yes)
416if test "x$with_dri_drivers" = x; then
417 with_dri_drivers=no
418fi
419
420dnl If $with_dri_drivers is yes, directories will be added through
421dnl platform checks
422DRI_DIRS=""
423case "$with_dri_drivers" in
424no|yes) ;;
425*)
426 # verify the requested driver directories exist
427 dri_drivers=`IFS=,; echo $with_dri_drivers`
428 for driver in $dri_drivers; do
429 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
430 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
431 done
432 DRI_DIRS="$dri_drivers"
433 ;;
434esac
435
Dan Nicholson44d99142007-12-05 18:47:01 -0800436dnl Just default to no EGL for now
437USING_EGL=0
438AC_SUBST(USING_EGL)
439
440dnl Set DRI_DIRS, DEFINES and LIB_DEPS
441if test "$mesa_driver" = dri; then
442 # Use TLS in GLX?
443 if test "x$GLX_USE_TLS" = xyes; then
444 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
445 fi
446
447 if test "x$USING_EGL" = x1; then
448 PROGRAM_DIRS="egl"
449 fi
450
Dan Nicholsona76e2452007-12-07 11:25:08 -0800451 # default drivers
452 if test "x$DRI_DIRS" = x; then
453 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
454 savage sis tdfx trident unichrome ffb"
455 fi
456
Dan Nicholson44d99142007-12-05 18:47:01 -0800457 # Platform specific settings and drivers to build
458 case "$host_os" in
459 linux*)
460 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
461 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
462 if test "x$driglx_direct" = xyes; then
463 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
464 fi
465
466 case "$host_cpu" in
Dan Nicholson44d99142007-12-05 18:47:01 -0800467 x86_64)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800468 # ffb, gamma, and sis are missing because they have not be
469 # converted to use the new interface. i810 are missing
470 # because there is no x86-64 system where they could *ever*
471 # be used.
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800472 if test "x$DRI_DIRS" = x; then
Dan Nicholsona76e2452007-12-07 11:25:08 -0800473 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
474 savage tdfx unichrome"
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800475 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800476 ;;
477 powerpc*)
Dan Nicholsona76e2452007-12-07 11:25:08 -0800478 # Build only the drivers for cards that exist on PowerPC.
479 # At some point MGA will be added, but not yet.
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800480 if test "x$DRI_DIRS" = x; then
481 DRI_DIRS="mach64 r128 r200 r300 radeon tdfx"
482 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800483 ;;
484 esac
485 ;;
486 freebsd*)
487 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
488 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
489 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
490 if test "x$driglx_direct" = xyes; then
491 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
492 fi
493 if test "x$GXX" = xyes; then
494 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
495 fi
496
Dan Nicholsona76e2452007-12-07 11:25:08 -0800497 # ffb and gamma are missing because they have not been converted
498 # to use the new interface.
Dan Nicholsonaf3d2f22007-11-15 08:59:57 -0800499 if test "x$DRI_DIRS" = x; then
500 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
501 unichrome savage sis"
502 fi
Dan Nicholson44d99142007-12-05 18:47:01 -0800503 ;;
504 esac
505 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
506
507 # Check for expat
508 EXPAT_INCLUDES=""
509 EXPAT_LIB=-lexpat
510 AC_ARG_WITH(expat, AS_HELP_STRING([--with-expat=DIR],
511 [expat install directory]),[
512 EXPAT_INCLUDES="-I$withval/include"
513 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
514 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
515 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
516 ])
517 AC_CHECK_HEADER(expat.h,,AC_MSG_ERROR([Expat required for DRI.]))
518 AC_CHECK_LIB(expat, XML_ParserCreate,,
519 AC_MSG_ERROR([Expat required for DRI.]))
520
521 # put all the necessary libs together
522 DRI_LIB_DEPS="$LIBDRM_LIBS $EXPAT_LIB -lm -lpthread -ldl"
523fi
524AC_SUBST(DRI_DIRS)
525AC_SUBST(EXPAT_INCLUDES)
526AC_SUBST(DRI_LIB_DEPS)
527
528dnl
Dan Nicholsondca1b792007-10-23 09:25:58 -0700529dnl OSMesa configuration
530dnl
Dan Nicholsona1307182007-12-12 17:49:49 -0800531if test "$mesa_driver" = xlib; then
Dan Nicholson544ab202007-12-30 08:41:53 -0800532 default_gl_osmesa=yes
Dan Nicholson979ff512007-12-05 18:47:01 -0800533else
Dan Nicholson544ab202007-12-30 08:41:53 -0800534 default_gl_osmesa=no
Dan Nicholson44d99142007-12-05 18:47:01 -0800535fi
Dan Nicholson544ab202007-12-30 08:41:53 -0800536AC_ARG_ENABLE(gl-osmesa,
537 [AS_HELP_STRING([--enable-gl-osmesa],
538 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
539 gl_osmesa="$enableval",
540 gl_osmesa="$default_gl_osmesa")
541if test "x$gl_osmesa" = xyes; then
542 if test "$mesa_driver" = osmesa; then
543 AC_MSG_ERROR([libGL is not available for OSMesa driver])
Dan Nicholson979ff512007-12-05 18:47:01 -0800544 else
Dan Nicholson544ab202007-12-30 08:41:53 -0800545 DRIVER_DIRS="$DRIVER_DIRS osmesa"
Dan Nicholson979ff512007-12-05 18:47:01 -0800546 fi
547fi
548
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800549dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
550AC_ARG_WITH(osmesa-bits,
551 [AS_HELP_STRING([--with-osmesa-bits=BITS],
552 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
553 osmesa_bits="$withval",
554 osmesa_bits=8)
555if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
556 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
557 osmesa_bits=8
558fi
559case "x$osmesa_bits" in
560x8)
561 OSMESA_LIB=OSMesa
562 ;;
563x16|x32)
564 OSMESA_LIB="OSMesa$osmesa_bits"
565 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
566 ;;
567*)
568 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
569 ;;
570esac
571AC_SUBST(OSMESA_LIB)
572
Dan Nicholson979ff512007-12-05 18:47:01 -0800573case "$mesa_driver" in
574osmesa)
Dan Nicholson88586332007-11-15 08:59:57 -0800575 # only link librararies with osmesa if shared
576 if test "$enable_static" = no; then
577 OSMESA_LIB_DEPS="-lm -lpthread"
578 else
579 OSMESA_LIB_DEPS=""
580 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800581 OSMESA_MESA_DEPS=""
582 ;;
583*)
584 # Link OSMesa to libGL otherwise
585 OSMESA_LIB_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -0800586 # only link librararies with osmesa if shared
587 if test "$enable_static" = no; then
588 OSMESA_MESA_DEPS='-l$(GL_LIB)'
589 else
590 OSMESA_MESA_DEPS=""
591 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800592 ;;
593esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700594AC_SUBST(OSMESA_LIB_DEPS)
595AC_SUBST(OSMESA_MESA_DEPS)
596
597dnl
598dnl GLU configuration
599dnl
600AC_ARG_ENABLE(glu,
Dan Nicholson79ad4582007-12-07 19:11:01 -0800601 [AS_HELP_STRING([--disable-glu],
602 [enable OpenGL Utility library @<:@default=enabled@:>@])],
Dan Nicholsondca1b792007-10-23 09:25:58 -0700603 enable_glu="$enableval",
604 enable_glu=yes)
605if test "x$enable_glu" = xyes; then
606 SRC_DIRS="$SRC_DIRS glu"
607
Dan Nicholson979ff512007-12-05 18:47:01 -0800608 case "$mesa_driver" in
609 osmesa)
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800610 # If GLU is available and we have libOSMesa (not 16 or 32),
611 # we can build the osdemos
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800612 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
Dan Nicholson6689f9e2007-12-05 21:04:15 -0800613 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
614 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700615
Dan Nicholson979ff512007-12-05 18:47:01 -0800616 # Link libGLU to libOSMesa instead of libGL
617 GLU_LIB_DEPS=""
Dan Nicholson88586332007-11-15 08:59:57 -0800618 if test "$enable_static" = no; then
619 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
620 else
621 GLU_MESA_DEPS=""
622 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800623 ;;
624 *)
625 # If GLU is available, we can build the xdemos
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800626 if test "$with_demos" = yes; then
627 PROGRAM_DIRS="$PROGRAM_DIRS xdemos"
628 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800629
Dan Nicholson88586332007-11-15 08:59:57 -0800630 # If static, empty GLU_LIB_DEPS and add libs for programs to link
631 if test "$enable_static" = no; then
632 GLU_LIB_DEPS="-lm"
633 GLU_MESA_DEPS='-l$(GL_LIB)'
634 else
635 GLU_LIB_DEPS=""
636 GLU_MESA_DEPS=""
637 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
638 fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800639 ;;
640 esac
Dan Nicholsondca1b792007-10-23 09:25:58 -0700641fi
642AC_SUBST(GLU_LIB_DEPS)
643AC_SUBST(GLU_MESA_DEPS)
644
645dnl
646dnl GLw configuration
647dnl
648AC_ARG_ENABLE(glw,
Dan Nicholson79ad4582007-12-07 19:11:01 -0800649 [AS_HELP_STRING([--disable-glw],
650 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
Dan Nicholsondca1b792007-10-23 09:25:58 -0700651 enable_glw="$enableval",
652 enable_glw=yes)
Dan Nicholson979ff512007-12-05 18:47:01 -0800653dnl Don't build GLw on osmesa
654if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
655 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
656 enable_glw=no
657fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700658if test "x$enable_glw" = xyes; then
659 SRC_DIRS="$SRC_DIRS glw"
660 if test "$x11_pkgconfig" = yes; then
661 PKG_CHECK_MODULES(GLW, x11 xt)
662 GLW_LIB_DEPS="$GLW_LIBS"
663 else
664 # should check these...
665 GLW_LIB_DEPS="$X_LIBS -lX11 -lXt"
666 fi
667
Dan Nicholson88586332007-11-15 08:59:57 -0800668 # If static, empty GLW_LIB_DEPS and add libs for programs to link
669 if test "$enable_static" = no; then
670 GLW_MESA_DEPS='-l$(GL_LIB)'
671 else
672 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
673 GLW_LIB_DEPS=""
674 GLW_MESA_DEPS=""
675 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700676fi
677AC_SUBST(GLW_LIB_DEPS)
678AC_SUBST(GLW_MESA_DEPS)
679
680dnl
681dnl GLUT configuration
682dnl
683if test -f "$srcdir/include/GL/glut.h"; then
684 default_glut=yes
685else
686 default_glut=no
687fi
688AC_ARG_ENABLE(glut,
Dan Nicholson79ad4582007-12-07 19:11:01 -0800689 [AS_HELP_STRING([--disable-glut],
690 [enable GLUT library @<:@default=enabled if source available@:>@])],
Dan Nicholsondca1b792007-10-23 09:25:58 -0700691 enable_glut="$enableval",
692 enable_glut="$default_glut")
693
694dnl Can't build glut if GLU not available
695if test "x$enable_glu$enable_glut" = xnoyes; then
696 AC_MSG_WARN([Disabling glut since GLU is disabled])
697 enable_glut=no
698fi
Dan Nicholson979ff512007-12-05 18:47:01 -0800699dnl Don't build glut on osmesa
700if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
701 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
702 enable_glut=no
703fi
704
Dan Nicholsondca1b792007-10-23 09:25:58 -0700705if test "x$enable_glut" = xyes; then
706 SRC_DIRS="$SRC_DIRS glut/glx"
707 GLUT_CFLAGS=""
708 if test "x$GCC" = xyes; then
709 GLUT_CFLAGS="-fexceptions"
710 fi
711 if test "$x11_pkgconfig" = yes; then
Dan Nicholson70d0c832007-12-07 11:12:20 -0800712 PKG_CHECK_MODULES(GLUT, x11 xmu xi)
Dan Nicholsondca1b792007-10-23 09:25:58 -0700713 GLUT_LIB_DEPS="$GLUT_LIBS"
714 else
715 # should check these...
Dan Nicholson70d0c832007-12-07 11:12:20 -0800716 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700717 fi
718 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
719
720 # If glut is available, we can build most programs
Dan Nicholson8e4d1472007-11-15 08:59:57 -0800721 if test "$with_demos" = yes; then
722 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
723 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700724
Dan Nicholson88586332007-11-15 08:59:57 -0800725 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
726 if test "$enable_static" = no; then
727 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
728 else
729 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
730 GLUT_LIB_DEPS=""
731 GLUT_MESA_DEPS=""
732 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700733fi
734AC_SUBST(GLUT_LIB_DEPS)
735AC_SUBST(GLUT_MESA_DEPS)
736AC_SUBST(GLUT_CFLAGS)
737
738dnl
739dnl Program library dependencies
740dnl Only libm is added here if necessary as the libraries should
741dnl be pulled in by the linker
742dnl
743if test "x$APP_LIB_DEPS" = x; then
744 APP_LIB_DEPS="-lm"
745fi
746AC_SUBST(APP_LIB_DEPS)
747AC_SUBST(PROGRAM_DIRS)
748
749dnl Arch/platform-specific settings
750PIC_FLAGS=""
751ASM_FLAGS=""
752ASM_SOURCES=""
753ASM_API=""
754AC_SUBST(PIC_FLAGS)
755AC_SUBST(ASM_FLAGS)
756AC_SUBST(ASM_SOURCES)
757AC_SUBST(ASM_API)
758case "$host_os" in
759linux*)
760 PIC_FLAGS="-fPIC"
761 case "$host_cpu" in
762 i*86)
Dan Nicholson3e288622007-12-12 09:02:31 -0800763 if test "x$enable_asm" = xyes; then
764 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
765 ASM_SOURCES='$(X86_SOURCES)'
766 ASM_API='$(X86_API)'
767 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700768 ;;
769 x86_64)
Dan Nicholson3e288622007-12-12 09:02:31 -0800770 if test "x$enable_asm" = xyes; then
771 ASM_FLAGS="-DUSE_X86_64_ASM"
772 ASM_SOURCES='$(X86-64_SOURCES)'
773 ASM_API='$(X86-64_API)'
774 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700775 ;;
776 powerpc)
Dan Nicholson3e288622007-12-12 09:02:31 -0800777 if test "x$enable_asm" = xyes; then
778 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
779 ASM_SOURCES='$(PPC_SOURCES)'
780 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700781 ;;
782 esac
783 ;;
784freebsd*)
785 PIC_FLAGS="-fPIC"
786 case "$host_os" in
787 i*86)
788 PIC_FLAGS=""
Dan Nicholson3e288622007-12-12 09:02:31 -0800789 if test "x$enable_asm" = xyes; then
790 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
791 ASM_SOURCES='$(X86_SOURCES)'
792 ASM_API='$(X86_API)'
793 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700794 ;;
795 x86_64)
Dan Nicholson3e288622007-12-12 09:02:31 -0800796 if test "x$enable_asm" = xyes; then
797 ASM_FLAGS="-DUSE_X86_64_ASM"
798 ASM_SOURCES='$(X86-64_SOURCES)'
799 ASM_API='$(X86-64_API)'
800 fi
Dan Nicholsondca1b792007-10-23 09:25:58 -0700801 ;;
802 esac
803 ;;
804esac
805
806dnl Restore LDFLAGS and CPPFLAGS
807LDFLAGS="$_SAVE_LDFLAGS"
808CPPFLAGS="$_SAVE_CPPFLAGS"
809
810dnl Substitute the config
Dan Nicholsonf64d6fe2007-12-12 17:57:45 -0800811AC_CONFIG_FILES([configs/autoconf])
812AC_OUTPUT
Dan Nicholsondca1b792007-10-23 09:25:58 -0700813
Dan Nicholsonaab38cf2007-12-11 08:21:51 -0800814dnl Replace the configs/current symlink
815if test -f configs/current || test -L configs/current; then
816 rm -f configs/current
817fi
818ln -s autoconf configs/current
819
Dan Nicholson9cad8e32007-11-30 08:49:57 -0800820dnl
821dnl Output some configuration info for the user
822dnl
823echo ""
824echo " prefix: $prefix"
825echo " exec_prefix: $exec_prefix"
826echo " libdir: $libdir"
827
828dnl Driver info
829echo ""
830echo " Driver: $mesa_driver"
Dan Nicholson544ab202007-12-30 08:41:53 -0800831if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
832 echo " OSMesa: lib$OSMESA_LIB"
833else
834 echo " OSMesa: no"
835fi
836if test "$mesa_driver" = dri; then
Dan Nicholson9cad8e32007-11-30 08:49:57 -0800837 # cleanup the drivers var
838 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
839 echo " DRI drivers: $dri_dirs"
840 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
Dan Nicholson544ab202007-12-30 08:41:53 -0800841fi
Dan Nicholson9cad8e32007-11-30 08:49:57 -0800842
843dnl Libraries
844echo ""
845echo " Shared libs: $enable_shared"
846echo " Static libs: $enable_static"
847echo " GLU: $enable_glu"
848echo " GLw: $enable_glw"
849echo " glut: $enable_glut"
850
851dnl Programs
852# cleanup the programs var for display
853program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
854if test "x$program_dirs" = x; then
855 echo " Demos: no"
856else
857 echo " Demos: $program_dirs"
858fi
859
Dan Nicholson16a07fb2007-12-12 09:12:15 -0800860dnl Compiler options
861# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
862cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
863 $SED 's/^ *//;s/ */ /;s/ *$//'`
864cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
865 $SED 's/^ *//;s/ */ /;s/ *$//'`
866defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
867echo ""
868echo " CFLAGS: $cflags"
869echo " CXXFLAGS: $cxxflags"
870echo " Macros: $defines"
871
Dan Nicholsondca1b792007-10-23 09:25:58 -0700872echo ""
Dan Nicholsonaab38cf2007-12-11 08:21:51 -0800873echo " Run 'make' to build Mesa"
Dan Nicholsondca1b792007-10-23 09:25:58 -0700874echo ""