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

3
AC_PREREQ([2.59])
4

5 6
dnl Versioning - scrape the version from configs/default
m4_define([mesa_version],
7
    [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
8 9
m4_ifval(mesa_version,,
    [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
10

11 12 13 14
dnl Tell the user about autoconf.html in the --help output
m4_divert_once([HELP_END], [
See docs/autoconf.html for more details on the options for Mesa.])

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
dnl Versions for external dependencies
21
LIBDRM_REQUIRED=2.4.15
22
LIBDRM_RADEON_REQUIRED=2.4.17
23
DRI2PROTO_REQUIRED=2.1
Jesse Barnes's avatar
Jesse Barnes committed
24
GLPROTO_REQUIRED=1.4.11
Jakob Bornecrantz's avatar
Jakob Bornecrantz committed
25 26
LIBDRM_XORG_REQUIRED=2.4.17
LIBKMS_XORG_REQUIRED=1.0.0
27

28 29 30 31
dnl Check for progs
AC_PROG_CPP
AC_PROG_CC
AC_PROG_CXX
32 33 34
AC_CHECK_PROGS([MAKE], [gmake make])
AC_PATH_PROG([MKDEP], [makedepend])
AC_PATH_PROG([SED], [sed])
35

36 37 38 39 40
dnl Our fallback install-sh is a symlink to minstall. Use the existing
dnl configuration in that case.
AC_PROG_INSTALL
test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'

41 42
dnl We need a POSIX shell for parts of the build. Assume we have one
dnl in most cases.
43 44 45 46
case "$host_os" in
solaris*)
    # Solaris /bin/sh is too old/non-POSIX compliant
    AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
47
    SHELL="$POSIX_SHELL"
48 49 50
    ;;
esac

Ian Romanick's avatar
Ian Romanick committed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
dnl If we're using GCC, make sure that it is at least version 3.3.0.  Older
dnl versions are explictly not supported.
if test "x$GCC" = xyes; then
    AC_MSG_CHECKING([whether gcc version is sufficient])
    major=0
    minor=0

    GCC_VERSION=`$CC -dumpversion`
    if test $? -eq 0; then
        major=`echo $GCC_VERSION | cut -d. -f1`
        minor=`echo $GCC_VERSION | cut -d. -f1`
    fi

    if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
        AC_MSG_RESULT([no])
        AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
    else
        AC_MSG_RESULT([yes])
    fi
fi


73
MKDEP_OPTIONS=-fdepend
74 75
dnl Ask gcc where it's keeping its secret headers
if test "x$GCC" = xyes; then
76 77 78 79 80 81 82 83
    for dir in include include-fixed; do
        GCC_INCLUDES=`$CC -print-file-name=$dir`
        if test "x$GCC_INCLUDES" != x && \
           test "$GCC_INCLUDES" != "$dir" && \
           test -d "$GCC_INCLUDES"; then
            MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
        fi
    done
84
fi
85
AC_SUBST([MKDEP_OPTIONS])
86

87
dnl Make sure the pkg-config macros are defined
88 89 90 91 92
m4_ifndef([PKG_PROG_PKG_CONFIG],
    [m4_fatal([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.])])
93 94 95 96
PKG_PROG_PKG_CONFIG()

dnl LIB_DIR - library basename
LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
97
AC_SUBST([LIB_DIR])
98 99 100

dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
_SAVE_LDFLAGS="$LDFLAGS"
101 102
AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
AC_SUBST([EXTRA_LIB_PATH])
103 104 105

dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
_SAVE_CPPFLAGS="$CPPFLAGS"
106 107
AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
AC_SUBST([X11_INCLUDES])
108 109 110

dnl Compiler macros
DEFINES=""
111
AC_SUBST([DEFINES])
112
case "$host_os" in
Samuel Thibault's avatar
Samuel Thibault committed
113
linux*|*-gnu*|gnu*)
114
    DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
115
    ;;
116 117 118
solaris*)
    DEFINES="$DEFINES -DPTHREADS -DSVR4"
    ;;
119 120 121
cygwin*)
    DEFINES="$DEFINES -DPTHREADS"
    ;;
122 123 124 125
esac

dnl Add flags for gcc and g++
if test "x$GCC" = xyes; then
126 127 128 129
    CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"

    # Enable -fvisibility=hidden if using a gcc that supports it
    save_CFLAGS="$CFLAGS"
130
    AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
131 132 133
    CFLAGS="$CFLAGS -fvisibility=hidden"
    AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
		   [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]);
134 135 136

    # Work around aliasing bugs - developers should comment this out
    CFLAGS="$CFLAGS -fno-strict-aliasing"
137 138 139
fi
if test "x$GXX" = xyes; then
    CXXFLAGS="$CXXFLAGS -Wall"
140 141 142

    # Work around aliasing bugs - developers should comment this out
    CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
143 144 145
fi

dnl These should be unnecessary, but let the user set them if they want
146
AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
147
    Default is to use CFLAGS.])
148
AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
149
    compiler. Default is to use CFLAGS.])
