1
dnl Process this file with autoconf to create configure.
2
3
AC_PREREQ([2.59])
4
5
dnl Versioning - scrape the version from configs/default
6
m4_define([mesa_version],
7
    [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n'])])
8
m4_ifval(mesa_version,,
9
    [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
10
11
dnl Tell the user about autoconf.html in the --help output
12
m4_divert_once([HELP_END], [
13
See docs/autoconf.html for more details on the options for Mesa.])
14
15
AC_INIT([Mesa],[mesa_version],
16
    [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17
AC_CONFIG_AUX_DIR([bin])
18
AC_CANONICAL_HOST
19
20
dnl Versions for external dependencies
21
LIBDRM_REQUIRED=2.4.3
22
DRI2PROTO_REQUIRED=1.99.3
23
24
dnl Check for progs
25
AC_PROG_CPP
26
AC_PROG_CC
27
AC_PROG_CXX
28
AC_CHECK_PROGS([MAKE], [gmake make])
29
AC_PATH_PROG([MKDEP], [makedepend])
30
AC_PATH_PROG([SED], [sed])
31
32
dnl Our fallback install-sh is a symlink to minstall. Use the existing
33
dnl configuration in that case.
34
AC_PROG_INSTALL
35
test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
36
37
dnl We need a POSIX shell for parts of the build. Assume we have one
38
dnl in most cases.
39
case "$host_os" in
40
solaris*)
41
    # Solaris /bin/sh is too old/non-POSIX compliant
42
    AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
43
    SHELL="$POSIX_SHELL"
44
    ;;
45
esac
46
47
MKDEP_OPTIONS=-fdepend
48
dnl Ask gcc where it's keeping its secret headers
49
if test "x$GCC" = xyes; then
50
    for dir in include include-fixed; do
51
        GCC_INCLUDES=`$CC -print-file-name=$dir`
52
        if test "x$GCC_INCLUDES" != x && \
53
           test "$GCC_INCLUDES" != "$dir" && \
54
           test -d "$GCC_INCLUDES"; then
55
            MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
56
        fi
57
    done
58
fi
59
AC_SUBST([MKDEP_OPTIONS])
60
61
dnl Make sure the pkg-config macros are defined
62
m4_ifndef([PKG_PROG_PKG_CONFIG],
63
    [m4_fatal([Could not locate the pkg-config autoconf macros.
64
  These are usually located in /usr/share/aclocal/pkg.m4. If your macros
65
  are in a different location, try setting the environment variable
66
  ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
67
PKG_PROG_PKG_CONFIG()
68
69
dnl LIB_DIR - library basename
70
LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
71
AC_SUBST([LIB_DIR])
72
73
dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
74
_SAVE_LDFLAGS="$LDFLAGS"
75
AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
76
AC_SUBST([EXTRA_LIB_PATH])
77
78
dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
79
_SAVE_CPPFLAGS="$CPPFLAGS"
80
AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
81
AC_SUBST([X11_INCLUDES])
82
83
dnl Compiler macros
84
DEFINES=""
85
AC_SUBST([DEFINES])
86
case "$host_os" in
87
linux*|*-gnu*|gnu*)
88
    DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
89
    ;;
90
solaris*)
91
    DEFINES="$DEFINES -DPTHREADS -DSVR4"
92
    ;;
93
esac
94
95
dnl Add flags for gcc and g++
96
if test "x$GCC" = xyes; then
97
    CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
98
99
    # Work around aliasing bugs - developers should comment this out
100
    CFLAGS="$CFLAGS -fno-strict-aliasing"
101
fi
102
if test "x$GXX" = xyes; then
103
    CXXFLAGS="$CXXFLAGS -Wall"
104
105
    # Work around aliasing bugs - developers should comment this out
106
    CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
107
fi
108
109
dnl These should be unnecessary, but let the user set them if they want
110
AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
111
    Default is to use CFLAGS.])
112
AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
113
    compiler. Default is to use CFLAGS.])
114
AC_SUBST([OPT_FLAGS])
115
AC_SUBST([ARCH_FLAGS])
116
117
dnl
118
dnl Hacks to enable 32 or 64 bit build
119
dnl
120
AC_ARG_ENABLE([32-bit],
121
    [AS_HELP_STRING([--enable-32-bit],
122
        [build 32-bit libraries @<:@default=auto@:>@])],
123
    [enable_32bit="$enableval"],
124
    [enable_32bit=auto]
125
)
126
if test "x$enable_32bit" = xyes; then
127
    if test "x$GCC" = xyes; then
128
        CFLAGS="$CFLAGS -m32"
129
        ARCH_FLAGS="$ARCH_FLAGS -m32"
130
    fi
131
    if test "x$GXX" = xyes; then
132
        CXXFLAGS="$CXXFLAGS -m32"
133
    fi
134
fi
135
AC_ARG_ENABLE([64-bit],
136
    [AS_HELP_STRING([--enable-64-bit],
137
        [build 64-bit libraries @<:@default=auto@:>@])],
138
    [enable_64bit="$enableval"],
139
    [enable_64bit=auto]
140
)
141
if test "x$enable_64bit" = xyes; then
142
    if test "x$GCC" = xyes; then
143
        CFLAGS="$CFLAGS -m64"
144
    fi
145
    if test "x$GXX" = xyes; then
146
        CXXFLAGS="$CXXFLAGS -m64"
147
    fi
148
fi
149
150
dnl
151
dnl shared/static libraries, mimic libtool options
152
dnl
153
AC_ARG_ENABLE([static],
154
    [AS_HELP_STRING([--enable-static],
155
        [build static libraries @<:@default=disabled@:>@])],
156
    [enable_static="$enableval"],
157
    [enable_static=no]
158
)
159
case "x$enable_static" in
160
xyes|xno ) ;;
161
x ) enable_static=no ;;
162
* )
163
    AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
