1209ff23fSmrg# Copyright 2005 Adam Jackson. 2209ff23fSmrg# 3209ff23fSmrg# Permission is hereby granted, free of charge, to any person obtaining a 4209ff23fSmrg# copy of this software and associated documentation files (the "Software"), 5209ff23fSmrg# to deal in the Software without restriction, including without limitation 6209ff23fSmrg# on the rights to use, copy, modify, merge, publish, distribute, sub 7209ff23fSmrg# license, and/or sell copies of the Software, and to permit persons to whom 8209ff23fSmrg# the Software is furnished to do so, subject to the following conditions: 9209ff23fSmrg# 10209ff23fSmrg# The above copyright notice and this permission notice (including the next 11209ff23fSmrg# paragraph) shall be included in all copies or substantial portions of the 12209ff23fSmrg# Software. 13209ff23fSmrg# 14209ff23fSmrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15209ff23fSmrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16209ff23fSmrg# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 17209ff23fSmrg# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 18209ff23fSmrg# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19209ff23fSmrg# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20209ff23fSmrg# 21209ff23fSmrg# Process this file with autoconf to produce a configure script 22209ff23fSmrg 230974d292Smrg# Initialize Autoconf 240974d292SmrgAC_PREREQ([2.60]) 25209ff23fSmrgAC_INIT([xf86-video-ati], 2643df4709Smrg [6.14.6], 27209ff23fSmrg [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], 280974d292Smrg [xf86-video-ati]) 29209ff23fSmrg 30209ff23fSmrgAC_CONFIG_SRCDIR([Makefile.am]) 310974d292SmrgAC_CONFIG_HEADERS([config.h]) 32ad43ddacSmrg 3343df4709Smrg# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS 3443df4709Smrgm4_ifndef([XORG_MACROS_VERSION], 3543df4709Smrg [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])]) 3643df4709SmrgXORG_MACROS_VERSION(1.8) 3743df4709SmrgXORG_DEFAULT_OPTIONS 3843df4709Smrg 39209ff23fSmrgAC_CONFIG_AUX_DIR(.) 40209ff23fSmrg 410974d292Smrg# Initialize Automake 42ad43ddacSmrgAM_INIT_AUTOMAKE([foreign dist-bzip2]) 43ad43ddacSmrgAC_SYS_LARGEFILE 44209ff23fSmrg 45209ff23fSmrgAM_MAINTAINER_MODE 46209ff23fSmrg 470974d292Smrg# Initialize libtool 48209ff23fSmrgAC_DISABLE_STATIC 49209ff23fSmrgAC_PROG_LIBTOOL 500974d292Smrg 510974d292Smrg# Checks for programs. 520974d292SmrgAM_PROG_CC_C_O 53209ff23fSmrg 54209ff23fSmrgif test "x$GCC" = "xyes"; then 55209ff23fSmrg CPPFLAGS="$CPPFLAGS -Wall" 56209ff23fSmrgfi 57209ff23fSmrg 58209ff23fSmrgAH_TOP([#include "xorg-server.h"]) 59209ff23fSmrg 600974d292Smrg# Define a configure option for an alternate module directory 61209ff23fSmrgAC_ARG_WITH(xorg-module-dir, 620974d292Smrg AS_HELP_STRING([--with-xorg-module-dir=DIR], 63209ff23fSmrg [Default xorg module directory [[default=$libdir/xorg/modules]]]), 64209ff23fSmrg [moduledir="$withval"], 65209ff23fSmrg [moduledir="$libdir/xorg/modules"]) 66209ff23fSmrg 6743df4709SmrgAC_ARG_ENABLE(dri, AS_HELP_STRING([--disable-dri], 6843df4709Smrg [Disable DRI support [[default=auto]]]), 6943df4709Smrg [DRI="$enableval"], 7043df4709Smrg [DRI=auto]) 7143df4709Smrg 7243df4709SmrgAC_ARG_ENABLE(exa, 7343df4709Smrg AS_HELP_STRING([--disable-exa], 7443df4709Smrg [Disable EXA support [[default=enabled]]]), 7543df4709Smrg [EXA="$enableval"], 7643df4709Smrg [EXA=yes]) 7743df4709Smrg 7843df4709SmrgAC_ARG_ENABLE(kms, 7943df4709Smrg AS_HELP_STRING([--disable-kms], 8043df4709Smrg [Disable KMS support [[default=enabled]]]), 8143df4709Smrg [DRM_MODE="$enableval"], 8243df4709Smrg [DRM_MODE=yes]) 8343df4709Smrg 840974d292Smrg# Store the list of server defined optional extensions in REQUIRED_MODULES 85209ff23fSmrgXORG_DRIVER_CHECK_EXT(RANDR, randrproto) 86209ff23fSmrgXORG_DRIVER_CHECK_EXT(RENDER, renderproto) 87209ff23fSmrgXORG_DRIVER_CHECK_EXT(XV, videoproto) 88209ff23fSmrgXORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) 89209ff23fSmrg 900974d292Smrg# Obtain compiler/linker options for the driver dependencies 9143df4709SmrgPKG_CHECK_MODULES(XORG, [xorg-server >= 1.3 xproto fontsproto $REQUIRED_MODULES]) 92c503f109SmrgPKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], 93c503f109Smrg HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]), 94c503f109Smrg HAVE_XEXTPROTO_71="no") 95c503f109SmrgAM_CONDITIONAL(HAVE_XEXTPROTO_71, [ test "$HAVE_XEXTPROTO_71" = "yes" ]) 96209ff23fSmrg 9743df4709Smrg# Checks for libraries. 9843df4709Smrg 9943df4709Smrg 10043df4709Smrgif test "$DRI" != no; then 10143df4709Smrg PKG_CHECK_MODULES(DRI, [libdrm >= 2.2 xf86driproto]) 10243df4709Smrg save_CPPFLAGS="$CPPFLAGS" 10343df4709Smrg CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS" 10443df4709Smrg AC_CHECK_HEADER([dri.h], 10543df4709Smrg [have_dri_h="yes"], [have_dri_h="no"],[-]) 10643df4709Smrg AC_CHECK_HEADER([sarea.h], 10743df4709Smrg [have_sarea_h="yes"], [have_sarea_h="no"],[-]) 10843df4709Smrg AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ 10943df4709Smrg#include <xorg-server.h> 11043df4709Smrg#include <dristruct.h> 11143df4709Smrg ]])], 11243df4709Smrg [have_dristruct_h="yes"], [have_dristruct_h="no"],[-]) 11343df4709Smrg AC_CHECK_HEADER([damage.h], 11443df4709Smrg [have_damage_h="yes"], [have_damage_h="no"],[-]) 11543df4709Smrg CPPFLAGS="$save_CPPFLAGS" 11643df4709Smrgfi 11743df4709Smrg 11843df4709SmrgAC_MSG_CHECKING([whether to include DRI support]) 11943df4709Smrgif test x$DRI = xauto; then 12043df4709Smrg if test "$have_dri_h" = yes -a \ 12143df4709Smrg "$have_sarea_h" = yes -a \ 12243df4709Smrg "$have_dristruct_h" = yes; then 12343df4709Smrg DRI="yes" 12443df4709Smrg else 12543df4709Smrg DRI="no" 126209ff23fSmrg fi 127209ff23fSmrgfi 12843df4709SmrgAC_MSG_RESULT([$DRI]) 12943df4709Smrg 13043df4709SmrgAM_CONDITIONAL(DRI, test x$DRI = xyes) 13143df4709Smrgif test "$DRI" = yes; then 13243df4709Smrg AC_DEFINE(XF86DRI,1,[Enable DRI driver support]) 13343df4709Smrg AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support]) 13443df4709Smrg if test "$have_damage_h" = yes; then 13543df4709Smrg AC_DEFINE(DAMAGE,1,[Use Damage extension]) 13643df4709Smrg fi 13743df4709Smrg 13843df4709Smrg save_CFLAGS="$CFLAGS" 13943df4709Smrg CFLAGS="$XORG_CFLAGS $DRI_CFLAGS $CFLAGS" 14043df4709Smrg if test "$DRM_MODE" = yes; then 14143df4709Smrg AC_CHECK_HEADER(xf86drmMode.h,[DRM_MODE=yes],[DRM_MODE=no],[#include <stdint.h> 14243df4709Smrg#include <stdlib.h>]) 14343df4709Smrg if test "x$DRM_MODE" = xyes; then 14443df4709Smrg PKG_CHECK_MODULES(LIBDRM_RADEON, [xorg-server >= 1.6.2 libdrm >= 2.4.36 libdrm_radeon], 14543df4709Smrg [LIBDRM_RADEON=yes], [LIBDRM_RADEON=no]) 14643df4709Smrg 14743df4709Smrg if test "x$LIBDRM_RADEON" = xyes; then 14843df4709Smrg AC_DEFINE(XF86DRM_MODE,1,[DRM kernel modesetting]) 14943df4709Smrg AC_DEFINE(RADEON_DRI2, 1,[Enable DRI2 code]) 15043df4709Smrg else 15143df4709Smrg DRM_MODE=no 15243df4709Smrg fi 15343df4709Smrg PKG_CHECK_MODULES(LIBUDEV, [libudev], [LIBUDEV=yes], [LIBUDEV=no]) 15443df4709Smrg if test "x$LIBUDEV" = xyes; then 15543df4709Smrg AC_DEFINE(HAVE_LIBUDEV, 1,[libudev support]) 15643df4709Smrg fi 15743df4709Smrg fi 15843df4709Smrg fi 15943df4709Smrg CFLAGS="$save_CFLAGS" 16043df4709Smrgelse 16143df4709Smrg DRM_MODE=no 16243df4709Smrgfi 16343df4709SmrgAM_CONDITIONAL(DRM_MODE, test x$DRM_MODE = xyes) 1642f39173dSmrgAM_CONDITIONAL(LIBUDEV, test x$LIBUDEV = xyes) 165209ff23fSmrg 16643df4709SmrgAC_DEFINE(USE_XAA, 1, [Build support for XAA]) 167209ff23fSmrg 16843df4709Smrg# Properly handle EXA. 16943df4709SmrgAC_MSG_CHECKING([whether to enable EXA support]) 17043df4709Smrgif test "x$EXA" = xyes; then 17143df4709Smrg AC_MSG_RESULT(yes) 172209ff23fSmrg 17343df4709Smrg SAVE_CPPFLAGS="$CPPFLAGS" 17443df4709Smrg CPPFLAGS="$CPPFLAGS $XORG_CFLAGS" 17543df4709Smrg AC_CHECK_HEADER(exa.h, 17643df4709Smrg [have_exa_h="yes"], [have_exa_h="no"]) 17743df4709Smrg CPPFLAGS="$SAVE_CPPFLAGS" 1786322c902Smrgelse 17943df4709Smrg AC_MSG_RESULT(no) 18043df4709Smrgfi 18143df4709Smrg 18243df4709SmrgSAVE_CPPFLAGS="$CPPFLAGS" 18343df4709SmrgCPPFLAGS="$CPPFLAGS $XORG_CFLAGS" 18443df4709Smrgif test "x$have_exa_h" = xyes; then 18543df4709Smrg AC_MSG_CHECKING([whether EXA version is at least 2.0.0]) 18643df4709Smrg AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ 18743df4709Smrg#include "exa.h" 18843df4709Smrg#if EXA_VERSION_MAJOR < 2 18943df4709Smrg#error OLD EXA! 19043df4709Smrg#endif 19143df4709Smrg ]])], 19243df4709Smrg [USE_EXA=yes], 19343df4709Smrg [USE_EXA=no]) 19443df4709Smrg AC_MSG_RESULT($USE_EXA) 19543df4709Smrg 19643df4709Smrg if test "x$USE_EXA" = xyes; then 19743df4709Smrg AC_DEFINE(USE_EXA, 1, [Build support for Exa]) 19843df4709Smrg fi 1996322c902Smrgfi 200209ff23fSmrg 20143df4709SmrgAC_CHECK_DECL(xf86XVFillKeyHelperDrawable, 20243df4709Smrg [AC_DEFINE(HAVE_XV_DRAWABLE_HELPER, 1, [Have xf86XVFillKeyHelperDrawable prototype])], 20343df4709Smrg [], 20443df4709Smrg [#include <xf86xv.h>]) 20543df4709Smrg 20643df4709SmrgAC_CHECK_DECL(xf86ModeBandwidth, 20743df4709Smrg [AC_DEFINE(HAVE_XF86MODEBANDWIDTH, 1, [Have xf86ModeBandwidth prototype])], 20843df4709Smrg [], 20943df4709Smrg [#include "xorg-server.h" 21043df4709Smrg #include "xf86Modes.h"]) 21143df4709Smrg 21243df4709SmrgAC_CHECK_DECL(xf86_crtc_clip_video_helper, 21343df4709Smrg [AC_DEFINE(HAVE_XF86CRTCCLIPVIDEOHELPER, 1, [Have xf86_crtc_clip_video_helper prototype])], 21443df4709Smrg [], 215209ff23fSmrg [#include <X11/Xmd.h> 21643df4709Smrg #include "xorg-server.h" 21743df4709Smrg #include "xf86i2c.h" 21843df4709Smrg #include "xf86Crtc.h"]) 21943df4709Smrg 22043df4709SmrgAC_CHECK_DECL(xf86RotateFreeShadow, 22143df4709Smrg [AC_DEFINE(HAVE_FREE_SHADOW, 1, [have new FreeShadow API])], 22243df4709Smrg [], 223209ff23fSmrg [#include <xorg-server.h> 22443df4709Smrg #include <windowstr.h> 22543df4709Smrg #include <xf86Crtc.h>]) 22643df4709Smrg 22743df4709SmrgAC_CHECK_DECL(pci_device_enable, 22843df4709Smrg [AC_DEFINE(HAVE_PCI_DEVICE_ENABLE, 1, [Have pci_device_enable prototype])], 22943df4709Smrg [], 23043df4709Smrg [#include <pciaccess.h>]) 23143df4709Smrg 23243df4709SmrgAC_CHECK_DECL(XSERVER_LIBPCIACCESS, 23343df4709Smrg [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no], 23443df4709Smrg [#include "xorg-server.h"]) 23543df4709Smrg 23643df4709SmrgAC_CHECK_HEADERS([list.h], 23743df4709Smrg [have_list_h="yes"], [have_list_h="no"], 23843df4709Smrg [#include <X11/Xdefs.h> 23943df4709Smrg #include "xorg-server.h"]) 24043df4709Smrg 24143df4709Smrgif test "x$have_list_h" = xyes; then 24243df4709Smrg AC_CHECK_DECL(xorg_list_init, 24343df4709Smrg [AC_DEFINE(HAVE_XORG_LIST, 1, [Have xorg_list API])], [], 24443df4709Smrg [#include <X11/Xdefs.h> 24543df4709Smrg #include "xorg-server.h" 24643df4709Smrg #include "list.h"]) 24743df4709Smrgfi 24840732134Srjs 249209ff23fSmrgCPPFLAGS="$SAVE_CPPFLAGS" 250209ff23fSmrg 25143df4709SmrgAM_CONDITIONAL(USE_EXA, test "x$USE_EXA" = xyes) 25243df4709Smrg 25343df4709SmrgAM_CONDITIONAL(XF86DRM_MODE, test "x$LIBDRM_RADEON" = xyes) 25443df4709Smrg 25543df4709Smrgif test "x$XSERVER_LIBPCIACCESS" = xyes; then 25643df4709Smrg PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) 25743df4709Smrg XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS" 25843df4709Smrgfi 25943df4709SmrgAM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) 260209ff23fSmrg 261209ff23fSmrg# Checks for headers/macros for byte swapping 262209ff23fSmrg# Known variants: 263209ff23fSmrg# <byteswap.h> bswap_16, bswap_32, bswap_64 (glibc) 264209ff23fSmrg# <sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD) 265209ff23fSmrg# <sys/endian.h> bswap16, bswap32, bswap64 (other BSD's) 266209ff23fSmrg# and a fallback to local macros if none of the above are found 267209ff23fSmrg 268209ff23fSmrg# if <byteswap.h> is found, assume it's the correct version 269209ff23fSmrgAC_CHECK_HEADERS([byteswap.h]) 270209ff23fSmrg 271209ff23fSmrg# if <sys/endian.h> is found, have to check which version 272209ff23fSmrgAC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"]) 273209ff23fSmrg 274209ff23fSmrgif test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then 275209ff23fSmrg AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros]) 276209ff23fSmrg AC_LINK_IFELSE([AC_LANG_PROGRAM([ 277209ff23fSmrg#include <sys/types.h> 278209ff23fSmrg#include <sys/endian.h> 279209ff23fSmrg ], [ 280209ff23fSmrgint a = 1, b; 281209ff23fSmrgb = __swap16(a); 282209ff23fSmrg ]) 283209ff23fSmrg], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no']) 284209ff23fSmrg AC_MSG_RESULT([$SYS_ENDIAN__SWAP]) 285209ff23fSmrg 286209ff23fSmrg AC_MSG_CHECKING([for bswap16 variant of <sys/endian.h> byteswapping macros]) 287209ff23fSmrg AC_LINK_IFELSE([AC_LANG_PROGRAM([ 288209ff23fSmrg#include <sys/types.h> 289209ff23fSmrg#include <sys/endian.h> 290209ff23fSmrg ], [ 291209ff23fSmrgint a = 1, b; 292209ff23fSmrgb = bswap16(a); 293209ff23fSmrg ]) 294209ff23fSmrg], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no']) 295209ff23fSmrg AC_MSG_RESULT([$SYS_ENDIAN_BSWAP]) 296209ff23fSmrg 297209ff23fSmrg if test "$SYS_ENDIAN_BSWAP" = "yes" ; then 298209ff23fSmrg USE_SYS_ENDIAN_H=yes 299209ff23fSmrg BSWAP=bswap 300209ff23fSmrg else 301209ff23fSmrg if test "$SYS_ENDIAN__SWAP" = "yes" ; then 302209ff23fSmrg USE_SYS_ENDIAN_H=yes 303209ff23fSmrg BSWAP=__swap 304209ff23fSmrg else 305209ff23fSmrg USE_SYS_ENDIAN_H=no 306209ff23fSmrg fi 307209ff23fSmrg fi 308209ff23fSmrg 309209ff23fSmrg if test "$USE_SYS_ENDIAN_H" = "yes" ; then 310209ff23fSmrg AC_DEFINE([USE_SYS_ENDIAN_H], 1, 311209ff23fSmrg [Define to use byteswap macros from <sys/endian.h>]) 312209ff23fSmrg AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16, 313209ff23fSmrg [Define to 16-bit byteswap macro]) 314209ff23fSmrg AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32, 315209ff23fSmrg [Define to 32-bit byteswap macro]) 316209ff23fSmrg AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64, 317209ff23fSmrg [Define to 64-bit byteswap macro]) 318209ff23fSmrg fi 319209ff23fSmrgfi 320209ff23fSmrg 32143df4709Smrgcase $host_os in 32243df4709Smrg *linux*) 32343df4709Smrg AC_DEFINE(FGL_LINUX, 1, [Use linux pragma pack]) ;; 32443df4709Smrgesac 32543df4709Smrg 326209ff23fSmrgAC_SUBST([moduledir]) 327209ff23fSmrg 328209ff23fSmrgDRIVER_NAME=ati 329209ff23fSmrgAC_SUBST([DRIVER_NAME]) 330209ff23fSmrg 331209ff23fSmrgAC_MSG_NOTICE( 332209ff23fSmrg[The atimisc sub-driver has been split out to xf86-video-mach64:] 333209ff23fSmrg[ git://anongit.freedesktop.org/git/xorg/driver/xf86-video-mach64] 334209ff23fSmrg[Please install that driver as well for mach64-based cards.] 335209ff23fSmrg) 336209ff23fSmrg 337209ff23fSmrgAC_MSG_NOTICE( 338209ff23fSmrg[The r128 sub-driver has been split out to xf86-video-r128:] 339209ff23fSmrg[ git://anongit.freedesktop.org/git/xorg/driver/xf86-video-r128] 340209ff23fSmrg[Please install that driver as well for rage128-based cards.] 341209ff23fSmrg) 342209ff23fSmrg 3430974d292SmrgAC_CONFIG_FILES([ 3440974d292Smrg Makefile 3450974d292Smrg src/Makefile 3460974d292Smrg man/Makefile 347209ff23fSmrg]) 3480974d292SmrgAC_OUTPUT 349ad43ddacSmrg 350ad43ddacSmrgdnl 351ad43ddacSmrgdnl Output some configuration info for the user 352ad43ddacSmrgdnl 353ad43ddacSmrgecho "" 354ad43ddacSmrgecho " prefix: $prefix" 355ad43ddacSmrgecho " exec_prefix: $exec_prefix" 356ad43ddacSmrgecho " libdir: $libdir" 357ad43ddacSmrgecho " includedir: $includedir" 358ad43ddacSmrg 35943df4709Smrg 36043df4709Smrgecho "" 36143df4709Smrgecho " Kernel modesetting: $DRM_MODE" 36243df4709Smrg 363ad43ddacSmrgecho "" 364ad43ddacSmrgecho " CFLAGS: $CFLAGS" 365ad43ddacSmrgecho " CXXFLAGS: $CXXFLAGS" 366ad43ddacSmrgecho " Macros: $DEFINES" 367ad43ddacSmrg 368ad43ddacSmrgecho "" 369ad43ddacSmrgecho " Run '${MAKE-make}' to build xf86-video-ati" 370ad43ddacSmrgecho "" 371