150 151
AC_SUBST([OPT_FLAGS])
AC_SUBST([ARCH_FLAGS])
152

153 154 155
dnl
dnl Hacks to enable 32 or 64 bit build
dnl
156
AC_ARG_ENABLE([32-bit],
157 158
    [AS_HELP_STRING([--enable-32-bit],
        [build 32-bit libraries @<:@default=auto@:>@])],
159 160
    [enable_32bit="$enableval"],
    [enable_32bit=auto]
161 162 163 164
)
if test "x$enable_32bit" = xyes; then
    if test "x$GCC" = xyes; then
        CFLAGS="$CFLAGS -m32"
165
        ARCH_FLAGS="$ARCH_FLAGS -m32"
166 167 168 169 170
    fi
    if test "x$GXX" = xyes; then
        CXXFLAGS="$CXXFLAGS -m32"
    fi
fi
171
AC_ARG_ENABLE([64-bit],
172 173
    [AS_HELP_STRING([--enable-64-bit],
        [build 64-bit libraries @<:@default=auto@:>@])],
174 175
    [enable_64bit="$enableval"],
    [enable_64bit=auto]
176 177 178 179 180 181 182 183 184 185
)
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

186 187 188
dnl
dnl shared/static libraries, mimic libtool options
dnl
189
AC_ARG_ENABLE([static],
190
    [AS_HELP_STRING([--enable-static],
191
        [build static libraries @<:@default=disabled@:>@])],
192 193
    [enable_static="$enableval"],
    [enable_static=no]
194 195 196 197 198 199 200 201
)
case "x$enable_static" in
xyes|xno ) ;;
x ) enable_static=no ;;
* )
    AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
    ;;
esac
202
AC_ARG_ENABLE([shared],
203
    [AS_HELP_STRING([--disable-shared],
204
        [build shared libraries @<:@default=enabled@:>@])],
205 206
    [enable_shared="$enableval"],
    [enable_shared=yes]
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232
)
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
233
AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
234 235 236
if test "$enable_static" = yes; then
    MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
fi
237
AC_SUBST([MKLIB_OPTIONS])
238

239 240 241
dnl
dnl other compiler options
dnl
242
AC_ARG_ENABLE([debug],
243 244
    [AS_HELP_STRING([--enable-debug],
        [use debug compiler flags and macros @<:@default=disabled@:>@])],
245 246
    [enable_debug="$enableval"],
    [enable_debug=no]
247 248 249 250 251 252 253 254 255 256
)
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
257

258 259 260
dnl
dnl library names
dnl
261
if test "$enable_static" = yes; then
262
    LIB_EXTENSION='a'
263
else
264 265 266
    case "$host_os" in
    darwin* )
        LIB_EXTENSION='dylib' ;;
Jon TURNEY's avatar
Jon TURNEY committed
267
    cygwin* )
268
        LIB_EXTENSION='dll.a' ;;
269 270
    aix* )
        LIB_EXTENSION='a' ;;
271 272 273
    * )
        LIB_EXTENSION='so' ;;
    esac
274
fi
275

276 277 278 279 280
GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
281
EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
282 283
GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
284
VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
285 286 287 288 289 290

GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
291
EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
292 293
GLESv1_CM_LIB_GLOB='lib$(GLESv1_CM_LIB).*'${LIB_EXTENSION}'*'
GLESv2_LIB_GLOB='lib$(GLESv2_LIB).*'${LIB_EXTENSION}'*'
294
VG_LIB_GLOB='lib$(VG_LIB).*'${LIB_EXTENSION}'*'
295

296 297 298 299 300
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])
301
AC_SUBST([EGL_LIB_NAME])
302 303
AC_SUBST([GLESv1_CM_LIB_NAME])
AC_SUBST([GLESv2_LIB_NAME])
304
AC_SUBST([VG_LIB_NAME])
305

306 307 308 309 310
AC_SUBST([GL_LIB_GLOB])
AC_SUBST([GLU_LIB_GLOB])
AC_SUBST([GLUT_LIB_GLOB])
AC_SUBST([GLW_LIB_GLOB])
AC_SUBST([OSMESA_LIB_GLOB])
311
AC_SUBST([EGL_LIB_GLOB])
312 313
AC_SUBST([GLESv1_CM_LIB_GLOB])
AC_SUBST([GLESv2_LIB_GLOB])
314
AC_SUBST([VG_LIB_GLOB])
315

316 317 318 319 320 321 322 323 324 325 326
dnl
dnl Arch/platform-specific settings
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=""
ASM_FLAGS=""
327 328
MESA_ASM_SOURCES=""
GLAPI_ASM_SOURCES=""
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344
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
    case "$host_cpu" in
    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
345
        linux* | *freebsd* | dragonfly*)
346 347 348 349 350 351
            test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
            ;;
        esac
        ;;
    x86_64)
        case "$host_os" in
352
        linux* | *freebsd* | dragonfly*)
353 354 355 356 357 358 359 360 361 362 363
            test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
            ;;
        esac
        ;;
    powerpc)
        case "$host_os" in
        linux*)
            asm_arch=ppc
            ;;
        esac
        ;;