164
    ;;
165
esac
166
AC_ARG_ENABLE([shared],
167
    [AS_HELP_STRING([--disable-shared],
168
        [build shared libraries @<:@default=enabled@:>@])],
169
    [enable_shared="$enableval"],
170
    [enable_shared=yes]
171
)
172
case "x$enable_shared" in
173
xyes|xno ) ;;
174
x ) enable_shared=yes ;;
175
* )
176
    AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
177
    ;;
178
esac
179
180
dnl Can't have static and shared libraries, default to static if user
181
dnl explicitly requested. If both disabled, set to static since shared
182
dnl was explicitly requirested.
183
case "x$enable_static$enable_shared" in
184
xyesyes )
185
    AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
186
    enable_shared=no
187
    ;;
188
xnono )
189
    AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
190
    enable_static=yes
191
    ;;
192
esac
193
194
dnl
195
dnl mklib options
196
dnl
197
AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
198
if test "$enable_static" = yes; then
199
    MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
200
fi
201
AC_SUBST([MKLIB_OPTIONS])
202
203
dnl
204
dnl other compiler options
205
dnl
206
AC_ARG_ENABLE([debug],
207
    [AS_HELP_STRING([--enable-debug],
208
        [use debug compiler flags and macros @<:@default=disabled@:>@])],
209
    [enable_debug="$enableval"],
210
    [enable_debug=no]
211
)
212
if test "x$enable_debug" = xyes; then
213
    DEFINES="$DEFINES -DDEBUG"
214
    if test "x$GCC" = xyes; then
215
        CFLAGS="$CFLAGS -g"
216
    fi
217
    if test "x$GXX" = xyes; then
218
        CXXFLAGS="$CXXFLAGS -g"
219
    fi
220
fi
221
222
dnl
223
dnl library names
224
dnl
225
if test "$enable_static" = yes; then
226
    LIB_EXTENSION='a'
227
else
228
    case "$host_os" in
229
    darwin* )
230
        LIB_EXTENSION='dylib' ;;
231
    cygwin* )
232
        LIB_EXTENSION='dll' ;;
233
    * )
234
        LIB_EXTENSION='so' ;;
235
    esac
236
fi
237
238
GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
239
GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
240
GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
241
GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
242
OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
243
244
GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
245
GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
246
GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
247
GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
248
OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
249
250
AC_SUBST([GL_LIB_NAME])
251
AC_SUBST([GLU_LIB_NAME])
252
AC_SUBST([GLUT_LIB_NAME])
253
AC_SUBST([GLW_LIB_NAME])
254
AC_SUBST([OSMESA_LIB_NAME])
255
256
AC_SUBST([GL_LIB_GLOB])
257
AC_SUBST([GLU_LIB_GLOB])
258
AC_SUBST([GLUT_LIB_GLOB])
259
AC_SUBST([GLW_LIB_GLOB])
260
AC_SUBST([OSMESA_LIB_GLOB])
261
262
dnl
263
dnl Arch/platform-specific settings
264
dnl
265
AC_ARG_ENABLE([asm],
266
    [AS_HELP_STRING([--disable-asm],
267
        [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
268
    [enable_asm="$enableval"],
269
    [enable_asm=yes]
270
)
271
asm_arch=""
272
ASM_FLAGS=""
273
MESA_ASM_SOURCES=""
274
GLAPI_ASM_SOURCES=""
275
AC_MSG_CHECKING([whether to enable assembly])
276
test "x$enable_asm" = xno && AC_MSG_RESULT([no])
277
# disable if cross compiling on x86/x86_64 since we must run gen_matypes
278
if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
279
    case "$host_cpu" in
280
    i?86 | x86_64)
281
        enable_asm=no
282
        AC_MSG_RESULT([no, cross compiling])
283
        ;;
284
    esac
285
fi
286
# check for supported arches
287
if test "x$enable_asm" = xyes; then
288
    case "$host_cpu" in
289
    i?86)
290
        case "$host_os" in
291
        linux* | *freebsd* | dragonfly*)
292
            test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
293
            ;;
294
        esac
295
        ;;
296
    x86_64)
297
        case "$host_os" in
298
        linux* | *freebsd* | dragonfly*)
299
            test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
300
            ;;
301
        esac
302
        ;;
303
    powerpc)
304
        case "$host_os" in
305
        linux*)
306
            asm_arch=ppc
307
            ;;
308
        esac
309
        ;;
310
    sparc*)
311
        case "$host_os" in
312
        linux*)
313
            asm_arch=sparc
314
            ;;
315
        esac
316
        ;;
317
    esac
318
319
    case "$asm_arch" in
320
    x86)
321
        ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
322
        MESA_ASM_SOURCES='$(X86_SOURCES)'
323
        GLAPI_ASM_SOURCES='$(X86_API)'
324
        AC_MSG_RESULT([yes, x86])
325
        ;;
326
    x86_64)
327
        ASM_FLAGS="-DUSE_X86_64_ASM"
328
        MESA_ASM_SOURCES='$(X86-64_SOURCES)'
329
        GLAPI_ASM_SOURCES='$(X86-64_API)'
330
        AC_MSG_RESULT([yes, x86_64])
331
        ;;
332
    ppc)
333
        ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
334
        MESA_ASM_SOURCES='$(PPC_SOURCES)'
335
        AC_MSG_RESULT([yes, ppc])
336
        ;;
337
    sparc)
338
        ASM_FLAGS="-DUSE_SPARC_ASM"
