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