364 365 366 367 368 369 370
    sparc*)
        case "$host_os" in
        linux*)
            asm_arch=sparc
            ;;
        esac
        ;;
371 372 373 374
    esac

    case "$asm_arch" in
    x86)
375
        ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
376 377
        MESA_ASM_SOURCES='$(X86_SOURCES)'
        GLAPI_ASM_SOURCES='$(X86_API)'
378 379 380 381
        AC_MSG_RESULT([yes, x86])
        ;;
    x86_64)
        ASM_FLAGS="-DUSE_X86_64_ASM"
382 383
        MESA_ASM_SOURCES='$(X86-64_SOURCES)'
        GLAPI_ASM_SOURCES='$(X86-64_API)'
384 385 386 387
        AC_MSG_RESULT([yes, x86_64])
        ;;
    ppc)
        ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
388
        MESA_ASM_SOURCES='$(PPC_SOURCES)'
389 390
        AC_MSG_RESULT([yes, ppc])
        ;;
391 392 393 394 395 396
    sparc)
        ASM_FLAGS="-DUSE_SPARC_ASM"
        MESA_ASM_SOURCES='$(SPARC_SOURCES)'
        GLAPI_ASM_SOURCES='$(SPARC_API)'
        AC_MSG_RESULT([yes, sparc])
        ;;
397 398 399 400 401 402
    *)
        AC_MSG_RESULT([no, platform not supported])
        ;;
    esac
fi
AC_SUBST([ASM_FLAGS])
403 404
AC_SUBST([MESA_ASM_SOURCES])
AC_SUBST([GLAPI_ASM_SOURCES])
405 406 407 408 409 410 411 412

dnl PIC code macro
MESA_PIC_FLAGS

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], [],
    [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
Chia-I Wu's avatar
Chia-I Wu committed
413
AC_SUBST([DLOPEN_LIBS])
414

415 416 417
dnl See if posix_memalign is available
AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])

418 419 420 421 422 423 424 425 426 427 428 429 430 431 432
dnl SELinux awareness.
AC_ARG_ENABLE([selinux],
    [AS_HELP_STRING([--enable-selinux],
        [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
    [MESA_SELINUX="$enableval"],
    [MESA_SELINUX=no])
if test "x$enable_selinux" = "xyes"; then
    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])])
    SELINUX_LIBS="-lselinux"
    DEFINES="$DEFINES -DMESA_SELINUX"
fi

433
dnl
434
dnl Driver configuration. Options are xlib, dri and osmesa right now.
Kristian Høgsberg's avatar
Kristian Høgsberg committed
435
dnl More later: fbdev, ...
436
dnl
437 438 439 440 441
default_driver="xlib"

case "$host_os" in
linux*)
    case "$host_cpu" in
442
    i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
443 444
    esac
    ;;
445
*freebsd* | dragonfly*)
446
    case "$host_cpu" in
447
    i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
448 449 450 451
    esac
    ;;
esac

452
AC_ARG_WITH([driver],
453
    [AS_HELP_STRING([--with-driver=DRIVER],
454
        [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
455 456
    [mesa_driver="$withval"],
    [mesa_driver="$default_driver"])
457 458
dnl Check for valid option
case "x$mesa_driver" in
459
xxlib|xdri|xosmesa)
460 461 462 463 464 465
    ;;
*)
    AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
    ;;
esac

466
PKG_CHECK_MODULES([TALLOC], [talloc])
467 468
AC_SUBST([TALLOC_LIBS])
AC_SUBST([TALLOC_CFLAGS])
469

470 471
dnl
dnl Driver specific build directories
472
dnl
473 474

dnl this variable will be prepended to SRC_DIRS and is not exported
Chia-I Wu's avatar
Chia-I Wu committed
475
CORE_DIRS="mapi/glapi glsl mesa"
476

477
SRC_DIRS=""
478
GLU_DIRS="sgi"
479
GALLIUM_DIRS="auxiliary drivers state_trackers"
480
GALLIUM_TARGET_DIRS=""
481
GALLIUM_WINSYS_DIRS="sw"
482
GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug identity"
483 484
GALLIUM_STATE_TRACKERS_DIRS=""

485
case "$mesa_driver" in
486
xlib)
487
    DRIVER_DIRS="x11"
488
    GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
489
    GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
490 491
    ;;
dri)
492
    SRC_DIRS="$SRC_DIRS glx"
493
    DRIVER_DIRS="dri"
494
    GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
495
    ;;
496 497 498
osmesa)
    DRIVER_DIRS="osmesa"
    ;;
499
esac
500 501 502
AC_SUBST([SRC_DIRS])
AC_SUBST([GLU_DIRS])
AC_SUBST([DRIVER_DIRS])
503
AC_SUBST([GALLIUM_DIRS])
504
AC_SUBST([GALLIUM_TARGET_DIRS])
Jerome Glisse's avatar
Jerome Glisse committed
505
AC_SUBST([GALLIUM_WINSYS_DIRS])
506
AC_SUBST([GALLIUM_DRIVERS_DIRS])
507
AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
508
AC_SUBST([MESA_LLVM])
509 510