339
        MESA_ASM_SOURCES='$(SPARC_SOURCES)'
340
        GLAPI_ASM_SOURCES='$(SPARC_API)'
341
        AC_MSG_RESULT([yes, sparc])
342
        ;;
343
    *)
344
        AC_MSG_RESULT([no, platform not supported])
345
        ;;
346
    esac
347
fi
348
AC_SUBST([ASM_FLAGS])
349
AC_SUBST([MESA_ASM_SOURCES])
350
AC_SUBST([GLAPI_ASM_SOURCES])
351
352
dnl PIC code macro
353
MESA_PIC_FLAGS
354
355
dnl Check to see if dlopen is in default libraries (like Solaris, which
356
dnl has it in libc), or if libdl is needed to get it.
357
AC_CHECK_FUNC([dlopen], [],
358
    [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
359
360
dnl See if posix_memalign is available
361
AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
362
363
dnl SELinux awareness.
364
AC_ARG_ENABLE([selinux],
365
    [AS_HELP_STRING([--enable-selinux],
366
        [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
367
    [MESA_SELINUX="$enableval"],
368
    [MESA_SELINUX=no])
369
if test "x$enable_selinux" = "xyes"; then
370
    AC_CHECK_HEADER([selinux/selinux.h],[],
371
                    [AC_MSG_ERROR([SELinux headers not found])])
372
    AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
373
                 [AC_MSG_ERROR([SELinux library not found])])
374
    SELINUX_LIBS="-lselinux"
375
    DEFINES="$DEFINES -DMESA_SELINUX"
376
fi
377
378
dnl
379
dnl Driver configuration. Options are xlib, dri and osmesa right now.
380
dnl More later: directfb, fbdev, ...
381
dnl
382
default_driver="xlib"
383
384
case "$host_os" in
385
linux*)
386
    case "$host_cpu" in
387
    i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
388
    esac
389
    ;;
390
*freebsd* | dragonfly*)
391
    case "$host_cpu" in
392
    i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
393
    esac
394
    ;;
395
esac
396
397
AC_ARG_WITH([driver],
398
    [AS_HELP_STRING([--with-driver=DRIVER],
399
        [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
400
    [mesa_driver="$withval"],
401
    [mesa_driver="$default_driver"])
402
dnl Check for valid option
403
case "x$mesa_driver" in
404
xxlib|xdri|xosmesa)
405
    ;;
406
*)
407
    AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
408
    ;;
409
esac
410
411
dnl
412
dnl Driver specific build directories
413
dnl
414
SRC_DIRS="mesa glew"
415
GLU_DIRS="sgi"
416
WINDOW_SYSTEM=""
417
GALLIUM_DIRS="auxiliary drivers state_trackers"
418
GALLIUM_WINSYS_DIRS=""
419
GALLIUM_WINSYS_DRM_DIRS=""
420
GALLIUM_AUXILIARY_DIRS="rbug draw translate cso_cache pipebuffer tgsi sct rtasm util indices"
421
GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
422
GALLIUM_STATE_TRACKERS_DIRS=""
423
424
case "$mesa_driver" in
425
xlib)
426
    DRIVER_DIRS="x11"
427
    GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
428
    ;;
429
dri)
430
    SRC_DIRS="glx/x11 $SRC_DIRS"
431
    DRIVER_DIRS="dri"
432
    WINDOW_SYSTEM="dri"
433
    GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
434
    ;;
435
osmesa)
436
    DRIVER_DIRS="osmesa"
437
    ;;
438
esac
439
AC_SUBST([SRC_DIRS])
440
AC_SUBST([GLU_DIRS])
441
AC_SUBST([DRIVER_DIRS])
442
AC_SUBST([WINDOW_SYSTEM])
443
AC_SUBST([GALLIUM_DIRS])
444
AC_SUBST([GALLIUM_WINSYS_DIRS])
445
AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
446
AC_SUBST([GALLIUM_DRIVERS_DIRS])
447
AC_SUBST([GALLIUM_AUXILIARY_DIRS])
448
AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
449
AC_SUBST([RADEON_CFLAGS])
450
AC_SUBST([RADEON_LDFLAGS])
451
452
dnl
453
dnl User supplied program configuration
454
dnl
455
if test -d "$srcdir/progs/demos"; then
456
    default_demos=yes
457
else
458
    default_demos=no
459
fi
460
AC_ARG_WITH([demos],
461
    [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
462
        [optional comma delimited demo directories to build
463
        @<:@default=auto if source available@:>@])],
464
    [with_demos="$withval"],
465
    [with_demos="$default_demos"])
466
if test "x$with_demos" = x; then
467
    with_demos=no
468
fi
469
470
dnl If $with_demos is yes, directories will be added as libs available
471
PROGRAM_DIRS=""
472
case "$with_demos" in
473
no) ;;
474
yes)
475
    # If the driver isn't osmesa, we have libGL and can build xdemos
476
    if test "$mesa_driver" != osmesa; then
477
        PROGRAM_DIRS="xdemos"
478
    fi
479
    ;;
480
*)
481
    # verify the requested demos directories exist
482
    demos=`IFS=,; echo $with_demos`
483
    for demo in $demos; do
484
        test -d "$srcdir/progs/$demo" || \
