OSDN Git Service

Adding VLV PCI IDs.
[android-x86/external-libdrm.git] / configure.ac
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
21 AC_PREREQ([2.63])
22 AC_INIT([libdrm],
23         [2.4.52],
24         [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI],
25         [libdrm])
26
27 AC_CONFIG_HEADERS([config.h])
28 AC_CONFIG_SRCDIR([Makefile.am])
29 AC_CONFIG_MACRO_DIR([m4])
30 AC_CONFIG_AUX_DIR([build-aux])
31
32 AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2])
33 AM_MAINTAINER_MODE([enable])
34
35 # Enable quiet compiles on automake 1.11.
36 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
37
38 # Check for programs
39 AC_PROG_CC
40
41 AC_USE_SYSTEM_EXTENSIONS
42 AC_SYS_LARGEFILE
43 AC_FUNC_ALLOCA
44
45 # Initialize libtool
46 LT_PREREQ([2.2])
47 LT_INIT([disable-static])
48
49
50 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
51 AC_SUBST(PTHREADSTUBS_CFLAGS)
52 AC_SUBST(PTHREADSTUBS_LIBS)
53
54 pkgconfigdir=${libdir}/pkgconfig
55 AC_SUBST(pkgconfigdir)
56 AC_ARG_ENABLE([udev],
57               [AS_HELP_STRING([--enable-udev],
58                               [Enable support for using udev instead of mknod (default: disabled)])],
59               [UDEV=$enableval], [UDEV=no])
60
61 AC_ARG_ENABLE(libkms,
62               AS_HELP_STRING([--disable-libkms],
63               [Disable KMS mm abstraction library (default: auto)]),
64               [LIBKMS=$enableval], [LIBKMS=auto])
65
66 AC_ARG_ENABLE(intel,
67               AS_HELP_STRING([--disable-intel],
68               [Enable support for intel's KMS API (default: auto)]),
69               [INTEL=$enableval], [INTEL=auto])
70
71 AC_ARG_ENABLE(radeon,
72               AS_HELP_STRING([--disable-radeon],
73               [Enable support for radeon's KMS API (default: auto)]),
74               [RADEON=$enableval], [RADEON=auto])
75
76 AC_ARG_ENABLE(nouveau,
77               AS_HELP_STRING([--disable-nouveau],
78               [Enable support for nouveau's KMS API (default: auto)]),
79               [NOUVEAU=$enableval], [NOUVEAU=auto])
80
81 AC_ARG_ENABLE(vmwgfx,
82               AS_HELP_STRING([--disable-vmwgfx],
83               [Enable support for vmwgfx's KMS API (default: yes)]),
84               [VMWGFX=$enableval], [VMWGFX=yes])
85
86 AC_ARG_ENABLE(omap-experimental-api,
87               AS_HELP_STRING([--enable-omap-experimental-api],
88               [Enable support for OMAP's experimental API (default: disabled)]),
89               [OMAP=$enableval], [OMAP=no])
90
91 AC_ARG_ENABLE(exynos-experimental-api,
92               AS_HELP_STRING([--enable-exynos-experimental-api],
93               [Enable support for EXYNOS's experimental API (default: disabled)]),
94               [EXYNOS=$enableval], [EXYNOS=no])
95
96 AC_ARG_ENABLE(freedreno-experimental-api,
97               AS_HELP_STRING([--enable-freedreno-experimental-api],
98               [Enable support for freedreno's experimental API (default: disabled)]),
99               [FREEDRENO=$enableval], [FREEDRENO=no])
100
101 AC_ARG_ENABLE(install-test-programs,
102                   AS_HELP_STRING([--enable-install-test-programs],
103                   [Install test programs (default: no)]),
104                   [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no])
105
106 dnl ===========================================================================
107 dnl check compiler flags
108 AC_DEFUN([LIBDRM_CC_TRY_FLAG], [
109   AC_MSG_CHECKING([whether $CC supports $1])
110
111   libdrm_save_CFLAGS="$CFLAGS"
112   CFLAGS="$CFLAGS $1"
113
114   AC_COMPILE_IFELSE([AC_LANG_SOURCE([ ])], [libdrm_cc_flag=yes], [libdrm_cc_flag=no])
115   CFLAGS="$libdrm_save_CFLAGS"
116
117   if test "x$libdrm_cc_flag" = "xyes"; then
118     ifelse([$2], , :, [$2])
119   else
120     ifelse([$3], , :, [$3])
121   fi
122   AC_MSG_RESULT([$libdrm_cc_flag])
123 ])
124
125 dnl We use clock_gettime to check for timeouts in drmWaitVBlank
126
127 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
128                [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
129                              [AC_MSG_ERROR([Couldn't find clock_gettime])])])
130 AC_SUBST([CLOCK_LIB])
131
132 AC_CHECK_FUNCS([open_memstream], [HAVE_OPEN_MEMSTREAM=yes])
133
134 dnl Use lots of warning flags with with gcc and compatible compilers
135
136 dnl Note: if you change the following variable, the cache is automatically
137 dnl skipped and all flags rechecked.  So there's no need to do anything
138 dnl else.  If for any reason you need to force a recheck, just change
139 dnl MAYBE_WARN in an ignorable way (like adding whitespace)
140
141 MAYBE_WARN="-Wall -Wextra \
142 -Wsign-compare -Werror-implicit-function-declaration \
143 -Wpointer-arith -Wwrite-strings -Wstrict-prototypes \
144 -Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
145 -Wpacked -Wswitch-enum -Wmissing-format-attribute \
146 -Wstrict-aliasing=2 -Winit-self \
147 -Wdeclaration-after-statement -Wold-style-definition \
148 -Wno-missing-field-initializers -Wno-unused-parameter \
149 -Wno-attributes -Wno-long-long -Winline"
150
151 # invalidate cached value if MAYBE_WARN has changed
152 if test "x$libdrm_cv_warn_maybe" != "x$MAYBE_WARN"; then
153         unset libdrm_cv_warn_cflags
154 fi
155 AC_CACHE_CHECK([for supported warning flags], libdrm_cv_warn_cflags, [
156         echo
157         WARN_CFLAGS=""
158
159         # Some warning options are not supported by all versions of
160         # gcc, so test all desired options against the current
161         # compiler.
162         #
163         # Note that there are some order dependencies
164         # here. Specifically, an option that disables a warning will
165         # have no net effect if a later option then enables that
166         # warnings, (perhaps implicitly). So we put some grouped
167         # options (-Wall and -Wextra) up front and the -Wno options
168         # last.
169
170         for W in $MAYBE_WARN; do
171                 LIBDRM_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
172         done
173
174         libdrm_cv_warn_cflags=$WARN_CFLAGS
175         libdrm_cv_warn_maybe=$MAYBE_WARN
176
177         AC_MSG_CHECKING([which warning flags were supported])])
178 WARN_CFLAGS="$libdrm_cv_warn_cflags"
179
180 if test "x$UDEV" = xyes; then
181         AC_DEFINE(UDEV, 1, [Have UDEV support])
182 fi
183
184 AC_CANONICAL_HOST
185 if test "x$LIBKMS" = xauto ; then
186         case $host_os in
187                 linux*)         LIBKMS="yes" ;;
188                 freebsd* | kfreebsd*-gnu)
189                                 LIBKMS="yes" ;;
190                 *)              LIBKMS="no" ;;
191         esac
192 fi
193
194 AM_CONDITIONAL(HAVE_LIBKMS, [test "x$LIBKMS" = xyes])
195
196 AM_CONDITIONAL(HAVE_VMWGFX, [test "x$VMWGFX" = xyes])
197 if test "x$VMWGFX" = xyes; then
198         AC_DEFINE(HAVE_VMWGFX, 1, [Have vmwgfx kernel headers])
199 fi
200
201 AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes])
202 if test "x$NOUVEAU" = xyes; then
203         AC_DEFINE(HAVE_NOUVEAU, 1, [Have nouveau (nvidia) support])
204 fi
205
206 AM_CONDITIONAL(HAVE_OMAP, [test "x$OMAP" = xyes])
207 if test "x$OMAP" = xyes; then
208         AC_DEFINE(HAVE_OMAP, 1, [Have OMAP support])
209 fi
210
211 AM_CONDITIONAL(HAVE_EXYNOS, [test "x$EXYNOS" = xyes])
212 if test "x$EXYNOS" = xyes; then
213         AC_DEFINE(HAVE_EXYNOS, 1, [Have EXYNOS support])
214 fi
215
216 AM_CONDITIONAL(HAVE_FREEDRENO, [test "x$FREEDRENO" = xyes])
217 if test "x$FREEDRENO" = xyes; then
218         AC_DEFINE(HAVE_FREEDRENO, 1, [Have freedreno support])
219 fi
220
221 AM_CONDITIONAL(HAVE_INSTALL_TESTS, [test "x$INSTALL_TESTS" = xyes])
222 if test "x$INSTALL_TESTS" = xyes; then
223         AC_DEFINE(HAVE_INSTALL_TESTS, 1, [Install test programs])
224 fi
225
226 AC_ARG_ENABLE([cairo-tests],
227               [AS_HELP_STRING([--enable-cairo-tests],
228                               [Enable support for Cairo rendering in tests (default: auto)])],
229               [CAIRO=$enableval], [CAIRO=auto])
230 PKG_CHECK_MODULES(CAIRO, cairo, [HAVE_CAIRO=yes], [HAVE_CAIRO=no])
231 AC_MSG_CHECKING([whether to enable Cairo tests])
232 if test "x$CAIRO" = xauto; then
233         CAIRO="$HAVE_CAIRO"
234 fi
235 if test "x$CAIRO" = xyes; then
236         if ! test "x$HAVE_CAIRO" = xyes; then
237                 AC_MSG_ERROR([Cairo support required but not present])
238         fi
239         AC_DEFINE(HAVE_CAIRO, 1, [Have Cairo support])
240 fi
241 AC_MSG_RESULT([$CAIRO])
242 AM_CONDITIONAL(HAVE_CAIRO, [test "x$CAIRO" = xyes])
243
244 # For enumerating devices in test case
245 PKG_CHECK_MODULES(LIBUDEV, libudev, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
246 if test "x$HAVE_LIBUDEV" = xyes; then
247         AC_DEFINE(HAVE_LIBUDEV, 1, [Have libudev support])
248 fi
249 AM_CONDITIONAL(HAVE_LIBUDEV, [test "x$HAVE_LIBUDEV" = xyes])
250
251 # xsltproc for docbook manpages
252 AC_ARG_ENABLE([manpages],
253               AS_HELP_STRING([--disable-manpages], [disable manpages @<:@default=enabled@:>@]),
254               [MANS=$enableval], [MANS=auto])
255 AC_PATH_PROG(XSLTPROC, xsltproc)
256 AM_CONDITIONAL([BUILD_MANPAGES], [test "x$XSLTPROC" != "x" -a "x$MANS" != "xno"])
257
258 # check for offline man-pages stylesheet
259 AC_MSG_CHECKING([for docbook manpages stylesheet])
260 MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
261 AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
262                             AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$MANPAGES_STYLESHEET" > /dev/null 2>&1`],
263                                   [HAVE_MANPAGES_STYLESHEET=yes]))
264 if test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"; then
265         AC_SUBST(MANPAGES_STYLESHEET)
266         AC_MSG_RESULT([yes])
267 else
268         AC_MSG_RESULT([no])
269 fi
270 AM_CONDITIONAL([HAVE_MANPAGES_STYLESHEET], [test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"])
271
272 if test "x$INTEL" != "xno" -o "x$RADEON" != "xno" -o "x$NOUVEAU" != "xno" -o "x$OMAP" != "xno" -o "x$FREEDRENO" != "xno"; then
273     # Check for atomic intrinsics
274     AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives,
275     [
276             drm_cv_atomic_primitives="none"
277
278             AC_LINK_IFELSE([AC_LANG_PROGRAM([[
279     int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); }
280     int atomic_cmpxchg(int i, int j, int k) { return __sync_val_compare_and_swap (&i, j, k); }
281                                             ]],[[]])],
282                            [drm_cv_atomic_primitives="Intel"],[])
283
284             if test "x$drm_cv_atomic_primitives" = "xnone"; then
285                     AC_CHECK_HEADER([atomic_ops.h], drm_cv_atomic_primitives="libatomic-ops")
286             fi
287
288             # atomic functions defined in <atomic.h> & libc on Solaris
289             if test "x$drm_cv_atomic_primitives" = "xnone"; then
290                     AC_CHECK_FUNC([atomic_cas_uint],
291                                   drm_cv_atomic_primitives="Solaris")
292             fi
293
294     ])
295     if test "x$drm_cv_atomic_primitives" = xIntel; then
296             AC_DEFINE(HAVE_LIBDRM_ATOMIC_PRIMITIVES, 1,
297                       [Enable if your compiler supports the Intel __sync_* atomic primitives])
298     fi
299     if test "x$drm_cv_atomic_primitives" = "xlibatomic-ops"; then
300             AC_DEFINE(HAVE_LIB_ATOMIC_OPS, 1, [Enable if you have libatomic-ops-dev installed])
301     fi
302
303     if test "x$drm_cv_atomic_primitives" = "xnone"; then
304            if test "x$INTEL" != "xauto"; then
305                    if test "x$INTEL" != "xno"; then
306                         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])
307                    fi
308            else
309                    AC_MSG_WARN([Disabling libdrm_intel. It depends on atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package.])
310                    INTEL=no
311            fi
312            if test "x$RADEON" != "xauto"; then
313                    if test "x$RADEON" != "xno"; then
314                         AC_MSG_ERROR([libdrm_radeon 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 Radeon support by passing --disable-radeon to ./configure])
315                    fi
316            else
317                    AC_MSG_WARN([Disabling libdrm_radeon. It depends on atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package.])
318                    RADEON=no
319            fi
320            if test "x$NOUVEAU" != "xauto"; then
321                    if test "x$NOUVEAU" != "xno"; then
322                         AC_MSG_ERROR([libdrm_nouveau 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 NVIDIA GPUs by passing --disable-nouveau to ./configure])
323                    fi
324            else
325                    AC_MSG_WARN([Disabling libdrm_nouveau. It depends on atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package.])
326                    NOUVEAU=no
327            fi
328     else
329            if test "x$INTEL" != "xno"; then
330                    case $host_cpu in
331                            i?86|x86_64) INTEL=yes ;;
332                            *) INTEL=no ;;
333                    esac
334            fi
335            if test "x$RADEON" != "xno"; then
336                    RADEON=yes
337            fi
338            if test "x$NOUVEAU" != "xno"; then
339                    NOUVEAU=yes
340            fi
341     fi
342 fi
343
344 if test "x$INTEL" != "xno"; then
345         PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10])
346 fi
347 AC_SUBST(PCIACCESS_CFLAGS)
348 AC_SUBST(PCIACCESS_LIBS)
349
350 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
351 if test "x$have_valgrind" = "xyes"; then
352         AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
353 fi
354
355 AM_CONDITIONAL(HAVE_INTEL, [test "x$INTEL" != "xno"])
356 AM_CONDITIONAL(HAVE_RADEON, [test "x$RADEON" != "xno"])
357 AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" != "xno"])
358 if test "x$RADEON" = xyes; then
359         AC_DEFINE(HAVE_RADEON, 1, [Have radeon support])
360 fi
361
362 AC_ARG_WITH([kernel-source],
363             [AS_HELP_STRING([--with-kernel-source],
364               [specify path to linux kernel source])],
365             [kernel_source="$with_kernel_source"])
366 AC_SUBST(kernel_source)
367
368 AC_SUBST(WARN_CFLAGS)
369 AC_CONFIG_FILES([
370         Makefile
371         libkms/Makefile
372         libkms/libkms.pc
373         intel/Makefile
374         intel/libdrm_intel.pc
375         radeon/Makefile
376         radeon/libdrm_radeon.pc
377         nouveau/Makefile
378         nouveau/libdrm_nouveau.pc
379         omap/Makefile
380         omap/libdrm_omap.pc
381         exynos/Makefile
382         exynos/libdrm_exynos.pc
383         freedreno/Makefile
384         freedreno/libdrm_freedreno.pc
385         tests/Makefile
386         tests/modeprint/Makefile
387         tests/modetest/Makefile
388         tests/kmstest/Makefile
389         tests/radeon/Makefile
390         tests/vbltest/Makefile
391         tests/exynos/Makefile
392         include/Makefile
393         include/drm/Makefile
394         man/Makefile
395         libdrm.pc])
396 AC_OUTPUT
397
398 echo ""
399 echo "$PACKAGE_STRING will be compiled with:"
400 echo ""
401 echo "  libkms         $LIBKMS"
402 echo "  Intel API      $INTEL"
403 echo "  vmwgfx API     $VMWGFX"
404 echo "  Radeon API     $RADEON"
405 echo "  Nouveau API    $NOUVEAU"
406 echo "  OMAP API       $OMAP"
407 echo "  EXYNOS API     $EXYNOS"
408 echo "  Freedreno API  $FREEDRENO"
409 echo ""