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