485
            AC_MSG_ERROR([Program directory '$demo' doesn't exist])
486
    done
487
    PROGRAM_DIRS="$demos"
488
    ;;
489
esac
490
491
dnl
492
dnl Find out if X is available. The variable have_x is set if libX11 is
493
dnl found to mimic AC_PATH_XTRA.
494
dnl
495
if test -n "$PKG_CONFIG"; then
496
    AC_MSG_CHECKING([pkg-config files for X11 are available])
497
    PKG_CHECK_EXISTS([x11],[
498
        x11_pkgconfig=yes
499
        have_x=yes
500
        ],[
501
        x11_pkgconfig=no
502
    ])
503
    AC_MSG_RESULT([$x11_pkgconfig])
504
else
505
    x11_pkgconfig=no
506
fi
507
dnl Use the autoconf macro if no pkg-config files
508
if test "$x11_pkgconfig" = no; then
509
    AC_PATH_XTRA
510
fi
511
512
dnl Try to tell the user that the --x-* options are only used when
513
dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
514
m4_divert_once([HELP_BEGIN],
515
[These options are only used when the X libraries cannot be found by the
516
pkg-config utility.])
517
518
dnl We need X for xlib and dri, so bomb now if it's not found
519
case "$mesa_driver" in
520
xlib|dri)
521
    if test "$no_x" = yes; then
522
        AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
523
    fi
524
    ;;
525
esac
526
527
dnl XCB - this is only used for GLX right now
528
AC_ARG_ENABLE([xcb],
529
    [AS_HELP_STRING([--enable-xcb],
530
        [use XCB for GLX @<:@default=disabled@:>@])],
531
    [enable_xcb="$enableval"],
532
    [enable_xcb=no])
533
if test "x$enable_xcb" = xyes; then
534
    DEFINES="$DEFINES -DUSE_XCB"
535
else
536
    enable_xcb=no
537
fi
538
539
dnl
540
dnl libGL configuration per driver
541
dnl
542
case "$mesa_driver" in
543
xlib)
544
    if test "$x11_pkgconfig" = yes; then
545
        PKG_CHECK_MODULES([XLIBGL], [x11 xext])
546
        GL_PC_REQ_PRIV="x11 xext"
547
        X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
548
        GL_LIB_DEPS="$XLIBGL_LIBS"
549
    else
550
        # should check these...
551
        X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
552
        GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
553
        GL_PC_LIB_PRIV="$GL_LIB_DEPS"
554
        GL_PC_CFLAGS="$X11_INCLUDES"
555
    fi
556
    GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
557
    GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
558
559
    # if static, move the external libraries to the programs
560
    # and empty the libraries for libGL
561
    if test "$enable_static" = yes; then
562
        APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
563
        GL_LIB_DEPS=""
564
    fi
565
    ;;
566
dri)
567
    # DRI must be shared, I think
568
    if test "$enable_static" = yes; then
569
        AC_MSG_ERROR([Can't use static libraries for DRI drivers])
570
    fi
571
572
    # Check for libdrm
573
    PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
574
    PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
575
    GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
576
    DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
577
578
    PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no)
579
580
    if test "$HAVE_LIBDRM_RADEON" = yes; then
581
	RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
582
	RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
583
    fi
584
585
    # find the DRI deps for libGL
586
    if test "$x11_pkgconfig" = yes; then
587
        # add xcb modules if necessary
588
        dri_modules="x11 xext xxf86vm xdamage xfixes"
589
        if test "$enable_xcb" = yes; then
590
            dri_modules="$dri_modules x11-xcb xcb-glx"
591
        fi
592
593
        PKG_CHECK_MODULES([DRIGL], [$dri_modules])
594
        GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
595
        X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
596
        GL_LIB_DEPS="$DRIGL_LIBS"
597
    else
598
        # should check these...
599
        X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
600
        GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
601
        GL_PC_LIB_PRIV="$GL_LIB_DEPS"
602
        GL_PC_CFLAGS="$X11_INCLUDES"
603
604
        # XCB can only be used from pkg-config
605
        if test "$enable_xcb" = yes; then
606
            PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
607
            GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
608
            X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
609
            GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
610
        fi
611
    fi
612
613
    # need DRM libs, -lpthread, etc.
614
    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
615
    GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
616
    ;;
617
osmesa)
618
    # No libGL for osmesa
619
    GL_LIB_DEPS=""
620
    ;;
621
esac
622
AC_SUBST([GL_LIB_DEPS])
623
AC_SUBST([GL_PC_REQ_PRIV])
624
AC_SUBST([GL_PC_LIB_PRIV])
625
AC_SUBST([GL_PC_CFLAGS])
626
AC_SUBST([DRI_PC_REQ_PRIV])
627
628
dnl
629
dnl More X11 setup
630
dnl
631
if test "$mesa_driver" = xlib; then
632
    DEFINES="$DEFINES -DUSE_XSHM"
633
fi
634
635
dnl
636
dnl More DRI setup
637
dnl
638
AC_ARG_ENABLE([glx-tls],
639
    [AS_HELP_STRING([--enable-glx-tls],
640
        [enable TLS support in GLX @<:@default=disabled@:>@])],
641
    [GLX_USE_TLS="$enableval"],
642
    [GLX_USE_TLS=no])
