configure.ac 25.8 KB
Newer Older
1
2
dnl Process this file with autoconf to create configure.

3
AC_PREREQ([2.59])
4

5
6
7
8
9
10
11
12
13
dnl Versioning - scrape the version from configs/default
m4_define([mesa_version],
    [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n'])])
m4_ifval(mesa_version,[],[
    m4_errprint([Error: Failed to get the Mesa version from the output of
       running `make -f bin/version.mk version'
])
    m4_exit([1])
])
14

15
AC_INIT([Mesa],[mesa_version],
16
    [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17
AC_CONFIG_AUX_DIR([bin])
18
19
AC_CANONICAL_HOST

20
21
22
23
dnl Versions for external dependencies
LIBDRM_REQUIRED=2.3.1
DRI2PROTO_REQUIRED=1.1

24
25
26
27
dnl Check for progs
AC_PROG_CPP
AC_PROG_CC
AC_PROG_CXX
28
29
30
AC_CHECK_PROGS([MAKE], [gmake make])
AC_PATH_PROG([MKDEP], [makedepend])
AC_PATH_PROG([SED], [sed])
31

32
MKDEP_OPTIONS=-fdepend
33
34
dnl Ask gcc where it's keeping its secret headers
if test "x$GCC" = xyes; then
35
36
37
38
    GCC_INCLUDES=`$CC -print-file-name=include`
    if test "x$GCC_INCLUDES" != x; then
        MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
    fi
39
fi
40
AC_SUBST([MKDEP_OPTIONS])
41

42
43
44
dnl Check to see if dlopen is in default libraries (like Solaris, which
dnl has it in libc), or if libdl is needed to get it.
AC_CHECK_FUNC([dlopen], [],
45
	[AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
46

47
dnl Make sure the pkg-config macros are defined
48
m4_ifdef([PKG_PROG_PKG_CONFIG],[],[
49
50
51
52
53
54
55
56
    m4_errprint([Error: Could not locate the pkg-config autoconf macros.
       These are usually located in /usr/share/aclocal/pkg.m4. If your
       macros are in a different location, try setting the environment
       variable ACLOCAL="aclocal -I/other/macro/dir" before running
       autoreconf.
])
    m4_exit([1])
])
57
58
59
60
PKG_PROG_PKG_CONFIG()

dnl LIB_DIR - library basename
LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
61
AC_SUBST([LIB_DIR])
62
63
64

dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
_SAVE_LDFLAGS="$LDFLAGS"
65
66
AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
AC_SUBST([EXTRA_LIB_PATH])
67
68
69

dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
_SAVE_CPPFLAGS="$CPPFLAGS"
70
71
AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
AC_SUBST([X11_INCLUDES])
72
73
74

dnl Compiler macros
DEFINES=""
75
AC_SUBST([DEFINES])
76
77
case "$host_os" in
linux*)
78
79
80
if test "x$GCC" = xyes; then
    DEFINES="$DEFINES -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
fi
81
82
83
84
85
86
87
    DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
    ;;
esac

dnl Add flags for gcc and g++
if test "x$GCC" = xyes; then
    CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
88
89
90

    # Work around aliasing bugs - developers should comment this out
    CFLAGS="$CFLAGS -fno-strict-aliasing"
91
92
93
fi
if test "x$GXX" = xyes; then
    CXXFLAGS="$CXXFLAGS -Wall"
94
95
96

    # Work around aliasing bugs - developers should comment this out
    CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
97
98
99
fi

dnl These should be unnecessary, but let the user set them if they want
100
AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
101
    Default is to use CFLAGS.])
102
AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
103
    compiler. Default is to use CFLAGS.])
104
105
AC_SUBST([OPT_FLAGS])
AC_SUBST([ARCH_FLAGS])
106

107
108
109
dnl
dnl Hacks to enable 32 or 64 bit build
dnl
110
AC_ARG_ENABLE([32-bit],
111
112
    [AS_HELP_STRING([--enable-32-bit],
        [build 32-bit libraries @<:@default=auto@:>@])],
113
114
    [enable_32bit="$enableval"],
    [enable_32bit=auto]
115
116
117
118
119
120
121
122
123
)
if test "x$enable_32bit" = xyes; then
    if test "x$GCC" = xyes; then
        CFLAGS="$CFLAGS -m32"
    fi
    if test "x$GXX" = xyes; then
        CXXFLAGS="$CXXFLAGS -m32"
    fi
fi
124
AC_ARG_ENABLE([64-bit],
125
126
    [AS_HELP_STRING([--enable-64-bit],
        [build 64-bit libraries @<:@default=auto@:>@])],
127
128
    [enable_64bit="$enableval"],
    [enable_64bit=auto]
129
130
131
132
133
134
135
136
137
138
)
if test "x$enable_64bit" = xyes; then
    if test "x$GCC" = xyes; then
        CFLAGS="$CFLAGS -m64"
    fi
    if test "x$GXX" = xyes; then
        CXXFLAGS="$CXXFLAGS -m64"
    fi
fi

139
140
141
dnl
dnl shared/static libraries, mimic libtool options
dnl
142
AC_ARG_ENABLE([static],
143
    [AS_HELP_STRING([--enable-static],
144
        [build static libraries @<:@default=disabled@:>@])],
145
146
    [enable_static="$enableval"],
    [enable_static=no]
147
148
149
150
151
152
153
154
)
case "x$enable_static" in
xyes|xno ) ;;
x ) enable_static=no ;;
* )
    AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
    ;;
esac
155
AC_ARG_ENABLE([shared],
156
    [AS_HELP_STRING([--disable-shared],
157
        [build shared libraries @<:@default=enabled@:>@])],
158
159
    [enable_shared="$enableval"],
    [enable_shared=yes]
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
)
case "x$enable_shared" in
xyes|xno ) ;;
x ) enable_shared=yes ;;
* )
    AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
    ;;
esac

dnl Can't have static and shared libraries, default to static if user
dnl explicitly requested. If both disabled, set to static since shared
dnl was explicitly requirested.
case "x$enable_static$enable_shared" in
xyesyes )
    AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
    enable_shared=no
    ;;
xnono )
    AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
    enable_static=yes
    ;;
esac

dnl
dnl mklib options
dnl
186
AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
187
188
189
if test "$enable_static" = yes; then
    MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
fi
190
AC_SUBST([MKLIB_OPTIONS])
191

192
193
194
dnl
dnl other compiler options
dnl
195
AC_ARG_ENABLE([debug],
196
197
    [AS_HELP_STRING([--enable-debug],
        [use debug compiler flags and macros @<:@default=disabled@:>@])],
198
199
    [enable_debug="$enableval"],
    [enable_debug=no]
200
201
202
203
204
205
206
207
208
209
)
if test "x$enable_debug" = xyes; then
    DEFINES="$DEFINES -DDEBUG"
    if test "x$GCC" = xyes; then
        CFLAGS="$CFLAGS -g"
    fi
    if test "x$GXX" = xyes; then
        CXXFLAGS="$CXXFLAGS -g"
    fi
fi
210

211
212
213
dnl
dnl library names
dnl
214
215
216
217
218
219
220
221
222
223
224
225
226
if test "$enable_static" = yes; then
    GL_LIB_NAME='lib$(GL_LIB).a'
    GLU_LIB_NAME='lib$(GLU_LIB).a'
    GLUT_LIB_NAME='lib$(GLUT_LIB).a'
    GLW_LIB_NAME='lib$(GLW_LIB).a'
    OSMESA_LIB_NAME='lib$(OSMESA_LIB).a'
else
    GL_LIB_NAME='lib$(GL_LIB).so'
    GLU_LIB_NAME='lib$(GLU_LIB).so'
    GLUT_LIB_NAME='lib$(GLUT_LIB).so'
    GLW_LIB_NAME='lib$(GLW_LIB).so'
    OSMESA_LIB_NAME='lib$(OSMESA_LIB).so'
fi
227
228
229
230
231
AC_SUBST([GL_LIB_NAME])
AC_SUBST([GLU_LIB_NAME])
AC_SUBST([GLUT_LIB_NAME])
AC_SUBST([GLW_LIB_NAME])
AC_SUBST([OSMESA_LIB_NAME])
232
233

dnl
234
dnl Driver configuration. Options are xlib, dri and osmesa right now.
235
dnl More later: directfb, fbdev, ...
236
dnl
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
default_driver="xlib"

case "$host_os" in
linux*)
    case "$host_cpu" in
    i*86|x86_64|powerpc*) default_driver="dri";;
    esac
    ;;
freebsd* | dragonfly*)
    case "$host_cpu" in
    i*86|x86_64) default_driver="dri";;
    esac
    ;;
esac

252
AC_ARG_WITH([driver],
253
    [AS_HELP_STRING([--with-driver=DRIVER],
254
        [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
255
256
    [mesa_driver="$withval"],
    [mesa_driver="$default_driver"])
257
258
dnl Check for valid option
case "x$mesa_driver" in
259
xxlib|xdri|xosmesa)
260
261
262
263
264
265
266
267
    ;;
*)
    AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
    ;;
esac

dnl
dnl Driver specific build directories
268
269
270
dnl
SRC_DIRS="mesa"
GLU_DIRS="sgi"
271
272
WINDOW_SYSTEM=""
case "$mesa_driver" in
273
xlib)
274
275
276
277
278
279
280
    DRIVER_DIRS="x11"
    ;;
dri)
    SRC_DIRS="glx/x11 $SRC_DIRS"
    DRIVER_DIRS="dri"
    WINDOW_SYSTEM="dri"
    ;;
281
282
283
osmesa)
    DRIVER_DIRS="osmesa"
    ;;
284
esac
285
286
287
288
AC_SUBST([SRC_DIRS])
AC_SUBST([GLU_DIRS])
AC_SUBST([DRIVER_DIRS])
AC_SUBST([WINDOW_SYSTEM])
289

290
291
292
293
294
295
296
297
dnl
dnl User supplied program configuration
dnl
if test -d "$srcdir/progs/demos"; then
    default_demos=yes
else
    default_demos=no
fi
298
AC_ARG_WITH([demos],
299
300
    [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
        [optional comma delimited demo directories to build
301
        @<:@default=auto if source available@:>@])],
302
303
    [with_demos="$withval"],
    [with_demos="$default_demos"])
304
305
306
307
308
309
310
if test "x$with_demos" = x; then
    with_demos=no
fi

dnl If $with_demos is yes, directories will be added as libs available
PROGRAM_DIRS=""
case "$with_demos" in
311
312
313
314
315
316
317
no) ;;
yes)
    # If the driver isn't osmesa, we have libGL and can build xdemos
    if test "$mesa_driver" != osmesa; then
        PROGRAM_DIRS="xdemos"
    fi
    ;;
318
319
320
321
322
323
324
325
326
327
328
*)
    # verify the requested demos directories exist
    demos=`IFS=,; echo $with_demos`
    for demo in $demos; do
        test -d "$srcdir/progs/$demo" || \
            AC_MSG_ERROR([Program directory '$demo' doesn't exist])
    done
    PROGRAM_DIRS="$demos"
    ;;
esac

329
dnl
330
331
dnl Find out if X is available. The variable have_x is set if libX11 is
dnl to mimic AC_PATH_XTRA.
332
333
334
dnl
if test -n "$PKG_CONFIG"; then
    AC_MSG_CHECKING([pkg-config files for X11 are available])
335
    PKG_CHECK_EXISTS([x11],[
336
337
        x11_pkgconfig=yes
        have_x=yes
338
        ],[
339
        x11_pkgconfig=no
340
341
    ])
    AC_MSG_RESULT([$x11_pkgconfig])
342
343
344
345
346
347
348
349
else
    x11_pkgconfig=no
fi
dnl Use the autoconf macro if no pkg-config files
if test "$x11_pkgconfig" = no; then
    AC_PATH_XTRA
fi

350
351
dnl We need X for xlib and dri, so bomb now if it's not found
case "$mesa_driver" in
352
xlib|dri)
353
354
355
356
357
358
    if test "$no_x" = yes; then
        AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
    fi
    ;;
esac

359
# SELinux awareness.
360
361
362
363
364
AC_ARG_ENABLE([selinux],
    [AS_HELP_STRING([--enable-selinux],
        [Build SELinux-aware Mesa (default: disabled)])],
    [MESA_SELINUX="$enableval"],
    [MESA_SELINUX=no])
365
if test "x$enable_selinux" = "xyes"; then
366
367
368
369
    AC_CHECK_HEADER([selinux/selinux.h],[],
		    [AC_MSG_ERROR([SELinux headers not found])])
    AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
		 [AC_MSG_ERROR([SELinux library not found])])
370
371
372
373
    SELINUX_LIBS="-lselinux"
    DEFINES="$DEFINES -DMESA_SELINUX"
fi

374
dnl
375
dnl libGL configuration per driver
376
dnl
377
case "$mesa_driver" in
378
xlib)
379
    if test "$x11_pkgconfig" = yes; then
380
        PKG_CHECK_MODULES([XLIBGL], [x11 xext])
381
382
        X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
        GL_LIB_DEPS="$XLIBGL_LIBS"
383
384
385
386
387
    else
        # should check these...
        X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
        GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
    fi
388
    GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
389
390
391
392
393
394
395

    # if static, move the external libraries to the programs
    # and empty the libraries for libGL
    if test "$enable_static" = yes; then
        APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
        GL_LIB_DEPS=""
    fi
396
397
    ;;
dri)
398
399
400
401
402
    # DRI must be shared, I think
    if test "$enable_static" = yes; then
        AC_MSG_ERROR([Can't use static libraries for DRI drivers])
    fi

403
    # Check for libdrm
404
405
    PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
    PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
406

407
408
    # find the DRI deps for libGL
    if test "$x11_pkgconfig" = yes; then
409
        PKG_CHECK_MODULES([DRIGL], [x11 xext xxf86vm xdamage xfixes])
410
411
412
413
414
415
416
417
418
        X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
        GL_LIB_DEPS="$DRIGL_LIBS"
    else
        # should check these...
        X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
        GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
    fi

    # need DRM libs, -lpthread, etc.
419
    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
420
    ;;
421
422
423
424
osmesa)
    # No libGL for osmesa
    GL_LIB_DEPS=""
    ;;
425
esac
426
AC_SUBST([GL_LIB_DEPS])
427
428
429
430

dnl
dnl More X11 setup
dnl
431
if test "$mesa_driver" = xlib; then
432
433
434
    DEFINES="$DEFINES -DUSE_XSHM"
fi

435
436
437
dnl
dnl More DRI setup
dnl
438
AC_ARG_ENABLE([glx-tls],
439
    [AS_HELP_STRING([--enable-glx-tls],
440
        [enable TLS support in GLX @<:@default=disabled@:>@])],
441
442
    [GLX_USE_TLS="$enableval"],
    [GLX_USE_TLS=no])
443
dnl Directory for DRI drivers
444
AC_ARG_WITH([dri-driverdir],
445
    [AS_HELP_STRING([--with-dri-driverdir=DIR],
446
        [directory for the DRI drivers @<:@/usr/X11R6/lib/modules/dri@:>@])],
447
448
449
    [DRI_DRIVER_INSTALL_DIR="$withval"],
    [DRI_DRIVER_INSTALL_DIR='/usr/X11R6/lib/modules/dri'])
AC_SUBST([DRI_DRIVER_INSTALL_DIR])
450
dnl Direct rendering or just indirect rendering
451
AC_ARG_ENABLE([driglx-direct],
452
453
    [AS_HELP_STRING([--disable-driglx-direct],
        [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
454
455
    [driglx_direct="$enableval"],
    [driglx_direct="yes"])
456

457
dnl Which drivers to build - default is chosen by platform
458
AC_ARG_WITH([dri-drivers],
459
    [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
460
        [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])],
461
462
    [with_dri_drivers="$withval"],
    [with_dri_drivers=yes])
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
if test "x$with_dri_drivers" = x; then
    with_dri_drivers=no
fi

dnl If $with_dri_drivers is yes, directories will be added through
dnl platform checks
DRI_DIRS=""
case "$with_dri_drivers" in
no|yes) ;;
*)
    # verify the requested driver directories exist
    dri_drivers=`IFS=,; echo $with_dri_drivers`
    for driver in $dri_drivers; do
        test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
            AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
    done
    DRI_DIRS="$dri_drivers"
    ;;
esac

483
484
dnl Just default to no EGL for now
USING_EGL=0
485
AC_SUBST([USING_EGL])
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508

dnl Set DRI_DIRS, DEFINES and LIB_DEPS
if test "$mesa_driver" = dri; then
    # Use TLS in GLX?
    if test "x$GLX_USE_TLS" = xyes; then
        DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
    fi

    if test "x$USING_EGL" = x1; then
        PROGRAM_DIRS="egl"
    fi

    # Platform specific settings and drivers to build
    case "$host_os" in
    linux*)
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
        if test "x$driglx_direct" = xyes; then
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
        fi

        case "$host_cpu" in
        x86_64)
509
510
511
512
            # ffb, gamma, and sis are missing because they have not be
            # converted to use the new interface.  i810 are missing
            # because there is no x86-64 system where they could *ever*
            # be used.
513
            if test "x$DRI_DIRS" = x; then
514
515
                DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
                    savage tdfx unichrome"
516
            fi
517
518
            ;;
        powerpc*)
519
520
            # Build only the drivers for cards that exist on PowerPC.
            # At some point MGA will be added, but not yet.
521
522
523
            if test "x$DRI_DIRS" = x; then
                DRI_DIRS="mach64 r128 r200 r300 radeon tdfx"
            fi
524
525
526
            ;;
        esac
        ;;
Hasso Tepper's avatar
Hasso Tepper committed
527
    freebsd* | dragonfly*)
528
529
530
531
532
533
534
535
536
537
        DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
        DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
        if test "x$driglx_direct" = xyes; then
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
        fi
        if test "x$GXX" = xyes; then
            CXXFLAGS="$CXXFLAGS -ansi -pedantic"
        fi

538
539
        # ffb and gamma are missing because they have not been converted
        # to use the new interface.
540
541
542
543
        if test "x$DRI_DIRS" = x; then
            DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
                unichrome savage sis"
        fi
544
545
        ;;
    esac
546
547
548
549
550
551
552

    # default drivers
    if test "x$DRI_DIRS" = x; then
        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
            savage sis tdfx trident unichrome ffb"
    fi

553
554
555
556
557
    DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`

    # Check for expat
    EXPAT_INCLUDES=""
    EXPAT_LIB=-lexpat
558
559
560
    AC_ARG_WITH([expat],
        [AS_HELP_STRING([--with-expat=DIR],
            [expat install directory])],[
561
562
563
564
565
        EXPAT_INCLUDES="-I$withval/include"
        CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
        LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
        EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
        ])
566
567
568
    AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
    AC_CHECK_LIB([expat],[XML_ParserCreate],[],
        [AC_MSG_ERROR([Expat required for DRI.])])
569
570

    # put all the necessary libs together
571
    DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
572
fi
573
574
575
AC_SUBST([DRI_DIRS])
AC_SUBST([EXPAT_INCLUDES])
AC_SUBST([DRI_LIB_DEPS])
576

577
578
579
dnl
dnl OSMesa configuration
dnl
580
if test "$mesa_driver" = xlib; then
581
    default_gl_osmesa=yes
582
else
583
    default_gl_osmesa=no
584
fi
585
AC_ARG_ENABLE([gl-osmesa],
586
587
    [AS_HELP_STRING([--enable-gl-osmesa],
        [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
588
589
    [gl_osmesa="$enableval"],
    [gl_osmesa="$default_gl_osmesa"])
590
591
592
if test "x$gl_osmesa" = xyes; then
    if test "$mesa_driver" = osmesa; then
        AC_MSG_ERROR([libGL is not available for OSMesa driver])
593
    else
594
        DRIVER_DIRS="$DRIVER_DIRS osmesa"
595
    fi
596
fi
597

598
dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
599
AC_ARG_WITH([osmesa-bits],
600
601
    [AS_HELP_STRING([--with-osmesa-bits=BITS],
        [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
602
603
    [osmesa_bits="$withval"],
    [osmesa_bits=8])
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
    AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
    osmesa_bits=8
fi
case "x$osmesa_bits" in
x8)
    OSMESA_LIB=OSMesa
    ;;
x16|x32)
    OSMESA_LIB="OSMesa$osmesa_bits"
    DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
    ;;
*)
    AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
    ;;
esac
620
AC_SUBST([OSMESA_LIB])
621

622
623
case "$mesa_driver" in
osmesa)
624
625
    # only link librararies with osmesa if shared
    if test "$enable_static" = no; then
626
        OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS"
627
628
629
    else
        OSMESA_LIB_DEPS=""
    fi
630
631
632
633
634
    OSMESA_MESA_DEPS=""
    ;;
*)
    # Link OSMesa to libGL otherwise
    OSMESA_LIB_DEPS=""
635
636
637
638
639
640
    # only link librararies with osmesa if shared
    if test "$enable_static" = no; then
        OSMESA_MESA_DEPS='-l$(GL_LIB)'
    else
        OSMESA_MESA_DEPS=""
    fi
641
642
    ;;
esac
643
644
AC_SUBST([OSMESA_LIB_DEPS])
AC_SUBST([OSMESA_MESA_DEPS])
645

646
647
648
649
650
651
652
653
654
dnl
dnl GLcore configuration
dnl
# delay pkg-config checks until `make glcore' run
XORG_CFLAGS='`pkg-config --cflags xorg-server`'
GLCORE_LIB_DEPS='-lm -lpthread'
if test "$mesa_driver" = dri; then
    GLCORE_LIB_DEPS="$GLCORE_LIB_DEPS $DLOPEN_LIBS"
fi
655
656
AC_SUBST([XORG_CFLAGS])
AC_SUBST([GLCORE_LIB_DEPS])
657

658
659
660
dnl
dnl GLU configuration
dnl
661
AC_ARG_ENABLE([glu],
662
663
    [AS_HELP_STRING([--disable-glu],
        [enable OpenGL Utility library @<:@default=enabled@:>@])],
664
665
    [enable_glu="$enableval"],
    [enable_glu=yes])
666
667
668
if test "x$enable_glu" = xyes; then
    SRC_DIRS="$SRC_DIRS glu"

669
670
    case "$mesa_driver" in
    osmesa)
671
672
        # If GLU is available and we have libOSMesa (not 16 or 32),
        # we can build the osdemos
673
        if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
674
675
            PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
        fi
676

677
678
        # Link libGLU to libOSMesa instead of libGL
        GLU_LIB_DEPS=""
679
680
681
682
683
        if test "$enable_static" = no; then
            GLU_MESA_DEPS='-l$(OSMESA_LIB)'
        else
            GLU_MESA_DEPS=""
        fi
684
685
        ;;
    *)
686
687
688
689
690
691
692
693
694
        # If static, empty GLU_LIB_DEPS and add libs for programs to link
        if test "$enable_static" = no; then
            GLU_LIB_DEPS="-lm"
            GLU_MESA_DEPS='-l$(GL_LIB)'
        else
            GLU_LIB_DEPS=""
            GLU_MESA_DEPS=""
            APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
        fi
695
696
        ;;
    esac
697
fi
698
699
AC_SUBST([GLU_LIB_DEPS])
AC_SUBST([GLU_MESA_DEPS])
700
701
702
703

dnl
dnl GLw configuration
dnl
704
AC_ARG_ENABLE([glw],
705
706
    [AS_HELP_STRING([--disable-glw],
        [enable Xt/Motif widget library @<:@default=enabled@:>@])],
707
708
    [enable_glw="$enableval"],
    [enable_glw=yes])
709
710
711
712
713
dnl Don't build GLw on osmesa
if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
    AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
    enable_glw=no
fi
714
715
716
if test "x$enable_glw" = xyes; then
    SRC_DIRS="$SRC_DIRS glw"
    if test "$x11_pkgconfig" = yes; then
717
        PKG_CHECK_MODULES([GLW],[x11 xt])
718
719
720
721
722
723
        GLW_LIB_DEPS="$GLW_LIBS"
    else
        # should check these...
        GLW_LIB_DEPS="$X_LIBS -lX11 -lXt"
    fi

724
725
726
727
728
729
730
731
    # If static, empty GLW_LIB_DEPS and add libs for programs to link
    if test "$enable_static" = no; then
        GLW_MESA_DEPS='-l$(GL_LIB)'
    else
        APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
        GLW_LIB_DEPS=""
        GLW_MESA_DEPS=""
    fi
732
fi
733
734
AC_SUBST([GLW_LIB_DEPS])
AC_SUBST([GLW_MESA_DEPS])
735
736
737
738
739
740
741
742
743

dnl
dnl GLUT configuration
dnl
if test -f "$srcdir/include/GL/glut.h"; then
    default_glut=yes
else
    default_glut=no
fi
744
AC_ARG_ENABLE([glut],
745
746
    [AS_HELP_STRING([--disable-glut],
        [enable GLUT library @<:@default=enabled if source available@:>@])],
747
748
    [enable_glut="$enableval"],
    [enable_glut="$default_glut"])
749
750
751
752
753
754

dnl Can't build glut if GLU not available
if test "x$enable_glu$enable_glut" = xnoyes; then
    AC_MSG_WARN([Disabling glut since GLU is disabled])
    enable_glut=no
fi
755
756
757
758
759
760
dnl Don't build glut on osmesa
if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
    AC_MSG_WARN([Disabling glut since the driver is OSMesa])
    enable_glut=no
fi

761
762
763
764
765
766
767
if test "x$enable_glut" = xyes; then
    SRC_DIRS="$SRC_DIRS glut/glx"
    GLUT_CFLAGS=""
    if test "x$GCC" = xyes; then
        GLUT_CFLAGS="-fexceptions"
    fi
    if test "$x11_pkgconfig" = yes; then
768
        PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
769
770
771
        GLUT_LIB_DEPS="$GLUT_LIBS"
    else
        # should check these...
Dan Nicholson's avatar
Dan Nicholson committed
772
        GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
773
774
775
776
    fi
    GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"

    # If glut is available, we can build most programs
777
778
779
    if test "$with_demos" = yes; then
        PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
    fi
780

781
782
783
784
785
786
787
788
    # If static, empty GLUT_LIB_DEPS and add libs for programs to link
    if test "$enable_static" = no; then
        GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
    else
        APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
        GLUT_LIB_DEPS=""
        GLUT_MESA_DEPS=""
    fi
789
fi
790
791
792
AC_SUBST([GLUT_LIB_DEPS])
AC_SUBST([GLUT_MESA_DEPS])
AC_SUBST([GLUT_CFLAGS])
793
794
795
796
797
798
799
800
801

dnl
dnl Program library dependencies
dnl    Only libm is added here if necessary as the libraries should
dnl    be pulled in by the linker
dnl
if test "x$APP_LIB_DEPS" = x; then
    APP_LIB_DEPS="-lm"
fi
802
803
AC_SUBST([APP_LIB_DEPS])
AC_SUBST([PROGRAM_DIRS])
804

805
dnl
806
dnl Arch/platform-specific settings
807
808
809
810
811
812
813
814
dnl
AC_ARG_ENABLE([asm],
    [AS_HELP_STRING([--disable-asm],
        [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
    [enable_asm="$enableval"],
    [enable_asm=yes]
)
asm_arch=""
815
816
817
ASM_FLAGS=""
ASM_SOURCES=""
ASM_API=""
818
819
820
821
AC_MSG_CHECKING([whether to enable assembly])
test "x$enable_asm" = xno && AC_MSG_RESULT([no])
# disable if cross compiling on x86/x86_64 since we must run gen_matypes
if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
822
    case "$host_cpu" in
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
    i?86 | x86_64)
        enable_asm=no
        AC_MSG_RESULT([no, cross compiling])
        ;;
    esac
fi
# check for supported arches
if test "x$enable_asm" = xyes; then
    case "$host_cpu" in
    i?86)
        case "$host_os" in
        linux* | freebsd* | dragonfly*)
            test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
            ;;
        esac
838
839
        ;;
    x86_64)
840
841
842
843
844
        case "$host_os" in
        linux* | freebsd* | dragonfly*)
            test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
            ;;
        esac
845
846
        ;;
    powerpc)
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
        case "$host_os" in
        linux*)
            asm_arch=ppc
            ;;
        esac
        ;;
    esac

    case "$asm_arch" in
    x86)
        ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
        ASM_SOURCES='$(X86_SOURCES)'
        ASM_API='$(X86_API)'
        AC_MSG_RESULT([yes, x86])
        ;;
    x86_64)
        ASM_FLAGS="-DUSE_X86_64_ASM"
        ASM_SOURCES='$(X86-64_SOURCES)'
        ASM_API='$(X86-64_API)'
        AC_MSG_RESULT([yes, x86_64])
        ;;
    ppc)
        ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
        ASM_SOURCES='$(PPC_SOURCES)'
        AC_MSG_RESULT([yes, ppc])
        ;;
    *)
        AC_MSG_RESULT([no, platform not supported])
