Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 1 | # Copyright 2005 Adam Jackson. |
| 2 | # |
| 3 | # Permission is hereby granted, free of charge, to any person obtaining a |
| 4 | # copy of this software and associated documentation files (the "Software"), |
| 5 | # to deal in the Software without restriction, including without limitation |
| 6 | # on the rights to use, copy, modify, merge, publish, distribute, sub |
| 7 | # license, and/or sell copies of the Software, and to permit persons to whom |
| 8 | # the Software is furnished to do so, subject to the following conditions: |
| 9 | # |
| 10 | # The above copyright notice and this permission notice (including the next |
| 11 | # paragraph) shall be included in all copies or substantial portions of the |
| 12 | # Software. |
| 13 | # |
| 14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 16 | # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
| 17 | # ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
| 18 | # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| 19 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 20 | |
Ian Romanick | a953b32 | 2009-07-06 13:23:46 -0700 | [diff] [blame] | 21 | AC_PREREQ(2.60) |
Eric Anholt | a107e5b | 2009-10-08 16:59:17 -0700 | [diff] [blame] | 22 | AC_INIT([libdrm], 2.4.15, [dri-devel@lists.sourceforge.net], libdrm) |
Dave Airlie | 80179df | 2009-07-10 02:38:13 +1000 | [diff] [blame] | 23 | AC_USE_SYSTEM_EXTENSIONS |
Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 24 | AC_CONFIG_SRCDIR([Makefile.am]) |
| 25 | AM_INIT_AUTOMAKE([dist-bzip2]) |
| 26 | |
Kristian Høgsberg | 4f57abf | 2009-11-17 11:14:54 -0500 | [diff] [blame^] | 27 | AM_CONFIG_HEADER([config.h]) |
Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 28 | |
Adam Jackson | 56b0733 | 2006-06-27 21:04:50 +0000 | [diff] [blame] | 29 | AC_DISABLE_STATIC |
Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 30 | AC_PROG_LIBTOOL |
| 31 | AC_PROG_CC |
| 32 | |
| 33 | AC_HEADER_STDC |
Thomas Hellstrom | eacedf4 | 2006-10-02 15:06:35 +0200 | [diff] [blame] | 34 | AC_SYS_LARGEFILE |
Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 35 | |
Eric Anholt | 6df7b07 | 2008-06-12 23:22:26 -0700 | [diff] [blame] | 36 | PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs) |
| 37 | AC_SUBST(PTHREADSTUBS_CFLAGS) |
| 38 | AC_SUBST(PTHREADSTUBS_LIBS) |
| 39 | |
Adam Jackson | 5a5478d | 2005-07-13 00:13:12 +0000 | [diff] [blame] | 40 | pkgconfigdir=${libdir}/pkgconfig |
Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 41 | AC_SUBST(pkgconfigdir) |
Dave Airlie | 9101a02 | 2008-08-24 16:54:43 +1000 | [diff] [blame] | 42 | AC_ARG_ENABLE(udev, AS_HELP_STRING([--enable-udev], |
| 43 | [Enable support for using udev instead of mknod (default: disabled)]), |
| 44 | [UDEV=$enableval], [UDEV=no]) |
Adam Jackson | 07d23f9 | 2005-07-10 22:42:42 +0000 | [diff] [blame] | 45 | |
Chris Wilson | ab3300c | 2009-10-03 22:56:04 +0100 | [diff] [blame] | 46 | AC_ARG_ENABLE(intel, |
| 47 | AS_HELP_STRING([--disable-intel], |
Chris Wilson | fc8f6be | 2009-10-12 23:58:47 +0100 | [diff] [blame] | 48 | [Enable support for intel's KMS API (default: auto)]), |
| 49 | [INTEL=$enableval], [INTEL=auto]) |
Chris Wilson | ab3300c | 2009-10-03 22:56:04 +0100 | [diff] [blame] | 50 | |
Ben Skeggs | 7e5c512 | 2009-02-11 14:18:03 +1000 | [diff] [blame] | 51 | AC_ARG_ENABLE(nouveau-experimental-api, |
| 52 | AS_HELP_STRING([--enable-nouveau-experimental-api], |
| 53 | [Enable support for nouveau's experimental API (default: disabled)]), |
| 54 | [NOUVEAU=$enableval], [NOUVEAU=no]) |
Eric Anholt | c485742 | 2008-06-03 10:20:49 -0700 | [diff] [blame] | 55 | |
Dave Airlie | 2fa2db1 | 2009-06-17 17:47:42 +1000 | [diff] [blame] | 56 | AC_ARG_ENABLE(radeon-experimental-api, |
| 57 | AS_HELP_STRING([--enable-radeon-experimental-api], |
| 58 | [Enable support for radeon's KMS API (default: disabled)]), |
| 59 | [RADEON=$enableval], [RADEON=no]) |
| 60 | |
Eric Anholt | c485742 | 2008-06-03 10:20:49 -0700 | [diff] [blame] | 61 | dnl =========================================================================== |
| 62 | dnl check compiler flags |
| 63 | AC_DEFUN([LIBDRM_CC_TRY_FLAG], [ |
| 64 | AC_MSG_CHECKING([whether $CC supports $1]) |
| 65 | |
| 66 | libdrm_save_CFLAGS="$CFLAGS" |
| 67 | CFLAGS="$CFLAGS $1" |
| 68 | |
| 69 | AC_COMPILE_IFELSE([ ], [libdrm_cc_flag=yes], [libdrm_cc_flag=no]) |
| 70 | CFLAGS="$libdrm_save_CFLAGS" |
| 71 | |
| 72 | if test "x$libdrm_cc_flag" = "xyes"; then |
| 73 | ifelse([$2], , :, [$2]) |
| 74 | else |
| 75 | ifelse([$3], , :, [$3]) |
| 76 | fi |
| 77 | AC_MSG_RESULT([$libdrm_cc_flag]) |
| 78 | ]) |
| 79 | |
Jesse Barnes | badc634 | 2009-01-07 11:47:52 -0800 | [diff] [blame] | 80 | dnl We use clock_gettime to check for timeouts in drmWaitVBlank |
| 81 | |
| 82 | AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=], |
| 83 | [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt], |
| 84 | [AC_MSG_ERROR([Couldn't find clock_gettime])])]) |
| 85 | AC_SUBST([CLOCK_LIB]) |
| 86 | |
Eric Anholt | c485742 | 2008-06-03 10:20:49 -0700 | [diff] [blame] | 87 | dnl Use lots of warning flags with with gcc and compatible compilers |
| 88 | |
| 89 | dnl Note: if you change the following variable, the cache is automatically |
| 90 | dnl skipped and all flags rechecked. So there's no need to do anything |
| 91 | dnl else. If for any reason you need to force a recheck, just change |
| 92 | dnl MAYBE_WARN in an ignorable way (like adding whitespace) |
| 93 | |
| 94 | MAYBE_WARN="-Wall -Wextra \ |
| 95 | -Wsign-compare -Werror-implicit-function-declaration \ |
| 96 | -Wpointer-arith -Wwrite-strings -Wstrict-prototypes \ |
| 97 | -Wmissing-prototypes -Wmissing-declarations -Wnested-externs \ |
| 98 | -Wpacked -Wswitch-enum -Wmissing-format-attribute \ |
| 99 | -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ |
| 100 | -Wdeclaration-after-statement -Wold-style-definition \ |
| 101 | -Wno-missing-field-initializers -Wno-unused-parameter \ |
| 102 | -Wno-attributes -Wno-long-long -Winline" |
| 103 | |
| 104 | # invalidate cached value if MAYBE_WARN has changed |
| 105 | if test "x$libdrm_cv_warn_maybe" != "x$MAYBE_WARN"; then |
| 106 | unset libdrm_cv_warn_cflags |
| 107 | fi |
| 108 | AC_CACHE_CHECK([for supported warning flags], libdrm_cv_warn_cflags, [ |
| 109 | echo |
| 110 | WARN_CFLAGS="" |
| 111 | |
| 112 | # Some warning options are not supported by all versions of |
| 113 | # gcc, so test all desired options against the current |
| 114 | # compiler. |
| 115 | # |
| 116 | # Note that there are some order dependencies |
| 117 | # here. Specifically, an option that disables a warning will |
| 118 | # have no net effect if a later option then enables that |
| 119 | # warnings, (perhaps implicitly). So we put some grouped |
| 120 | # options (-Wall and -Wextra) up front and the -Wno options |
| 121 | # last. |
| 122 | |
| 123 | for W in $MAYBE_WARN; do |
| 124 | LIBDRM_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"]) |
| 125 | done |
| 126 | |
| 127 | libdrm_cv_warn_cflags=$WARN_CFLAGS |
| 128 | libdrm_cv_warn_maybe=$MAYBE_WARN |
| 129 | |
| 130 | AC_MSG_CHECKING([which warning flags were supported])]) |
| 131 | WARN_CFLAGS="$libdrm_cv_warn_cflags" |
| 132 | |
Dave Airlie | 9101a02 | 2008-08-24 16:54:43 +1000 | [diff] [blame] | 133 | if test "x$UDEV" = xyes; then |
| 134 | AC_DEFINE(UDEV, 1, [Have UDEV support]) |
| 135 | fi |
| 136 | |
Pekka Paalanen | 4a0d19e | 2009-02-22 12:40:47 +0200 | [diff] [blame] | 137 | AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes]) |
Ben Skeggs | 7e5c512 | 2009-02-11 14:18:03 +1000 | [diff] [blame] | 138 | |
Dave Airlie | 2fa2db1 | 2009-06-17 17:47:42 +1000 | [diff] [blame] | 139 | AM_CONDITIONAL(HAVE_RADEON, [test "x$RADEON" = xyes]) |
| 140 | |
Kristian Høgsberg | 7a389aa | 2009-02-03 15:03:41 -0500 | [diff] [blame] | 141 | PKG_CHECK_MODULES(CAIRO, cairo, [HAVE_CAIRO=yes], [HAVE_CAIRO=no]) |
| 142 | if test "x$HAVE_CAIRO" = xyes; then |
| 143 | AC_DEFINE(HAVE_CAIRO, 1, [Have cairo support]) |
| 144 | fi |
| 145 | AM_CONDITIONAL(HAVE_CAIRO, [test "x$HAVE_CAIRO" = xyes]) |
| 146 | |
Kristian Høgsberg | e9d6116 | 2009-04-06 17:13:01 -0400 | [diff] [blame] | 147 | # For enumerating devices in test case |
| 148 | PKG_CHECK_MODULES(LIBUDEV, libudev, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no]) |
| 149 | if test "x$HAVE_LIBUDEV" = xyes; then |
| 150 | AC_DEFINE(HAVE_LIBUDEV, 1, [Have libudev support]) |
| 151 | fi |
| 152 | AM_CONDITIONAL(HAVE_LIBUDEV, [test "x$HAVE_LIBUDEV" = xyes]) |
| 153 | |
Chris Wilson | fc8f6be | 2009-10-12 23:58:47 +0100 | [diff] [blame] | 154 | if test "x$INTEL" != "xno"; then |
Chris Wilson | ab3300c | 2009-10-03 22:56:04 +0100 | [diff] [blame] | 155 | # Check for atomic intrinsics |
| 156 | AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives, |
| 157 | [ |
| 158 | drm_cv_atomic_primitives="none" |
| 159 | |
| 160 | AC_TRY_LINK([ |
| 161 | int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); } |
| 162 | int atomic_cmpxchg(int i, int j, int k) { return __sync_val_compare_and_swap (&i, j, k); } |
| 163 | ], [], |
| 164 | drm_cv_atomic_primitives="Intel" |
| 165 | ) |
Chris Wilson | 901bacd | 2009-10-13 15:13:00 +0100 | [diff] [blame] | 166 | |
| 167 | if test "x$drm_cv_atomic_primitives" = "xnone"; then |
| 168 | AC_CHECK_HEADER([atomic_ops.h], drm_cv_atomic_primitives="libatomic-ops") |
| 169 | fi |
| 170 | |
Chris Wilson | ab3300c | 2009-10-03 22:56:04 +0100 | [diff] [blame] | 171 | ]) |
| 172 | if test "x$drm_cv_atomic_primitives" = xIntel; then |
| 173 | AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, |
| 174 | [Enable if your compiler supports the Intel __sync_* atomic primitives]) |
| 175 | fi |
Chris Wilson | 901bacd | 2009-10-13 15:13:00 +0100 | [diff] [blame] | 176 | if test "x$drm_cv_atomic_primitives" = "xlibatomic-ops"; then |
| 177 | AC_DEFINE(HAVE_LIB_ATOMIC_OPS, 1, [Enable if you have libatomic-ops-dev installed]) |
| 178 | fi |
Chris Wilson | fc8f6be | 2009-10-12 23:58:47 +0100 | [diff] [blame] | 179 | |
| 180 | if test "x$drm_cv_atomic_primitives" = "xnone"; then |
| 181 | if test "x$INTEL" != "xauto"; then |
Chris Wilson | 901bacd | 2009-10-13 15:13:00 +0100 | [diff] [blame] | 182 | AC_MSG_ERROR([libdrm_intel depends upon atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package, or, failing both of those, disable support for Intel GPUs by passing --disable-intel to ./configure]) |
Chris Wilson | fc8f6be | 2009-10-12 23:58:47 +0100 | [diff] [blame] | 183 | else |
| 184 | INTEL=no |
| 185 | fi |
| 186 | fi |
Chris Wilson | 04495ee | 2009-10-02 04:39:22 +0100 | [diff] [blame] | 187 | fi |
| 188 | |
Chris Wilson | fc8f6be | 2009-10-12 23:58:47 +0100 | [diff] [blame] | 189 | AM_CONDITIONAL(HAVE_INTEL, [test "x$INTEL" != "xno"]) |
| 190 | |
Kristian Høgsberg | a996803 | 2009-11-17 09:23:52 -0500 | [diff] [blame] | 191 | AC_ARG_WITH([kernel-source], |
| 192 | [AS_HELP_STRING([--with-kernel-source], |
| 193 | [specify path to linux kernel source])], |
| 194 | [kernel_source="$with_kernel_source"]) |
| 195 | AC_SUBST(kernel_source) |
Chris Wilson | fc8f6be | 2009-10-12 23:58:47 +0100 | [diff] [blame] | 196 | |
Eric Anholt | c485742 | 2008-06-03 10:20:49 -0700 | [diff] [blame] | 197 | AC_SUBST(WARN_CFLAGS) |
Eric Anholt | d7cf298 | 2007-07-19 04:59:59 -0700 | [diff] [blame] | 198 | AC_OUTPUT([ |
| 199 | Makefile |
Kristian Høgsberg | 4f57abf | 2009-11-17 11:14:54 -0500 | [diff] [blame^] | 200 | intel/Makefile |
| 201 | intel/libdrm_intel.pc |
| 202 | radeon/Makefile |
| 203 | radeon/libdrm_radeon.pc |
| 204 | nouveau/Makefile |
| 205 | nouveau/libdrm_nouveau.pc |
Eric Anholt | d7cf298 | 2007-07-19 04:59:59 -0700 | [diff] [blame] | 206 | tests/Makefile |
Eric Anholt | 06ab2f6 | 2008-12-17 10:41:21 -0800 | [diff] [blame] | 207 | tests/modeprint/Makefile |
| 208 | tests/modetest/Makefile |
Julien Cristau | 89cc98c | 2009-10-31 02:25:44 +0100 | [diff] [blame] | 209 | libdrm.pc]) |