643
dnl Directory for DRI drivers
644
AC_ARG_WITH([dri-driverdir],
645
    [AS_HELP_STRING([--with-dri-driverdir=DIR],
646
        [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
647
    [DRI_DRIVER_INSTALL_DIR="$withval"],
648
    [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
649
AC_SUBST([DRI_DRIVER_INSTALL_DIR])
650
dnl Direct rendering or just indirect rendering
651
AC_ARG_ENABLE([driglx-direct],
652
    [AS_HELP_STRING([--disable-driglx-direct],
653
        [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
654
    [driglx_direct="$enableval"],
655
    [driglx_direct="yes"])
656
dnl Which drivers to build - default is chosen by platform
657
AC_ARG_WITH([dri-drivers],
658
    [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
659
        [comma delimited DRI drivers list, e.g.
660
        "swrast,i965,radeon" @<:@default=auto@:>@])],
661
    [with_dri_drivers="$withval"],
662
    [with_dri_drivers=yes])
663
if test "x$with_dri_drivers" = x; then
664
    with_dri_drivers=no
665
fi
666
667
dnl If $with_dri_drivers is yes, directories will be added through
668
dnl platform checks
669
DRI_DIRS=""
670
case "$with_dri_drivers" in
671
no) ;;
672
yes)
673
    DRI_DIRS="yes"
674
    ;;
675
*)
676
    # verify the requested driver directories exist
677
    dri_drivers=`IFS=', '; echo $with_dri_drivers`
678
    for driver in $dri_drivers; do
679
        test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
680
            AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
681
    done
682
    DRI_DIRS="$dri_drivers"
683
    ;;
684
esac
685
686
dnl Just default to no EGL for now
687
USING_EGL=0
688
AC_SUBST([USING_EGL])
689
690
dnl Set DRI_DIRS, DEFINES and LIB_DEPS
691
if test "$mesa_driver" = dri; then
692
    # Use TLS in GLX?
693
    if test "x$GLX_USE_TLS" = xyes; then
694
        DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
695
    fi
696
697
    if test "x$USING_EGL" = x1; then
698
        PROGRAM_DIRS="egl"
699
    fi
700
701
    # Platform specific settings and drivers to build
702
    case "$host_os" in
703
    linux*)
704
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
705
        if test "x$driglx_direct" = xyes; then
706
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
707
        fi
708
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
709
710
        case "$host_cpu" in
711
        x86_64)
712
            # ffb, gamma, and sis are missing because they have not be
713
            # converted to use the new interface.  i810 are missing
714
            # because there is no x86-64 system where they could *ever*
715
            # be used.
716
            if test "x$DRI_DIRS" = "xyes"; then
717
                DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
718
                    savage tdfx unichrome swrast"
719
            fi
720
            ;;
721
        powerpc*)
722
            # Build only the drivers for cards that exist on PowerPC.
723
            # At some point MGA will be added, but not yet.
724
            if test "x$DRI_DIRS" = "xyes"; then
725
                DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
726
            fi
727
            ;;
728
        sparc*)
729
            # Build only the drivers for cards that exist on sparc`
730
            if test "x$DRI_DIRS" = "xyes"; then
731
                DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
732
            fi
733
            ;;
734
        esac
735
        ;;
736
    freebsd* | dragonfly*)
737
        DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
738
        DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
739
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
740
        if test "x$driglx_direct" = xyes; then
741
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
742
        fi
743
        if test "x$GXX" = xyes; then
744
            CXXFLAGS="$CXXFLAGS -ansi -pedantic"
745
        fi
746
747
        # ffb and gamma are missing because they have not been converted
748
        # to use the new interface.
749
        if test "x$DRI_DIRS" = "xyes"; then
750
            DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
751
                unichrome savage sis swrast"
752
        fi
753
        ;;
754
    gnu*)
755
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
756
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
757
	;;
758
    solaris*)
759
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
760
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
761
        if test "x$driglx_direct" = xyes; then
762
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
763
        fi
764
        ;;
765
    esac
766
767
    # default drivers
768
    if test "x$DRI_DIRS" = "xyes"; then
769
        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon s3v \
770
            savage sis tdfx trident unichrome ffb swrast"
771
    fi
772
773
    DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
774
775
    # Check for expat
776
    EXPAT_INCLUDES=""
777
    EXPAT_LIB=-lexpat
778
    AC_ARG_WITH([expat],
779
        [AS_HELP_STRING([--with-expat=DIR],
780
            [expat install directory])],[
781
        EXPAT_INCLUDES="-I$withval/include"
782
        CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
783
        LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
784
        EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
785
        ])
786
    AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
787
    AC_CHECK_LIB([expat],[XML_ParserCreate],[],
788
        [AC_MSG_ERROR([Expat required for DRI.])])
789
790
    # put all the necessary libs together
791
    DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
792
fi
793
AC_SUBST([DRI_DIRS])
794
AC_SUBST([EXPAT_INCLUDES])
795
AC_SUBST([DRI_LIB_DEPS])
796
797
dnl
798
dnl OSMesa configuration
799
dnl
800
if test "$mesa_driver" = xlib; then
801
    default_gl_osmesa=yes
802
else
803
    default_gl_osmesa=no