875
876
        ;;
    esac
877
878
879
880
881
fi
AC_SUBST([ASM_FLAGS])
AC_SUBST([ASM_SOURCES])
AC_SUBST([ASM_API])

882
883
884
dnl PIC code macro
MESA_PIC_FLAGS

885
886
887
888
889
890

dnl Restore LDFLAGS and CPPFLAGS
LDFLAGS="$_SAVE_LDFLAGS"
CPPFLAGS="$_SAVE_CPPFLAGS"

dnl Substitute the config
891
AC_CONFIG_FILES([configs/autoconf])
892

893
dnl Replace the configs/current symlink
894
AC_CONFIG_COMMANDS([configs],[
895
896
897
898
if test -f configs/current || test -L configs/current; then
    rm -f configs/current
fi
ln -s autoconf configs/current
899
900
901
])

AC_OUTPUT
902

903
904
905
906
907
908
909
910
911
912
913
dnl
dnl Output some configuration info for the user
dnl
echo ""
echo "        prefix:          $prefix"
echo "        exec_prefix:     $exec_prefix"
echo "        libdir:          $libdir"

dnl Driver info
echo ""
echo "        Driver:          $mesa_driver"
914
915
916
917
918
919
if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
    echo "        OSMesa:          lib$OSMESA_LIB"
else
    echo "        OSMesa:          no"
fi
if test "$mesa_driver" = dri; then
920
921
922
923
    # cleanup the drivers var
    dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
    echo "        DRI drivers:     $dri_dirs"
    echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
924
fi
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942

dnl Libraries
echo ""
echo "        Shared libs:     $enable_shared"
echo "        Static libs:     $enable_static"
echo "        GLU:             $enable_glu"
echo "        GLw:             $enable_glw"
echo "        glut:            $enable_glut"

dnl Programs
# cleanup the programs var for display
program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
if test "x$program_dirs" = x; then
    echo "        Demos:           no"
else
    echo "        Demos:           $program_dirs"
fi

943
944
945
946
947
948
949
950
951
952
953
954
dnl Compiler options
# cleanup the CFLAGS/CXXFLAGS/DEFINES vars
cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
    $SED 's/^ *//;s/  */ /;s/ *$//'`
cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
    $SED 's/^ *//;s/  */ /;s/ *$//'`
defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
echo ""
echo "        CFLAGS:          $cflags"
echo "        CXXFLAGS:        $cxxflags"
echo "        Macros:          $defines"

955
echo ""
956
echo "        Run '${MAKE-make}' to build Mesa"
957
echo ""