dnl
511
dnl Find out if X is available. The variable have_x is set if libX11 is
512
dnl found to mimic AC_PATH_XTRA.
513 514 515
dnl
if test -n "$PKG_CONFIG"; then
    AC_MSG_CHECKING([pkg-config files for X11 are available])
516
    PKG_CHECK_EXISTS([x11],[
517 518
        x11_pkgconfig=yes
        have_x=yes
519
        ],[
520
        x11_pkgconfig=no
521 522
    ])
    AC_MSG_RESULT([$x11_pkgconfig])
523 524 525 526
else
    x11_pkgconfig=no
fi
dnl Use the autoconf macro if no pkg-config files
527
if test "$x11_pkgconfig" = yes; then
528
    PKG_CHECK_MODULES([X11], [x11])
529
else
530
    AC_PATH_XTRA
531 532 533 534
    test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
    test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
    AC_SUBST([X11_CFLAGS])
    AC_SUBST([X11_LIBS])
535 536
fi

537 538 539 540 541 542
dnl Try to tell the user that the --x-* options are only used when
dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
m4_divert_once([HELP_BEGIN],
[These options are only used when the X libraries cannot be found by the
pkg-config utility.])

543 544
dnl We need X for xlib and dri, so bomb now if it's not found
case "$mesa_driver" in
545
xlib|dri)
546 547 548 549 550 551
    if test "$no_x" = yes; then
        AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
    fi
    ;;
esac

552 553 554 555 556 557 558 559 560 561 562 563
dnl XCB - this is only used for GLX right now
AC_ARG_ENABLE([xcb],
    [AS_HELP_STRING([--enable-xcb],
        [use XCB for GLX @<:@default=disabled@:>@])],
    [enable_xcb="$enableval"],
    [enable_xcb=no])
if test "x$enable_xcb" = xyes; then
    DEFINES="$DEFINES -DUSE_XCB"
else
    enable_xcb=no
fi

564
dnl
565
dnl libGL configuration per driver
566
dnl
567
case "$mesa_driver" in
568
xlib)
569
    if test "$x11_pkgconfig" = yes; then
570
        PKG_CHECK_MODULES([XLIBGL], [x11 xext])
571
        GL_PC_REQ_PRIV="x11 xext"
572 573
        X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
        GL_LIB_DEPS="$XLIBGL_LIBS"
574 575 576 577
    else
        # should check these...
        X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
        GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
578 579
        GL_PC_LIB_PRIV="$GL_LIB_DEPS"
        GL_PC_CFLAGS="$X11_INCLUDES"
580
    fi
581 582
    GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
    GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
583 584 585 586 587 588 589

    # 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
590 591
    ;;
