• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
21AC_PREREQ([2.63])
22AC_INIT([libdrm],
23        [2.4.91],
24        [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI],
25        [libdrm])
26
27AC_CONFIG_HEADERS([config.h])
28AC_CONFIG_SRCDIR([Makefile.am])
29AC_CONFIG_MACRO_DIR([m4])
30AC_CONFIG_AUX_DIR([build-aux])
31PKG_PROG_PKG_CONFIG
32
33# Require xorg-macros minimum of 1.12 for XORG_WITH_XSLTPROC
34m4_ifndef([XORG_MACROS_VERSION],
35          [m4_fatal([must install xorg-macros 1.12 or later before running autoconf/autogen])])
36XORG_MACROS_VERSION(1.12)
37XORG_WITH_XSLTPROC
38XORG_MANPAGE_SECTIONS
39
40AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2])
41
42# Enable quiet compiles on automake 1.11.
43m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
44
45# Check for programs
46AC_PROG_CC
47AC_PROG_CC_C99
48AC_PROG_NM
49
50if test "x$ac_cv_prog_cc_c99" = xno; then
51	AC_MSG_ERROR([Building libdrm requires C99 enabled compiler])
52fi
53
54AC_USE_SYSTEM_EXTENSIONS
55AC_SYS_LARGEFILE
56AC_FUNC_ALLOCA
57
58save_CFLAGS="$CFLAGS"
59export CFLAGS="$CFLAGS -Werror"
60AC_HEADER_MAJOR
61CFLAGS="$save_CFLAGS"
62
63AC_CHECK_HEADERS([sys/sysctl.h sys/select.h])
64
65# Initialize libtool
66LT_PREREQ([2.2])
67LT_INIT([disable-static])
68
69dnl pthread-stubs is mandatory on some BSD platforms, due to the nature of the
70dnl project. Even then there's a notable issue as described in the project README
71case "$host_os" in
72linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*)
73    pthread_stubs_possible="no"
74    ;;
75* )
76    pthread_stubs_possible="yes"
77    ;;
78esac
79
80if test "x$pthread_stubs_possible" = xyes; then
81    PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
82    AC_SUBST(PTHREADSTUBS_CFLAGS)
83    AC_SUBST(PTHREADSTUBS_LIBS)
84fi
85
86pkgconfigdir=${libdir}/pkgconfig
87AC_SUBST(pkgconfigdir)
88libdrmdatadir=${datadir}/libdrm
89AC_SUBST(libdrmdatadir)
90
91AC_ARG_ENABLE([udev],
92              [AS_HELP_STRING([--enable-udev],
93                              [Enable support for using udev instead of mknod (default: disabled)])],
94              [UDEV=$enableval], [UDEV=no])
95
96AC_ARG_ENABLE(libkms,
97	      AS_HELP_STRING([--disable-libkms],
98	      [Disable KMS mm abstraction library (default: auto, enabled on supported platforms)]),
99	      [LIBKMS=$enableval], [LIBKMS=auto])
100
101AC_ARG_ENABLE(intel,
102	      AS_HELP_STRING([--disable-intel],
103	      [Enable support for intel's KMS API (default: auto, enabled on x86)]),
104	      [INTEL=$enableval], [INTEL=auto])
105
106AC_ARG_ENABLE(radeon,
107	      AS_HELP_STRING([--disable-radeon],
108	      [Enable support for radeon's KMS API (default: auto)]),
109	      [RADEON=$enableval], [RADEON=auto])
110
111AC_ARG_ENABLE(amdgpu,
112	      AS_HELP_STRING([--disable-amdgpu],
113	      [Enable support for amdgpu's KMS API (default: auto)]),
114	      [AMDGPU=$enableval], [AMDGPU=auto])
115
116AC_ARG_ENABLE(nouveau,
117	      AS_HELP_STRING([--disable-nouveau],
118	      [Enable support for nouveau's KMS API (default: auto)]),
119	      [NOUVEAU=$enableval], [NOUVEAU=auto])
120
121AC_ARG_ENABLE(vmwgfx,
122	      AS_HELP_STRING([--disable-vmwgfx],
123	      [Enable support for vmwgfx's KMS API (default: yes)]),
124	      [VMWGFX=$enableval], [VMWGFX=yes])
125
126AC_ARG_ENABLE(omap-experimental-api,
127	      AS_HELP_STRING([--enable-omap-experimental-api],
128	      [Enable support for OMAP's experimental API (default: disabled)]),
129	      [OMAP=$enableval], [OMAP=no])
130
131AC_ARG_ENABLE(exynos-experimental-api,
132	      AS_HELP_STRING([--enable-exynos-experimental-api],
133	      [Enable support for EXYNOS's experimental API (default: disabled)]),
134	      [EXYNOS=$enableval], [EXYNOS=no])
135
136AC_ARG_ENABLE(freedreno,
137	      AS_HELP_STRING([--disable-freedreno],
138	      [Enable support for freedreno's KMS API (default: auto, enabled on arm)]),
139	      [FREEDRENO=$enableval], [FREEDRENO=auto])
140
141AC_ARG_ENABLE(freedreno-kgsl,
142	      AS_HELP_STRING([--enable-freedreno-kgsl],
143	      [Enable support for freedreno's to use downstream android kernel API (default: disabled)]),
144	      [FREEDRENO_KGSL=$enableval], [FREEDRENO_KGSL=no])
145
146AC_ARG_ENABLE(tegra-experimental-api,
147	      AS_HELP_STRING([--enable-tegra-experimental-api],
148	      [Enable support for Tegra's experimental API (default: disabled)]),
149	      [TEGRA=$enableval], [TEGRA=no])
150
151AC_ARG_ENABLE(rockchip-experimental-api,
152	      AS_HELP_STRING([--enable-rockchip-experimental-api],
153	      [Enable support for rockchip's experimental API (default: disabled)]),
154	      [ROCKCHIP=$enableval], [ROCKCHIP=no])
155
156AC_ARG_ENABLE(vc4,
157	      AS_HELP_STRING([--disable-vc4],
158	      [Enable support for vc4's API (default: auto, enabled on arm)]),
159	      [VC4=$enableval], [VC4=auto])
160
161AC_ARG_ENABLE(etnaviv-experimental-api,
162	      AS_HELP_STRING([--enable-etnaviv-experimental-api],
163	      [Enable support for etnaviv's experimental API (default: disabled)]),
164	      [ETNAVIV=$enableval], [ETNAVIV=no])
165
166AC_ARG_ENABLE(install-test-programs,
167		  AS_HELP_STRING([--enable-install-test-programs],
168		  [Install test programs (default: no)]),
169		  [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no])
170
171dnl ===========================================================================
172dnl check compiler flags
173AC_DEFUN([LIBDRM_CC_TRY_FLAG], [
174  AC_MSG_CHECKING([whether $CC supports $1])
175
176  libdrm_save_CFLAGS="$CFLAGS"
177  CFLAGS="$CFLAGS $1"
178
179  AC_COMPILE_IFELSE([AC_LANG_SOURCE([ ])], [libdrm_cc_flag=yes], [libdrm_cc_flag=no])
180  CFLAGS="$libdrm_save_CFLAGS"
181
182  if test "x$libdrm_cc_flag" = "xyes"; then
183    ifelse([$2], , :, [$2])
184  else
185    ifelse([$3], , :, [$3])
186  fi
187  AC_MSG_RESULT([$libdrm_cc_flag])
188])
189
190dnl We use clock_gettime to check for timeouts in drmWaitVBlank
191
192AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
193               [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
194                             [AC_MSG_ERROR([Couldn't find clock_gettime])])])
195AC_SUBST([CLOCK_LIB])
196
197AC_CHECK_FUNCS([open_memstream],
198               [AC_DEFINE([HAVE_OPEN_MEMSTREAM], 1, [Have open_memstream()])],
199               [AC_DEFINE([HAVE_OPEN_MEMSTREAM], 0)])
200
201dnl Use lots of warning flags with with gcc and compatible compilers
202
203dnl Note: if you change the following variable, the cache is automatically
204dnl skipped and all flags rechecked.  So there's no need to do anything
205dnl else.  If for any reason you need to force a recheck, just change
206dnl MAYBE_WARN in an ignorable way (like adding whitespace)
207
208MAYBE_WARN="-Wall -Wextra -Werror=undef \
209-Wsign-compare -Werror-implicit-function-declaration \
210-Wpointer-arith -Wwrite-strings -Wstrict-prototypes \
211-Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
212-Wpacked -Wswitch-enum -Wmissing-format-attribute \
213-Wstrict-aliasing=2 -Winit-self \
214-Wdeclaration-after-statement -Wold-style-definition \
215-Wno-unused-parameter \
216-Wno-attributes -Wno-long-long -Winline -Wshadow \
217-Wno-missing-field-initializers"
218
219# invalidate cached value if MAYBE_WARN has changed
220if test "x$libdrm_cv_warn_maybe" != "x$MAYBE_WARN"; then
221	unset libdrm_cv_warn_cflags
222fi
223AC_CACHE_CHECK([for supported warning flags], libdrm_cv_warn_cflags, [
224	echo
225	WARN_CFLAGS=""
226
227	# Some warning options are not supported by all versions of
228	# gcc, so test all desired options against the current
229	# compiler.
230	#
231	# Note that there are some order dependencies
232	# here. Specifically, an option that disables a warning will
233	# have no net effect if a later option then enables that
234	# warnings, (perhaps implicitly). So we put some grouped
235	# options (-Wall and -Wextra) up front and the -Wno options
236	# last.
237
238	for W in $MAYBE_WARN; do
239		LIBDRM_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
240	done
241
242	libdrm_cv_warn_cflags=$WARN_CFLAGS
243	libdrm_cv_warn_maybe=$MAYBE_WARN
244
245	AC_MSG_CHECKING([which warning flags were supported])])
246WARN_CFLAGS="$libdrm_cv_warn_cflags"
247
248# Check for atomic intrinsics
249AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives, [
250	drm_cv_atomic_primitives="none"
251
252	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
253	int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
254	int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
255					  ]],[[]])], [drm_cv_atomic_primitives="Intel"],[])
256
257	if test "x$drm_cv_atomic_primitives" = "xnone"; then
258		AC_CHECK_HEADER([atomic_ops.h], drm_cv_atomic_primitives="libatomic-ops")
259	fi
260
261	# atomic functions defined in <atomic.h> & libc on Solaris
262	if test "x$drm_cv_atomic_primitives" = "xnone"; then
263		AC_CHECK_FUNC([atomic_cas_uint], drm_cv_atomic_primitives="Solaris")
264	fi
265])
266
267if test "x$drm_cv_atomic_primitives" = xIntel; then
268	AC_DEFINE(HAVE_LIBDRM_ATOMIC_PRIMITIVES, 1,
269		[Enable if your compiler supports the Intel __sync_* atomic primitives])
270else
271	AC_DEFINE(HAVE_LIBDRM_ATOMIC_PRIMITIVES, 0)
272fi
273if test "x$drm_cv_atomic_primitives" = "xlibatomic-ops"; then
274	AC_DEFINE(HAVE_LIB_ATOMIC_OPS, 1, [Enable if you have libatomic-ops-dev installed])
275else
276	AC_DEFINE(HAVE_LIB_ATOMIC_OPS, 0)
277fi
278
279dnl Print out the approapriate message considering the value set be the
280dnl respective in $1.
281dnl $1 - value to be evaluated. Eg. $INTEL, $NOUVEAU, ...
282dnl $2 - libdrm shortname. Eg. intel, freedreno, ...
283dnl $3 - GPU name/brand. Eg. Intel, NVIDIA Tegra, ...
284dnl $4 - Configure switch. Eg. intel, omap-experimental-api, ...
285AC_DEFUN([LIBDRM_ATOMICS_NOT_FOUND_MSG], [
286	case "x$1" in
287		xyes)	AC_MSG_ERROR([libdrm_$2 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 $3 GPUs by passing --disable-$4 to ./configure]) ;;
288		xauto)	AC_MSG_WARN([Disabling $2. 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.]) ;;
289		*)	;;
290	esac
291])
292
293if test "x$drm_cv_atomic_primitives" = "xnone"; then
294	LIBDRM_ATOMICS_NOT_FOUND_MSG($INTEL, intel, Intel, intel)
295	INTEL=no
296
297	LIBDRM_ATOMICS_NOT_FOUND_MSG($RADEON, radeon, Radeon, radeon)
298	RADEON=no
299
300	LIBDRM_ATOMICS_NOT_FOUND_MSG($AMDGPU, amdgpu, AMD, amdgpu)
301	AMDGPU=no
302
303	LIBDRM_ATOMICS_NOT_FOUND_MSG($NOUVEAU, nouveau, NVIDIA, nouveau)
304	NOUVEAU=no
305
306	LIBDRM_ATOMICS_NOT_FOUND_MSG($OMAP, omap, OMAP, omap-experimental-api)
307	OMAP=no
308
309	LIBDRM_ATOMICS_NOT_FOUND_MSG($FREEDRENO, freedreno, Qualcomm Adreno, freedreno)
310	FREEDRENO=no
311
312	LIBDRM_ATOMICS_NOT_FOUND_MSG($TEGRA, tegra, NVIDIA Tegra, tegra-experimental-api)
313	TEGRA=no
314
315	LIBDRM_ATOMICS_NOT_FOUND_MSG($ETNAVIV, etnaviv, Vivante, etnaviv-experimental-api)
316	ETNAVIV=no
317else
318	if test "x$INTEL" = xauto; then
319		case $host_cpu in
320			i?86|x86_64)	INTEL=yes ;;
321			*)		INTEL=no ;;
322		esac
323	fi
324	if test "x$RADEON" = xauto; then
325		RADEON=yes
326	fi
327	if test "x$AMDGPU" = xauto; then
328		AMDGPU=yes
329	fi
330	if test "x$NOUVEAU" = xauto; then
331		NOUVEAU=yes
332	fi
333	if test "x$FREEDRENO" = xauto; then
334		case $host_cpu in
335			arm*|aarch64)	FREEDRENO=yes ;;
336			*)		FREEDRENO=no ;;
337		esac
338	fi
339	if test "x$VC4" = xauto; then
340		case $host_cpu in
341			arm*|aarch64)	VC4=yes ;;
342			*)		VC4=no ;;
343		esac
344	fi
345fi
346
347if test "x$INTEL" != "xno"; then
348	PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10])
349fi
350AC_SUBST(PCIACCESS_CFLAGS)
351AC_SUBST(PCIACCESS_LIBS)
352
353if test "x$UDEV" = xyes; then
354	AC_DEFINE(UDEV, 1, [Have UDEV support])
355else
356	AC_DEFINE(UDEV, 0)
357fi
358
359AC_CANONICAL_HOST
360if test "x$LIBKMS" = xauto ; then
361	case $host_os in
362		linux*)		LIBKMS="yes" ;;
363		freebsd* | kfreebsd*-gnu)
364				LIBKMS="yes" ;;
365		dragonfly*)	LIBKMS="yes" ;;
366		*)		LIBKMS="no" ;;
367	esac
368fi
369
370AM_CONDITIONAL(HAVE_LIBKMS, [test "x$LIBKMS" = xyes])
371
372AM_CONDITIONAL(HAVE_INTEL, [test "x$INTEL" = xyes])
373if test "x$INTEL" = xyes; then
374	AC_DEFINE(HAVE_INTEL, 1, [Have intel support])
375else
376	AC_DEFINE(HAVE_INTEL, 0)
377fi
378
379AM_CONDITIONAL(HAVE_VMWGFX, [test "x$VMWGFX" = xyes])
380if test "x$VMWGFX" = xyes; then
381	AC_DEFINE(HAVE_VMWGFX, 1, [Have vmwgfx kernel headers])
382else
383	AC_DEFINE(HAVE_VMWGFX, 0)
384fi
385
386AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes])
387if test "x$NOUVEAU" = xyes; then
388	AC_DEFINE(HAVE_NOUVEAU, 1, [Have nouveau (nvidia) support])
389else
390	AC_DEFINE(HAVE_NOUVEAU, 0)
391fi
392
393AM_CONDITIONAL(HAVE_OMAP, [test "x$OMAP" = xyes])
394
395AM_CONDITIONAL(HAVE_EXYNOS, [test "x$EXYNOS" = xyes])
396if test "x$EXYNOS" = xyes; then
397	AC_DEFINE(HAVE_EXYNOS, 1, [Have EXYNOS support])
398else
399	AC_DEFINE(HAVE_EXYNOS, 0)
400fi
401
402AM_CONDITIONAL(HAVE_FREEDRENO, [test "x$FREEDRENO" = xyes])
403
404if test "x$FREEDRENO_KGSL" = xyes; then
405	if test "x$FREEDRENO" != xyes; then
406		AC_MSG_ERROR([Cannot enable freedreno KGSL interface if freedreno is disabled])
407	fi
408fi
409AM_CONDITIONAL(HAVE_FREEDRENO_KGSL, [test "x$FREEDRENO_KGSL" = xyes])
410if test "x$FREEDRENO_KGSL" = xyes; then
411	AC_DEFINE(HAVE_FREEDRENO_KGSL, 1, [Have freedreno support for KGSL kernel interface])
412else
413	AC_DEFINE(HAVE_FREEDRENO_KGSL, 0)
414fi
415
416AM_CONDITIONAL(HAVE_RADEON, [test "x$RADEON" = xyes])
417if test "x$RADEON" = xyes; then
418	AC_DEFINE(HAVE_RADEON, 1, [Have radeon support])
419else
420	AC_DEFINE(HAVE_RADEON, 0)
421fi
422
423if test "x$AMDGPU" != xno; then
424	# Detect cunit library
425	PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
426	# If pkg-config does not find cunit, check it using AC_CHECK_LIB.  We
427	# do this because Debian (Ubuntu) lacks pkg-config file for cunit.
428	# fixed in 2.1-2.dfsg-3: http://anonscm.debian.org/cgit/collab-maint/cunit.git/commit/?h=debian
429	if test "x${have_cunit}" = "xno"; then
430		AC_CHECK_LIB([cunit], [CU_initialize_registry], [have_cunit=yes], [have_cunit=no])
431		if test "x${have_cunit}" = "xyes"; then
432			CUNIT_LIBS="-lcunit"
433			CUNIT_CFLAGS=""
434			AC_SUBST([CUNIT_LIBS])
435			AC_SUBST([CUNIT_CFLAGS])
436		fi
437	fi
438else
439	have_cunit=no
440fi
441AM_CONDITIONAL(HAVE_CUNIT, [test "x$have_cunit" != "xno"])
442
443AM_CONDITIONAL(HAVE_AMDGPU, [test "x$AMDGPU" = xyes])
444if test "x$AMDGPU" = xyes; then
445	AC_DEFINE(HAVE_AMDGPU, 1, [Have amdgpu support])
446
447	if test "x$have_cunit" = "xno"; then
448		AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
449	fi
450else
451	AC_DEFINE(HAVE_AMDGPU, 0)
452fi
453
454AM_CONDITIONAL(HAVE_TEGRA, [test "x$TEGRA" = xyes])
455
456AM_CONDITIONAL(HAVE_ROCKCHIP, [test "x$ROCKCHIP" = xyes])
457if test "x$ROCKCHIP" = xyes; then
458	AC_DEFINE(HAVE_ROCKCHIP, 1, [Have ROCKCHIP support])
459fi
460
461AM_CONDITIONAL(HAVE_VC4, [test "x$VC4" = xyes])
462if test "x$VC4" = xyes; then
463	AC_DEFINE(HAVE_VC4, 1, [Have VC4 support])
464else
465	AC_DEFINE(HAVE_VC4, 0)
466fi
467
468AM_CONDITIONAL(HAVE_ETNAVIV, [test "x$ETNAVIV" = xyes])
469
470AM_CONDITIONAL(HAVE_INSTALL_TESTS, [test "x$INSTALL_TESTS" = xyes])
471
472AC_ARG_ENABLE([cairo-tests],
473              [AS_HELP_STRING([--enable-cairo-tests],
474                              [Enable support for Cairo rendering in tests (default: auto)])],
475              [CAIRO=$enableval], [CAIRO=auto])
476if test "x$CAIRO" != xno; then
477	PKG_CHECK_MODULES(CAIRO, cairo, [HAVE_CAIRO=yes], [HAVE_CAIRO=no])
478fi
479AC_MSG_CHECKING([whether to enable Cairo tests])
480if test "x$CAIRO" = xauto; then
481	CAIRO="$HAVE_CAIRO"
482fi
483if test "x$CAIRO" = xyes; then
484	if ! test "x$HAVE_CAIRO" = xyes; then
485		AC_MSG_ERROR([Cairo support required but not present])
486	fi
487	AC_DEFINE(HAVE_CAIRO, 1, [Have Cairo support])
488else
489	AC_DEFINE(HAVE_CAIRO, 0)
490fi
491AC_MSG_RESULT([$CAIRO])
492AM_CONDITIONAL(HAVE_CAIRO, [test "x$CAIRO" = xyes])
493
494# xsltproc for docbook manpages
495AC_ARG_ENABLE([manpages],
496              AS_HELP_STRING([--enable-manpages], [enable manpages @<:@default=auto@:>@]),
497              [MANS=$enableval], [MANS=auto])
498AM_CONDITIONAL([BUILD_MANPAGES], [test "x$XSLTPROC" != "x" -a "x$MANS" != "xno"])
499
500# check for offline man-pages stylesheet
501AC_MSG_CHECKING([for docbook manpages stylesheet])
502MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
503AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
504                            AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$MANPAGES_STYLESHEET" > /dev/null 2>&1`],
505                                  [HAVE_MANPAGES_STYLESHEET=yes]))
506if test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"; then
507        AC_SUBST(MANPAGES_STYLESHEET)
508        AC_MSG_RESULT([yes])
509else
510        AC_MSG_RESULT([no])
511fi
512AM_CONDITIONAL([HAVE_MANPAGES_STYLESHEET], [test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"])
513
514AC_ARG_ENABLE(valgrind,
515              [AS_HELP_STRING([--enable-valgrind],
516                             [Build libdrm with  valgrind support (default: auto)])],
517                             [VALGRIND=$enableval], [VALGRIND=auto])
518if test "x$VALGRIND" != xno; then
519	PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
520fi
521AC_MSG_CHECKING([whether to enable Valgrind support])
522if test "x$VALGRIND" = xauto; then
523	VALGRIND="$have_valgrind"
524fi
525
526if test "x$VALGRIND" = "xyes"; then
527	if ! test "x$have_valgrind" = xyes; then
528		AC_MSG_ERROR([Valgrind support required but not present])
529	fi
530	AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
531else
532	AC_DEFINE([HAVE_VALGRIND], 0)
533fi
534
535AC_MSG_RESULT([$VALGRIND])
536
537AC_ARG_WITH([kernel-source],
538            [AS_HELP_STRING([--with-kernel-source],
539              [specify path to linux kernel source])],
540	    [kernel_source="$with_kernel_source"])
541AC_SUBST(kernel_source)
542
543AC_MSG_CHECKING([whether $CC supports __attribute__(("hidden"))])
544AC_LINK_IFELSE([AC_LANG_PROGRAM([
545    int foo_hidden( void ) __attribute__((visibility("hidden")));
546])], HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]));
547
548if test "x$HAVE_ATTRIBUTE_VISIBILITY" = xyes; then
549    AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler supports __attribute__(("hidden"))])
550else
551    AC_DEFINE(HAVE_VISIBILITY, 0)
552fi
553
554CFLAGS="$CFLAGS -include config.h"
555
556AC_SUBST(WARN_CFLAGS)
557AC_CONFIG_FILES([
558	Makefile
559	data/Makefile
560	libkms/Makefile
561	libkms/libkms.pc
562	intel/Makefile
563	intel/libdrm_intel.pc
564	radeon/Makefile
565	radeon/libdrm_radeon.pc
566	amdgpu/Makefile
567	amdgpu/libdrm_amdgpu.pc
568	nouveau/Makefile
569	nouveau/libdrm_nouveau.pc
570	omap/Makefile
571	omap/libdrm_omap.pc
572	exynos/Makefile
573	exynos/libdrm_exynos.pc
574	freedreno/Makefile
575	freedreno/libdrm_freedreno.pc
576	tegra/Makefile
577	tegra/libdrm_tegra.pc
578	rockchip/Makefile
579	rockchip/libdrm_rockchip.pc
580	vc4/Makefile
581	vc4/libdrm_vc4.pc
582	etnaviv/Makefile
583	etnaviv/libdrm_etnaviv.pc
584	tests/Makefile
585	tests/modeprint/Makefile
586	tests/modetest/Makefile
587	tests/kms/Makefile
588	tests/kmstest/Makefile
589	tests/proptest/Makefile
590	tests/radeon/Makefile
591	tests/amdgpu/Makefile
592	tests/vbltest/Makefile
593	tests/exynos/Makefile
594	tests/tegra/Makefile
595	tests/nouveau/Makefile
596	tests/planetest/Makefile
597	tests/etnaviv/Makefile
598	tests/util/Makefile
599	man/Makefile
600	libdrm.pc])
601AC_OUTPUT
602
603echo ""
604echo "$PACKAGE_STRING will be compiled with:"
605echo ""
606echo "  libkms         $LIBKMS"
607echo "  Intel API      $INTEL"
608echo "  vmwgfx API     $VMWGFX"
609echo "  Radeon API     $RADEON"
610echo "  AMDGPU API     $AMDGPU"
611echo "  Nouveau API    $NOUVEAU"
612echo "  OMAP API       $OMAP"
613echo "  EXYNOS API     $EXYNOS"
614echo "  Freedreno API  $FREEDRENO (kgsl: $FREEDRENO_KGSL)"
615echo "  Tegra API      $TEGRA"
616echo "  Rockchip API   $ROCKCHIP"
617echo "  VC4 API        $VC4"
618echo "  Etnaviv API    $ETNAVIV"
619echo ""
620