configure.ac revision 209ff23f
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# Process this file with autoconf to produce a configure script
22
23AC_PREREQ(2.57)
24AC_INIT([xf86-video-ati],
25        6.9.0,
26        [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
27        xf86-video-ati)
28
29AC_CONFIG_SRCDIR([Makefile.am])
30AM_CONFIG_HEADER([config.h])
31AC_CONFIG_AUX_DIR(.)
32
33AM_INIT_AUTOMAKE([dist-bzip2])
34
35AM_MAINTAINER_MODE
36
37# Checks for programs.
38AC_DISABLE_STATIC
39AC_PROG_LIBTOOL
40AC_PROG_CC
41
42if test "x$GCC" = "xyes"; then
43	CPPFLAGS="$CPPFLAGS -Wall"
44fi
45
46AH_TOP([#include "xorg-server.h"])
47
48AC_ARG_WITH(xorg-module-dir,
49            AC_HELP_STRING([--with-xorg-module-dir=DIR],
50                           [Default xorg module directory [[default=$libdir/xorg/modules]]]),
51            [moduledir="$withval"],
52            [moduledir="$libdir/xorg/modules"])
53
54AC_ARG_ENABLE(dri, AC_HELP_STRING([--disable-dri],
55                                  [Disable DRI support [[default=auto]]]),
56              [DRI="$enableval"],
57              [DRI=auto])
58
59AC_ARG_ENABLE(exa,
60              AC_HELP_STRING([--disable-exa],
61                             [Disable EXA support [[default=enabled]]]),
62              [EXA="$enableval"],
63              [EXA=yes])
64
65AC_ARG_WITH(xserver-source,AC_HELP_STRING([--with-xserver-source=XSERVER_SOURCE],
66                                          [Path to X server source tree]),
67                           [ XSERVER_SOURCE="$withval" ],
68                           [ XSERVER_SOURCE="" ])
69
70# Checks for extensions
71XORG_DRIVER_CHECK_EXT(XINERAMA, xineramaproto)
72XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
73XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
74XORG_DRIVER_CHECK_EXT(XV, videoproto)
75XORG_DRIVER_CHECK_EXT(XF86MISC, xf86miscproto)
76XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
77
78# Checks for pkg-config packages
79PKG_CHECK_MODULES(XORG, [xorg-server >= 1.2 xproto fontsproto $REQUIRED_MODULES])
80sdkdir=$(pkg-config --variable=sdkdir xorg-server)
81
82# Checks for libraries.
83
84# Checks for header files.
85AC_HEADER_STDC
86
87if test "$DRI" != no; then
88	AC_CHECK_FILE([${sdkdir}/dri.h],
89                      [have_dri_h="yes"], [have_dri_h="no"])
90	AC_CHECK_FILE([${sdkdir}/sarea.h],
91                      [have_sarea_h="yes"], [have_sarea_h="no"])
92	AC_CHECK_FILE([${sdkdir}/dristruct.h],
93                      [have_dristruct_h="yes"], [have_dristruct_h="no"])
94	AC_CHECK_FILE([${sdkdir}/damage.h],
95                      [have_damage_h="yes"], [have_damage_h="no"])
96fi
97
98AC_MSG_CHECKING([whether to include DRI support])
99if test x$DRI = xauto; then
100	if test "$have_dri_h" = yes -a \
101                "$have_sarea_h" = yes -a \
102                "$have_dristruct_h" = yes; then
103		DRI="yes"
104	else
105		DRI="no"
106	fi
107fi
108AC_MSG_RESULT([$DRI])
109
110AM_CONDITIONAL(DRI, test x$DRI = xyes)
111if test "$DRI" = yes; then
112	PKG_CHECK_MODULES(DRI, [libdrm >= 2.2 xf86driproto])
113        AC_DEFINE(XF86DRI,1,[Enable DRI driver support])
114        AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
115	if test "$have_damage_h" = yes; then
116		AC_DEFINE(DAMAGE,1,[Use Damage extension])
117	fi
118fi
119
120save_CFLAGS="$CFLAGS"
121CFLAGS="$XORG_CFLAGS"
122AC_CHECK_HEADER(xf86Modes.h,[XMODES=yes],[XMODES=no],[#include "xorg-server.h"])
123CFLAGS="$save_CFLAGS"
124
125AC_DEFINE(USE_XAA, 1, [Build support for XAA])
126
127# Properly handle EXA.
128AC_MSG_CHECKING([whether to enable EXA support])
129if test "x$EXA" = xyes; then
130        AC_MSG_RESULT(yes)
131
132        SAVE_CPPFLAGS="$CPPFLAGS"
133        CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
134        AC_CHECK_HEADER(exa.h,
135                       [have_exa_h="yes"], [have_exa_h="no"])
136        CPPFLAGS="$SAVE_CPPFLAGS"
137else
138        AC_MSG_RESULT(no)
139fi 
140
141SAVE_CPPFLAGS="$CPPFLAGS"
142CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
143if test "x$have_exa_h" = xyes; then
144        AC_MSG_CHECKING([whether EXA version is at least 2.0.0])
145        AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
146#include "exa.h"
147#if EXA_VERSION_MAJOR < 2
148#error OLD EXA!
149#endif
150                          ]])],
151                          [USE_EXA=yes],
152                          [USE_EXA=no])
153        AC_MSG_RESULT($USE_EXA)
154
155        if test "x$USE_EXA" = xyes; then
156                AC_DEFINE(USE_EXA, 1, [Build support for Exa])
157        fi
158fi
159
160AC_CHECK_DECL(xf86XVFillKeyHelperDrawable,
161	      [AC_DEFINE(HAVE_XV_DRAWABLE_HELPER, 1, [Have xf86XVFillKeyHelperDrawable prototype])],
162	      [],
163	      [#include <xf86xv.h>])
164
165AC_CHECK_DECL(xf86ModeBandwidth,
166	      [AC_DEFINE(HAVE_XF86MODEBANDWIDTH, 1, [Have xf86ModeBandwidth prototype])],
167	      [],
168	      [#include "xorg-server.h"
169	       #include "xf86Modes.h"])
170
171AC_CHECK_DECL(xf86_crtc_clip_video_helper,
172	      [AC_DEFINE(HAVE_XF86CRTCCLIPVIDEOHELPER, 1, [Have xf86_crtc_clip_video_helper prototype])],
173	      [],
174	      [#include <X11/Xmd.h>
175	       #include "xorg-server.h"
176	       #include "xf86i2c.h"
177	       #include "xf86Crtc.h"])
178
179AC_CHECK_DECL(xf86RotateFreeShadow,
180	      [AC_DEFINE(HAVE_FREE_SHADOW, 1, [have new FreeShadow API])],
181	      [],
182	      [#include <xorg-server.h>
183               #include <windowstr.h>
184	       #include <xf86Crtc.h>])
185
186AC_CHECK_DECL(pci_device_enable,
187	      [AC_DEFINE(HAVE_PCI_DEVICE_ENABLE, 1, [Have pci_device_enable prototype])],
188	      [],
189	      [#include <pciaccess.h>])
190
191AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
192	      [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no],
193	      [#include "xorg-server.h"])
194
195AM_CONDITIONAL(XMODES, test "x$XMODES" = xno)
196
197if test "x$XSERVER_SOURCE" = x; then
198        if test -d ../../xserver; then
199                XSERVER_SOURCE="`cd ../../xserver && pwd`"
200        fi
201fi
202
203if test -d "$XSERVER_SOURCE"; then
204        case "$XSERVER_SOURCE" in
205        /*)
206                ;;
207        *)
208                XSERVER_SOURCE="`cd $XSERVER_SOURCE && pwd`"
209        esac
210        if test -f src/modes/xf86Modes.h; then
211                :
212        else
213                ln -sf $XSERVER_SOURCE/hw/xfree86/modes src/modes
214        fi
215
216        if test -f src/parser/xf86Parser.h; then
217                :
218        else
219                ln -sf $XSERVER_SOURCE/hw/xfree86/parser src/parser
220        fi
221fi
222if test "x$XMODES" = xyes; then
223        AC_MSG_NOTICE([X server has new mode code])
224        AC_DEFINE(XMODES, 1,[X server has built-in mode code])
225        XMODES_CFLAGS=
226else
227        if test -f src/modes/xf86Modes.h -a -f src/parser/xf86Parser.h; then
228                AC_MSG_NOTICE([X server is missing new mode code, using local copy])
229        else
230                AC_MSG_ERROR([Must have X server >= 1.3 source tree for mode setting code. Please specify --with-xserver-source])
231        fi
232        XMODES_CFLAGS='-DXF86_MODES_RENAME -I$(top_srcdir)/src -I$(top_srcdir)/src/modes -I$(top_srcdir)/src/parser'
233fi
234
235AC_SUBST([XMODES_CFLAGS])
236
237CPPFLAGS="$SAVE_CPPFLAGS"
238
239AM_CONDITIONAL(USE_EXA, test "x$USE_EXA" = xyes)
240
241if test "x$XSERVER_LIBPCIACCESS" = xyes; then
242    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
243    XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
244fi
245AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
246
247# Checks for headers/macros for byte swapping
248# Known variants:
249#	<byteswap.h> bswap_16, bswap_32, bswap_64  (glibc)
250#	<sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD)
251#	<sys/endian.h> bswap16, bswap32, bswap64 (other BSD's)
252#	and a fallback to local macros if none of the above are found
253
254# if <byteswap.h> is found, assume it's the correct version
255AC_CHECK_HEADERS([byteswap.h])
256
257# if <sys/endian.h> is found, have to check which version
258AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"])
259
260if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then
261	AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros])
262	AC_LINK_IFELSE([AC_LANG_PROGRAM([
263#include <sys/types.h>
264#include <sys/endian.h>
265 ], [
266int a = 1, b;
267b = __swap16(a);
268 ])
269], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no'])
270	AC_MSG_RESULT([$SYS_ENDIAN__SWAP])
271
272	AC_MSG_CHECKING([for bswap16 variant of <sys/endian.h> byteswapping macros])
273	AC_LINK_IFELSE([AC_LANG_PROGRAM([
274#include <sys/types.h>
275#include <sys/endian.h>
276 ], [
277int a = 1, b;
278b = bswap16(a);
279 ])
280], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no'])
281	AC_MSG_RESULT([$SYS_ENDIAN_BSWAP])
282
283    	if test "$SYS_ENDIAN_BSWAP" = "yes" ; then
284		USE_SYS_ENDIAN_H=yes
285		BSWAP=bswap
286	else	
287	    	if test "$SYS_ENDIAN__SWAP" = "yes" ; then
288			USE_SYS_ENDIAN_H=yes
289			BSWAP=__swap
290		else
291			USE_SYS_ENDIAN_H=no
292		fi
293	fi
294
295	if test "$USE_SYS_ENDIAN_H" = "yes" ; then
296	    AC_DEFINE([USE_SYS_ENDIAN_H], 1, 
297		[Define to use byteswap macros from <sys/endian.h>])
298	    AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16, 
299			[Define to 16-bit byteswap macro])
300	    AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32, 
301			[Define to 32-bit byteswap macro])
302	    AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64, 
303			[Define to 64-bit byteswap macro])
304	fi
305fi
306
307case $host_os in
308  *linux*)
309  AC_DEFINE(FGL_LINUX, 1, [Use linux pragma pack]) ;;
310esac
311
312AC_SUBST([XORG_CFLAGS])
313AC_SUBST([DRI_CFLAGS])
314AC_SUBST([moduledir])
315
316DRIVER_NAME=ati
317AC_SUBST([DRIVER_NAME])
318
319XORG_MANPAGE_SECTIONS
320XORG_RELEASE_VERSION
321XORG_CHECK_LINUXDOC
322
323AC_MSG_NOTICE(
324[The atimisc sub-driver has been split out to xf86-video-mach64:]
325[    git://anongit.freedesktop.org/git/xorg/driver/xf86-video-mach64]
326[Please install that driver as well for mach64-based cards.]
327)
328
329AC_MSG_NOTICE(
330[The r128 sub-driver has been split out to xf86-video-r128:]
331[    git://anongit.freedesktop.org/git/xorg/driver/xf86-video-r128]
332[Please install that driver as well for rage128-based cards.]
333)
334
335AC_OUTPUT([
336	Makefile
337	src/Makefile
338	man/Makefile
339])
340