804
fi
805
AC_ARG_ENABLE([gl-osmesa],
806
    [AS_HELP_STRING([--enable-gl-osmesa],
807
        [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
808
    [gl_osmesa="$enableval"],
809
    [gl_osmesa="$default_gl_osmesa"])
810
if test "x$gl_osmesa" = xyes; then
811
    if test "$mesa_driver" = osmesa; then
812
        AC_MSG_ERROR([libGL is not available for OSMesa driver])
813
    else
814
        DRIVER_DIRS="$DRIVER_DIRS osmesa"
815
    fi
816
fi
817
818
dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
819
AC_ARG_WITH([osmesa-bits],
820
    [AS_HELP_STRING([--with-osmesa-bits=BITS],
821
        [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
822
    [osmesa_bits="$withval"],
823
    [osmesa_bits=8])
824
if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
825
    AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
826
    osmesa_bits=8
827
fi
828
case "x$osmesa_bits" in
829
x8)
830
    OSMESA_LIB=OSMesa
831
    ;;
832
x16|x32)
833
    OSMESA_LIB="OSMesa$osmesa_bits"
834
    DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
835
    ;;
836
*)
837
    AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
838
    ;;
839
esac
840
AC_SUBST([OSMESA_LIB])
841
842
case "$mesa_driver" in
843
osmesa)
844
    # only link libraries with osmesa if shared
845
    if test "$enable_static" = no; then
846
        OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
847
    else
848
        OSMESA_LIB_DEPS=""
849
    fi
850
    OSMESA_MESA_DEPS=""
851
    OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
852
    ;;
853
*)
854
    # Link OSMesa to libGL otherwise
855
    OSMESA_LIB_DEPS=""
856
    # only link libraries with osmesa if shared
857
    if test "$enable_static" = no; then
858
        OSMESA_MESA_DEPS='-l$(GL_LIB)'
859
    else
860
        OSMESA_MESA_DEPS=""
861
    fi
862
    OSMESA_PC_REQ="gl"
863
    ;;
864
esac
865
OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
866
AC_SUBST([OSMESA_LIB_DEPS])
867
AC_SUBST([OSMESA_MESA_DEPS])
868
AC_SUBST([OSMESA_PC_REQ])
869
AC_SUBST([OSMESA_PC_LIB_PRIV])
870
871
dnl
872
dnl EGL configuration
873
dnl
874
AC_ARG_ENABLE([egl],
875
    [AS_HELP_STRING([--disable-egl],
876
        [disable EGL library @<:@default=enabled@:>@])],
877
    [enable_egl="$enableval"],
878
    [enable_egl=yes])
879
if test "x$enable_egl" = xyes; then
880
    SRC_DIRS="$SRC_DIRS egl"
881
882
    if test "$x11_pkgconfig" = yes; then
883
        PKG_CHECK_MODULES([EGL], [x11])
884
        EGL_LIB_DEPS="$EGL_LIBS"
885
    else
886
        # should check these...
887
        EGL_LIB_DEPS="$X_LIBS -lX11"
888
    fi
889
    EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
890
fi
891
AC_SUBST([EGL_LIB_DEPS])
892
893
dnl
894
dnl GLU configuration
895
dnl
896
AC_ARG_ENABLE([glu],
897
    [AS_HELP_STRING([--disable-glu],
898
        [enable OpenGL Utility library @<:@default=enabled@:>@])],
899
    [enable_glu="$enableval"],
900
    [enable_glu=yes])
901
if test "x$enable_glu" = xyes; then
902
    SRC_DIRS="$SRC_DIRS glu"
903
904
    case "$mesa_driver" in
905
    osmesa)
906
        # If GLU is available and we have libOSMesa (not 16 or 32),
907
        # we can build the osdemos
908
        if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
909
            PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
910
        fi
911
912
        # Link libGLU to libOSMesa instead of libGL
913
        GLU_LIB_DEPS=""
914
        GLU_PC_REQ="osmesa"
915
        if test "$enable_static" = no; then
916
            GLU_MESA_DEPS='-l$(OSMESA_LIB)'
917
        else
918
            GLU_MESA_DEPS=""
919
        fi
920
        ;;
921
    *)
922
        # If static, empty GLU_LIB_DEPS and add libs for programs to link
923
        GLU_PC_REQ="gl"
924
        GLU_PC_LIB_PRIV="-lm"
925
        if test "$enable_static" = no; then
926
            GLU_LIB_DEPS="-lm"
927
            GLU_MESA_DEPS='-l$(GL_LIB)'
928
        else
929
            GLU_LIB_DEPS=""
930
            GLU_MESA_DEPS=""
931
            APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
932
        fi
933
        ;;
934
    esac
935
fi
936
if test "$enable_static" = no; then
937
    GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
938
fi
939
GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
940
AC_SUBST([GLU_LIB_DEPS])
941
AC_SUBST([GLU_MESA_DEPS])
942
AC_SUBST([GLU_PC_REQ])
943
AC_SUBST([GLU_PC_REQ_PRIV])
944
AC_SUBST([GLU_PC_LIB_PRIV])
945
AC_SUBST([GLU_PC_CFLAGS])
946
947
dnl
948
dnl GLw configuration
949
dnl
950
AC_ARG_ENABLE([glw],
951
    [AS_HELP_STRING([--disable-glw],
952
        [enable Xt/Motif widget library @<:@default=enabled@:>@])],
953
    [enable_glw="$enableval"],
954
    [enable_glw=yes])
955
dnl Don't build GLw on osmesa
956
if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
957
    AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
958
    enable_glw=no
959
fi
960
AC_ARG_ENABLE([motif],
961
    [AS_HELP_STRING([--enable-motif],
962
        [use Motif widgets in GLw @<:@default=disabled@:>@])],
963
    [enable_motif="$enableval"],
964
    [enable_motif=no])
965
966
if test "x$enable_glw" = xyes; then
967
    SRC_DIRS="$SRC_DIRS glw"
968
    if test "$x11_pkgconfig" = yes; then
969
        PKG_CHECK_MODULES([GLW],[x11 xt])
970
        GLW_PC_REQ_PRIV="x11 xt"
971
        GLW_LIB_DEPS="$GLW_LIBS"
972
    else
973
        # should check these...
974
        GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
975
        GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
976
        GLW_PC_CFLAGS="$X11_INCLUDES"
977
    fi
978
979
    GLW_SOURCES="GLwDrawA.c"
980
    MOTIF_CFLAGS=
981
    if test "x$enable_motif" = xyes; then
982
        GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
983
        AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
984
        if test "x$MOTIF_CONFIG" != xno; then
985
            MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
986
            MOTIF_LIBS=`$MOTIF_CONFIG --libs`
987
        else
988
            AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
