Allow osmesa to be enabled or disabled
[mesa.git] / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ(2.59)
4
5 dnl Versioning
6 dnl Make version number available to autoconf and configure
7 m4_define(mesa_major, 7)
8 m4_define(mesa_minor, 1)
9 m4_define(mesa_tiny, 0)
10 m4_define(mesa_version, [mesa_major().mesa_minor().mesa_tiny()])
11
12 AC_INIT([Mesa],[mesa_version()],
13 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
14 AC_CONFIG_AUX_DIR(bin)
15 AC_CANONICAL_HOST
16
17 dnl Substitute the version number into shell variables
18 MESA_MAJOR=mesa_major()
19 MESA_MINOR=mesa_minor()
20 MESA_TINY=mesa_tiny()
21 AC_SUBST(MESA_MAJOR)
22 AC_SUBST(MESA_MINOR)
23 AC_SUBST(MESA_TINY)
24
25 dnl Check for progs
26 AC_PROG_CPP
27 AC_PROG_CC
28 AC_PROG_CXX
29 AC_PATH_PROG(MAKE, make)
30 AC_PATH_PROG(MKDEP, makedepend)
31 AC_PATH_PROG(SED, sed)
32
33 dnl Make sure the pkg-config macros are defined
34 m4_ifdef([PKG_PROG_PKG_CONFIG],,[
35 AC_MSG_ERROR([The pkg-config autoconf macros are not defined.
36 Did you run 'make configure'?])]
37 )
38 PKG_PROG_PKG_CONFIG()
39
40 dnl LIB_DIR - library basename
41 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
42 AC_SUBST(LIB_DIR)
43
44 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
45 _SAVE_LDFLAGS="$LDFLAGS"
46 AC_ARG_VAR(EXTRA_LIB_PATH,[Extra -L paths for the linker])
47 AC_SUBST(EXTRA_LIB_PATH)
48
49 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
50 _SAVE_CPPFLAGS="$CPPFLAGS"
51 AC_ARG_VAR(X11_INCLUDES,[Extra -I paths for X11 headers])
52 AC_SUBST(X11_INCLUDES)
53
54 dnl Compiler macros
55 DEFINES=""
56 AC_SUBST(DEFINES)
57 if test "x$GCC" = xyes; then
58 DEFINES="-D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
59 fi
60 case "$host_os" in
61 linux*)
62 DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
63 ;;
64 esac
65
66 dnl Add flags for gcc and g++
67 if test "x$GCC" = xyes; then
68 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
69 fi
70 if test "x$GXX" = xyes; then
71 CXXFLAGS="$CXXFLAGS -Wall"
72 fi
73
74 dnl These should be unnecessary, but let the user set them if they want
75 AC_ARG_VAR(OPT_FLAGS, [Additional optimization flags for the compiler.
76 Default is to use CFLAGS.])
77 AC_ARG_VAR(ARCH_FLAGS, [Additional architecture specific flags for the
78 compiler. Default is to use CFLAGS.])
79 AC_SUBST(OPT_FLAGS)
80 AC_SUBST(ARCH_FLAGS)
81
82 dnl
83 dnl Hacks to enable 32 or 64 bit build
84 dnl
85 AC_ARG_ENABLE(32-bit,
86 [AS_HELP_STRING([--enable-32-bit],
87 [build 32-bit libraries @<:@default=auto@:>@])],
88 enable_32bit="$enableval",
89 enable_32bit=auto
90 )
91 if test "x$enable_32bit" = xyes; then
92 if test "x$GCC" = xyes; then
93 CFLAGS="$CFLAGS -m32"
94 fi
95 if test "x$GXX" = xyes; then
96 CXXFLAGS="$CXXFLAGS -m32"
97 fi
98 fi
99 AC_ARG_ENABLE(64-bit,
100 [AS_HELP_STRING([--enable-64-bit],
101 [build 64-bit libraries @<:@default=auto@:>@])],
102 enable_64bit="$enableval",
103 enable_64bit=auto
104 )
105 if test "x$enable_64bit" = xyes; then
106 if test "x$GCC" = xyes; then
107 CFLAGS="$CFLAGS -m64"
108 fi
109 if test "x$GXX" = xyes; then
110 CXXFLAGS="$CXXFLAGS -m64"
111 fi
112 fi
113
114 dnl
115 dnl shared/static libraries, mimic libtool options
116 dnl
117 AC_ARG_ENABLE(static,
118 [AS_HELP_STRING([--enable-static],
119 [build static libraries @<:@default=disabled@:>@])],
120 enable_static="$enableval",
121 enable_static=no
122 )
123 case "x$enable_static" in
124 xyes|xno ) ;;
125 x ) enable_static=no ;;
126 * )
127 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
128 ;;
129 esac
130 AC_ARG_ENABLE(shared,
131 [AS_HELP_STRING([--disable-shared],
132 [build shared libraries @<:@default=enabled@:>@])],
133 enable_shared="$enableval",
134 enable_shared=yes
135 )
136 case "x$enable_shared" in
137 xyes|xno ) ;;
138 x ) enable_shared=yes ;;
139 * )
140 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
141 ;;
142 esac
143
144 dnl Can't have static and shared libraries, default to static if user
145 dnl explicitly requested. If both disabled, set to static since shared
146 dnl was explicitly requirested.
147 case "x$enable_static$enable_shared" in
148 xyesyes )
149 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
150 enable_shared=no
151 ;;
152 xnono )
153 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
154 enable_static=yes
155 ;;
156 esac
157
158 dnl
159 dnl mklib options
160 dnl
161 AC_ARG_VAR(MKLIB_OPTIONS,[Options for the Mesa library script, mklib])
162 if test "$enable_static" = yes; then
163 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
164 fi
165 AC_SUBST(MKLIB_OPTIONS)
166
167 dnl
168 dnl other compiler options
169 dnl
170 AC_ARG_ENABLE(debug,
171 [AS_HELP_STRING([--enable-debug],
172 [use debug compiler flags and macros @<:@default=disabled@:>@])],
173 enable_debug="$enableval",
174 enable_debug=no
175 )
176 if test "x$enable_debug" = xyes; then
177 DEFINES="$DEFINES -DDEBUG"
178 if test "x$GCC" = xyes; then
179 CFLAGS="$CFLAGS -g"
180 fi
181 if test "x$GXX" = xyes; then
182 CXXFLAGS="$CXXFLAGS -g"
183 fi
184 fi
185 dnl These will be used near the end in the arch specific options
186 AC_ARG_ENABLE(asm,
187 [AS_HELP_STRING([--disable-asm],
188 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
189 enable_asm="$enableval",
190 enable_asm=yes
191 )
192
193 dnl
194 dnl library names
195 dnl
196 if test "$enable_static" = yes; then
197 GL_LIB_NAME='lib$(GL_LIB).a'
198 GLU_LIB_NAME='lib$(GLU_LIB).a'
199 GLUT_LIB_NAME='lib$(GLUT_LIB).a'
200 GLW_LIB_NAME='lib$(GLW_LIB).a'
201 OSMESA_LIB_NAME='lib$(OSMESA_LIB).a'
202 else
203 GL_LIB_NAME='lib$(GL_LIB).so'
204 GLU_LIB_NAME='lib$(GLU_LIB).so'
205 GLUT_LIB_NAME='lib$(GLUT_LIB).so'
206 GLW_LIB_NAME='lib$(GLW_LIB).so'
207 OSMESA_LIB_NAME='lib$(OSMESA_LIB).so'
208 fi
209 AC_SUBST(GL_LIB_NAME)
210 AC_SUBST(GLU_LIB_NAME)
211 AC_SUBST(GLUT_LIB_NAME)
212 AC_SUBST(GLW_LIB_NAME)
213 AC_SUBST(OSMESA_LIB_NAME)
214
215 dnl
216 dnl Driver configuration. Options are xlib, dri and osmesa right now.
217 dnl More later: directfb, fbdev, ...
218 dnl
219 AC_ARG_WITH(driver,
220 [AS_HELP_STRING([--with-driver=DRIVER],
221 [driver for Mesa: xlib,dri,osmesa @<:@default=xlib@:>@])],
222 mesa_driver="$withval",
223 mesa_driver="xlib")
224 dnl Check for valid option
225 case "x$mesa_driver" in
226 xxlib|xdri|xosmesa)
227 ;;
228 *)
229 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
230 ;;
231 esac
232
233 dnl
234 dnl Driver specific build directories
235 dnl
236 SRC_DIRS="mesa"
237 GLU_DIRS="sgi"
238 WINDOW_SYSTEM=""
239 case "$mesa_driver" in
240 xlib)
241 DRIVER_DIRS="x11"
242 ;;
243 dri)
244 SRC_DIRS="glx/x11 $SRC_DIRS"
245 DRIVER_DIRS="dri"
246 WINDOW_SYSTEM="dri"
247 ;;
248 osmesa)
249 DRIVER_DIRS="osmesa"
250 ;;
251 esac
252 AC_SUBST(SRC_DIRS)
253 AC_SUBST(GLU_DIRS)
254 AC_SUBST(DRIVER_DIRS)
255 AC_SUBST(WINDOW_SYSTEM)
256
257 dnl
258 dnl User supplied program configuration
259 dnl
260 if test -d "$srcdir/progs/demos"; then
261 default_demos=yes
262 else
263 default_demos=no
264 fi
265 AC_ARG_WITH(demos,
266 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
267 [optional comma delimited demo directories to build
268 @<:@default=auto if source available@:>@])],
269 with_demos="$withval",
270 with_demos="$default_demos")
271 if test "x$with_demos" = x; then
272 with_demos=no
273 fi
274
275 dnl If $with_demos is yes, directories will be added as libs available
276 PROGRAM_DIRS=""
277 case "$with_demos" in
278 no|yes) ;;
279 *)
280 # verify the requested demos directories exist
281 demos=`IFS=,; echo $with_demos`
282 for demo in $demos; do
283 test -d "$srcdir/progs/$demo" || \
284 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
285 done
286 PROGRAM_DIRS="$demos"
287 ;;
288 esac
289
290 dnl
291 dnl Find out if X is available. The variables have_x or no_x will be
292 dnl set and used later in the driver setups
293 dnl
294 if test -n "$PKG_CONFIG"; then
295 AC_MSG_CHECKING([pkg-config files for X11 are available])
296 if $PKG_CONFIG --exists x11; then
297 x11_pkgconfig=yes
298 have_x=yes
299 AC_MSG_RESULT(yes)
300 else
301 x11_pkgconfig=no
302 no_x=yes
303 AC_MSG_RESULT(no)
304 fi
305 else
306 x11_pkgconfig=no
307 fi
308 dnl Use the autoconf macro if no pkg-config files
309 if test "$x11_pkgconfig" = no; then
310 AC_PATH_XTRA
311 fi
312
313 dnl We need X for xlib and dri, so bomb now if it's not found
314 case "$mesa_driver" in
315 xlib|dri)
316 if test "$no_x" = yes; then
317 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
318 fi
319 ;;
320 esac
321
322 dnl
323 dnl libGL configuration per driver
324 dnl
325 case "$mesa_driver" in
326 xlib)
327 if test "$x11_pkgconfig" = yes; then
328 PKG_CHECK_MODULES(XLIBGL, x11 xext)
329 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
330 GL_LIB_DEPS="$XLIBGL_LIBS"
331 else
332 # should check these...
333 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
334 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
335 fi
336 GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread"
337
338 # if static, move the external libraries to the programs
339 # and empty the libraries for libGL
340 if test "$enable_static" = yes; then
341 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
342 GL_LIB_DEPS=""
343 fi
344 ;;
345 dri)
346 # DRI must be shared, I think
347 if test "$enable_static" = yes; then
348 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
349 fi
350
351 # Check for libdrm
352 PKG_CHECK_MODULES(LIBDRM, libdrm)
353
354 # find the DRI deps for libGL
355 if test "$x11_pkgconfig" = yes; then
356 PKG_CHECK_MODULES(DRIGL, x11 xext xxf86vm xdamage xfixes)
357 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
358 GL_LIB_DEPS="$DRIGL_LIBS"
359 else
360 # should check these...
361 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
362 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
363 fi
364
365 # need DRM libs, -lpthread, etc.
366 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread -ldl"
367 ;;
368 osmesa)
369 # No libGL for osmesa
370 GL_LIB_DEPS=""
371 ;;
372 esac
373 AC_SUBST(GL_LIB_DEPS)
374
375 dnl
376 dnl More X11 setup
377 dnl
378 if test "$mesa_driver" = xlib; then
379 DEFINES="$DEFINES -DUSE_XSHM"
380 fi
381
382 dnl
383 dnl More DRI setup
384 dnl
385 AC_ARG_ENABLE(glx-tls,
386 [AS_HELP_STRING([--enable-glx-tls],
387 [enable TLS support in GLX @<:@default=disabled@:>@])],
388 GLX_USE_TLS="$enableval",
389 GLX_USE_TLS=no)
390 dnl Directory for DRI drivers
391 AC_ARG_WITH(dri-driverdir,
392 [AS_HELP_STRING([--with-dri-driverdir=DIR],
393 [directory for the DRI drivers @<:@/usr/X11R6/lib/modules/dri@:>@])],
394 DRI_DRIVER_INSTALL_DIR="$withval",
395 DRI_DRIVER_INSTALL_DIR='/usr/X11R6/lib/modules/dri')
396 AC_SUBST(DRI_DRIVER_INSTALL_DIR)
397 dnl Direct rendering or just indirect rendering
398 AC_ARG_ENABLE(driglx-direct,
399 [AS_HELP_STRING([--disable-driglx-direct],
400 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
401 driglx_direct="$enableval",
402 driglx_direct="yes")
403
404 dnl Which drivers to build - default is chosen by platform
405 AC_ARG_WITH(dri-drivers,
406 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
407 [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])],
408 with_dri_drivers="$withval",
409 with_dri_drivers=yes)
410 if test "x$with_dri_drivers" = x; then
411 with_dri_drivers=no
412 fi
413
414 dnl If $with_dri_drivers is yes, directories will be added through
415 dnl platform checks
416 DRI_DIRS=""
417 case "$with_dri_drivers" in
418 no|yes) ;;
419 *)
420 # verify the requested driver directories exist
421 dri_drivers=`IFS=,; echo $with_dri_drivers`
422 for driver in $dri_drivers; do
423 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
424 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
425 done
426 DRI_DIRS="$dri_drivers"
427 ;;
428 esac
429
430 dnl Just default to no EGL for now
431 USING_EGL=0
432 AC_SUBST(USING_EGL)
433
434 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
435 if test "$mesa_driver" = dri; then
436 # Use TLS in GLX?
437 if test "x$GLX_USE_TLS" = xyes; then
438 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
439 fi
440
441 if test "x$USING_EGL" = x1; then
442 PROGRAM_DIRS="egl"
443 fi
444
445 # default drivers
446 if test "x$DRI_DIRS" = x; then
447 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
448 savage sis tdfx trident unichrome ffb"
449 fi
450
451 # Platform specific settings and drivers to build
452 case "$host_os" in
453 linux*)
454 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
455 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
456 if test "x$driglx_direct" = xyes; then
457 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
458 fi
459
460 case "$host_cpu" in
461 x86_64)
462 # ffb, gamma, and sis are missing because they have not be
463 # converted to use the new interface. i810 are missing
464 # because there is no x86-64 system where they could *ever*
465 # be used.
466 if test "x$DRI_DIRS" = x; then
467 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
468 savage tdfx unichrome"
469 fi
470 ;;
471 powerpc*)
472 # Build only the drivers for cards that exist on PowerPC.
473 # At some point MGA will be added, but not yet.
474 if test "x$DRI_DIRS" = x; then
475 DRI_DIRS="mach64 r128 r200 r300 radeon tdfx"
476 fi
477 ;;
478 esac
479 ;;
480 freebsd*)
481 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
482 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
483 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
484 if test "x$driglx_direct" = xyes; then
485 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
486 fi
487 if test "x$GXX" = xyes; then
488 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
489 fi
490
491 # ffb and gamma are missing because they have not been converted
492 # to use the new interface.
493 if test "x$DRI_DIRS" = x; then
494 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
495 unichrome savage sis"
496 fi
497 ;;
498 esac
499 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
500
501 # Check for expat
502 EXPAT_INCLUDES=""
503 EXPAT_LIB=-lexpat
504 AC_ARG_WITH(expat, AS_HELP_STRING([--with-expat=DIR],
505 [expat install directory]),[
506 EXPAT_INCLUDES="-I$withval/include"
507 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
508 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
509 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
510 ])
511 AC_CHECK_HEADER(expat.h,,AC_MSG_ERROR([Expat required for DRI.]))
512 AC_CHECK_LIB(expat, XML_ParserCreate,,
513 AC_MSG_ERROR([Expat required for DRI.]))
514
515 # put all the necessary libs together
516 DRI_LIB_DEPS="$LIBDRM_LIBS $EXPAT_LIB -lm -lpthread -ldl"
517 fi
518 AC_SUBST(DRI_DIRS)
519 AC_SUBST(EXPAT_INCLUDES)
520 AC_SUBST(DRI_LIB_DEPS)
521
522 dnl
523 dnl OSMesa configuration
524 dnl
525 if test "$mesa_driver" = xlib; then
526 default_gl_osmesa=yes
527 else
528 default_gl_osmesa=no
529 fi
530 AC_ARG_ENABLE(gl-osmesa,
531 [AS_HELP_STRING([--enable-gl-osmesa],
532 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
533 gl_osmesa="$enableval",
534 gl_osmesa="$default_gl_osmesa")
535 if test "x$gl_osmesa" = xyes; then
536 if test "$mesa_driver" = osmesa; then
537 AC_MSG_ERROR([libGL is not available for OSMesa driver])
538 else
539 DRIVER_DIRS="$DRIVER_DIRS osmesa"
540 fi
541 fi
542
543 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
544 AC_ARG_WITH(osmesa-bits,
545 [AS_HELP_STRING([--with-osmesa-bits=BITS],
546 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
547 osmesa_bits="$withval",
548 osmesa_bits=8)
549 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
550 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
551 osmesa_bits=8
552 fi
553 case "x$osmesa_bits" in
554 x8)
555 OSMESA_LIB=OSMesa
556 ;;
557 x16|x32)
558 OSMESA_LIB="OSMesa$osmesa_bits"
559 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
560 ;;
561 *)
562 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
563 ;;
564 esac
565 AC_SUBST(OSMESA_LIB)
566
567 case "$mesa_driver" in
568 osmesa)
569 # only link librararies with osmesa if shared
570 if test "$enable_static" = no; then
571 OSMESA_LIB_DEPS="-lm -lpthread"
572 else
573 OSMESA_LIB_DEPS=""
574 fi
575 OSMESA_MESA_DEPS=""
576 ;;
577 *)
578 # Link OSMesa to libGL otherwise
579 OSMESA_LIB_DEPS=""
580 # only link librararies with osmesa if shared
581 if test "$enable_static" = no; then
582 OSMESA_MESA_DEPS='-l$(GL_LIB)'
583 else
584 OSMESA_MESA_DEPS=""
585 fi
586 ;;
587 esac
588 AC_SUBST(OSMESA_LIB_DEPS)
589 AC_SUBST(OSMESA_MESA_DEPS)
590
591 dnl
592 dnl GLU configuration
593 dnl
594 AC_ARG_ENABLE(glu,
595 [AS_HELP_STRING([--disable-glu],
596 [enable OpenGL Utility library @<:@default=enabled@:>@])],
597 enable_glu="$enableval",
598 enable_glu=yes)
599 if test "x$enable_glu" = xyes; then
600 SRC_DIRS="$SRC_DIRS glu"
601
602 case "$mesa_driver" in
603 osmesa)
604 # If GLU is available and we have libOSMesa (not 16 or 32),
605 # we can build the osdemos
606 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
607 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
608 fi
609
610 # Link libGLU to libOSMesa instead of libGL
611 GLU_LIB_DEPS=""
612 if test "$enable_static" = no; then
613 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
614 else
615 GLU_MESA_DEPS=""
616 fi
617 ;;
618 *)
619 # If GLU is available, we can build the xdemos
620 if test "$with_demos" = yes; then
621 PROGRAM_DIRS="$PROGRAM_DIRS xdemos"
622 fi
623
624 # If static, empty GLU_LIB_DEPS and add libs for programs to link
625 if test "$enable_static" = no; then
626 GLU_LIB_DEPS="-lm"
627 GLU_MESA_DEPS='-l$(GL_LIB)'
628 else
629 GLU_LIB_DEPS=""
630 GLU_MESA_DEPS=""
631 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
632 fi
633 ;;
634 esac
635 fi
636 AC_SUBST(GLU_LIB_DEPS)
637 AC_SUBST(GLU_MESA_DEPS)
638
639 dnl
640 dnl GLw configuration
641 dnl
642 AC_ARG_ENABLE(glw,
643 [AS_HELP_STRING([--disable-glw],
644 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
645 enable_glw="$enableval",
646 enable_glw=yes)
647 dnl Don't build GLw on osmesa
648 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
649 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
650 enable_glw=no
651 fi
652 if test "x$enable_glw" = xyes; then
653 SRC_DIRS="$SRC_DIRS glw"
654 if test "$x11_pkgconfig" = yes; then
655 PKG_CHECK_MODULES(GLW, x11 xt)
656 GLW_LIB_DEPS="$GLW_LIBS"
657 else
658 # should check these...
659 GLW_LIB_DEPS="$X_LIBS -lX11 -lXt"
660 fi
661
662 # If static, empty GLW_LIB_DEPS and add libs for programs to link
663 if test "$enable_static" = no; then
664 GLW_MESA_DEPS='-l$(GL_LIB)'
665 else
666 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
667 GLW_LIB_DEPS=""
668 GLW_MESA_DEPS=""
669 fi
670 fi
671 AC_SUBST(GLW_LIB_DEPS)
672 AC_SUBST(GLW_MESA_DEPS)
673
674 dnl
675 dnl GLUT configuration
676 dnl
677 if test -f "$srcdir/include/GL/glut.h"; then
678 default_glut=yes
679 else
680 default_glut=no
681 fi
682 AC_ARG_ENABLE(glut,
683 [AS_HELP_STRING([--disable-glut],
684 [enable GLUT library @<:@default=enabled if source available@:>@])],
685 enable_glut="$enableval",
686 enable_glut="$default_glut")
687
688 dnl Can't build glut if GLU not available
689 if test "x$enable_glu$enable_glut" = xnoyes; then
690 AC_MSG_WARN([Disabling glut since GLU is disabled])
691 enable_glut=no
692 fi
693 dnl Don't build glut on osmesa
694 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
695 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
696 enable_glut=no
697 fi
698
699 if test "x$enable_glut" = xyes; then
700 SRC_DIRS="$SRC_DIRS glut/glx"
701 GLUT_CFLAGS=""
702 if test "x$GCC" = xyes; then
703 GLUT_CFLAGS="-fexceptions"
704 fi
705 if test "$x11_pkgconfig" = yes; then
706 PKG_CHECK_MODULES(GLUT, x11 xmu xi)
707 GLUT_LIB_DEPS="$GLUT_LIBS"
708 else
709 # should check these...
710 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
711 fi
712 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
713
714 # If glut is available, we can build most programs
715 if test "$with_demos" = yes; then
716 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
717 fi
718
719 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
720 if test "$enable_static" = no; then
721 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
722 else
723 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
724 GLUT_LIB_DEPS=""
725 GLUT_MESA_DEPS=""
726 fi
727 fi
728 AC_SUBST(GLUT_LIB_DEPS)
729 AC_SUBST(GLUT_MESA_DEPS)
730 AC_SUBST(GLUT_CFLAGS)
731
732 dnl
733 dnl Program library dependencies
734 dnl Only libm is added here if necessary as the libraries should
735 dnl be pulled in by the linker
736 dnl
737 if test "x$APP_LIB_DEPS" = x; then
738 APP_LIB_DEPS="-lm"
739 fi
740 AC_SUBST(APP_LIB_DEPS)
741 AC_SUBST(PROGRAM_DIRS)
742
743 dnl Arch/platform-specific settings
744 PIC_FLAGS=""
745 ASM_FLAGS=""
746 ASM_SOURCES=""
747 ASM_API=""
748 AC_SUBST(PIC_FLAGS)
749 AC_SUBST(ASM_FLAGS)
750 AC_SUBST(ASM_SOURCES)
751 AC_SUBST(ASM_API)
752 case "$host_os" in
753 linux*)
754 PIC_FLAGS="-fPIC"
755 case "$host_cpu" in
756 i*86)
757 if test "x$enable_asm" = xyes; then
758 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
759 ASM_SOURCES='$(X86_SOURCES)'
760 ASM_API='$(X86_API)'
761 fi
762 ;;
763 x86_64)
764 if test "x$enable_asm" = xyes; then
765 ASM_FLAGS="-DUSE_X86_64_ASM"
766 ASM_SOURCES='$(X86-64_SOURCES)'
767 ASM_API='$(X86-64_API)'
768 fi
769 ;;
770 powerpc)
771 if test "x$enable_asm" = xyes; then
772 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
773 ASM_SOURCES='$(PPC_SOURCES)'
774 fi
775 ;;
776 esac
777 ;;
778 freebsd*)
779 PIC_FLAGS="-fPIC"
780 case "$host_os" in
781 i*86)
782 PIC_FLAGS=""
783 if test "x$enable_asm" = xyes; then
784 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
785 ASM_SOURCES='$(X86_SOURCES)'
786 ASM_API='$(X86_API)'
787 fi
788 ;;
789 x86_64)
790 if test "x$enable_asm" = xyes; then
791 ASM_FLAGS="-DUSE_X86_64_ASM"
792 ASM_SOURCES='$(X86-64_SOURCES)'
793 ASM_API='$(X86-64_API)'
794 fi
795 ;;
796 esac
797 ;;
798 esac
799
800 dnl Restore LDFLAGS and CPPFLAGS
801 LDFLAGS="$_SAVE_LDFLAGS"
802 CPPFLAGS="$_SAVE_CPPFLAGS"
803
804 dnl Substitute the config
805 AC_CONFIG_FILES([configs/autoconf])
806 AC_OUTPUT
807
808 dnl Replace the configs/current symlink
809 if test -f configs/current || test -L configs/current; then
810 rm -f configs/current
811 fi
812 ln -s autoconf configs/current
813
814 dnl
815 dnl Output some configuration info for the user
816 dnl
817 echo ""
818 echo " prefix: $prefix"
819 echo " exec_prefix: $exec_prefix"
820 echo " libdir: $libdir"
821
822 dnl Driver info
823 echo ""
824 echo " Driver: $mesa_driver"
825 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
826 echo " OSMesa: lib$OSMESA_LIB"
827 else
828 echo " OSMesa: no"
829 fi
830 if test "$mesa_driver" = dri; then
831 # cleanup the drivers var
832 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
833 echo " DRI drivers: $dri_dirs"
834 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
835 fi
836
837 dnl Libraries
838 echo ""
839 echo " Shared libs: $enable_shared"
840 echo " Static libs: $enable_static"
841 echo " GLU: $enable_glu"
842 echo " GLw: $enable_glw"
843 echo " glut: $enable_glut"
844
845 dnl Programs
846 # cleanup the programs var for display
847 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
848 if test "x$program_dirs" = x; then
849 echo " Demos: no"
850 else
851 echo " Demos: $program_dirs"
852 fi
853
854 dnl Compiler options
855 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
856 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
857 $SED 's/^ *//;s/ */ /;s/ *$//'`
858 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
859 $SED 's/^ *//;s/ */ /;s/ *$//'`
860 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
861 echo ""
862 echo " CFLAGS: $cflags"
863 echo " CXXFLAGS: $cxxflags"
864 echo " Macros: $defines"
865
866 echo ""
867 echo " Run 'make' to build Mesa"
868 echo ""