Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. dnl Copyright © 2011-2014 Intel Corporation
  2. dnl Copyright © 2011-2014 Emil Velikov <emil.l.velikov@gmail.com>
  3. dnl Copyright © 2007-2010 Dan Nicholson
  4. dnl Copyright © 2010-2014 Marek Olšák <maraeo@gmail.com>
  5. dnl Copyright © 2010-2014 Christian König
  6. dnl Copyright © 2012-2014 Tom Stellard <tstellar@gmail.com>
  7. dnl Copyright © 2009-2012 Jakob Bornecrantz
  8. dnl Copyright © 2009-2014 Jon TURNEY
  9. dnl Copyright © 2011-2012 Benjamin Franzke
  10. dnl Copyright © 2008-2014 David Airlie
  11. dnl Copyright © 2009-2013 Brian Paul
  12. dnl Copyright © 2003-2007 Keith Packard, Daniel Stone
  13. dnl
  14. dnl Permission is hereby granted, free of charge, to any person obtaining a
  15. dnl copy of this software and associated documentation files (the "Software"),
  16. dnl to deal in the Software without restriction, including without limitation
  17. dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
  18. dnl and/or sell copies of the Software, and to permit persons to whom the
  19. dnl Software is furnished to do so, subject to the following conditions:
  20. dnl
  21. dnl The above copyright notice and this permission notice (including the next
  22. dnl paragraph) shall be included in all copies or substantial portions of the
  23. dnl Software.
  24. dnl
  25. dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  26. dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  27. dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  28. dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  29. dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  30. dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  31. dnl DEALINGS IN THE SOFTWARE.
  32. dnl
  33. dnl Process this file with autoconf to create configure.
  34.  
  35. AC_PREREQ([2.60])
  36.  
  37. dnl Tell the user about autoconf.html in the --help output
  38. m4_divert_once([HELP_END], [
  39. See docs/autoconf.html for more details on the options for Mesa.])
  40.  
  41. m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
  42. AC_INIT([Mesa], [MESA_VERSION],
  43.     [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
  44. AC_CONFIG_AUX_DIR([bin])
  45. AC_CONFIG_MACRO_DIR([m4])
  46. AC_CANONICAL_SYSTEM
  47. AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz])
  48.  
  49. dnl We only support native Windows builds (MinGW/MSVC) through SCons.
  50. case "$host_os" in
  51. mingw*)
  52.     AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead])
  53.     ;;
  54. esac
  55.  
  56. # Support silent build rules, requires at least automake-1.11. Disable
  57. # by either passing --disable-silent-rules to configure or passing V=1
  58. # to make
  59. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
  60.     [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
  61.  
  62. m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
  63.  
  64. dnl Set internal versions
  65. OSMESA_VERSION=8
  66. AC_SUBST([OSMESA_VERSION])
  67.  
  68. dnl Versions for external dependencies
  69. LIBDRM_REQUIRED=2.4.38
  70. LIBDRM_RADEON_REQUIRED=2.4.56
  71. LIBDRM_INTEL_REQUIRED=2.4.60
  72. LIBDRM_NVVIEUX_REQUIRED=2.4.33
  73. LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
  74. LIBDRM_FREEDRENO_REQUIRED=2.4.57
  75. DRI2PROTO_REQUIRED=2.6
  76. DRI3PROTO_REQUIRED=1.0
  77. PRESENTPROTO_REQUIRED=1.0
  78. LIBUDEV_REQUIRED=151
  79. GLPROTO_REQUIRED=1.4.14
  80. LIBOMXIL_BELLAGIO_REQUIRED=0.0
  81. LIBVA_REQUIRED=0.35.0
  82. VDPAU_REQUIRED=0.4.1
  83. WAYLAND_REQUIRED=1.2.0
  84. XCB_REQUIRED=1.9.3
  85. XCBDRI2_REQUIRED=1.8
  86. XCBGLX_REQUIRED=1.8.1
  87. XSHMFENCE_REQUIRED=1.1
  88. XVMC_REQUIRED=1.0.6
  89. PYTHON_MAKO_REQUIRED=0.3.4
  90.  
  91. dnl Check for progs
  92. AC_PROG_CPP
  93. AC_PROG_CC
  94. AC_PROG_CXX
  95. AM_PROG_CC_C_O
  96. AM_PROG_AS
  97. AX_CHECK_GNU_MAKE
  98. AC_CHECK_PROGS([PYTHON2], [python2 python])
  99. AC_PROG_SED
  100. AC_PROG_MKDIR_P
  101.  
  102. AC_SYS_LARGEFILE
  103.  
  104. LT_PREREQ([2.2])
  105. LT_INIT([disable-static])
  106.  
  107. AX_PROG_BISON([],
  108.               AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
  109.                     [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
  110. AX_PROG_FLEX([],
  111.              AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
  112.                    [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
  113.  
  114. AC_CHECK_PROG(INDENT, indent, indent, cat)
  115. if test "x$INDENT" != "xcat"; then
  116.     # Only GNU indent is supported
  117.     INDENT_VERSION=`indent --version | grep GNU`
  118.     if test $? -eq 0; then
  119.        AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
  120.     else
  121.        INDENT="cat"
  122.     fi
  123. fi
  124.  
  125. AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
  126.  
  127. if test -z "$PYTHON2"; then
  128.     if test ! -f "$srcdir/src/util/format_srgb.c"; then
  129.         AC_MSG_ERROR([Python not found - unable to generate sources])
  130.     fi
  131. else
  132.     if test "x$acv_mako_found" = xno; then
  133.         if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
  134.             AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
  135.         fi
  136.     fi
  137. fi
  138.  
  139. AC_PROG_INSTALL
  140.  
  141. dnl We need a POSIX shell for parts of the build. Assume we have one
  142. dnl in most cases.
  143. case "$host_os" in
  144. solaris*)
  145.     # Solaris /bin/sh is too old/non-POSIX compliant
  146.     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
  147.     SHELL="$POSIX_SHELL"
  148.     ;;
  149. esac
  150.  
  151. dnl clang is mostly GCC-compatible, but its version is much lower,
  152. dnl so we have to check for it.
  153. AC_MSG_CHECKING([if compiling with clang])
  154.  
  155. AC_COMPILE_IFELSE(
  156. [AC_LANG_PROGRAM([], [[
  157. #ifndef __clang__
  158.        not clang
  159. #endif
  160. ]])],
  161. [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
  162.  
  163. AC_MSG_RESULT([$acv_mesa_CLANG])
  164.  
  165. dnl If we're using GCC, make sure that it is at least version 4.2.0.  Older
  166. dnl versions are explictly not supported.
  167. GEN_ASM_OFFSETS=no
  168. USE_GNU99=no
  169. if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
  170.     AC_MSG_CHECKING([whether gcc version is sufficient])
  171.     major=0
  172.     minor=0
  173.  
  174.     GCC_VERSION=`$CC -dumpversion`
  175.     if test $? -eq 0; then
  176.         GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
  177.         GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
  178.     fi
  179.  
  180.     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
  181.         AC_MSG_RESULT([no])
  182.         AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
  183.     else
  184.         AC_MSG_RESULT([yes])
  185.     fi
  186.  
  187.     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
  188.         USE_GNU99=yes
  189.     fi
  190.     if test "x$cross_compiling" = xyes; then
  191.         GEN_ASM_OFFSETS=yes
  192.     fi
  193. fi
  194.  
  195. dnl Check for compiler builtins
  196. AX_GCC_BUILTIN([__builtin_bswap32])
  197. AX_GCC_BUILTIN([__builtin_bswap64])
  198. AX_GCC_BUILTIN([__builtin_clz])
  199. AX_GCC_BUILTIN([__builtin_clzll])
  200. AX_GCC_BUILTIN([__builtin_ctz])
  201. AX_GCC_BUILTIN([__builtin_expect])
  202. AX_GCC_BUILTIN([__builtin_ffs])
  203. AX_GCC_BUILTIN([__builtin_ffsll])
  204. AX_GCC_BUILTIN([__builtin_popcount])
  205. AX_GCC_BUILTIN([__builtin_popcountll])
  206. AX_GCC_BUILTIN([__builtin_unreachable])
  207.  
  208. AX_GCC_FUNC_ATTRIBUTE([flatten])
  209. AX_GCC_FUNC_ATTRIBUTE([format])
  210. AX_GCC_FUNC_ATTRIBUTE([malloc])
  211. AX_GCC_FUNC_ATTRIBUTE([packed])
  212. AX_GCC_FUNC_ATTRIBUTE([unused])
  213.  
  214. AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
  215.  
  216. dnl Make sure the pkg-config macros are defined
  217. m4_ifndef([PKG_PROG_PKG_CONFIG],
  218.     [m4_fatal([Could not locate the pkg-config autoconf macros.
  219.   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
  220.   are in a different location, try setting the environment variable
  221.   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
  222. PKG_PROG_PKG_CONFIG()
  223.  
  224. dnl LIB_DIR - library basename
  225. LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
  226. AC_SUBST([LIB_DIR])
  227.  
  228. dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
  229. _SAVE_LDFLAGS="$LDFLAGS"
  230. _SAVE_CPPFLAGS="$CPPFLAGS"
  231.  
  232. dnl Compiler macros
  233. DEFINES=""
  234. AC_SUBST([DEFINES])
  235. case "$host_os" in
  236. linux*|*-gnu*|gnu*)
  237.     DEFINES="$DEFINES -D_GNU_SOURCE"
  238.     ;;
  239. solaris*)
  240.     DEFINES="$DEFINES -DSVR4"
  241.     ;;
  242. cygwin*)
  243.     DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
  244.     ;;
  245. esac
  246.  
  247. dnl Add flags for gcc and g++
  248. if test "x$GCC" = xyes; then
  249.     CFLAGS="$CFLAGS -Wall"
  250.  
  251.     if test "x$USE_GNU99" = xyes; then
  252.         CFLAGS="$CFLAGS -std=gnu99"
  253.     else
  254.         CFLAGS="$CFLAGS -std=c99"
  255.     fi
  256.  
  257.     # Enable -Werror=implicit-function-declaration and
  258.     # -Werror=missing-prototypes, if available, or otherwise, just
  259.     # -Wmissing-prototypes.  This is particularly useful to avoid
  260.     # generating a loadable driver module that has undefined symbols.
  261.     save_CFLAGS="$CFLAGS"
  262.     AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
  263.     CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
  264.     CFLAGS="$CFLAGS -Werror=missing-prototypes"
  265.     AC_LINK_IFELSE([AC_LANG_PROGRAM()],
  266.                    AC_MSG_RESULT([yes]),
  267.                    [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
  268.                     AC_MSG_RESULT([no])]);
  269.  
  270.     # Enable -fvisibility=hidden if using a gcc that supports it
  271.     save_CFLAGS="$CFLAGS"
  272.     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
  273.     VISIBILITY_CFLAGS="-fvisibility=hidden"
  274.     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
  275.     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
  276.                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
  277.  
  278.     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
  279.     CFLAGS=$save_CFLAGS
  280.  
  281.     # Work around aliasing bugs - developers should comment this out
  282.     CFLAGS="$CFLAGS -fno-strict-aliasing"
  283.  
  284.     # gcc's builtin memcmp is slower than glibc's
  285.     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
  286.     CFLAGS="$CFLAGS -fno-builtin-memcmp"
  287.  
  288.     # Flags to help ensure that certain portions of the code -- and only those
  289.     # portions -- can be built with MSVC:
  290.     # - src/util, src/gallium/auxiliary, and src/gallium/drivers/llvmpipe needs
  291.     #   to build with Windows SDK 7.0.7600, which bundles MSVC 2008
  292.     # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
  293.     #   supports most of C99)
  294.     # - the rest has no compiler compiler restrictions
  295.     MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"
  296.     MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"
  297.  
  298.     # Enable -Werror=vla if compiler supports it
  299.     save_CFLAGS="$CFLAGS"
  300.     AC_MSG_CHECKING([whether $CC supports -Werror=vla])
  301.     CFLAGS="$CFLAGS -Werror=vla"
  302.     AC_LINK_IFELSE([AC_LANG_PROGRAM()],
  303.                    [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla";
  304.                     MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla";
  305.                     AC_MSG_RESULT([yes])],
  306.                     AC_MSG_RESULT([no]));
  307.     CFLAGS="$save_CFLAGS"
  308.  
  309.     MSVC2008_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=declaration-after-statement"
  310.     MSVC2008_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS"
  311. fi
  312. if test "x$GXX" = xyes; then
  313.     CXXFLAGS="$CXXFLAGS -Wall"
  314.  
  315.     # Enable -fvisibility=hidden if using a gcc that supports it
  316.     save_CXXFLAGS="$CXXFLAGS"
  317.     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
  318.     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
  319.     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
  320.     AC_LANG_PUSH([C++])
  321.     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
  322.                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
  323.     AC_LANG_POP([C++])
  324.  
  325.     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
  326.     CXXFLAGS=$save_CXXFLAGS
  327.  
  328.     # Work around aliasing bugs - developers should comment this out
  329.     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
  330.  
  331.     # gcc's builtin memcmp is slower than glibc's
  332.     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
  333.     CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
  334. fi
  335.  
  336. AC_SUBST([MSVC2013_COMPAT_CFLAGS])
  337. AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
  338. AC_SUBST([MSVC2008_COMPAT_CFLAGS])
  339. AC_SUBST([MSVC2008_COMPAT_CXXFLAGS])
  340.  
  341. dnl even if the compiler appears to support it, using visibility attributes isn't
  342. dnl going to do anything useful currently on cygwin apart from emit lots of warnings
  343. case "$host_os" in
  344. cygwin*)
  345.     VISIBILITY_CFLAGS=""
  346.     VISIBILITY_CXXFLAGS=""
  347.     ;;
  348. esac
  349.  
  350. AC_SUBST([VISIBILITY_CFLAGS])
  351. AC_SUBST([VISIBILITY_CXXFLAGS])
  352.  
  353. dnl
  354. dnl Optional flags, check for compiler support
  355. dnl
  356. SSE41_CFLAGS="-msse4.1"
  357. dnl Code compiled by GCC with -msse* assumes a 16 byte aligned
  358. dnl stack, but on x86-32 such alignment is not guaranteed.
  359. case "$target_cpu" in
  360. i?86)
  361.     SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
  362.     ;;
  363. esac
  364. save_CFLAGS="$CFLAGS"
  365. CFLAGS="$SSE41_CFLAGS $CFLAGS"
  366. AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
  367. #include <smmintrin.h>
  368. int main () {
  369.     __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
  370.     c = _mm_max_epu32(a, b);
  371.     return 0;
  372. }]])], SSE41_SUPPORTED=1)
  373. CFLAGS="$save_CFLAGS"
  374. if test "x$SSE41_SUPPORTED" = x1; then
  375.     DEFINES="$DEFINES -DUSE_SSE41"
  376. fi
  377. AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
  378. AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
  379.  
  380. dnl Can't have static and shared libraries, default to static if user
  381. dnl explicitly requested. If both disabled, set to static since shared
  382. dnl was explicitly requested.
  383. case "x$enable_static$enable_shared" in
  384. xyesyes)
  385.     AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
  386.     enable_shared=no
  387.     ;;
  388. xnono)
  389.     AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
  390.     enable_shared=yes
  391.     ;;
  392. esac
  393.  
  394. AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
  395.  
  396. dnl
  397. dnl other compiler options
  398. dnl
  399. AC_ARG_ENABLE([debug],
  400.     [AS_HELP_STRING([--enable-debug],
  401.         [use debug compiler flags and macros @<:@default=disabled@:>@])],
  402.     [enable_debug="$enableval"],
  403.     [enable_debug=no]
  404. )
  405. if test "x$enable_debug" = xyes; then
  406.     DEFINES="$DEFINES -DDEBUG"
  407.     if test "x$GCC" = xyes; then
  408.         if ! echo "$CFLAGS" | grep -q -e '-g'; then
  409.             CFLAGS="$CFLAGS -g"
  410.         fi
  411.         if ! echo "$CFLAGS" | grep -q -e '-O'; then
  412.             CFLAGS="$CFLAGS -O0"
  413.         fi
  414.     fi
  415.     if test "x$GXX" = xyes; then
  416.         if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
  417.             CXXFLAGS="$CXXFLAGS -g"
  418.         fi
  419.         if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
  420.             CXXFLAGS="$CXXFLAGS -O0"
  421.         fi
  422.     fi
  423. else
  424.    DEFINES="$DEFINES -DNDEBUG"
  425. fi
  426.  
  427. dnl
  428. dnl Check if linker supports -Bsymbolic
  429. dnl
  430. save_LDFLAGS=$LDFLAGS
  431. LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
  432. AC_MSG_CHECKING([if ld supports -Bsymbolic])
  433. AC_LINK_IFELSE(
  434.     [AC_LANG_SOURCE([int main() { return 0;}])],
  435.     [AC_MSG_RESULT([yes])
  436.         BSYMBOLIC="-Wl,-Bsymbolic";],
  437.     [AC_MSG_RESULT([no])
  438.         BSYMBOLIC="";])
  439. LDFLAGS=$save_LDFLAGS
  440.  
  441. AC_SUBST([BSYMBOLIC])
  442.  
  443. dnl
  444. dnl Check if linker supports garbage collection
  445. dnl
  446. save_LDFLAGS=$LDFLAGS
  447. LDFLAGS="$LDFLAGS -Wl,--gc-sections"
  448. AC_MSG_CHECKING([whether ld supports --gc-sections])
  449. AC_LINK_IFELSE(
  450.     [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
  451.     [AC_MSG_RESULT([yes])
  452.         GC_SECTIONS="-Wl,--gc-sections";],
  453.     [AC_MSG_RESULT([no])
  454.         GC_SECTIONS="";])
  455. LDFLAGS=$save_LDFLAGS
  456.  
  457. AC_SUBST([GC_SECTIONS])
  458.  
  459. dnl
  460. dnl OpenBSD does not have DT_NEEDED entries for libc by design
  461. dnl so when these flags are passed to ld via libtool the checks will fail
  462. dnl
  463. case "$host_os" in
  464. openbsd* | darwin* )
  465.     LD_NO_UNDEFINED="" ;;
  466. *)
  467.     LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
  468. esac
  469.  
  470. AC_SUBST([LD_NO_UNDEFINED])
  471.  
  472. dnl
  473. dnl Check if linker supports version scripts
  474. dnl
  475. AC_MSG_CHECKING([if the linker supports version-scripts])
  476. save_LDFLAGS=$LDFLAGS
  477. LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
  478. cat > conftest.map <<EOF
  479. VERSION_1 {
  480.      global:
  481.          main;
  482.  
  483.      local:
  484.          *;
  485. };
  486. EOF
  487. AC_LINK_IFELSE(
  488.     [AC_LANG_SOURCE([int main() { return 0;}])],
  489.     [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
  490.     [have_ld_version_script=no; AC_MSG_RESULT(no)])
  491. LDFLAGS=$save_LDFLAGS
  492. AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
  493.  
  494. dnl
  495. dnl Check if linker supports dynamic list files
  496. dnl
  497. AC_MSG_CHECKING([if the linker supports --dynamic-list])
  498. save_LDFLAGS=$LDFLAGS
  499. LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
  500. cat > conftest.dyn <<EOF
  501. {
  502.         radeon_drm_winsys_create;
  503. };
  504. EOF
  505. AC_LINK_IFELSE(
  506.     [AC_LANG_SOURCE([int main() { return 0;}])],
  507.     [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
  508.     [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
  509. LDFLAGS=$save_LDFLAGS
  510. AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
  511.  
  512. dnl
  513. dnl compatibility symlinks
  514. dnl
  515. case "$host_os" in
  516. linux* )
  517.     HAVE_COMPAT_SYMLINKS=yes ;;
  518. * )
  519.     HAVE_COMPAT_SYMLINKS=no ;;
  520. esac
  521.  
  522. AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
  523.  
  524. dnl
  525. dnl library names
  526. dnl
  527. case "$host_os" in
  528. darwin* )
  529.     LIB_EXT='dylib' ;;
  530. cygwin* )
  531.     LIB_EXT='dll' ;;
  532. aix* )
  533.     LIB_EXT='a' ;;
  534. * )
  535.     LIB_EXT='so' ;;
  536. esac
  537.  
  538. AC_SUBST([LIB_EXT])
  539.  
  540. AC_ARG_WITH([gl-lib-name],
  541.   [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
  542.     [specify GL library name @<:@default=GL@:>@])],
  543.   [GL_LIB=$withval],
  544.   [GL_LIB=GL])
  545. AC_ARG_WITH([osmesa-lib-name],
  546.   [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
  547.     [specify OSMesa library name @<:@default=OSMesa@:>@])],
  548.   [OSMESA_LIB=$withval],
  549.   [OSMESA_LIB=OSMesa])
  550. AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
  551. AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
  552.  
  553. dnl
  554. dnl Mangled Mesa support
  555. dnl
  556. AC_ARG_ENABLE([mangling],
  557.   [AS_HELP_STRING([--enable-mangling],
  558.     [enable mangled symbols and library name @<:@default=disabled@:>@])],
  559.   [enable_mangling="${enableval}"],
  560.   [enable_mangling=no]
  561. )
  562. if test "x${enable_mangling}" = "xyes" ; then
  563.   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
  564.   GL_LIB="Mangled${GL_LIB}"
  565.   OSMESA_LIB="Mangled${OSMESA_LIB}"
  566. fi
  567. AC_SUBST([GL_LIB])
  568. AC_SUBST([OSMESA_LIB])
  569.  
  570. dnl
  571. dnl potentially-infringing-but-nobody-knows-for-sure stuff
  572. dnl
  573. AC_ARG_ENABLE([texture-float],
  574.     [AS_HELP_STRING([--enable-texture-float],
  575.         [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
  576.     [enable_texture_float="$enableval"],
  577.     [enable_texture_float=no]
  578. )
  579. if test "x$enable_texture_float" = xyes; then
  580.     AC_MSG_WARN([Floating-point textures enabled.])
  581.     AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
  582.     DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
  583. fi
  584.  
  585. dnl
  586. dnl Arch/platform-specific settings
  587. dnl
  588. AC_ARG_ENABLE([asm],
  589.     [AS_HELP_STRING([--disable-asm],
  590.         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
  591.     [enable_asm="$enableval"],
  592.     [enable_asm=yes]
  593. )
  594. asm_arch=""
  595. AC_MSG_CHECKING([whether to enable assembly])
  596. test "x$enable_asm" = xno && AC_MSG_RESULT([no])
  597. # disable if cross compiling on x86/x86_64 since we must run gen_matypes
  598. if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
  599.     case "$host_cpu" in
  600.     i?86 | x86_64 | amd64)
  601.         enable_asm=no
  602.         AC_MSG_RESULT([no, cross compiling])
  603.         ;;
  604.     esac
  605. fi
  606. # check for supported arches
  607. if test "x$enable_asm" = xyes; then
  608.     case "$host_cpu" in
  609.     i?86)
  610.         case "$host_os" in
  611.         linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
  612.             asm_arch=x86
  613.             ;;
  614.         esac
  615.         ;;
  616.     x86_64|amd64)
  617.         case "$host_os" in
  618.         linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
  619.             asm_arch=x86_64
  620.             ;;
  621.         esac
  622.         ;;
  623.     sparc*)
  624.         case "$host_os" in
  625.         linux*)
  626.             asm_arch=sparc
  627.             ;;
  628.         esac
  629.         ;;
  630.     esac
  631.  
  632.     case "$asm_arch" in
  633.     x86)
  634.         DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
  635.         AC_MSG_RESULT([yes, x86])
  636.         ;;
  637.     x86_64|amd64)
  638.         DEFINES="$DEFINES -DUSE_X86_64_ASM"
  639.         AC_MSG_RESULT([yes, x86_64])
  640.         ;;
  641.     sparc)
  642.         DEFINES="$DEFINES -DUSE_SPARC_ASM"
  643.         AC_MSG_RESULT([yes, sparc])
  644.         ;;
  645.     *)
  646.         AC_MSG_RESULT([no, platform not supported])
  647.         ;;
  648.     esac
  649. fi
  650.  
  651. AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
  652. AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
  653. AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
  654.  
  655. dnl Check to see if dlopen is in default libraries (like Solaris, which
  656. dnl has it in libc), or if libdl is needed to get it.
  657. AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
  658.     [AC_CHECK_LIB([dl], [dlopen],
  659.        [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
  660. AC_SUBST([DLOPEN_LIBS])
  661.  
  662. dnl Check if that library also has dladdr
  663. save_LIBS="$LIBS"
  664. LIBS="$LIBS $DLOPEN_LIBS"
  665. AC_CHECK_FUNCS([dladdr])
  666. LIBS="$save_LIBS"
  667.  
  668. case "$host_os" in
  669. darwin*)
  670.     ;;
  671. *)
  672.     AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
  673.                    [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
  674.                                  [AC_MSG_ERROR([Could not find clock_gettime])])])
  675.     AC_SUBST([CLOCK_LIB])
  676.     ;;
  677. esac
  678.  
  679. dnl See if posix_memalign is available
  680. AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
  681.  
  682. dnl Check for pthreads
  683. AX_PTHREAD
  684. if test "x$ax_pthread_ok" = xno; then
  685.     AC_MSG_ERROR([Building mesa on this platform requires pthreads])
  686. fi
  687. dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
  688. dnl to -pthread, which causes problems if we need -lpthread to appear in
  689. dnl pkgconfig files.
  690. test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
  691.  
  692. dnl SELinux awareness.
  693. AC_ARG_ENABLE([selinux],
  694.     [AS_HELP_STRING([--enable-selinux],
  695.         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
  696.     [MESA_SELINUX="$enableval"],
  697.     [MESA_SELINUX=no])
  698. if test "x$enable_selinux" = "xyes"; then
  699.     PKG_CHECK_MODULES([SELINUX], [libselinux], [],
  700.         [AC_CHECK_HEADER([selinux/selinux.h],[],
  701.                          [AC_MSG_ERROR([SELinux headers not found])])
  702.          AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
  703.                       [AC_MSG_ERROR([SELinux library not found])])
  704.          SELINUX_LIBS="-lselinux"])
  705.     DEFINES="$DEFINES -DMESA_SELINUX"
  706. fi
  707. AC_SUBST([SELINUX_CFLAGS])
  708. AC_SUBST([SELINUX_LIBS])
  709.  
  710. dnl Options for APIs
  711. AC_ARG_ENABLE([opengl],
  712.     [AS_HELP_STRING([--disable-opengl],
  713.         [disable support for standard OpenGL API @<:@default=enabled@:>@])],
  714.     [enable_opengl="$enableval"],
  715.     [enable_opengl=yes])
  716. AC_ARG_ENABLE([gles1],
  717.     [AS_HELP_STRING([--enable-gles1],
  718.         [enable support for OpenGL ES 1.x API @<:@default=disabled@:>@])],
  719.     [enable_gles1="$enableval"],
  720.     [enable_gles1=no])
  721. AC_ARG_ENABLE([gles2],
  722.     [AS_HELP_STRING([--enable-gles2],
  723.         [enable support for OpenGL ES 2.x API @<:@default=disabled@:>@])],
  724.     [enable_gles2="$enableval"],
  725.     [enable_gles2=no])
  726.  
  727. AC_ARG_ENABLE([dri],
  728.     [AS_HELP_STRING([--enable-dri],
  729.         [enable DRI modules @<:@default=enabled@:>@])],
  730.     [enable_dri="$enableval"],
  731.     [enable_dri=yes])
  732.  
  733. case "$host_os" in
  734. linux*)
  735.     dri3_default=yes
  736.     ;;
  737. *)
  738.     dri3_default=no
  739.     ;;
  740. esac
  741. AC_ARG_ENABLE([dri3],
  742.     [AS_HELP_STRING([--enable-dri3],
  743.         [enable DRI3 @<:@default=auto@:>@])],
  744.     [enable_dri3="$enableval"],
  745.     [enable_dri3="$dri3_default"])
  746. AC_ARG_ENABLE([glx],
  747.     [AS_HELP_STRING([--enable-glx],
  748.         [enable GLX library @<:@default=enabled@:>@])],
  749.     [enable_glx="$enableval"],
  750.     [enable_glx=yes])
  751. AC_ARG_ENABLE([osmesa],
  752.     [AS_HELP_STRING([--enable-osmesa],
  753.         [enable OSMesa library @<:@default=disabled@:>@])],
  754.     [enable_osmesa="$enableval"],
  755.     [enable_osmesa=no])
  756. AC_ARG_ENABLE([gallium-osmesa],
  757.     [AS_HELP_STRING([--enable-gallium-osmesa],
  758.         [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
  759.     [enable_gallium_osmesa="$enableval"],
  760.     [enable_gallium_osmesa=no])
  761. AC_ARG_ENABLE([egl],
  762.     [AS_HELP_STRING([--disable-egl],
  763.         [disable EGL library @<:@default=enabled@:>@])],
  764.     [enable_egl="$enableval"],
  765.     [enable_egl=yes])
  766.  
  767. AC_ARG_ENABLE([xa],
  768.     [AS_HELP_STRING([--enable-xa],
  769.         [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
  770.     [enable_xa="$enableval"],
  771.     [enable_xa=no])
  772. AC_ARG_ENABLE([gbm],
  773.    [AS_HELP_STRING([--enable-gbm],
  774.          [enable gbm library @<:@default=auto@:>@])],
  775.    [enable_gbm="$enableval"],
  776.    [enable_gbm=auto])
  777. AC_ARG_ENABLE([nine],
  778.     [AS_HELP_STRING([--enable-nine],
  779.         [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
  780.     [enable_nine="$enableval"],
  781.     [enable_nine=no])
  782.  
  783. AC_ARG_ENABLE([xvmc],
  784.    [AS_HELP_STRING([--enable-xvmc],
  785.          [enable xvmc library @<:@default=auto@:>@])],
  786.    [enable_xvmc="$enableval"],
  787.    [enable_xvmc=auto])
  788. AC_ARG_ENABLE([vdpau],
  789.    [AS_HELP_STRING([--enable-vdpau],
  790.          [enable vdpau library @<:@default=auto@:>@])],
  791.    [enable_vdpau="$enableval"],
  792.    [enable_vdpau=auto])
  793. AC_ARG_ENABLE([omx],
  794.    [AS_HELP_STRING([--enable-omx],
  795.          [enable OpenMAX library @<:@default=disabled@:>@])],
  796.    [enable_omx="$enableval"],
  797.    [enable_omx=no])
  798. AC_ARG_ENABLE([va],
  799.    [AS_HELP_STRING([--enable-va],
  800.          [enable va library @<:@default=auto@:>@])],
  801.    [enable_va="$enableval"],
  802.    [enable_va=auto])
  803. AC_ARG_ENABLE([opencl],
  804.    [AS_HELP_STRING([--enable-opencl],
  805.          [enable OpenCL library @<:@default=disabled@:>@])],
  806.    [enable_opencl="$enableval"],
  807.    [enable_opencl=no])
  808. AC_ARG_ENABLE([opencl_icd],
  809.    [AS_HELP_STRING([--enable-opencl-icd],
  810.           [Build an OpenCL ICD library to be loaded by an ICD implementation
  811.            @<:@default=disabled@:>@])],
  812.     [enable_opencl_icd="$enableval"],
  813.     [enable_opencl_icd=no])
  814. AC_ARG_ENABLE([xlib-glx],
  815.     [AS_HELP_STRING([--enable-xlib-glx],
  816.         [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
  817.     [enable_xlib_glx="$enableval"],
  818.     [enable_xlib_glx=no])
  819.  
  820. AC_ARG_ENABLE([r600-llvm-compiler],
  821.     [AS_HELP_STRING([--enable-r600-llvm-compiler],
  822.         [Enable experimental LLVM backend for graphics shaders @<:@default=disabled@:>@])],
  823.     [enable_r600_llvm="$enableval"],
  824.     [enable_r600_llvm=no])
  825.  
  826. AC_ARG_ENABLE([gallium-tests],
  827.     [AS_HELP_STRING([--enable-gallium-tests],
  828.         [Enable optional Gallium tests) @<:@default=disabled@:>@])],
  829.     [enable_gallium_tests="$enableval"],
  830.     [enable_gallium_tests=no])
  831.  
  832. # Option for Gallium drivers
  833.  
  834. # Keep this in sync with the --with-gallium-drivers help string default value
  835. GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
  836.  
  837. AC_ARG_WITH([gallium-drivers],
  838.     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
  839.         [comma delimited Gallium drivers list, e.g.
  840.         "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4"
  841.         @<:@default=r300,r600,svga,swrast@:>@])],
  842.     [with_gallium_drivers="$withval"],
  843.     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
  844.  
  845. # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
  846. # here so that the script doesn't choke on an unknown driver name later.
  847. case "$with_gallium_drivers" in
  848.     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
  849.     no) with_gallium_drivers='' ;;
  850. esac
  851.  
  852. if test "x$enable_opengl" = xno -a \
  853.         "x$enable_gles1" = xno -a \
  854.         "x$enable_gles2" = xno -a \
  855.         "x$enable_nine" = xno -a \
  856.         "x$enable_xa" = xno -a \
  857.         "x$enable_xvmc" = xno -a \
  858.         "x$enable_vdpau" = xno -a \
  859.         "x$enable_omx" = xno -a \
  860.         "x$enable_va" = xno -a \
  861.         "x$enable_opencl" = xno; then
  862.     AC_MSG_ERROR([at least one API should be enabled])
  863. fi
  864.  
  865. # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
  866. if test "x$enable_opengl" = xno -a \
  867.         "x$enable_gles1" = xyes; then
  868.     AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
  869. fi
  870.  
  871. if test "x$enable_opengl" = xno -a \
  872.         "x$enable_gles2" = xyes; then
  873.     AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
  874. fi
  875.  
  876. AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
  877. AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
  878. AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
  879. AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
  880.                                         "x$enable_gles1" = xyes -o \
  881.                                         "x$enable_gles2" = xyes)
  882.  
  883. if test "x$enable_glx" = xno; then
  884.     AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
  885.     enable_xlib_glx=no
  886. fi
  887.  
  888. if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
  889.     AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
  890. fi
  891.  
  892. if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
  893.     AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
  894. fi
  895.  
  896. # Disable GLX if OpenGL is not enabled
  897. if test "x$enable_glx$enable_opengl" = xyesno; then
  898.     AC_MSG_WARN([OpenGL not enabled, disabling GLX])
  899.     enable_glx=no
  900. fi
  901.  
  902. # Disable GLX if DRI and Xlib-GLX are not enabled
  903. if test "x$enable_glx" = xyes -a \
  904.         "x$enable_dri" = xno -a \
  905.         "x$enable_xlib_glx" = xno; then
  906.     AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
  907.     enable_glx=no
  908. fi
  909.  
  910. AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
  911.                                   "x$enable_dri" = xyes)
  912.  
  913. # Select which platform-dependent DRI code gets built
  914. case "$host_os" in
  915. darwin*)
  916.     dri_platform='apple' ;;
  917. gnu*|cygwin*)
  918.     dri_platform='none' ;;
  919. *)
  920.     dri_platform='drm' ;;
  921. esac
  922.  
  923. AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
  924. AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
  925. AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm )
  926. AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm )
  927. AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
  928.  
  929. AC_ARG_ENABLE([shared-glapi],
  930.     [AS_HELP_STRING([--enable-shared-glapi],
  931.         [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
  932.     [enable_shared_glapi="$enableval"],
  933.     [enable_shared_glapi=yes])
  934.  
  935. case "x$enable_opengl$enable_gles1$enable_gles2" in
  936. x*yes*yes*)
  937.     if test "x$enable_shared_glapi" = xno; then
  938.         AC_MSG_ERROR([shared GLAPI required when building two or more of
  939.                       the following APIs - opengl, gles1 gles2])
  940.     fi
  941.     ;;
  942. esac
  943.  
  944. # Building Xlib-GLX requires shared glapi to be disabled.
  945. if test "x$enable_xlib_glx" = xyes; then
  946.     AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
  947.     enable_shared_glapi=no
  948. fi
  949.  
  950. AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
  951.  
  952. # Build the pipe-drivers as separate libraries/modules.
  953. # Do not touch this unless you know what you are doing.
  954. # XXX: Expose via configure option ?
  955. enable_shared_pipe_drivers=no
  956.  
  957. dnl
  958. dnl Driver specific build directories
  959. dnl
  960.  
  961. case "x$enable_glx$enable_xlib_glx" in
  962. xyesyes)
  963.     NEED_WINSYS_XLIB="yes"
  964.     ;;
  965. esac
  966.  
  967. if test "x$enable_dri" = xyes; then
  968.     enable_gallium_loader="$enable_shared_pipe_drivers"
  969. fi
  970.  
  971. if test "x$enable_gallium_osmesa" = xyes; then
  972.     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
  973.         AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
  974.     fi
  975.     if test "x$enable_osmesa" = xyes; then
  976.         AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
  977.     fi
  978. fi
  979.  
  980. AC_SUBST([MESA_LLVM])
  981.  
  982. # SHA1 hashing
  983. AC_ARG_WITH([sha1],
  984.         [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
  985.         [choose SHA1 implementation])])
  986. case "x$with_sha1" in
  987. x | xlibc | xlibmd | xlibnettle | xlibgcrypt | xlibcrypto | xlibsha1 | xCommonCrypto | xCryptoAPI)
  988.   ;;
  989. *)
  990.         AC_MSG_ERROR([Illegal value for --with-sha1: $with_sha1])
  991. esac
  992.  
  993. AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
  994. if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
  995.         with_sha1=libc
  996. fi
  997. if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
  998.         AC_MSG_ERROR([sha1 in libc requested but not found])
  999. fi
  1000. if test "x$with_sha1" = xlibc; then
  1001.         AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
  1002.                 [Use libc SHA1 functions])
  1003.         SHA1_LIBS=""
  1004. fi
  1005. AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
  1006. if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
  1007.         with_sha1=CommonCrypto
  1008. fi
  1009. if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
  1010.         AC_MSG_ERROR([CommonCrypto requested but not found])
  1011. fi
  1012. if test "x$with_sha1" = xCommonCrypto; then
  1013.         AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
  1014.                 [Use CommonCrypto SHA1 functions])
  1015.         SHA1_LIBS=""
  1016. fi
  1017. dnl stdcall functions cannot be tested with AC_CHECK_LIB
  1018. AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
  1019. if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
  1020.         with_sha1=CryptoAPI
  1021. fi
  1022. if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
  1023.         AC_MSG_ERROR([CryptoAPI requested but not found])
  1024. fi
  1025. if test "x$with_sha1" = xCryptoAPI; then
  1026.         AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
  1027.                 [Use CryptoAPI SHA1 functions])
  1028.         SHA1_LIBS=""
  1029. fi
  1030. AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
  1031. if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
  1032.         with_sha1=libmd
  1033. fi
  1034. if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
  1035.         AC_MSG_ERROR([libmd requested but not found])
  1036. fi
  1037. if test "x$with_sha1" = xlibmd; then
  1038.         AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
  1039.                   [Use libmd SHA1 functions])
  1040.         SHA1_LIBS=-lmd
  1041. fi
  1042. PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
  1043. if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
  1044.    with_sha1=libsha1
  1045. fi
  1046. if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
  1047.         AC_MSG_ERROR([libsha1 requested but not found])
  1048. fi
  1049. if test "x$with_sha1" = xlibsha1; then
  1050.         AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
  1051.                   [Use libsha1 for SHA1])
  1052.         SHA1_LIBS=-lsha1
  1053. fi
  1054. AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
  1055. if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
  1056.         with_sha1=libnettle
  1057. fi
  1058. if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
  1059.         AC_MSG_ERROR([libnettle requested but not found])
  1060. fi
  1061. if test "x$with_sha1" = xlibnettle; then
  1062.         AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
  1063.                   [Use libnettle SHA1 functions])
  1064.         SHA1_LIBS=-lnettle
  1065. fi
  1066. AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
  1067. if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
  1068.         with_sha1=libgcrypt
  1069. fi
  1070. if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
  1071.         AC_MSG_ERROR([libgcrypt requested but not found])
  1072. fi
  1073. if test "x$with_sha1" = xlibgcrypt; then
  1074.         AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
  1075.                   [Use libgcrypt SHA1 functions])
  1076.         SHA1_LIBS=-lgcrypt
  1077. fi
  1078. # We don't need all of the OpenSSL libraries, just libcrypto
  1079. AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
  1080. PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
  1081.                   [HAVE_OPENSSL_PKC=no])
  1082. if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
  1083.         if test "x$with_sha1" = x; then
  1084.                 with_sha1=libcrypto
  1085.         fi
  1086. else
  1087.         if test "x$with_sha1" = xlibcrypto; then
  1088.                 AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
  1089.         fi
  1090. fi
  1091. if test "x$with_sha1" = xlibcrypto; then
  1092.         if test "x$HAVE_LIBCRYPTO" = xyes; then
  1093.                 SHA1_LIBS=-lcrypto
  1094.         else
  1095.                 SHA1_LIBS="$OPENSSL_LIBS"
  1096.                 SHA1_CFLAGS="$OPENSSL_CFLAGS"
  1097.         fi
  1098. fi
  1099. AC_MSG_CHECKING([for SHA1 implementation])
  1100. AC_MSG_RESULT([$with_sha1])
  1101. AC_SUBST(SHA1_LIBS)
  1102. AC_SUBST(SHA1_CFLAGS)
  1103.  
  1104. # Allow user to configure out the shader-cache feature
  1105. AC_ARG_ENABLE([shader-cache],
  1106.     AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
  1107.     [enable_shader_cache="$enableval"],
  1108.     [if test "x$with_sha1" != "x"; then
  1109.         enable_shader_cache=yes
  1110.      else
  1111.         enable_shader_cache=no
  1112.      fi])
  1113. if test "x$with_sha1" = "x"; then
  1114.     if test "x$enable_shader_cache" = "xyes"; then
  1115.         AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
  1116.     fi
  1117. fi
  1118. AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
  1119.  
  1120. # Check for libdrm
  1121. PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
  1122.                   [have_libdrm=yes], [have_libdrm=no])
  1123. if test "x$have_libdrm" = xyes; then
  1124.         DEFINES="$DEFINES -DHAVE_LIBDRM"
  1125. fi
  1126.  
  1127. case "$host_os" in
  1128. linux*)
  1129.     need_pci_id=yes ;;
  1130. *)
  1131.     need_pci_id=no ;;
  1132. esac
  1133.  
  1134. PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
  1135.                   have_libudev=yes, have_libudev=no)
  1136.  
  1137. AC_ARG_ENABLE([sysfs],
  1138.     [AS_HELP_STRING([--enable-sysfs],
  1139.         [enable /sys PCI identification @<:@default=disabled@:>@])],
  1140.     [have_sysfs="$enableval"],
  1141.     [have_sysfs=no]
  1142. )
  1143.  
  1144. if test "x$enable_dri" = xyes; then
  1145.     if test "$enable_static" = yes; then
  1146.         AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
  1147.     fi
  1148.  
  1149.     # not a hard requirement as swrast does not depend on it
  1150.     if test "x$have_libdrm" = xyes; then
  1151.         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
  1152.     fi
  1153. fi
  1154.  
  1155. AC_ARG_ENABLE([driglx-direct],
  1156.     [AS_HELP_STRING([--disable-driglx-direct],
  1157.         [disable direct rendering in GLX and EGL for DRI \
  1158.             @<:@default=auto@:>@])],
  1159.     [driglx_direct="$enableval"],
  1160.     [driglx_direct="yes"])
  1161.  
  1162. dnl
  1163. dnl libGL configuration per driver
  1164. dnl
  1165. case "x$enable_glx$enable_xlib_glx" in
  1166. xyesyes)
  1167.     # Xlib-based GLX
  1168.     dri_modules="x11 xext xcb"
  1169.     PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
  1170.     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
  1171.     X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
  1172.     GL_LIB_DEPS="$XLIBGL_LIBS"
  1173.     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1174.     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
  1175.     ;;
  1176. xyesno)
  1177.     # DRI-based GLX
  1178.     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
  1179.  
  1180.     # find the DRI deps for libGL
  1181.     dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
  1182.  
  1183.     if test x"$driglx_direct" = xyes; then
  1184.         if test x"$dri_platform" = xdrm ; then
  1185.             DEFINES="$DEFINES -DGLX_USE_DRM"
  1186.             if test "x$have_libdrm" != xyes; then
  1187.                AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
  1188.             fi
  1189.  
  1190.             PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
  1191.             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
  1192.             if test x"$enable_dri3" = xyes; then
  1193.                PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
  1194.                PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
  1195.             fi
  1196.  
  1197.             if test x"$enable_dri" = xyes; then
  1198.                dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
  1199.             fi
  1200.  
  1201.             if test x"$enable_dri3" = xyes; then
  1202.                PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
  1203.                dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
  1204.             fi
  1205.         fi
  1206.         if test x"$dri_platform" = xapple ; then
  1207.             DEFINES="$DEFINES -DGLX_USE_APPLEGL"
  1208.         fi
  1209.     fi
  1210.  
  1211.     # add xf86vidmode if available
  1212.     PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
  1213.     if test "$HAVE_XF86VIDMODE" = yes ; then
  1214.         dri_modules="$dri_modules xxf86vm"
  1215.     fi
  1216.  
  1217.     PKG_CHECK_MODULES([DRIGL], [$dri_modules])
  1218.     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
  1219.     X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
  1220.     GL_LIB_DEPS="$DRIGL_LIBS"
  1221.  
  1222.     # need DRM libs, $PTHREAD_LIBS, etc.
  1223.     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1224.     GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1225.     ;;
  1226. esac
  1227.  
  1228. have_pci_id=no
  1229. if test "$have_libudev" = yes; then
  1230.     DEFINES="$DEFINES -DHAVE_LIBUDEV"
  1231.     have_pci_id=yes
  1232. fi
  1233.  
  1234. if test "$have_sysfs" = yes; then
  1235.     DEFINES="$DEFINES -DHAVE_SYSFS"
  1236.     have_pci_id=yes
  1237. fi
  1238.  
  1239. # This is outside the case (above) so that it is invoked even for non-GLX
  1240. # builds.
  1241. AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
  1242.  
  1243. GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1244. GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1245. GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1246. GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1247.  
  1248. AC_SUBST([X11_INCLUDES])
  1249. AC_SUBST([GL_LIB_DEPS])
  1250. AC_SUBST([GL_PC_REQ_PRIV])
  1251. AC_SUBST([GL_PC_LIB_PRIV])
  1252. AC_SUBST([GL_PC_CFLAGS])
  1253. AC_SUBST([DRI_PC_REQ_PRIV])
  1254. AC_SUBST([GLESv1_CM_LIB_DEPS])
  1255. AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
  1256. AC_SUBST([GLESv2_LIB_DEPS])
  1257. AC_SUBST([GLESv2_PC_LIB_PRIV])
  1258.  
  1259. AC_SUBST([HAVE_XF86VIDMODE])
  1260.  
  1261. dnl
  1262. dnl More GLX setup
  1263. dnl
  1264. case "x$enable_glx$enable_xlib_glx" in
  1265. xyesyes)
  1266.     DEFINES="$DEFINES -DUSE_XSHM"
  1267.     ;;
  1268. xyesno)
  1269.     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
  1270.     if test "x$driglx_direct" = xyes; then
  1271.         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
  1272.     fi
  1273.     ;;
  1274. esac
  1275.  
  1276. dnl
  1277. dnl TLS detection
  1278. dnl
  1279.  
  1280. AC_ARG_ENABLE([glx-tls],
  1281.     [AS_HELP_STRING([--enable-glx-tls],
  1282.         [enable TLS support in GLX @<:@default=disabled@:>@])],
  1283.     [GLX_USE_TLS="$enableval"],
  1284.     [GLX_USE_TLS=no])
  1285. AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
  1286.  
  1287. AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
  1288.       [DEFINES="${DEFINES} -DGLX_USE_TLS"])
  1289.  
  1290. dnl
  1291. dnl More DRI setup
  1292. dnl
  1293. dnl Directory for DRI drivers
  1294. AC_ARG_WITH([dri-driverdir],
  1295.     [AS_HELP_STRING([--with-dri-driverdir=DIR],
  1296.         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
  1297.     [DRI_DRIVER_INSTALL_DIR="$withval"],
  1298.     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
  1299. AC_SUBST([DRI_DRIVER_INSTALL_DIR])
  1300. dnl Extra search path for DRI drivers
  1301. AC_ARG_WITH([dri-searchpath],
  1302.     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
  1303.         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
  1304.     [DRI_DRIVER_SEARCH_DIR="$withval"],
  1305.     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
  1306. AC_SUBST([DRI_DRIVER_SEARCH_DIR])
  1307. dnl Which drivers to build - default is chosen by platform
  1308. AC_ARG_WITH([dri-drivers],
  1309.     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
  1310.         [comma delimited classic DRI drivers list, e.g.
  1311.         "swrast,i965,radeon" @<:@default=auto@:>@])],
  1312.     [with_dri_drivers="$withval"],
  1313.     [with_dri_drivers=auto])
  1314.  
  1315. if test "x$with_dri_drivers" = xauto; then
  1316.     if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
  1317.         with_dri_drivers="yes"
  1318.     else
  1319.         with_dri_drivers="no"
  1320.     fi
  1321. fi
  1322. if test "x$with_dri_drivers" = xno; then
  1323.     with_dri_drivers=''
  1324. fi
  1325.  
  1326. dnl If $with_dri_drivers is yes, drivers will be added through
  1327. dnl platform checks. Set DEFINES and LIB_DEPS
  1328. if test "x$enable_dri" = xyes; then
  1329.     # Platform specific settings and drivers to build
  1330.     case "$host_os" in
  1331.     linux*)
  1332.         DEFINES="$DEFINES -DHAVE_ALIAS"
  1333.         if test "x$enable_dri3" = xyes; then
  1334.             DEFINES="$DEFINES -DHAVE_DRI3"
  1335.         fi
  1336.  
  1337.         if test "x$have_pci_id" != xyes; then
  1338.             AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
  1339.         fi
  1340.  
  1341.         case "$host_cpu" in
  1342.         powerpc* | sparc*)
  1343.             # Build only the drivers for cards that exist on PowerPC/sparc
  1344.             if test "x$with_dri_drivers" = "xyes"; then
  1345.                 with_dri_drivers="r200 radeon swrast"
  1346.             fi
  1347.             ;;
  1348.         esac
  1349.         ;;
  1350.     *freebsd* | dragonfly* | *netbsd* | openbsd*)
  1351.         DEFINES="$DEFINES -DHAVE_ALIAS"
  1352.         ;;
  1353.     gnu*)
  1354.         DEFINES="$DEFINES -DHAVE_ALIAS"
  1355.         ;;
  1356.     cygwin*)
  1357.         if test "x$with_dri_drivers" = "xyes"; then
  1358.             with_dri_drivers="swrast"
  1359.         fi
  1360.         ;;
  1361.     darwin*)
  1362.         DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED"
  1363.         if test "x$with_dri_drivers" = "xyes"; then
  1364.             with_dri_drivers="swrast"
  1365.         fi
  1366.         ;;
  1367.     esac
  1368.  
  1369.     # default drivers
  1370.     if test "x$with_dri_drivers" = "xyes"; then
  1371.         with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
  1372.     fi
  1373.  
  1374.     # Check for expat
  1375.     PKG_CHECK_MODULES([EXPAT], [expat], [],
  1376.         # expat version 2.0 and earlier do not provide expat.pc
  1377.         [AC_CHECK_HEADER([expat.h],[],
  1378.                          [AC_MSG_ERROR([Expat headers required for DRI not found])])
  1379.          AC_CHECK_LIB([expat],[XML_ParserCreate],[],
  1380.                      [AC_MSG_ERROR([Expat library required for DRI not found])])
  1381.          EXPAT_LIBS="-lexpat"])
  1382.  
  1383.     DRICOMMON_NEED_LIBDRM=no
  1384.     # If we are building any DRI driver other than swrast.
  1385.     if test -n "$with_dri_drivers"; then
  1386.         if test "x$with_dri_drivers" != xswrast; then
  1387.             # ... libdrm is required
  1388.             if test "x$have_libdrm" != xyes; then
  1389.                 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
  1390.             fi
  1391.             DRICOMMON_NEED_LIBDRM=yes
  1392.         fi
  1393.     fi
  1394.  
  1395.     # If we're building any gallium DRI driver other than swrast
  1396.     if test -n "$with_gallium_drivers" -a "x$DRICOMMON_NEED_LIBDRM" = xno; then
  1397.         if test "x$with_gallium_drivers" != xswrast; then
  1398.             # ... build a libdrm aware dricommon
  1399.             DRICOMMON_NEED_LIBDRM=yes
  1400.         fi
  1401.     fi
  1402.  
  1403.     # put all the necessary libs together
  1404.     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
  1405. fi
  1406.  
  1407. AC_SUBST([DRI_LIB_DEPS])
  1408.  
  1409. DRI_DIRS=''
  1410. dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
  1411. if test -n "$with_dri_drivers"; then
  1412.     if test "x$enable_opengl" != xyes; then
  1413.         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
  1414.     fi
  1415.  
  1416.     dri_drivers=`IFS=', '; echo $with_dri_drivers`
  1417.     for driver in $dri_drivers; do
  1418.         DRI_DIRS="$DRI_DIRS $driver"
  1419.         case "x$driver" in
  1420.         xi915)
  1421.             HAVE_I915_DRI=yes;
  1422.             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
  1423.             ;;
  1424.         xi965)
  1425.             HAVE_I965_DRI=yes;
  1426.             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
  1427.             ;;
  1428.         xnouveau)
  1429.             HAVE_NOUVEAU_DRI=yes;
  1430.             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
  1431.             ;;
  1432.         xradeon)
  1433.             HAVE_RADEON_DRI=yes;
  1434.             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
  1435.             ;;
  1436.         xr200)
  1437.             HAVE_R200_DRI=yes;
  1438.             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
  1439.             ;;
  1440.         xswrast)
  1441.             HAVE_SWRAST_DRI=yes;
  1442.             ;;
  1443.         *)
  1444.             AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
  1445.             ;;
  1446.         esac
  1447.     done
  1448.     DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
  1449. fi
  1450.  
  1451. AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
  1452. AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
  1453.                                   "x$enable_osmesa" = xyes -o \
  1454.                                   -n "$DRI_DIRS")
  1455.  
  1456. dnl
  1457. dnl OSMesa configuration
  1458. dnl
  1459.  
  1460. dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
  1461. AC_ARG_WITH([osmesa-bits],
  1462.     [AS_HELP_STRING([--with-osmesa-bits=BITS],
  1463.         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
  1464.     [osmesa_bits="$withval"],
  1465.     [osmesa_bits=8])
  1466. if test "x$osmesa_bits" != x8; then
  1467.     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
  1468.         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
  1469.         osmesa_bits=8
  1470.     fi
  1471. fi
  1472. case "x$osmesa_bits" in
  1473. x8)
  1474.     OSMESA_LIB="${OSMESA_LIB}"
  1475.     ;;
  1476. x16|x32)
  1477.     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
  1478.     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
  1479.     ;;
  1480. *)
  1481.     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
  1482.     ;;
  1483. esac
  1484.  
  1485. if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
  1486.     # only link libraries with osmesa if shared
  1487.     if test "$enable_static" = no; then
  1488.         OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
  1489.     else
  1490.         OSMESA_LIB_DEPS=""
  1491.     fi
  1492.     OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
  1493. fi
  1494.  
  1495. AC_SUBST([OSMESA_LIB_DEPS])
  1496. AC_SUBST([OSMESA_PC_REQ])
  1497. AC_SUBST([OSMESA_PC_LIB_PRIV])
  1498.  
  1499. dnl
  1500. dnl gbm configuration
  1501. dnl
  1502. if test "x$enable_gbm" = xauto; then
  1503.     case "$with_egl_platforms" in
  1504.         *drm*)
  1505.             enable_gbm=yes ;;
  1506.          *)
  1507.             enable_gbm=no ;;
  1508.     esac
  1509. fi
  1510. if test "x$enable_gbm" = xyes; then
  1511.     if test "x$need_pci_id$have_pci_id" = xyesno; then
  1512.         AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
  1513.     fi
  1514.  
  1515.     if test "x$enable_dri" = xyes; then
  1516.         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
  1517.         if test "x$enable_shared_glapi" = xno; then
  1518.             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
  1519.         fi
  1520.     else
  1521.         # Strictly speaking libgbm does not require --enable-dri, although
  1522.         # both of its backends do. Thus one can build libgbm without any
  1523.         # backends if --disable-dri is set.
  1524.         # To avoid unnecessary complexity of checking if at least one backend
  1525.         # is available when building, just mandate --enable-dri.
  1526.         AC_MSG_ERROR([gbm requires --enable-dri])
  1527.     fi
  1528. fi
  1529. AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
  1530. if test "x$need_pci_id$have_libudev" = xyesyes; then
  1531.     GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
  1532. else
  1533.     GBM_PC_REQ_PRIV=""
  1534. fi
  1535. GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
  1536. AC_SUBST([GBM_PC_REQ_PRIV])
  1537. AC_SUBST([GBM_PC_LIB_PRIV])
  1538.  
  1539. dnl
  1540. dnl EGL configuration
  1541. dnl
  1542. EGL_CLIENT_APIS=""
  1543.  
  1544. if test "x$enable_egl" = xyes; then
  1545.     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
  1546.  
  1547.     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
  1548.  
  1549.     if test "$enable_static" != yes; then
  1550.         if test "x$enable_dri" = xyes; then
  1551.             HAVE_EGL_DRIVER_DRI2=1
  1552.         fi
  1553.  
  1554.     fi
  1555. fi
  1556. AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
  1557. AC_SUBST([EGL_LIB_DEPS])
  1558.  
  1559. dnl
  1560. dnl XA configuration
  1561. dnl
  1562. if test "x$enable_xa" = xyes; then
  1563.     if test "x$with_gallium_drivers" = xswrast; then
  1564.        AC_MSG_ERROR([
  1565.           Building xa requires at least one non swrast gallium driver.
  1566.           If you are looking to use libxatracker.so with the VMware driver,
  1567.           make sure to include svga in the gallium drivers list, apart from
  1568.           enabling XA.
  1569.           Example: ./configure --enable-xa --with-gallium-drivers=svga...])
  1570.     fi
  1571.     enable_gallium_loader=$enable_shared_pipe_drivers
  1572. fi
  1573. AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
  1574.  
  1575. dnl
  1576. dnl Gallium G3DVL configuration
  1577. dnl
  1578. if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
  1579.     if test "x$enable_xvmc" = xauto; then
  1580.         PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
  1581.     fi
  1582.  
  1583.     if test "x$enable_vdpau" = xauto; then
  1584.         PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
  1585.     fi
  1586.  
  1587.     if test "x$enable_omx" = xauto; then
  1588.         PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
  1589.     fi
  1590.  
  1591.     if test "x$enable_va" = xauto; then
  1592.         PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
  1593.     fi
  1594. fi
  1595.  
  1596. if test "x$enable_dri" = xyes -o \
  1597.         "x$enable_xvmc" = xyes -o \
  1598.         "x$enable_vdpau" = xyes -o \
  1599.         "x$enable_omx" = xyes -o \
  1600.         "x$enable_va" = xyes; then
  1601.     need_gallium_vl=yes
  1602. fi
  1603. AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
  1604.  
  1605. if test "x$enable_xvmc" = xyes -o \
  1606.         "x$enable_vdpau" = xyes -o \
  1607.         "x$enable_omx" = xyes -o \
  1608.         "x$enable_va" = xyes; then
  1609.     PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
  1610.     need_gallium_vl_winsys=yes
  1611. fi
  1612. AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
  1613.  
  1614. if test "x$enable_xvmc" = xyes; then
  1615.     PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
  1616.     enable_gallium_loader=$enable_shared_pipe_drivers
  1617. fi
  1618. AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
  1619.  
  1620. if test "x$enable_vdpau" = xyes; then
  1621.     PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
  1622.     enable_gallium_loader=$enable_shared_pipe_drivers
  1623. fi
  1624. AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
  1625.  
  1626. if test "x$enable_omx" = xyes; then
  1627.     PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
  1628.     enable_gallium_loader=$enable_shared_pipe_drivers
  1629. fi
  1630. AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
  1631.  
  1632. if test "x$enable_va" = xyes; then
  1633.     PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
  1634.     enable_gallium_loader=$enable_shared_pipe_drivers
  1635. fi
  1636. AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
  1637.  
  1638. dnl
  1639. dnl Nine Direct3D9 configuration
  1640. dnl
  1641. if test "x$enable_nine" = xyes; then
  1642.     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
  1643.         AC_MSG_ERROR([nine requires the gallium swrast driver])
  1644.     fi
  1645.     if test "x$with_gallium_drivers" = xswrast; then
  1646.         AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
  1647.     fi
  1648.     if test "x$enable_dri3" = xno; then
  1649.         AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
  1650.     fi
  1651.  
  1652.     enable_gallium_loader=$enable_shared_pipe_drivers
  1653. fi
  1654. AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
  1655.  
  1656. dnl
  1657. dnl OpenCL configuration
  1658. dnl
  1659.  
  1660. AC_ARG_WITH([clang-libdir],
  1661.    [AS_HELP_STRING([--with-clang-libdir],
  1662.          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
  1663.    [CLANG_LIBDIR="$withval"],
  1664.    [CLANG_LIBDIR=''])
  1665.  
  1666. PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
  1667. AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;ELF_LIB=-lelf])
  1668.  
  1669. if test "x$enable_opencl" = xyes; then
  1670.     if test -z "$with_gallium_drivers"; then
  1671.         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
  1672.     fi
  1673.  
  1674.     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
  1675.         AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
  1676.     fi
  1677.  
  1678.     if test "x$have_libclc" = xno; then
  1679.         AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
  1680.                     Make sure the directory containing libclc.pc is specified in your
  1681.                     PKG_CONFIG_PATH environment variable.
  1682.                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
  1683.     else
  1684.         LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
  1685.         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
  1686.         AC_SUBST([LIBCLC_INCLUDEDIR])
  1687.         AC_SUBST([LIBCLC_LIBEXECDIR])
  1688.     fi
  1689.  
  1690.     # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
  1691.     enable_gallium_loader=yes
  1692.  
  1693.     if test "x$enable_opencl_icd" = xyes; then
  1694.         OPENCL_LIBNAME="MesaOpenCL"
  1695.     else
  1696.         OPENCL_LIBNAME="OpenCL"
  1697.     fi
  1698.  
  1699.     if test "x$have_libelf" != xyes; then
  1700.        AC_MSG_ERROR([Clover requires libelf])
  1701.     fi
  1702. fi
  1703. AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
  1704. AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
  1705. AC_SUBST([OPENCL_LIBNAME])
  1706.  
  1707. dnl
  1708. dnl Gallium configuration
  1709. dnl
  1710. AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
  1711.  
  1712. AC_SUBST([LLVM_BINDIR])
  1713. AC_SUBST([LLVM_CFLAGS])
  1714. AC_SUBST([LLVM_CPPFLAGS])
  1715. AC_SUBST([LLVM_CXXFLAGS])
  1716. AC_SUBST([LLVM_LIBDIR])
  1717. AC_SUBST([LLVM_LIBS])
  1718. AC_SUBST([LLVM_LDFLAGS])
  1719. AC_SUBST([LLVM_INCLUDEDIR])
  1720. AC_SUBST([LLVM_VERSION])
  1721. AC_SUBST([CLANG_RESOURCE_DIR])
  1722.  
  1723. case "x$enable_opengl$enable_gles1$enable_gles2" in
  1724. x*yes*)
  1725.     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
  1726.     ;;
  1727. esac
  1728.  
  1729. AC_SUBST([VG_LIB_DEPS])
  1730. AC_SUBST([EGL_CLIENT_APIS])
  1731.  
  1732. dnl
  1733. dnl EGL Platforms configuration
  1734. dnl
  1735. AC_ARG_WITH([egl-platforms],
  1736.     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
  1737.         [comma delimited native platforms libEGL supports, e.g.
  1738.         "x11,drm" @<:@default=auto@:>@])],
  1739.     [with_egl_platforms="$withval"],
  1740.     [if test "x$enable_egl" = xyes; then
  1741.         with_egl_platforms="x11"
  1742.     else
  1743.         with_egl_platforms=""
  1744.     fi])
  1745.  
  1746. if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
  1747.     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
  1748. fi
  1749.  
  1750. PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
  1751.         WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
  1752.         WAYLAND_SCANNER='')
  1753. if test "x$WAYLAND_SCANNER" = x; then
  1754.     AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
  1755. fi
  1756.  
  1757. # Do per-EGL platform setups and checks
  1758. egl_platforms=`IFS=', '; echo $with_egl_platforms`
  1759. for plat in $egl_platforms; do
  1760.         case "$plat" in
  1761.         wayland)
  1762.                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
  1763.  
  1764.                 if test "x$WAYLAND_SCANNER" = x; then
  1765.                         AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
  1766.                 fi
  1767.                 ;;
  1768.  
  1769.         x11)
  1770.                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
  1771.                 ;;
  1772.  
  1773.         drm)
  1774.                 test "x$enable_gbm" = "xno" &&
  1775.                         AC_MSG_ERROR([EGL platform drm needs gbm])
  1776.                 test "x$have_libdrm" != xyes &&
  1777.                         AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
  1778.                 ;;
  1779.  
  1780.         android|gdi|null)
  1781.                 ;;
  1782.  
  1783.         *)
  1784.                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
  1785.                 ;;
  1786.         esac
  1787.  
  1788.         case "$plat$need_pci_id$have_pci_id" in
  1789.                 waylandyesno|drmyesno)
  1790.                     AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
  1791.         esac
  1792. done
  1793.  
  1794. # libEGL wants to default to the first platform specified in
  1795. # ./configure.  parse that here.
  1796. if test "x$egl_platforms" != "x"; then
  1797.     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
  1798.     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
  1799. else
  1800.     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
  1801. fi
  1802.  
  1803. if echo "$egl_platforms" | grep -q 'x11'; then
  1804.     NEED_WINSYS_XLIB=yes
  1805. fi
  1806. AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
  1807. AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
  1808. AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
  1809. AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep -q 'null')
  1810.  
  1811. AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
  1812.  
  1813. AC_SUBST([EGL_NATIVE_PLATFORM])
  1814. AC_SUBST([EGL_CFLAGS])
  1815.  
  1816. # If we don't have the X11 platform, set this define so we don't try to include
  1817. # the X11 headers.
  1818. if ! echo "$egl_platforms" | grep -q 'x11'; then
  1819.     DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
  1820.     GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
  1821. fi
  1822.  
  1823. dnl
  1824. dnl Gallium LLVM
  1825. dnl
  1826. AC_ARG_ENABLE([gallium-llvm],
  1827.     [AS_HELP_STRING([--enable-gallium-llvm],
  1828.         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
  1829.     [enable_gallium_llvm="$enableval"],
  1830.     [enable_gallium_llvm=auto])
  1831.  
  1832. AC_ARG_ENABLE([llvm-shared-libs],
  1833.     [AS_HELP_STRING([--enable-llvm-shared-libs],
  1834.         [link with LLVM shared libraries @<:@default=enabled@:>@])],
  1835.     [enable_llvm_shared_libs="$enableval"],
  1836.     [enable_llvm_shared_libs=yes])
  1837.  
  1838. AC_ARG_WITH([llvm-prefix],
  1839.     [AS_HELP_STRING([--with-llvm-prefix],
  1840.         [Prefix for LLVM installations in non-standard locations])],
  1841.     [llvm_prefix="$withval"],
  1842.     [llvm_prefix=''])
  1843.  
  1844.  
  1845. # Call this inside ` ` to get the return value.
  1846. # $1 is the llvm-config command with arguments.
  1847. strip_unwanted_llvm_flags() {
  1848.     # Use \> (marks the end of the word)
  1849.     echo `$1` | sed \
  1850.         -e 's/-DNDEBUG\>//g' \
  1851.         -e 's/-D_GNU_SOURCE\>//g' \
  1852.         -e 's/-pedantic\>//g' \
  1853.         -e 's/-Wcovered-switch-default\>//g' \
  1854.         -e 's/-O.\>//g' \
  1855.         -e 's/-g\>//g' \
  1856.         -e 's/-Wall\>//g' \
  1857.         -e 's/-Wcast-qual\>//g' \
  1858.         -e 's/-Woverloaded-virtual\>//g' \
  1859.         -e 's/-fcolor-diagnostics\>//g' \
  1860.         -e 's/-fdata-sections\>//g' \
  1861.         -e 's/-ffunction-sections\>//g' \
  1862.         -e 's/-fno-exceptions\>//g' \
  1863.         -e 's/-fomit-frame-pointer\>//g' \
  1864.         -e 's/-fvisibility-inlines-hidden\>//g' \
  1865.         -e 's/-fPIC\>//g' \
  1866.         -e 's/-fstack-protector-strong\>//g'
  1867. }
  1868.  
  1869. llvm_check_version_for() {
  1870.     if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then
  1871.         AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4])
  1872.     fi
  1873. }
  1874.  
  1875.  
  1876.  
  1877. if test -z "$with_gallium_drivers"; then
  1878.     enable_gallium_llvm=no
  1879. fi
  1880. if test "x$enable_gallium_llvm" = xauto; then
  1881.     case "$host_cpu" in
  1882.     i*86|x86_64|amd64) enable_gallium_llvm=yes;;
  1883.     esac
  1884. fi
  1885. if test "x$enable_gallium_llvm" = xyes; then
  1886.     if test -n "$llvm_prefix"; then
  1887.         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
  1888.     else
  1889.         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
  1890.     fi
  1891.  
  1892.     if test "x$LLVM_CONFIG" != xno; then
  1893.         LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
  1894.         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
  1895.         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
  1896.         LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
  1897.         LLVM_CFLAGS=$LLVM_CPPFLAGS   # CPPFLAGS seem to be sufficient
  1898.         LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
  1899.         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
  1900.         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
  1901.  
  1902.         AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
  1903.             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
  1904.         AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
  1905.             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
  1906.  
  1907.         LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
  1908.         if test -z "$LLVM_VERSION_PATCH"; then
  1909.             LLVM_VERSION_PATCH=0
  1910.         fi
  1911.  
  1912.         if test -n "${LLVM_VERSION_MAJOR}"; then
  1913.             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
  1914.         else
  1915.             LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
  1916.         fi
  1917.  
  1918.         LLVM_REQUIRED_VERSION_MAJOR="3"
  1919.         LLVM_REQUIRED_VERSION_MINOR="3"
  1920.         if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
  1921.             AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
  1922.         fi
  1923.  
  1924.         LLVM_COMPONENTS="engine bitwriter"
  1925.         if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
  1926.             LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
  1927.         fi
  1928.  
  1929.         if test "x$enable_opencl" = xyes; then
  1930.             llvm_check_version_for "3" "5" "0" "opencl"
  1931.  
  1932.             LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
  1933.             LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
  1934.         fi
  1935.         DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
  1936.         MESA_LLVM=1
  1937.  
  1938.         dnl Check for Clang internal headers
  1939.         if test "x$enable_opencl" = xyes; then
  1940.             if test -z "$CLANG_LIBDIR"; then
  1941.                 CLANG_LIBDIR=${LLVM_LIBDIR}
  1942.             fi
  1943.             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
  1944.             AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
  1945.                 [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])])
  1946.         fi
  1947.     else
  1948.         MESA_LLVM=0
  1949.         LLVM_VERSION_INT=0
  1950.     fi
  1951. else
  1952.     MESA_LLVM=0
  1953.     LLVM_VERSION_INT=0
  1954.  
  1955.     if test "x$enable_opencl" = xyes; then
  1956.         AC_MSG_ERROR([cannot enable OpenCL without LLVM])
  1957.     fi
  1958. fi
  1959.  
  1960. dnl Directory for XVMC libs
  1961. AC_ARG_WITH([xvmc-libdir],
  1962.     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
  1963.         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
  1964.     [XVMC_LIB_INSTALL_DIR="$withval"],
  1965.     [XVMC_LIB_INSTALL_DIR='${libdir}'])
  1966. AC_SUBST([XVMC_LIB_INSTALL_DIR])
  1967.  
  1968. dnl
  1969. dnl Gallium Tests
  1970. dnl
  1971. if test "x$enable_gallium_tests" = xyes; then
  1972.     # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
  1973.     enable_gallium_loader=yes
  1974. fi
  1975. AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
  1976.  
  1977. dnl Directory for VDPAU libs
  1978. AC_ARG_WITH([vdpau-libdir],
  1979.     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
  1980.         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
  1981.     [VDPAU_LIB_INSTALL_DIR="$withval"],
  1982.     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
  1983. AC_SUBST([VDPAU_LIB_INSTALL_DIR])
  1984.  
  1985. dnl Directory for OMX libs
  1986.  
  1987. AC_ARG_WITH([omx-libdir],
  1988.     [AS_HELP_STRING([--with-omx-libdir=DIR],
  1989.         [directory for the OMX libraries])],
  1990.     [OMX_LIB_INSTALL_DIR="$withval"],
  1991.     [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
  1992. AC_SUBST([OMX_LIB_INSTALL_DIR])
  1993.  
  1994. dnl Directory for VA libs
  1995.  
  1996. AC_ARG_WITH([va-libdir],
  1997.     [AS_HELP_STRING([--with-va-libdir=DIR],
  1998.         [directory for the VA libraries @<:@${libdir}/dri@:>@])],
  1999.     [VA_LIB_INSTALL_DIR="$withval"],
  2000.     [VA_LIB_INSTALL_DIR="${libdir}/dri"])
  2001. AC_SUBST([VA_LIB_INSTALL_DIR])
  2002.  
  2003. AC_ARG_WITH([d3d-libdir],
  2004.     [AS_HELP_STRING([--with-d3d-libdir=DIR],
  2005.         [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
  2006.     [D3D_DRIVER_INSTALL_DIR="$withval"],
  2007.     [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
  2008. AC_SUBST([D3D_DRIVER_INSTALL_DIR])
  2009.  
  2010. dnl
  2011. dnl Gallium helper functions
  2012. dnl
  2013. gallium_require_drm() {
  2014.     if test "x$have_libdrm" != xyes; then
  2015.        AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
  2016.     fi
  2017. }
  2018.  
  2019. gallium_require_llvm() {
  2020.     if test "x$MESA_LLVM" = x0; then
  2021.         case "$host" in *gnux32) return;; esac
  2022.         case "$host_cpu" in
  2023.         i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
  2024.         esac
  2025.     fi
  2026. }
  2027.  
  2028. gallium_require_drm_loader() {
  2029.     if test "x$enable_gallium_loader" = xyes; then
  2030.         if test "x$need_pci_id$have_pci_id" = xyesno; then
  2031.             AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
  2032.         fi
  2033.         enable_gallium_drm_loader=yes
  2034.     fi
  2035.     if test "x$enable_va" = xyes && test "x$7" != x; then
  2036.          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
  2037.     fi
  2038. }
  2039.  
  2040. require_egl_drm() {
  2041.     case "$with_egl_platforms" in
  2042.         *drm*)
  2043.             ;;
  2044.          *)
  2045.             AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
  2046.             ;;
  2047.     esac
  2048.     if test "x$enable_gbm" != xyes; then
  2049.             AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
  2050.     fi
  2051. }
  2052.  
  2053. radeon_llvm_check() {
  2054.     if test "x$enable_gallium_llvm" != "xyes"; then
  2055.         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
  2056.     fi
  2057.     llvm_check_version_for "3" "4" "2" $1
  2058.     if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
  2059.         AC_MSG_ERROR([LLVM R600 Target not enabled.  You can enable it when building the LLVM
  2060.                       sources with the --enable-experimental-targets=R600
  2061.                       configure flag])
  2062.     fi
  2063.     LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
  2064.     NEED_RADEON_LLVM=yes
  2065.     if test "x$have_libelf" != xyes; then
  2066.        AC_MSG_ERROR([$1 requires libelf when using llvm])
  2067.     fi
  2068. }
  2069.  
  2070. dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
  2071. if test -n "$with_gallium_drivers"; then
  2072.     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
  2073.     for driver in $gallium_drivers; do
  2074.         case "x$driver" in
  2075.         xsvga)
  2076.             HAVE_GALLIUM_SVGA=yes
  2077.             gallium_require_drm "svga"
  2078.             gallium_require_drm_loader
  2079.             ;;
  2080.         xi915)
  2081.             HAVE_GALLIUM_I915=yes
  2082.             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
  2083.             gallium_require_drm "Gallium i915"
  2084.             gallium_require_drm_loader
  2085.             ;;
  2086.         xilo)
  2087.             HAVE_GALLIUM_ILO=yes
  2088.             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
  2089.             gallium_require_drm "Gallium i965/ilo"
  2090.             gallium_require_drm_loader
  2091.             ;;
  2092.         xr300)
  2093.             HAVE_GALLIUM_R300=yes
  2094.             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
  2095.             gallium_require_drm "Gallium R300"
  2096.             gallium_require_drm_loader
  2097.             gallium_require_llvm "Gallium R300"
  2098.             ;;
  2099.         xr600)
  2100.             HAVE_GALLIUM_R600=yes
  2101.             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
  2102.             gallium_require_drm "Gallium R600"
  2103.             gallium_require_drm_loader
  2104.             if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
  2105.                 radeon_llvm_check "r600g"
  2106.                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
  2107.             fi
  2108.             if test "x$enable_r600_llvm" = xyes; then
  2109.                 USE_R600_LLVM_COMPILER=yes;
  2110.             fi
  2111.             if test "x$enable_opencl" = xyes; then
  2112.                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
  2113.             fi
  2114.             ;;
  2115.         xradeonsi)
  2116.             HAVE_GALLIUM_RADEONSI=yes
  2117.             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
  2118.             gallium_require_drm "radeonsi"
  2119.             gallium_require_drm_loader
  2120.             radeon_llvm_check "radeonsi"
  2121.             require_egl_drm "radeonsi"
  2122.             ;;
  2123.         xnouveau)
  2124.             HAVE_GALLIUM_NOUVEAU=yes
  2125.             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
  2126.             gallium_require_drm "nouveau"
  2127.             gallium_require_drm_loader
  2128.             ;;
  2129.         xfreedreno)
  2130.             HAVE_GALLIUM_FREEDRENO=yes
  2131.             PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
  2132.             gallium_require_drm "freedreno"
  2133.             gallium_require_drm_loader
  2134.             ;;
  2135.         xswrast)
  2136.             HAVE_GALLIUM_SOFTPIPE=yes
  2137.             if test "x$MESA_LLVM" = x1; then
  2138.                 HAVE_GALLIUM_LLVMPIPE=yes
  2139.             fi
  2140.             ;;
  2141.         xvc4)
  2142.             HAVE_GALLIUM_VC4=yes
  2143.             gallium_require_drm "vc4"
  2144.             gallium_require_drm_loader
  2145.  
  2146.             case "$host_cpu" in
  2147.                 i?86 | x86_64 | amd64)
  2148.                 USE_VC4_SIMULATOR=yes
  2149.                 ;;
  2150.             esac
  2151.             ;;
  2152.         *)
  2153.             AC_MSG_ERROR([Unknown Gallium driver: $driver])
  2154.             ;;
  2155.         esac
  2156.     done
  2157. fi
  2158.  
  2159. dnl Set LLVM_LIBS - This is done after the driver configuration so
  2160. dnl that drivers can add additional components to LLVM_COMPONENTS.
  2161. dnl Previously, gallium drivers were updating LLVM_LIBS directly
  2162. dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
  2163. dnl this was causing the same libraries to be appear multiple times
  2164. dnl in LLVM_LIBS.
  2165.  
  2166. if test "x$MESA_LLVM" != x0; then
  2167.  
  2168.     LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
  2169.  
  2170.     if test "x$enable_llvm_shared_libs" = xyes; then
  2171.         dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
  2172.         LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
  2173.         AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
  2174.  
  2175.         if test "x$llvm_have_one_so" = xyes; then
  2176.             dnl LLVM was built using auto*, so there is only one shared object.
  2177.             LLVM_LIBS="-l$LLVM_SO_NAME"
  2178.         else
  2179.             dnl If LLVM was built with CMake, there will be one shared object per
  2180.             dnl component.
  2181.             AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
  2182.                     [AC_MSG_ERROR([Could not find llvm shared libraries:
  2183.         Please make sure you have built llvm with the --enable-shared option
  2184.         and that your llvm libraries are installed in $LLVM_LIBDIR
  2185.         If you have installed your llvm libraries to a different directory you
  2186.         can use the --with-llvm-prefix= configure flag to specify this directory.
  2187.         NOTE: Mesa is attempting to use llvm shared libraries by default.
  2188.         If you do not want to build with llvm shared libraries and instead want to
  2189.         use llvm static libraries then add --disable-llvm-shared-libs to your configure
  2190.         invocation and rebuild.])])
  2191.  
  2192.            dnl We don't need to update LLVM_LIBS in this case because the LLVM
  2193.            dnl install uses a shared object for each component and we have
  2194.            dnl already added all of these objects to LLVM_LIBS.
  2195.         fi
  2196.     else
  2197.         AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
  2198.         dnl We need to link to llvm system libs when using static libs
  2199.         dnl However, only llvm 3.5+ provides --system-libs
  2200.         if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
  2201.             LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
  2202.         fi
  2203.     fi
  2204. fi
  2205.  
  2206. AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
  2207. AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
  2208. AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
  2209. AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
  2210. AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
  2211. AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
  2212. AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
  2213.                                                 "x$HAVE_GALLIUM_RADEONSI" = xyes)
  2214. AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
  2215. AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
  2216. AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
  2217. AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
  2218. AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
  2219.  
  2220. AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
  2221.  
  2222. # NOTE: anything using xcb or other client side libs ends up in separate
  2223. #       _CLIENT variables.  The pipe loader is built in two variants,
  2224. #       one that is standalone and does not link any x client libs (for
  2225. #       use by XA tracker in particular, but could be used in any case
  2226. #       where communication with xserver is not desired).
  2227. if test "x$enable_gallium_loader" = xyes; then
  2228.     if test "x$NEED_WINSYS_XLIB" = xyes; then
  2229.         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
  2230.     fi
  2231.  
  2232.     if test "x$enable_dri" = xyes; then
  2233.         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
  2234.     fi
  2235.  
  2236.     if test "x$enable_gallium_drm_loader" = xyes; then
  2237.         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
  2238.         PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
  2239.                           pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
  2240.         if test "x$pipe_loader_have_xcb" = xyes; then
  2241.             GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
  2242.             GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
  2243.         fi
  2244.     fi
  2245.  
  2246.     GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
  2247.     GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
  2248.  
  2249.     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
  2250.     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
  2251.     AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
  2252.     AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
  2253. fi
  2254.  
  2255. AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
  2256. AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
  2257. AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
  2258. AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
  2259. AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
  2260. AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
  2261.  
  2262. AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
  2263.                                             "x$HAVE_GALLIUM_R600" = xyes -o \
  2264.                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
  2265. AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
  2266. AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
  2267. AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
  2268. AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
  2269. AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
  2270. AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
  2271. AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
  2272. AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
  2273. if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
  2274.     AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
  2275. fi
  2276.  
  2277. AC_SUBST([ELF_LIB])
  2278.  
  2279. AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
  2280. AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
  2281. AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
  2282. AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
  2283. AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
  2284.  
  2285. AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
  2286. AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
  2287. AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
  2288.  
  2289. AC_SUBST([NINE_MAJOR], 1)
  2290. AC_SUBST([NINE_MINOR], 0)
  2291. AC_SUBST([NINE_TINY], 0)
  2292. AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
  2293.  
  2294. AC_SUBST([VDPAU_MAJOR], 1)
  2295. AC_SUBST([VDPAU_MINOR], 0)
  2296.  
  2297. VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
  2298. VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
  2299. AC_SUBST([VA_MAJOR], $VA_MAJOR)
  2300. AC_SUBST([VA_MINOR], $VA_MINOR)
  2301.  
  2302. AC_SUBST([XVMC_MAJOR], 1)
  2303. AC_SUBST([XVMC_MINOR], 0)
  2304.  
  2305. XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
  2306. XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
  2307. XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
  2308. XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
  2309.  
  2310. AC_SUBST([XA_MAJOR], $XA_MAJOR)
  2311. AC_SUBST([XA_MINOR], $XA_MINOR)
  2312. AC_SUBST([XA_TINY], $XA_TINY)
  2313. AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
  2314.  
  2315. dnl Restore LDFLAGS and CPPFLAGS
  2316. LDFLAGS="$_SAVE_LDFLAGS"
  2317. CPPFLAGS="$_SAVE_CPPFLAGS"
  2318.  
  2319. dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
  2320. if test "x$acv_mesa_CLANG" = xyes; then
  2321.     CFLAGS="$CFLAGS -Qunused-arguments"
  2322.     CXXFLAGS="$CXXFLAGS -Qunused-arguments"
  2323. fi
  2324.  
  2325. dnl Add user CFLAGS and CXXFLAGS
  2326. CFLAGS="$CFLAGS $USER_CFLAGS"
  2327. CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
  2328.  
  2329. dnl Substitute the config
  2330. AC_CONFIG_FILES([Makefile
  2331.                 src/Makefile
  2332.                 src/egl/drivers/dri2/Makefile
  2333.                 src/egl/main/Makefile
  2334.                 src/egl/main/egl.pc
  2335.                 src/egl/wayland/wayland-drm/Makefile
  2336.                 src/egl/wayland/wayland-egl/Makefile
  2337.                 src/egl/wayland/wayland-egl/wayland-egl.pc
  2338.                 src/gallium/Makefile
  2339.                 src/gallium/auxiliary/Makefile
  2340.                 src/gallium/auxiliary/pipe-loader/Makefile
  2341.                 src/gallium/drivers/freedreno/Makefile
  2342.                 src/gallium/drivers/i915/Makefile
  2343.                 src/gallium/drivers/ilo/Makefile
  2344.                 src/gallium/drivers/llvmpipe/Makefile
  2345.                 src/gallium/drivers/noop/Makefile
  2346.                 src/gallium/drivers/nouveau/Makefile
  2347.                 src/gallium/drivers/r300/Makefile
  2348.                 src/gallium/drivers/r600/Makefile
  2349.                 src/gallium/drivers/radeon/Makefile
  2350.                 src/gallium/drivers/radeonsi/Makefile
  2351.                 src/gallium/drivers/rbug/Makefile
  2352.                 src/gallium/drivers/softpipe/Makefile
  2353.                 src/gallium/drivers/svga/Makefile
  2354.                 src/gallium/drivers/trace/Makefile
  2355.                 src/gallium/drivers/vc4/Makefile
  2356.                 src/gallium/drivers/vc4/kernel/Makefile
  2357.                 src/gallium/state_trackers/clover/Makefile
  2358.                 src/gallium/state_trackers/dri/Makefile
  2359.                 src/gallium/state_trackers/glx/xlib/Makefile
  2360.                 src/gallium/state_trackers/nine/Makefile
  2361.                 src/gallium/state_trackers/omx/Makefile
  2362.                 src/gallium/state_trackers/osmesa/Makefile
  2363.                 src/gallium/state_trackers/va/Makefile
  2364.                 src/gallium/state_trackers/vdpau/Makefile
  2365.                 src/gallium/state_trackers/xa/Makefile
  2366.                 src/gallium/state_trackers/xvmc/Makefile
  2367.                 src/gallium/targets/d3dadapter9/Makefile
  2368.                 src/gallium/targets/d3dadapter9/d3d.pc
  2369.                 src/gallium/targets/dri/Makefile
  2370.                 src/gallium/targets/libgl-xlib/Makefile
  2371.                 src/gallium/targets/omx/Makefile
  2372.                 src/gallium/targets/opencl/Makefile
  2373.                 src/gallium/targets/osmesa/Makefile
  2374.                 src/gallium/targets/osmesa/osmesa.pc
  2375.                 src/gallium/targets/pipe-loader/Makefile
  2376.                 src/gallium/targets/va/Makefile
  2377.                 src/gallium/targets/vdpau/Makefile
  2378.                 src/gallium/targets/xa/Makefile
  2379.                 src/gallium/targets/xa/xatracker.pc
  2380.                 src/gallium/targets/xvmc/Makefile
  2381.                 src/gallium/tests/trivial/Makefile
  2382.                 src/gallium/tests/unit/Makefile
  2383.                 src/gallium/winsys/freedreno/drm/Makefile
  2384.                 src/gallium/winsys/i915/drm/Makefile
  2385.                 src/gallium/winsys/intel/drm/Makefile
  2386.                 src/gallium/winsys/nouveau/drm/Makefile
  2387.                 src/gallium/winsys/radeon/drm/Makefile
  2388.                 src/gallium/winsys/svga/drm/Makefile
  2389.                 src/gallium/winsys/sw/dri/Makefile
  2390.                 src/gallium/winsys/sw/kms-dri/Makefile
  2391.                 src/gallium/winsys/sw/null/Makefile
  2392.                 src/gallium/winsys/sw/wrapper/Makefile
  2393.                 src/gallium/winsys/sw/xlib/Makefile
  2394.                 src/gallium/winsys/vc4/drm/Makefile
  2395.                 src/gbm/Makefile
  2396.                 src/gbm/main/gbm.pc
  2397.                 src/glsl/Makefile
  2398.                 src/glx/Makefile
  2399.                 src/glx/apple/Makefile
  2400.                 src/glx/tests/Makefile
  2401.                 src/gtest/Makefile
  2402.                 src/loader/Makefile
  2403.                 src/mapi/Makefile
  2404.                 src/mapi/es1api/glesv1_cm.pc
  2405.                 src/mapi/es2api/glesv2.pc
  2406.                 src/mapi/glapi/gen/Makefile
  2407.                 src/mesa/Makefile
  2408.                 src/mesa/gl.pc
  2409.                 src/mesa/drivers/dri/dri.pc
  2410.                 src/mesa/drivers/dri/common/Makefile
  2411.                 src/mesa/drivers/dri/common/xmlpool/Makefile
  2412.                 src/mesa/drivers/dri/i915/Makefile
  2413.                 src/mesa/drivers/dri/i965/Makefile
  2414.                 src/mesa/drivers/dri/Makefile
  2415.                 src/mesa/drivers/dri/nouveau/Makefile
  2416.                 src/mesa/drivers/dri/r200/Makefile
  2417.                 src/mesa/drivers/dri/radeon/Makefile
  2418.                 src/mesa/drivers/dri/swrast/Makefile
  2419.                 src/mesa/drivers/osmesa/Makefile
  2420.                 src/mesa/drivers/osmesa/osmesa.pc
  2421.                 src/mesa/drivers/x11/Makefile
  2422.                 src/mesa/main/tests/Makefile
  2423.                 src/util/Makefile
  2424.                 src/util/tests/hash_table/Makefile])
  2425.  
  2426. AC_OUTPUT
  2427.  
  2428. dnl
  2429. dnl Output some configuration info for the user
  2430. dnl
  2431. echo ""
  2432. echo "        prefix:          $prefix"
  2433. echo "        exec_prefix:     $exec_prefix"
  2434. echo "        libdir:          $libdir"
  2435. echo "        includedir:      $includedir"
  2436.  
  2437. dnl API info
  2438. echo ""
  2439. echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
  2440.  
  2441. dnl Driver info
  2442. echo ""
  2443. case "x$enable_osmesa$enable_gallium_osmesa" in
  2444. xnoyes)
  2445.         echo "        OSMesa:          lib$OSMESA_LIB (Gallium)"
  2446.         ;;
  2447. xyesno)
  2448.         echo "        OSMesa:          lib$OSMESA_LIB"
  2449.         ;;
  2450. xnono)
  2451.         echo "        OSMesa:          no"
  2452.         ;;
  2453. esac
  2454.  
  2455. echo ""
  2456. if test "x$enable_dri" != xno; then
  2457.         echo "        DRI platform:    $dri_platform"
  2458.         if test -z "$DRI_DIRS"; then
  2459.             echo "        DRI drivers:     no"
  2460.         else
  2461.             echo "        DRI drivers:     $DRI_DIRS"
  2462.         fi
  2463.         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
  2464. fi
  2465.  
  2466. case "x$enable_glx$enable_xlib_glx" in
  2467. xyesyes)
  2468.     echo "        GLX:             Xlib-based"
  2469.     ;;
  2470. xyesno)
  2471.     echo "        GLX:             DRI-based"
  2472.     ;;
  2473. *)
  2474.     echo "        GLX:             $enable_glx"
  2475.     ;;
  2476. esac
  2477.  
  2478. dnl EGL
  2479. echo ""
  2480. echo "        EGL:             $enable_egl"
  2481. if test "$enable_egl" = yes; then
  2482.     echo "        EGL platforms:   $egl_platforms"
  2483.  
  2484.     egl_drivers=""
  2485.     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
  2486.         egl_drivers="$egl_drivers builtin:egl_dri2"
  2487.     fi
  2488.  
  2489.     echo "        EGL drivers:    $egl_drivers"
  2490. fi
  2491.  
  2492. echo ""
  2493. if test "x$MESA_LLVM" = x1; then
  2494.     echo "        llvm:            yes"
  2495.     echo "        llvm-config:     $LLVM_CONFIG"
  2496.     echo "        llvm-version:    $LLVM_VERSION"
  2497. else
  2498.     echo "        llvm:            no"
  2499. fi
  2500.  
  2501. echo ""
  2502. if test -n "$with_gallium_drivers"; then
  2503.     echo "        Gallium:         yes"
  2504. else
  2505.     echo "        Gallium:         no"
  2506. fi
  2507.  
  2508. dnl Shader cache
  2509. echo ""
  2510. echo "        Shader cache:    $enable_shader_cache"
  2511. if test "x$enable_shader_cache" = "xyes"; then
  2512.     echo "        With SHA1 from:  $with_sha1"
  2513. fi
  2514.  
  2515. dnl Libraries
  2516. echo ""
  2517. echo "        Shared libs:     $enable_shared"
  2518. echo "        Static libs:     $enable_static"
  2519. echo "        Shared-glapi:    $enable_shared_glapi"
  2520.  
  2521. dnl Compiler options
  2522. # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
  2523. cflags=`echo $CFLAGS | \
  2524.     $SED 's/^ *//;s/  */ /;s/ *$//'`
  2525. cxxflags=`echo $CXXFLAGS | \
  2526.     $SED 's/^ *//;s/  */ /;s/ *$//'`
  2527. defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
  2528. echo ""
  2529. echo "        CFLAGS:          $cflags"
  2530. echo "        CXXFLAGS:        $cxxflags"
  2531. echo "        Macros:          $defines"
  2532. echo ""
  2533. if test "x$MESA_LLVM" = x1; then
  2534.     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
  2535.     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
  2536.     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
  2537.     echo "        LLVM_LDFLAGS:    $LLVM_LDFLAGS"
  2538.     echo ""
  2539. fi
  2540. echo "        PYTHON2:         $PYTHON2"
  2541.  
  2542. echo ""
  2543. echo "        Run '${MAKE-make}' to build Mesa"
  2544. echo ""
  2545.