989
                [AC_MSG_ERROR([Can't locate Motif headers])])
990
            AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
991
                [AC_MSG_ERROR([Can't locate Motif Xm library])])
992
        fi
993
        # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
994
        GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
995
        GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
996
        GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
997
    fi
998
999
    # If static, empty GLW_LIB_DEPS and add libs for programs to link
1000
    GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1001
    if test "$enable_static" = no; then
1002
        GLW_MESA_DEPS='-l$(GL_LIB)'
1003
        GLW_LIB_DEPS="$GLW_LIB_DEPS"
1004
    else
1005
        APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1006
        GLW_LIB_DEPS=""
1007
        GLW_MESA_DEPS=""
1008
    fi
1009
fi
1010
AC_SUBST([GLW_LIB_DEPS])
1011
AC_SUBST([GLW_MESA_DEPS])
1012
AC_SUBST([GLW_SOURCES])
1013
AC_SUBST([MOTIF_CFLAGS])
1014
AC_SUBST([GLW_PC_REQ_PRIV])
1015
AC_SUBST([GLW_PC_LIB_PRIV])
1016
AC_SUBST([GLW_PC_CFLAGS])
1017
1018
dnl
1019
dnl GLUT configuration
1020
dnl
1021
if test -f "$srcdir/include/GL/glut.h"; then
1022
    default_glut=yes
1023
else
1024
    default_glut=no
1025
fi
1026
AC_ARG_ENABLE([glut],
1027
    [AS_HELP_STRING([--disable-glut],
1028
        [enable GLUT library @<:@default=enabled if source available@:>@])],
1029
    [enable_glut="$enableval"],
1030
    [enable_glut="$default_glut"])
1031
1032
dnl Can't build glut if GLU not available
1033
if test "x$enable_glu$enable_glut" = xnoyes; then
1034
    AC_MSG_WARN([Disabling glut since GLU is disabled])
1035
    enable_glut=no
1036
fi
1037
dnl Don't build glut on osmesa
1038
if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1039
    AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1040
    enable_glut=no
1041
fi
1042
1043
if test "x$enable_glut" = xyes; then
1044
    SRC_DIRS="$SRC_DIRS glut/glx"
1045
    GLUT_CFLAGS=""
1046
    if test "x$GCC" = xyes; then
1047
        GLUT_CFLAGS="-fexceptions"
1048
    fi
1049
    if test "$x11_pkgconfig" = yes; then
1050
        PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1051
        GLUT_PC_REQ_PRIV="x11 xmu xi"
1052
        GLUT_LIB_DEPS="$GLUT_LIBS"
1053
    else
1054
        # should check these...
1055
        GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1056
        GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1057
        GLUT_PC_CFLAGS="$X11_INCLUDES"
1058
    fi
1059
    GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1060
    GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1061
1062
    # If glut is available, we can build most programs
1063
    if test "$with_demos" = yes; then
1064
        PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1065
    fi
1066
1067
    # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1068
    if test "$enable_static" = no; then
1069
        GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1070
    else
1071
        APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1072
        GLUT_LIB_DEPS=""
1073
        GLUT_MESA_DEPS=""
1074
    fi
1075
fi
1076
AC_SUBST([GLUT_LIB_DEPS])
1077
AC_SUBST([GLUT_MESA_DEPS])
1078
AC_SUBST([GLUT_CFLAGS])
1079
AC_SUBST([GLUT_PC_REQ_PRIV])
1080
AC_SUBST([GLUT_PC_LIB_PRIV])
1081
AC_SUBST([GLUT_PC_CFLAGS])
1082
1083
dnl
1084
dnl Program library dependencies
1085
dnl    Only libm is added here if necessary as the libraries should
1086
dnl    be pulled in by the linker
1087
dnl
1088
if test "x$APP_LIB_DEPS" = x; then
1089
    case "$host_os" in
1090
    solaris*)
1091
        APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1092
        ;;
1093
    cygwin*)
1094
        APP_LIB_DEPS="-lX11"
1095
        ;;
1096
    *)
1097
        APP_LIB_DEPS="-lm"
1098
        ;;
1099
    esac
1100
fi
1101
AC_SUBST([APP_LIB_DEPS])
1102
AC_SUBST([PROGRAM_DIRS])
1103
1104
dnl
1105
dnl Gallium configuration
1106
dnl
1107
AC_ARG_ENABLE([gallium],
1108
    [AS_HELP_STRING([--disable-gallium],
1109
        [build gallium @<:@default=enabled@:>@])],
1110
    [enable_gallium="$enableval"],
1111
    [enable_gallium=yes])
1112
if test "x$enable_gallium" = xyes; then
1113
    SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1114
fi
1115
1116
dnl
1117
dnl Gallium state trackers configuration
1118
dnl
1119
AC_ARG_WITH([state-trackers],
1120
    [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1121
        [comma delimited state_trackers list, e.g.
1122
        "egl,glx" @<:@default=auto@:>@])],
1123
    [with_state_trackers="$withval"],
1124
    [with_state_trackers=yes])
1125
1126
case "$with_state_trackers" in
1127
no)
1128
    GALLIUM_STATE_TRACKERS_DIRS=""
1129
    ;;
1130
yes)
1131
    # look at what else is built
1132
    case "$mesa_driver" in
1133
    xlib)
1134
        GALLIUM_STATE_TRACKERS_DIRS=glx
1135
        ;;
1136
    dri)
1137
        test "x$enable_egl" = xyes && GALLIUM_STATE_TRACKERS_DIRS=egl
1138
        ;;
1139
    esac
1140
    ;;
1141
*)
1142
    # verify the requested state tracker exist
1143
    state_trackers=`IFS=', '; echo $with_state_trackers`
1144
    for tracker in $state_trackers; do
