configure.ac revision ad43ddac
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.13.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])
31
32# Require xorg-macros: XORG_DEFAULT_OPTIONS
33m4_ifndef([XORG_MACROS_VERSION], 
34          [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
35XORG_MACROS_VERSION(1.3)
36XORG_DEFAULT_OPTIONS
37
38AC_CONFIG_AUX_DIR(.)
39
40AM_INIT_AUTOMAKE([foreign dist-bzip2])
41AC_SYS_LARGEFILE
42
43AM_MAINTAINER_MODE
44
45# Checks for programs.
46AC_DISABLE_STATIC
47AC_PROG_LIBTOOL
48AC_PROG_CC
49
50if test "x$GCC" = "xyes"; then
51	CPPFLAGS="$CPPFLAGS -Wall"
52fi
53
54AH_TOP([#include "xorg-server.h"])
55
56AC_ARG_WITH(xorg-module-dir,
57            AC_HELP_STRING([--with-xorg-module-dir=DIR],
58                           [Default xorg module directory [[default=$libdir/xorg/modules]]]),
59            [moduledir="$withval"],
60            [moduledir="$libdir/xorg/modules"])
61
62AC_ARG_ENABLE(dri, AC_HELP_STRING([--disable-dri],
63                                  [Disable DRI support [[default=auto]]]),
64              [DRI="$enableval"],
65              [DRI=auto])
66
67AC_ARG_ENABLE(exa,
68              AC_HELP_STRING([--disable-exa],
69                             [Disable EXA support [[default=enabled]]]),
70              [EXA="$enableval"],
71              [EXA=yes])
72
73AC_ARG_ENABLE(kms,
74              AC_HELP_STRING([--disable-kms],
75                             [Disable KMS support [[default=enabled]]]),
76              [DRM_MODE="$enableval"],
77              [DRM_MODE=yes])
78
79AC_ARG_WITH(xserver-source,AC_HELP_STRING([--with-xserver-source=XSERVER_SOURCE],
80                                          [Path to X server source tree]),
81                           [ XSERVER_SOURCE="$withval" ],
82                           [ XSERVER_SOURCE="" ])
83
84# Checks for extensions
85XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
86XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
87XORG_DRIVER_CHECK_EXT(XV, videoproto)
88XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
89
90# Checks for pkg-config packages
91PKG_CHECK_MODULES(XORG, [xorg-server >= 1.2 xproto fontsproto $REQUIRED_MODULES])
92PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
93                  HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]),
94                  HAVE_XEXTPROTO_71="no")
95AM_CONDITIONAL(HAVE_XEXTPROTO_71, [ test "$HAVE_XEXTPROTO_71" = "yes" ])
96
97# Checks for libraries.
98
99# Checks for header files.
100AC_HEADER_STDC
101
102if test "$DRI" != no; then
103	PKG_CHECK_MODULES(DRI, [libdrm >= 2.2 xf86driproto])
104	save_CPPFLAGS="$CPPFLAGS"
105	CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS"
106	AC_CHECK_HEADER([dri.h],
107                      [have_dri_h="yes"], [have_dri_h="no"],[-])
108	AC_CHECK_HEADER([sarea.h],
109                      [have_sarea_h="yes"], [have_sarea_h="no"],[-])
110	AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
111#include <xorg-server.h>
112#include <dristruct.h>
113                      ]])],
114                      [have_dristruct_h="yes"], [have_dristruct_h="no"],[-])
115	AC_CHECK_HEADER([damage.h],
116                      [have_damage_h="yes"], [have_damage_h="no"],[-])
117	CPPFLAGS="$save_CPPFLAGS"
118fi
119
120AC_MSG_CHECKING([whether to include DRI support])
121if test x$DRI = xauto; then
122	if test "$have_dri_h" = yes -a \
123                "$have_sarea_h" = yes -a \
124                "$have_dristruct_h" = yes; then
125		DRI="yes"
126	else
127		DRI="no"
128	fi
129fi
130AC_MSG_RESULT([$DRI])
131
132AM_CONDITIONAL(DRI, test x$DRI = xyes)
133if test "$DRI" = yes; then
134        AC_DEFINE(XF86DRI,1,[Enable DRI driver support])
135        AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
136	if test "$have_damage_h" = yes; then
137		AC_DEFINE(DAMAGE,1,[Use Damage extension])
138	fi
139
140        save_CFLAGS="$CFLAGS"
141        CFLAGS="$XORG_CFLAGS $DRI_CFLAGS $CFLAGS"
142	if test "$DRM_MODE" = yes; then
143	   	AC_CHECK_HEADER(xf86drmMode.h,[DRM_MODE=yes],[DRM_MODE=no],[#include <stdint.h>
144#include <stdlib.h>])
145		if test "x$DRM_MODE" = xyes; then
146			PKG_CHECK_MODULES(LIBDRM_RADEON, [xorg-server >= 1.6.2 libdrm_radeon],
147			[LIBDRM_RADEON=yes], [LIBDRM_RADEON=no])
148
149			if test "x$LIBDRM_RADEON" = xyes; then
150			   	AC_DEFINE(XF86DRM_MODE,1,[DRM kernel modesetting])
151				AC_DEFINE(RADEON_DRI2, 1,[Enable DRI2 code])
152                        else
153                                DRM_MODE=no
154			fi
155        	fi
156	fi
157	CFLAGS="$save_CFLAGS"
158else
159	DRM_MODE=no
160fi
161AM_CONDITIONAL(DRM_MODE, test x$DRM_MODE = xyes)
162
163save_CFLAGS="$CFLAGS"
164CFLAGS="$XORG_CFLAGS"
165AC_CHECK_HEADER(xf86Modes.h,[XMODES=yes],[XMODES=no],[#include "xorg-server.h"])
166CFLAGS="$save_CFLAGS"
167
168AC_DEFINE(USE_XAA, 1, [Build support for XAA])
169
170# Properly handle EXA.
171AC_MSG_CHECKING([whether to enable EXA support])
172if test "x$EXA" = xyes; then
173        AC_MSG_RESULT(yes)
174
175        SAVE_CPPFLAGS="$CPPFLAGS"
176        CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
177        AC_CHECK_HEADER(exa.h,
178                       [have_exa_h="yes"], [have_exa_h="no"])
179        CPPFLAGS="$SAVE_CPPFLAGS"
180else
181        AC_MSG_RESULT(no)
182fi 
183
184SAVE_CPPFLAGS="$CPPFLAGS"
185CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
186if test "x$have_exa_h" = xyes; then
187        AC_MSG_CHECKING([whether EXA version is at least 2.0.0])
188        AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
189#include "exa.h"
190#if EXA_VERSION_MAJOR < 2
191#error OLD EXA!
192#endif
193                          ]])],
194                          [USE_EXA=yes],
195                          [USE_EXA=no])
196        AC_MSG_RESULT($USE_EXA)
197
198        if test "x$USE_EXA" = xyes; then
199                AC_DEFINE(USE_EXA, 1, [Build support for Exa])
200        fi
201fi
202
203AC_CHECK_DECL(xf86XVFillKeyHelperDrawable,
204	      [AC_DEFINE(HAVE_XV_DRAWABLE_HELPER, 1, [Have xf86XVFillKeyHelperDrawable prototype])],
205	      [],
206	      [#include <xf86xv.h>])
207
208AC_CHECK_DECL(xf86ModeBandwidth,
209	      [AC_DEFINE(HAVE_XF86MODEBANDWIDTH, 1, [Have xf86ModeBandwidth prototype])],
210	      [],
211	      [#include "xorg-server.h"
212	       #include "xf86Modes.h"])
213
214AC_CHECK_DECL(xf86_crtc_clip_video_helper,
215	      [AC_DEFINE(HAVE_XF86CRTCCLIPVIDEOHELPER, 1, [Have xf86_crtc_clip_video_helper prototype])],
216	      [],
217	      [#include <X11/Xmd.h>
218	       #include "xorg-server.h"
219	       #include "xf86i2c.h"
220	       #include "xf86Crtc.h"])
221
222AC_CHECK_DECL(xf86RotateFreeShadow,
223	      [AC_DEFINE(HAVE_FREE_SHADOW, 1, [have new FreeShadow API])],
224	      [],
225	      [#include <xorg-server.h>
226               #include <windowstr.h>
227	       #include <xf86Crtc.h>])
228
229AC_CHECK_DECL(pci_device_enable,
230	      [AC_DEFINE(HAVE_PCI_DEVICE_ENABLE, 1, [Have pci_device_enable prototype])],
231	      [],
232	      [#include <pciaccess.h>])
233
234AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
235	      [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no],
236	      [#include "xorg-server.h"])
237
238AM_CONDITIONAL(XMODES, test "x$XMODES" = xno)
239
240if test "x$XSERVER_SOURCE" = x; then
241        if test -d ../../xserver; then
242                XSERVER_SOURCE="`cd ../../xserver && pwd`"
243        fi
244fi
245
246if test -d "$XSERVER_SOURCE"; then
247        case "$XSERVER_SOURCE" in
248        /*)
249                ;;
250        *)
251                XSERVER_SOURCE="`cd $XSERVER_SOURCE && pwd`"
252        esac
253        if test -f src/modes/xf86Modes.h; then
254                :
255        else
256                ln -sf $XSERVER_SOURCE/hw/xfree86/modes src/modes
257        fi
258
259        if test -f src/parser/xf86Parser.h; then
260                :
261        else
262                ln -sf $XSERVER_SOURCE/hw/xfree86/parser src/parser
263        fi
264fi
265if test "x$XMODES" = xyes; then
266        AC_MSG_NOTICE([X server has new mode code])
267        AC_DEFINE(XMODES, 1,[X server has built-in mode code])
268        XMODES_CFLAGS=
269else
270        if test -f src/modes/xf86Modes.h -a -f src/parser/xf86Parser.h; then
271                AC_MSG_NOTICE([X server is missing new mode code, using local copy])
272        else
273                AC_MSG_ERROR([Must have X server >= 1.3 source tree for mode setting code. Please specify --with-xserver-source])
274        fi
275        XMODES_CFLAGS='-DXF86_MODES_RENAME -I$(top_srcdir)/src -I$(top_srcdir)/src/modes -I$(top_srcdir)/src/parser'
276fi
277
278AC_SUBST([XMODES_CFLAGS])
279
280CPPFLAGS="$SAVE_CPPFLAGS"
281
282AM_CONDITIONAL(USE_EXA, test "x$USE_EXA" = xyes)
283
284AM_CONDITIONAL(XF86DRM_MODE, test "x$LIBDRM_RADEON" = xyes)
285
286if test "x$XSERVER_LIBPCIACCESS" = xyes; then
287    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
288    XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
289fi
290AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
291
292# Checks for headers/macros for byte swapping
293# Known variants:
294#	<byteswap.h> bswap_16, bswap_32, bswap_64  (glibc)
295#	<sys/endian.h> __swap16, __swap32, __swap64 (OpenBSD)
296#	<sys/endian.h> bswap16, bswap32, bswap64 (other BSD's)
297#	and a fallback to local macros if none of the above are found
298
299# if <byteswap.h> is found, assume it's the correct version
300AC_CHECK_HEADERS([byteswap.h])
301
302# if <sys/endian.h> is found, have to check which version
303AC_CHECK_HEADER([sys/endian.h], [HAVE_SYS_ENDIAN_H="yes"], [HAVE_SYS_ENDIAN_H="no"])
304
305if test "x$HAVE_SYS_ENDIAN_H" = "xyes" ; then
306	AC_MSG_CHECKING([for __swap16 variant of <sys/endian.h> byteswapping macros])
307	AC_LINK_IFELSE([AC_LANG_PROGRAM([
308#include <sys/types.h>
309#include <sys/endian.h>
310 ], [
311int a = 1, b;
312b = __swap16(a);
313 ])
314], [SYS_ENDIAN__SWAP='yes'], [SYS_ENDIAN__SWAP='no'])
315	AC_MSG_RESULT([$SYS_ENDIAN__SWAP])
316
317	AC_MSG_CHECKING([for bswap16 variant of <sys/endian.h> byteswapping macros])
318	AC_LINK_IFELSE([AC_LANG_PROGRAM([
319#include <sys/types.h>
320#include <sys/endian.h>
321 ], [
322int a = 1, b;
323b = bswap16(a);
324 ])
325], [SYS_ENDIAN_BSWAP='yes'], [SYS_ENDIAN_BSWAP='no'])
326	AC_MSG_RESULT([$SYS_ENDIAN_BSWAP])
327
328    	if test "$SYS_ENDIAN_BSWAP" = "yes" ; then
329		USE_SYS_ENDIAN_H=yes
330		BSWAP=bswap
331	else	
332	    	if test "$SYS_ENDIAN__SWAP" = "yes" ; then
333			USE_SYS_ENDIAN_H=yes
334			BSWAP=__swap
335		else
336			USE_SYS_ENDIAN_H=no
337		fi
338	fi
339
340	if test "$USE_SYS_ENDIAN_H" = "yes" ; then
341	    AC_DEFINE([USE_SYS_ENDIAN_H], 1, 
342		[Define to use byteswap macros from <sys/endian.h>])
343	    AC_DEFINE_UNQUOTED([bswap_16], ${BSWAP}16, 
344			[Define to 16-bit byteswap macro])
345	    AC_DEFINE_UNQUOTED([bswap_32], ${BSWAP}32, 
346			[Define to 32-bit byteswap macro])
347	    AC_DEFINE_UNQUOTED([bswap_64], ${BSWAP}64, 
348			[Define to 64-bit byteswap macro])
349	fi
350fi
351
352case $host_os in
353  *linux*)
354  AC_DEFINE(FGL_LINUX, 1, [Use linux pragma pack]) ;;
355esac
356
357AC_SUBST([XORG_CFLAGS])
358AC_SUBST([DRI_CFLAGS])
359AC_SUBST([LIBDRM_RADEON_CFLAGS])
360AC_SUBST([LIBDRM_RADEON_LIBS])
361AC_SUBST([moduledir])
362
363DRIVER_NAME=ati
364AC_SUBST([DRIVER_NAME])
365
366AC_MSG_NOTICE(
367[The atimisc sub-driver has been split out to xf86-video-mach64:]
368[    git://anongit.freedesktop.org/git/xorg/driver/xf86-video-mach64]
369[Please install that driver as well for mach64-based cards.]
370)
371
372AC_MSG_NOTICE(
373[The r128 sub-driver has been split out to xf86-video-r128:]
374[    git://anongit.freedesktop.org/git/xorg/driver/xf86-video-r128]
375[Please install that driver as well for rage128-based cards.]
376)
377
378AC_OUTPUT([
379	Makefile
380	src/Makefile
381	man/Makefile
382])
383
384dnl
385dnl Output some configuration info for the user
386dnl
387echo ""
388echo "        prefix:              $prefix"
389echo "        exec_prefix:         $exec_prefix"
390echo "        libdir:              $libdir"
391echo "        includedir:          $includedir"
392
393
394echo ""
395echo "        Kernel modesetting:  $DRM_MODE"
396
397echo ""
398echo "        CFLAGS:              $CFLAGS"
399echo "        CXXFLAGS:            $CXXFLAGS"
400echo "        Macros:              $DEFINES"
401
402echo ""
403echo "        Run '${MAKE-make}' to build xf86-video-ati"
404echo ""
405