dri)
592 593 594 595 596
    # DRI must be shared, I think
    if test "$enable_static" = yes; then
        AC_MSG_ERROR([Can't use static libraries for DRI drivers])
    fi

597
    # Check for libdrm
598 599
    PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
    PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
Jesse Barnes's avatar
Jesse Barnes committed
600
    PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
601 602
    GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
    DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
603

604 605
    # find the DRI deps for libGL
    if test "$x11_pkgconfig" = yes; then
606 607 608 609 610 611 612
        # add xcb modules if necessary
        dri_modules="x11 xext xxf86vm xdamage xfixes"
        if test "$enable_xcb" = yes; then
            dri_modules="$dri_modules x11-xcb xcb-glx"
        fi

        PKG_CHECK_MODULES([DRIGL], [$dri_modules])
613
        GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
614 615 616 617 618 619
        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"
620 621
        GL_PC_LIB_PRIV="$GL_LIB_DEPS"
        GL_PC_CFLAGS="$X11_INCLUDES"
622 623 624 625

        # XCB can only be used from pkg-config
        if test "$enable_xcb" = yes; then
            PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
626
            GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
627 628 629
            X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
            GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
        fi
630 631 632
    fi

    # need DRM libs, -lpthread, etc.
633 634
    GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
    GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
635
    GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
636
    GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
637
    GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
638
    GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
639
    ;;
640 641
osmesa)
    # No libGL for osmesa
642
    GL_LIB_DEPS=""
643
    ;;
644
esac
645
AC_SUBST([GL_LIB_DEPS])
646 647 648 649
AC_SUBST([GL_PC_REQ_PRIV])
AC_SUBST([GL_PC_LIB_PRIV])
AC_SUBST([GL_PC_CFLAGS])
AC_SUBST([DRI_PC_REQ_PRIV])
650
AC_SUBST([GLESv1_CM_LIB_DEPS])
651
AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
652
AC_SUBST([GLESv2_LIB_DEPS])
653 654
AC_SUBST([GLESv2_PC_LIB_PRIV])

655 656 657 658

dnl
dnl More X11 setup
dnl
659
if test "$mesa_driver" = xlib; then
660 661 662
    DEFINES="$DEFINES -DUSE_XSHM"
fi

663 664 665
dnl
dnl More DRI setup
dnl
666
AC_ARG_ENABLE([glx-tls],
667
    [AS_HELP_STRING([--enable-glx-tls],
668
        [enable TLS support in GLX @<:@default=disabled@:>@])],
669 670
    [GLX_USE_TLS="$enableval"],
    [GLX_USE_TLS=no])
671
dnl Directory for DRI drivers
672
AC_ARG_WITH([dri-driverdir],
673
    [AS_HELP_STRING([--with-dri-driverdir=DIR],
674
        [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
675
    [DRI_DRIVER_INSTALL_DIR="$withval"],
676
    [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
677
AC_SUBST([DRI_DRIVER_INSTALL_DIR])
678 679 680 681 682 683 684
dnl Extra search path for DRI drivers
AC_ARG_WITH([dri-searchpath],
    [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
        [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
    [DRI_DRIVER_SEARCH_DIR="$withval"],
    [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
AC_SUBST([DRI_DRIVER_SEARCH_DIR])
685
dnl Direct rendering or just indirect rendering
686
AC_ARG_ENABLE([driglx-direct],
687
    [AS_HELP_STRING([--disable-driglx-direct],
688
        [enable direct rendering in GLX and EGL for DRI @<:@default=enabled@:>@])],
689 690
    [driglx_direct="$enableval"],
    [driglx_direct="yes"])
691
dnl Which drivers to build - default is chosen by platform
692
AC_ARG_WITH([dri-drivers],
693
    [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
694
        [comma delimited DRI drivers list, e.g.
695
        "swrast,i965,radeon" @<:@default=auto@:>@])],
696 697
    [with_dri_drivers="$withval"],
    [with_dri_drivers=yes])
698 699 700 701
if test "x$with_dri_drivers" = x; then
    with_dri_drivers=no
fi

702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717
dnl Determine which APIs to support
AC_ARG_ENABLE([opengl],
    [AS_HELP_STRING([--disable-opengl],
        [disable support for standard OpenGL API @<:@default=no@:>@])],
    [enable_opengl="$enableval"],
    [enable_opengl=yes])
AC_ARG_ENABLE([gles1],
    [AS_HELP_STRING([--enable-gles1],
        [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
    [enable_gles1="$enableval"],
    [enable_gles1=no])
AC_ARG_ENABLE([gles2],
    [AS_HELP_STRING([--enable-gles2],
        [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
    [enable_gles2="$enableval"],
    [enable_gles2=no])
Chia-I Wu's avatar
Chia-I Wu committed
718 719 720 721 722
AC_ARG_ENABLE([gles-overlay],
    [AS_HELP_STRING([--enable-gles-overlay],
        [build separate OpenGL ES only libraries @<:@default=no@:>@])],
    [enable_gles_overlay="$enableval"],
    [enable_gles_overlay=no])
723 724

API_DEFINES=""
725
GLES_OVERLAY=0
726 727 728 729 730 731 732 733 734 735 736
if test "x$enable_opengl" = xno; then
    API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
else
    API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
fi
if test "x$enable_gles1" = xyes; then
    API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
fi
if test "x$enable_gles2" = xyes; then
    API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
fi
Chia-I Wu's avatar
Chia-I Wu committed
737 738
if test "x$enable_gles_overlay" = xyes -o \
    "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
Chia-I Wu's avatar
Chia-I Wu committed
739
    CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
Chia-I Wu's avatar
Chia-I Wu committed
740
    if test "x$enable_gles_overlay" = xyes; then
741
        GLES_OVERLAY=1
Chia-I Wu's avatar
Chia-I Wu committed
742
    fi
743
fi
744
AC_SUBST([API_DEFINES])
745
AC_SUBST([GLES_OVERLAY])
746

747 748 749 750
dnl If $with_dri_drivers is yes, directories will be added through
dnl platform checks
DRI_DIRS=""
case "$with_dri_drivers" in
751 752 753 754
no) ;;
yes)
    DRI_DIRS="yes"
    ;;
755 756
*)
    # verify the requested driver directories exist
757
    dri_drivers=`IFS=', '; echo $with_dri_drivers`
758 759 760 761 762 763 764 765
    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

766 767 768 769 770 771 772 773 774 775 776 777 778 779
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

    # Platform specific settings and drivers to build
    case "$host_os" in
    linux*)
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
        if test "x$driglx_direct" = xyes; then
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
        fi
Jerome Glisse's avatar
Jerome Glisse committed
780
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
781 782 783

        case "$host_cpu" in
        x86_64)
784 785 786
            # sis is 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.
787
            if test "x$DRI_DIRS" = "xyes"; then
788
                DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
789
                    savage tdfx unichrome swrast"
790
            fi
791 792
            ;;
        powerpc*)
793 794
            # Build only the drivers for cards that exist on PowerPC.
            # At some point MGA will be added, but not yet.
795
            if test "x$DRI_DIRS" = "xyes"; then
796
                DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
797
            fi
798
            ;;
799 800
        sparc*)
            # Build only the drivers for cards that exist on sparc`
801
            if test "x$DRI_DIRS" = "xyes"; then
802
                DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
803 804
            fi
            ;;
805 806
        esac
        ;;
Hasso Tepper's avatar
Hasso Tepper committed
807
    freebsd* | dragonfly*)
808 809 810 811 812 813 814 815 816 817
        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

818
        if test "x$DRI_DIRS" = "xyes"; then
819
            DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
820
                unichrome savage sis swrast"
821
        fi
822
        ;;
Samuel Thibault's avatar
Samuel Thibault committed
823 824 825 826
    gnu*)
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
	;;
827 828 829 830 831 832 833
    solaris*)
        DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
        DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
        if test "x$driglx_direct" = xyes; then
            DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
        fi
        ;;
834
    esac
835 836

    # default drivers
837
    if test "x$DRI_DIRS" = "xyes"; then
Corbin Simpson's avatar
Corbin Simpson committed
838
        DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
839
            savage sis tdfx unichrome swrast"
840 841
    fi

842 843 844 845 846
    DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`

    # Check for expat
    EXPAT_INCLUDES=""
    EXPAT_LIB=-lexpat
847 848 849
    AC_ARG_WITH([expat],
        [AS_HELP_STRING([--with-expat=DIR],
            [expat install directory])],[
850 851 852 853 854
        EXPAT_INCLUDES="-I$withval/include"
        CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
        LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
        EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
        ])
855 856 857
    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.])])
858 859

    # put all the necessary libs together
860
    DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
861
fi
862 863 864
AC_SUBST([DRI_DIRS])
AC_SUBST([EXPAT_INCLUDES])
AC_SUBST([DRI_LIB_DEPS])
865

866 867
case $DRI_DIRS in
*i915*|*i965*)
868
    PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
869
    ;;
870
esac
871

872
case $DRI_DIRS in
873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888
*radeon*|*r200*|*r300*|*r600*)
    PKG_CHECK_MODULES([LIBDRM_RADEON],
		      [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
		      HAVE_LIBDRM_RADEON=yes,
		      HAVE_LIBDRM_RADEON=no)

    if test "$HAVE_LIBDRM_RADEON" = yes; then
	RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
	RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
    fi
    ;;
esac
AC_SUBST([RADEON_CFLAGS])
AC_SUBST([RADEON_LDFLAGS])


889 890 891
dnl
dnl OSMesa configuration
dnl
892
if test "$mesa_driver" = xlib; then
893
    default_gl_osmesa=yes
894
else
895
    default_gl_osmesa=no
896
fi
897
AC_ARG_ENABLE([gl-osmesa],
898
    [AS_HELP_STRING([--enable-gl-osmesa],
899
        [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
900 901
    [gl_osmesa="$enableval"],
    [gl_osmesa="$default_gl_osmesa"])
902 903 904
if test "x$gl_osmesa" = xyes; then
    if test "$mesa_driver" = osmesa; then
        AC_MSG_ERROR([libGL is not available for OSMesa driver])
905
    else
906
        DRIVER_DIRS="$DRIVER_DIRS osmesa"
907
    fi
908
fi
909

910
dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
911
AC_ARG_WITH([osmesa-bits],
912 913
    [AS_HELP_STRING([--with-osmesa-bits=BITS],
        [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
914 915
    [osmesa_bits="$withval"],
    [osmesa_bits=8])
916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931
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
932
AC_SUBST([OSMESA_LIB])
933

934 935
case "$DRIVER_DIRS" in
*osmesa*)
936
    # only link libraries with osmesa if shared
937
    if test "$enable_static" = no; then
938
        OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
939 940 941
    else
        OSMESA_LIB_DEPS=""
    fi
942
    OSMESA_MESA_DEPS=""
943
    OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
944 945
    ;;
esac
946 947
AC_SUBST([OSMESA_LIB_DEPS])
AC_SUBST([OSMESA_MESA_DEPS])
Dan Nicholson's avatar
Dan Nicholson committed
948 949
AC_SUBST([OSMESA_PC_REQ])
AC_SUBST([OSMESA_PC_LIB_PRIV])
950

Dan Nicholson's avatar
Dan Nicholson committed
951 952 953
dnl
dnl EGL configuration
dnl
954 955 956 957 958 959 960
AC_ARG_ENABLE([egl],
    [AS_HELP_STRING([--disable-egl],
        [disable EGL library @<:@default=enabled@:>@])],
    [enable_egl="$enableval"],
    [enable_egl=yes])
if test "x$enable_egl" = xyes; then
    SRC_DIRS="$SRC_DIRS egl"
961 962
    EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
    EGL_DRIVERS_DIRS=""
963
    if test "$enable_static" != yes; then
964
        # build egl_glx when libGL is built
965 966 967 968
        if test "$mesa_driver" != osmesa; then
            EGL_DRIVERS_DIRS="glx"
        fi

969 970 971 972 973 974 975 976 977 978 979 980 981 982 983
        if test "$mesa_driver" = dri; then
            # build egl_dri2 when xcb-dri2 is available
            PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
            		  [have_xcb_dri2=yes],[have_xcb_dri2=no])
            PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
            		  [have_libudev=yes],[have_libudev=no])
            
            if test "$have_xcb_dri2" = yes; then
                EGL_DRIVER_DRI2=dri2
                DEFINES="$DEFINES -DHAVE_XCB_DRI2"
                if test "$have_libudev" = yes; then
                    DEFINES="$DEFINES -DHAVE_LIBUDEV"
                fi
            fi
	fi
984 985

        EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
986
    fi
Dan Nicholson's avatar
Dan Nicholson committed
987 988
fi
AC_SUBST([EGL_LIB_DEPS])
989
AC_SUBST([EGL_DRIVERS_DIRS])
Dan Nicholson's avatar
Dan Nicholson committed
990

991 992 993
dnl
dnl GLU configuration
dnl
994
AC_ARG_ENABLE([glu],
995 996
    [AS_HELP_STRING([--disable-glu],
        [enable OpenGL Utility library @<:@default=enabled@:>@])],
997 998
    [enable_glu="$enableval"],
    [enable_glu=yes])
999 1000 1001
if test "x$enable_glu" = xyes; then
    SRC_DIRS="$SRC_DIRS glu"

1002 1003 1004 1005
    case "$mesa_driver" in
    osmesa)
        # Link libGLU to libOSMesa instead of libGL
        GLU_LIB_DEPS=""
Dan Nicholson's avatar
Dan Nicholson committed
1006
        GLU_PC_REQ="osmesa"
1007 1008 1009 1010 1011
        if test "$enable_static" = no; then
            GLU_MESA_DEPS='-l$(OSMESA_LIB)'
        else
            GLU_MESA_DEPS=""
        fi
1012 1013
        ;;
    *)
1014
        # If static, empty GLU_LIB_DEPS and add libs for programs to link
1015 1016
        GLU_PC_REQ="gl"
        GLU_PC_LIB_PRIV="-lm"
1017 1018 1019 1020 1021 1022 1023 1024
        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
1025 1026
        ;;
    esac
1027
fi
1028 1029 1030
if test "$enable_static" = no; then
    GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
fi
1031
GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1032 1033
AC_SUBST([GLU_LIB_DEPS])
AC_SUBST([GLU_MESA_DEPS])
1034 1035 1036 1037
AC_SUBST([GLU_PC_REQ])
AC_SUBST([GLU_PC_REQ_PRIV])
AC_SUBST([GLU_PC_LIB_PRIV])
AC_SUBST([GLU_PC_CFLAGS])
1038 1039 1040 1041

dnl
dnl GLw configuration
dnl
1042
AC_ARG_ENABLE([glw],
1043 1044
    [AS_HELP_STRING([--disable-glw],
        [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1045 1046
    [enable_glw="$enableval"],
    [enable_glw=yes])
1047 1048 1049 1050 1051
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
1052 1053 1054 1055 1056 1057
AC_ARG_ENABLE([motif],
    [AS_HELP_STRING([--enable-motif],
        [use Motif widgets in GLw @<:@default=disabled@:>@])],
    [enable_motif="$enableval"],
    [enable_motif=no])

1058 1059 1060
if test "x$enable_glw" = xyes; then
    SRC_DIRS="$SRC_DIRS glw"
    if test "$x11_pkgconfig" = yes; then
1061
        PKG_CHECK_MODULES([GLW],[x11 xt])
1062
        GLW_PC_REQ_PRIV="x11 xt"
1063 1064 1065
        GLW_LIB_DEPS="$GLW_LIBS"
    else
        # should check these...
1066
        GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1067 1068
        GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
        GLW_PC_CFLAGS="$X11_INCLUDES"
1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086
    fi

    GLW_SOURCES="GLwDrawA.c"
    MOTIF_CFLAGS=
    if test "x$enable_motif" = xyes; then
        GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
        AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
        if test "x$MOTIF_CONFIG" != xno; then
            MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
            MOTIF_LIBS=`$MOTIF_CONFIG --libs`
        else
            AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
                [AC_MSG_ERROR([Can't locate Motif headers])])
            AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
                [AC_MSG_ERROR([Can't locate Motif Xm library])])
        fi
        # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
        GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1087 1088
        GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
        GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1089 1090
    fi

1091
    # If static, empty GLW_LIB_DEPS and add libs for programs to link
1092
    GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1093 1094
    if test "$enable_static" = no; then
        GLW_MESA_DEPS='-l$(GL_LIB)'
1095
        GLW_LIB_DEPS="$GLW_LIB_DEPS"
1096 1097 1098 1099 1100
    else
        APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
        GLW_LIB_DEPS=""
        GLW_MESA_DEPS=""
    fi
1101
fi
1102 1103
AC_SUBST([GLW_LIB_DEPS])
AC_SUBST([GLW_MESA_DEPS])
1104 1105
AC_SUBST([GLW_SOURCES])
AC_SUBST([MOTIF_CFLAGS])
1106 1107 1108
AC_SUBST([GLW_PC_REQ_PRIV])
AC_SUBST([GLW_PC_LIB_PRIV])
AC_SUBST([GLW_PC_CFLAGS])
1109 1110 1111 1112 1113 1114 1115 1116 1117

dnl
dnl GLUT configuration
dnl
if test -f "$srcdir/include/GL/glut.h"; then
    default_glut=yes
else
    default_glut=no
fi
1118
AC_ARG_ENABLE([glut],
1119 1120
    [AS_HELP_STRING([--disable-glut],
        [enable GLUT library @<:@default=enabled if source available@:>@])],
1121 1122
    [enable_glut="$enableval"],
    [enable_glut="$default_glut"])
1123 1124 1125 1126 1127 1128

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
1129 1130 1131 1132 1133 1134
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

1135 1136 1137
if test "x$enable_glut" = xyes; then
    SRC_DIRS="$SRC_DIRS glut/glx"
    if test "$x11_pkgconfig" = yes; then
1138
        PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1139
        GLUT_PC_REQ_PRIV="x11 xmu xi"
1140 1141 1142
        GLUT_LIB_DEPS="$GLUT_LIBS"
    else
        # should check these...
1143
        GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1144 1145
        GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
        GLUT_PC_CFLAGS="$X11_INCLUDES"
1146
    fi
1147 1148 1149
    if test "x$GCC" = xyes; then
        GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
    fi
1150 1151
    GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
    GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1152

1153 1154 1155 1156 1157 1158 1159 1160
    # 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
1161
fi
1162 1163 1164
AC_SUBST([GLUT_LIB_DEPS])
AC_SUBST([GLUT_MESA_DEPS])
AC_SUBST([GLUT_CFLAGS])
1165 1166 1167
AC_SUBST([GLUT_PC_REQ_PRIV])
AC_SUBST([GLUT_PC_LIB_PRIV])
AC_SUBST([GLUT_PC_CFLAGS])
1168 1169 1170 1171 1172 1173 1174

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
1175 1176 1177 1178
    case "$host_os" in
    solaris*)
        APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
        ;;
Jon TURNEY's avatar
Jon TURNEY committed
1179 1180 1181
    cygwin*)
        APP_LIB_DEPS="-lX11"
        ;;
1182 1183 1184 1185
    *)
        APP_LIB_DEPS="-lm"
        ;;
    esac
1186
fi
1187 1188
AC_SUBST([APP_LIB_DEPS])
AC_SUBST([PROGRAM_DIRS])
1189

1190 1191 1192 1193 1194 1195 1196 1197 1198
dnl
dnl Gallium configuration
dnl
AC_ARG_ENABLE([gallium],
    [AS_HELP_STRING([--disable-gallium],
        [build gallium @<:@default=enabled@:>@])],
    [enable_gallium="$enableval"],
    [enable_gallium=yes])
if test "x$enable_gallium" = xyes; then
1199
    SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1200 1201 1202
    AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
                [HAS_UDIS86="no"])
    AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1203
fi
1204

1205 1206 1207 1208 1209
AC_SUBST([LLVM_CFLAGS])
AC_SUBST([LLVM_LIBS])
AC_SUBST([LLVM_LDFLAGS])
AC_SUBST([LLVM_VERSION])

1210
VG_LIB_DEPS=""
Chia-I Wu's avatar
Chia-I Wu committed
1211 1212 1213 1214
EGL_CLIENT_APIS='$(GL_LIB)'
if test "x$enable_gles_overlay" = xyes; then
    EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
fi
1215

1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232
dnl
dnl Gallium state trackers configuration
dnl
AC_ARG_WITH([state-trackers],
    [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
        [comma delimited state_trackers list, e.g.
        "egl,glx" @<:@default=auto@:>@])],
    [with_state_trackers="$withval"],
    [with_state_trackers=yes])

case "$with_state_trackers" in
no)
    GALLIUM_STATE_TRACKERS_DIRS=""
    ;;
yes)
    # look at what else is built
    case "$mesa_driver" in
1233 1234 1235
    xlib)
        GALLIUM_STATE_TRACKERS_DIRS=glx
        ;;
1236
    dri)
1237
        GALLIUM_STATE_TRACKERS_DIRS="dri"
1238
        HAVE_ST_DRI="yes"
1239
        if test "x$enable_egl" = xyes; then
Chia-I Wu's avatar
Chia-I Wu committed
1240
            GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1241
            HAVE_ST_EGL="yes"
1242 1243
        fi
        # Have only tested st/xorg on 1.6.0 servers
Jakob Bornecrantz's avatar
Jakob Bornecrantz committed
1244
        PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1245 1246
            HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
            HAVE_ST_XORG="no")
1247 1248 1249 1250 1251
        ;;
    esac
    ;;
*)
    # verify the requested state tracker exist
Chia-I Wu's avatar
Chia-I Wu committed
1252 1253 1254
    state_trackers=""
    _state_trackers=`IFS=', '; echo $with_state_trackers`
    for tracker in $_state_trackers; do
1255