1145
        test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1146
            AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1147
1148
        if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1149
            AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1150
        fi
1151
    done
1152
    GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1153
    ;;
1154
esac
1155
1156
AC_ARG_WITH([xorg-driver-dir],
1157
    [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1158
                    [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1159
    [XORG_DRIVER_INSTALL_DIR="$withval"],
1160
    [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1161
AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1162
1163
AC_ARG_WITH([max-width],
1164
    [AS_HELP_STRING([--with-max-width=N],
1165
                    [Maximum framebuffer width (4096)])],
1166
    [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1167
     AS_IF([test "${withval}" -gt "4096"],
1168
           [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1169
)
1170
AC_ARG_WITH([max-height],
1171
    [AS_HELP_STRING([--with-max-height=N],
1172
                    [Maximum framebuffer height (4096)])],
1173
    [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1174
     AS_IF([test "${withval}" -gt "4096"],
1175
           [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1176
)
1177
1178
dnl
1179
dnl Gallium Intel configuration
1180
dnl
1181
AC_ARG_ENABLE([gallium-intel],
1182
    [AS_HELP_STRING([--disable-gallium-intel],
1183
        [build gallium intel @<:@default=enabled@:>@])],
1184
    [enable_gallium_intel="$enableval"],
1185
    [enable_gallium_intel=yes])
1186
if test "x$enable_gallium_intel" = xyes; then
1187
    GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel"
1188
    GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915simple"
1189
fi
1190
1191
dnl
1192
dnl Gallium Radeon configuration
1193
dnl
1194
AC_ARG_ENABLE([gallium-radeon],
1195
    [AS_HELP_STRING([--enable-gallium-radeon],
1196
        [build gallium radeon @<:@default=disabled@:>@])],
1197
    [enable_gallium_radeon="$enableval"],
1198
    [enable_gallium_radeon=no])
1199
if test "x$enable_gallium_radeon" = xyes; then
1200
    GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1201
    GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1202
fi
1203
1204
dnl
1205
dnl Gallium Radeon configuration
1206
dnl
1207
AC_ARG_ENABLE([gallium-nouveau],
1208
    [AS_HELP_STRING([--enable-gallium-nouveau],
1209
        [build gallium nouveau @<:@default=disabled@:>@])],
1210
    [enable_gallium_nouveau="$enableval"],
1211
    [enable_gallium_nouveau=no])
1212
if test "x$enable_gallium_nouveau" = xyes; then
1213
    GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1214
    GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1215
fi
1216
1217
1218
dnl Restore LDFLAGS and CPPFLAGS
1219
LDFLAGS="$_SAVE_LDFLAGS"
1220
CPPFLAGS="$_SAVE_CPPFLAGS"
1221
1222
dnl Substitute the config
1223
AC_CONFIG_FILES([configs/autoconf])
1224
1225
dnl Replace the configs/current symlink
1226
AC_CONFIG_COMMANDS([configs],[
1227
if test -f configs/current || test -L configs/current; then
1228
    rm -f configs/current
1229
fi
1230
ln -s autoconf configs/current
1231
])
1232
1233
AC_OUTPUT
1234
1235
dnl
1236
dnl Output some configuration info for the user
1237
dnl
1238
echo ""
1239
echo "        prefix:          $prefix"
1240
echo "        exec_prefix:     $exec_prefix"
1241
echo "        libdir:          $libdir"
1242
echo "        includedir:      $includedir"
1243
1244
dnl Driver info
1245
echo ""
1246
echo "        Driver:          $mesa_driver"
1247
if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1248
    echo "        OSMesa:          lib$OSMESA_LIB"
1249
else
1250
    echo "        OSMesa:          no"
1251
fi
1252
if test "$mesa_driver" = dri; then
1253
    # cleanup the drivers var
1254
    dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1255
if test "x$DRI_DIRS" = x; then
1256
    echo "        DRI drivers:     no"
1257
else
1258
    echo "        DRI drivers:     $dri_dirs"
1259
fi
1260
    echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1261
fi
1262
echo "        Use XCB:         $enable_xcb"
1263
1264
echo ""
1265
if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1266
    echo "        Gallium:         yes"
1267
    echo "        Gallium dirs:    $GALLIUM_DIRS"
1268
    echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
1269
    echo "        Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1270
    echo "        Auxiliary dirs:  $GALLIUM_AUXILIARY_DIRS"
1271
    echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
1272
    echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
1273
else
1274
    echo "        Gallium:         no"
1275
fi
1276
1277
dnl Libraries
1278
echo ""
1279
echo "        Shared libs:     $enable_shared"
1280
echo "        Static libs:     $enable_static"
1281
echo "        EGL:             $enable_egl"
1282
echo "        GLU:             $enable_glu"
1283
echo "        GLw:             $enable_glw (Motif: $enable_motif)"
1284
echo "        glut:            $enable_glut"
1285
1286
dnl Programs
1287
# cleanup the programs var for display
1288
program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1289
if test "x$program_dirs" = x; then
1290
    echo "        Demos:           no"
1291
else
1292
    echo "        Demos:           $program_dirs"
1293
fi
1294
1295
dnl Compiler options
1296
# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1297
cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1298
    $SED 's/^ *//;s/  */ /;s/ *$//'`
1299
cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1300
    $SED 's/^ *//;s/  */ /;s/ *$//'`
1301
defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1302
echo ""
1303
echo "        CFLAGS:          $cflags"
1304
echo "        CXXFLAGS:        $cxxflags"
1305
echo "        Macros:          $defines"
1306
1307
echo ""
1308
echo "        Run '${MAKE-make}' to build Mesa"
1309
echo ""