xref: /netbsd-src/sys/external/bsd/drm/dist/configure.ac (revision d7792ba7fe789bc3d5f4d57a355db3f8d54d5c21)
1d582952bSmrg#  Copyright 2005 Adam Jackson.
2d582952bSmrg#
3d582952bSmrg#  Permission is hereby granted, free of charge, to any person obtaining a
4d582952bSmrg#  copy of this software and associated documentation files (the "Software"),
5d582952bSmrg#  to deal in the Software without restriction, including without limitation
6d582952bSmrg#  on the rights to use, copy, modify, merge, publish, distribute, sub
7d582952bSmrg#  license, and/or sell copies of the Software, and to permit persons to whom
8d582952bSmrg#  the Software is furnished to do so, subject to the following conditions:
9d582952bSmrg#
10d582952bSmrg#  The above copyright notice and this permission notice (including the next
11d582952bSmrg#  paragraph) shall be included in all copies or substantial portions of the
12d582952bSmrg#  Software.
13d582952bSmrg#
14d582952bSmrg#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15d582952bSmrg#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16d582952bSmrg#  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
17d582952bSmrg#  ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18d582952bSmrg#  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19d582952bSmrg#  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20d582952bSmrg
21d582952bSmrgAC_PREREQ(2.57)
22*d7792ba7SmrgAC_INIT([libdrm], 2.4.11, [dri-devel@lists.sourceforge.net], libdrm)
23d582952bSmrgAC_CONFIG_SRCDIR([Makefile.am])
24d582952bSmrgAM_INIT_AUTOMAKE([dist-bzip2])
25d582952bSmrg
26d582952bSmrgAM_CONFIG_HEADER([libdrm/config.h])
27d582952bSmrg
28d582952bSmrgAC_DISABLE_STATIC
29d582952bSmrgAC_PROG_LIBTOOL
30d582952bSmrgAC_PROG_CC
31d582952bSmrg
32d582952bSmrgAC_HEADER_STDC
33d582952bSmrgAC_SYS_LARGEFILE
34d582952bSmrg
35*d7792ba7SmrgPKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
36*d7792ba7SmrgAC_SUBST(PTHREADSTUBS_CFLAGS)
37*d7792ba7SmrgAC_SUBST(PTHREADSTUBS_LIBS)
38*d7792ba7Smrg
39d582952bSmrgpkgconfigdir=${libdir}/pkgconfig
40d582952bSmrgAC_SUBST(pkgconfigdir)
41*d7792ba7SmrgAC_ARG_ENABLE(udev,	AS_HELP_STRING([--enable-udev],
42*d7792ba7Smrg				[Enable support for using udev instead of mknod (default: disabled)]),
43*d7792ba7Smrg				[UDEV=$enableval], [UDEV=no])
44d582952bSmrg
45*d7792ba7SmrgAC_ARG_ENABLE(nouveau-experimental-api,
46*d7792ba7Smrg	      AS_HELP_STRING([--enable-nouveau-experimental-api],
47*d7792ba7Smrg	      [Enable support for nouveau's experimental API (default: disabled)]),
48*d7792ba7Smrg	      [NOUVEAU=$enableval], [NOUVEAU=no])
49*d7792ba7Smrg
50*d7792ba7Smrgdnl ===========================================================================
51*d7792ba7Smrgdnl check compiler flags
52*d7792ba7SmrgAC_DEFUN([LIBDRM_CC_TRY_FLAG], [
53*d7792ba7Smrg  AC_MSG_CHECKING([whether $CC supports $1])
54*d7792ba7Smrg
55*d7792ba7Smrg  libdrm_save_CFLAGS="$CFLAGS"
56*d7792ba7Smrg  CFLAGS="$CFLAGS $1"
57*d7792ba7Smrg
58*d7792ba7Smrg  AC_COMPILE_IFELSE([ ], [libdrm_cc_flag=yes], [libdrm_cc_flag=no])
59*d7792ba7Smrg  CFLAGS="$libdrm_save_CFLAGS"
60*d7792ba7Smrg
61*d7792ba7Smrg  if test "x$libdrm_cc_flag" = "xyes"; then
62*d7792ba7Smrg    ifelse([$2], , :, [$2])
63*d7792ba7Smrg  else
64*d7792ba7Smrg    ifelse([$3], , :, [$3])
65*d7792ba7Smrg  fi
66*d7792ba7Smrg  AC_MSG_RESULT([$libdrm_cc_flag])
67*d7792ba7Smrg])
68*d7792ba7Smrg
69*d7792ba7Smrgdnl We use clock_gettime to check for timeouts in drmWaitVBlank
70*d7792ba7Smrg
71*d7792ba7SmrgAC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
72*d7792ba7Smrg               [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
73*d7792ba7Smrg                             [AC_MSG_ERROR([Couldn't find clock_gettime])])])
74*d7792ba7SmrgAC_SUBST([CLOCK_LIB])
75*d7792ba7Smrg
76*d7792ba7Smrgdnl Use lots of warning flags with with gcc and compatible compilers
77*d7792ba7Smrg
78*d7792ba7Smrgdnl Note: if you change the following variable, the cache is automatically
79*d7792ba7Smrgdnl skipped and all flags rechecked.  So there's no need to do anything
80*d7792ba7Smrgdnl else.  If for any reason you need to force a recheck, just change
81*d7792ba7Smrgdnl MAYBE_WARN in an ignorable way (like adding whitespace)
82*d7792ba7Smrg
83*d7792ba7SmrgMAYBE_WARN="-Wall -Wextra \
84*d7792ba7Smrg-Wsign-compare -Werror-implicit-function-declaration \
85*d7792ba7Smrg-Wpointer-arith -Wwrite-strings -Wstrict-prototypes \
86*d7792ba7Smrg-Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
87*d7792ba7Smrg-Wpacked -Wswitch-enum -Wmissing-format-attribute \
88*d7792ba7Smrg-Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \
89*d7792ba7Smrg-Wdeclaration-after-statement -Wold-style-definition \
90*d7792ba7Smrg-Wno-missing-field-initializers -Wno-unused-parameter \
91*d7792ba7Smrg-Wno-attributes -Wno-long-long -Winline"
92*d7792ba7Smrg
93*d7792ba7Smrg# invalidate cached value if MAYBE_WARN has changed
94*d7792ba7Smrgif test "x$libdrm_cv_warn_maybe" != "x$MAYBE_WARN"; then
95*d7792ba7Smrg	unset libdrm_cv_warn_cflags
96*d7792ba7Smrgfi
97*d7792ba7SmrgAC_CACHE_CHECK([for supported warning flags], libdrm_cv_warn_cflags, [
98*d7792ba7Smrg	echo
99*d7792ba7Smrg	WARN_CFLAGS=""
100*d7792ba7Smrg
101*d7792ba7Smrg	# Some warning options are not supported by all versions of
102*d7792ba7Smrg	# gcc, so test all desired options against the current
103*d7792ba7Smrg	# compiler.
104*d7792ba7Smrg	#
105*d7792ba7Smrg	# Note that there are some order dependencies
106*d7792ba7Smrg	# here. Specifically, an option that disables a warning will
107*d7792ba7Smrg	# have no net effect if a later option then enables that
108*d7792ba7Smrg	# warnings, (perhaps implicitly). So we put some grouped
109*d7792ba7Smrg	# options (-Wall and -Wextra) up front and the -Wno options
110*d7792ba7Smrg	# last.
111*d7792ba7Smrg
112*d7792ba7Smrg	for W in $MAYBE_WARN; do
113*d7792ba7Smrg		LIBDRM_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
114*d7792ba7Smrg	done
115*d7792ba7Smrg
116*d7792ba7Smrg	libdrm_cv_warn_cflags=$WARN_CFLAGS
117*d7792ba7Smrg	libdrm_cv_warn_maybe=$MAYBE_WARN
118*d7792ba7Smrg
119*d7792ba7Smrg	AC_MSG_CHECKING([which warning flags were supported])])
120*d7792ba7SmrgWARN_CFLAGS="$libdrm_cv_warn_cflags"
121*d7792ba7Smrg
122*d7792ba7Smrgif test "x$UDEV" = xyes; then
123*d7792ba7Smrg	AC_DEFINE(UDEV, 1, [Have UDEV support])
124*d7792ba7Smrgfi
125*d7792ba7Smrg
126*d7792ba7SmrgAM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes])
127*d7792ba7Smrg
128*d7792ba7SmrgPKG_CHECK_MODULES(CAIRO, cairo, [HAVE_CAIRO=yes], [HAVE_CAIRO=no])
129*d7792ba7Smrgif test "x$HAVE_CAIRO" = xyes; then
130*d7792ba7Smrg	AC_DEFINE(HAVE_CAIRO, 1, [Have cairo support])
131*d7792ba7Smrgfi
132*d7792ba7SmrgAM_CONDITIONAL(HAVE_CAIRO, [test "x$HAVE_CAIRO" = xyes])
133*d7792ba7Smrg
134*d7792ba7Smrg# For enumerating devices in test case
135*d7792ba7SmrgPKG_CHECK_MODULES(LIBUDEV, libudev, [HAVE_LIBUDEV=yes], [HAVE_LIBUDEV=no])
136*d7792ba7Smrgif test "x$HAVE_LIBUDEV" = xyes; then
137*d7792ba7Smrg   	AC_DEFINE(HAVE_LIBUDEV, 1, [Have libudev support])
138*d7792ba7Smrgfi
139*d7792ba7SmrgAM_CONDITIONAL(HAVE_LIBUDEV, [test "x$HAVE_LIBUDEV" = xyes])
140*d7792ba7Smrg
141*d7792ba7Smrg
142*d7792ba7SmrgAC_SUBST(WARN_CFLAGS)
143d582952bSmrgAC_OUTPUT([
144d582952bSmrg	Makefile
145d582952bSmrg	libdrm/Makefile
146*d7792ba7Smrg	libdrm/intel/Makefile
147*d7792ba7Smrg	libdrm/nouveau/Makefile
148*d7792ba7Smrg	libdrm/nouveau/libdrm_nouveau.pc
149d582952bSmrg	shared-core/Makefile
150d582952bSmrg	tests/Makefile
151*d7792ba7Smrg	tests/modeprint/Makefile
152*d7792ba7Smrg	tests/modetest/Makefile
153*d7792ba7Smrg	libdrm.pc
154*d7792ba7Smrg	libdrm_intel.pc])
155