1dnl  Process this file with autoconf to produce a configure script.
2dnl  Copyright (C) 1998 John Harper <john@dcs.warwick.ac.uk>
3dnl  $Id: configure.in,v 1.140 2008/02/18 20:59:59 jkozicki Exp $
4dnl
5dnl  This file is part of sawfish.
6dnl
7dnl  sawfish is free software; you can redistribute it and/or modify it
8dnl  under the terms of the GNU General Public License as published by
9dnl  the Free Software Foundation; either version 2, or (at your option)
10dnl  any later version.
11dnl
12dnl  sawfish is distributed in the hope that it will be useful, but
13dnl  WITHOUT ANY WARRANTY; without even the implied warranty of
14dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15dnl  GNU General Public License for more details.
16dnl
17dnl  You should have received a copy of the GNU General Public License
18dnl  along with sawfish; see the file COPYING.  If not, write to
19dnl  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20
21AC_REVISION($Revision: 1.141 $)
22AC_INIT(src/sawfish.h)
23
24AC_CONFIG_HEADER(config.h)
25AC_CONFIG_MACRO_DIR([m4])
26
27AM_PROG_LIBTOOL
28
29dnl Release versioning info
30version="1.13.0"
31subversion=""
32codename="Bolero"
33
34VERSION=${version}
35
36PACKAGE="sawfish"
37GETTEXT_PACKAGE=${PACKAGE}
38
39install_sh=../install-sh
40
41SUBDIRS="src lisp scripts themes sounds man"
42
43sawfishdir='${datadir}/sawfish'
44lispdir='${sawfishdir}/lisp'
45localedir='${datadir}/locale'
46sawfishexecdir='${libdir}/sawfish'
47
48dnl Several checks
49AC_C_CONST
50AC_C_INLINE
51AC_C_BIGENDIAN
52AC_TYPE_SIZE_T
53AC_FUNC_ALLOCA
54AC_FUNC_VPRINTF
55AC_CHECK_FUNCS(gethostname socket snprintf getpagesize)
56AC_PROG_INSTALL
57AC_CHECK_LIB(nsl, xdr_void)
58AC_CHECK_LIB(socket, bind)
59AC_HEADER_SYS_WAIT
60AC_HEADER_TIME
61AC_CHECK_HEADERS(fcntl.h sys/time.h sys/utsname.h)
62PKG_PROG_PKG_CONFIG
63
64dnl Check for X headers, etc
65_cppflags="${CPPFLAGS}"
66CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
67
68AC_ARG_WITH(xorg-x11r7,
69  [  --with-xorg-x11r7	  Use X.Org X11R7
70  --without-xorg-x11r7	  Use X.Org/XFree86 X11R6 instead], [], [with_xorg_x11r7=yes])
71
72if test "$with_xorg_x11r7" != "no"; then
73
74AC_CHECK_HEADERS(X11/extensions/Xdbe.h, [], [], [#include <X11/Xlib.h> ])
75
76dnl Checks for X extensions/libraries
77XINERAMA_LIBS=""
78XRANDR_LIBS=""
79XFT_LIBS=""
80XFT_CFLAGS=""
81
82AC_ARG_WITH([xinerama], [AS_HELP_STRING([--with-xinerama], [Include Xinerama support])], [], [with_xinerama=yes])
83
84if test "$with_xinerama" != "no"; then
85
86PKG_CHECK_MODULES(libXinerama, xinerama >= 1.0
87		  ,XINERAMA_LIBS="-lXinerama"
88		  AC_DEFINE(HAVE_X11_EXTENSIONS_XINERAMA_H, 1, [Have xinerama])
89		  ,AC_MSG_ERROR([cannot locate libXinerama]))
90
91fi
92
93PKG_CHECK_MODULES(libXRandR, xrandr >= 1.0
94		  ,XRANDR_LIBS="-lXrandr"
95		  AC_DEFINE(HAVE_X11_EXTENSIONS_XRANDR_H, 1, [Have xrandr])
96		  ,AC_MSG_ERROR([cannot locate libXRandR]))
97
98PKG_CHECK_MODULES(libXft, xft >= 1.0
99		  ,XFT_LIBS="-lXft"
100		  XFT_CFLAGS="`$PKG_CONFIG --cflags xft`"
101		  AC_DEFINE(HAVE_X11_XFT_XFT_H, 1, [Have xft])
102		  ,AC_MSG_ERROR([cannot locate libXft]))
103
104dnl is X available?
105X_LIBS=""
106
107PKG_CHECK_MODULES(libX11, x11 >= 1.0
108		  ,AC_DEFINE(HAVE_X11, 1, [Have X11])
109		  X_LIBS="`$PKG_CONFIG --libs x11`"
110		  X_CFLAGS="`$PKG_CONFIG --cflags x11`"
111		  AC_DEFINE(X_DISPLAY_MISSING, 0, [Have x11])
112		  ,AC_MSG_ERROR([cannot locate libX11]))
113
114X_LIBS="${X_LIBS} -lXext -lXrender"
115
116X_EXTRA_LIBS=""
117
118PKG_CHECK_MODULES(libICE, ice >= 1.0
119		  ,X_EXTRA_LIBS="${X_EXTRA_LIBS} -lICE"
120		  AC_DEFINE(HAVE_X11_ICE_ICE_H, 1, [Have libice])
121		  ,AC_MSG_ERROR([cannot locate libICE]))
122
123PKG_CHECK_MODULES(libSM, sm >= 1.0
124		  ,X_EXTRA_LIBS="${X_EXTRA_LIBS} -lSM"
125		  AC_DEFINE(HAVE_X11_SM_SMLIB_H, 1, [Have smlib])
126		  ,AC_MSG_ERROR([cannot locate libSM]))
127
128PKG_CHECK_MODULES(XTest, xtst >= 1.0
129		  ,X_EXTRA_LIBS="${X_EXTRA_LIBS} -lXtst"
130		  AC_DEFINE(HAVE_X11_EXTENSIONS_XTST_H, 1, [Have Xtest (libXtst)])
131		  ,AC_MSG_ERROR([cannot locate Xtest (libXtst)]))
132
133X_SERVER="X.Org X11R7"
134
135CPPFLAGS="${_cppflags}"
136
137else
138
139AC_CHECK_HEADERS(X11/ICE/ICE.h X11/SM/SMlib.h X11/extensions/Xdbe.h X11/extensions/XTest.h, [], [], [#include <X11/Xlib.h> ])
140
141dnl Checks for X extensions/libraries
142XINERAMA_LIBS=""
143XRANDR_LIBS=""
144XFT_LIBS=""
145XFT_CFLAGS=""
146
147if test "$with_xinerama" != "no"; then
148
149AC_CHECK_LIB(Xinerama, XineramaQueryScreens,
150	     [XINERAMA_LIBS="-lXinerama"
151	      AC_CHECK_HEADERS(X11/extensions/Xinerama.h)],
152	     [],[$X_LIBS -lX11 -lXext])
153
154fi
155
156AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration,
157	     [XRANDR_LIBS="-lXrandr"
158	      AC_CHECK_HEADERS(X11/extensions/Xrandr.h, [], [],
159	         [#include <X11/Xlib.h> ])],
160	     [],[$X_LIBS -lX11 -lXext])
161
162dnl Try using $PKG_CONFIG first, since it looks like Xft2 may fail our
163dnl hand-crafted tests
164PKG_CHECK_MODULES(XFT, xft >= 1.0,
165 [_cppflags=$CPPFLAGS
166  CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
167  AC_CHECK_HEADERS(X11/Xft/Xft.h)
168  CPPFLAGS=$_cppflags],
169 [AC_CHECK_LIB(Xft, XftDrawCreate,
170	       [XFT_LIBS="-lXft -lXrender"
171	       AC_CHECK_HEADERS(X11/Xft/Xft.h)],
172	       [], [$X_LIBS -lX11 -lXext])])
173
174dnl is X available?
175if test "${no_x}" != "yes"; then
176  AC_DEFINE(HAVE_X11, 1, [Have X11])
177  X_LIBS="${X_LIBS} -lXext -lXrender"
178  X_EXTRA_LIBS="-lSM -lICE -lXtst"
179else
180  AC_MSG_ERROR([You need X11 for sawfish])
181fi
182
183X_SERVER="X.Org/XFree86 X11R6"
184
185CPPFLAGS="${_cppflags}"
186
187fi
188
189dnl Checks for pango
190
191AC_ARG_WITH(pango,
192  [  --with-pango		  Use Pango instead of Xft
193  --without-pango], [], [with_pango=yes])
194
195if test "$with_pango" = "yes"; then
196
197PANGO_MIN_VER="1.8.0"
198
199PANGO_MODULES="pango "
200
201PKG_CHECK_MODULES(PANGO, pango >= ${PANGO_MIN_VER}
202		  ,AC_DEFINE(HAVE_PANGO, 1, [Have pango]) FONT_LOADER="Pango"
203		  ,AC_MSG_ERROR([cannot locate pango >= $PANGO_MIN_VER]))
204
205PKG_CHECK_MODULES(PANGOXFT, pangoxft >= ${PANGO_MIN_VER}
206		  ,AC_DEFINE(HAVE_PANGO_XFT, 1, [Have pangoxft]) PANGO_MODULES="${PANGO_MODULES} pangoxft" have_pango_xft="yes" FONT_LOADER="Pango XFT" AC_SUBST(have_pango_xft)
207		  ,AC_MSG_WARN([pango xft support not available $PANGO_MIN_VER]))
208
209PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_MODULES`
210PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_MODULES`
211
212else FONT_LOADER="X.Org"
213fi
214
215dnl Check for librep
216REP_MIN_VER="0.92.3"
217
218AC_CHECK_PROG(REP_BIN, [rep], [yes])
219if test "$REP_BIN" != "yes"; then
220	echo "rep binary not found!"
221	exit 1
222fi
223
224PKG_CHECK_MODULES(LIBREP, librep >= ${REP_MIN_VER}
225		  ,REP_EXECDIR="`$PKG_CONFIG --variable=repcommonexecdir librep`"
226		  REP_CFLAGS="`$PKG_CONFIG --cflags librep`"
227		  REP_LIBS="`$PKG_CONFIG --libs librep`"
228		  REP_MSGFMT="`which msgfmt`"
229		  REP_VERSION="`$PKG_CONFIG --variable=version librep`"
230		  ,AC_MSG_ERROR([cannot locate librep >= $REP_MIN_VER]))
231
232dnl Check for GTK+2
233GTK_MIN_VER="2.24.0"
234GDK_MIN_VER="2.23.0"
235
236PKG_CHECK_MODULES(GTK, gtk+-2.0 >= ${GTK_MIN_VER}
237		  ,GTK_LIBS="`$PKG_CONFIG --libs gtk+-2.0`"
238		  GTK_CFLAGS="`$PKG_CONFIG --cflags gtk+-2.0`"
239		  AC_DEFINE(HAVE_GTK, 1, [Have GTK])
240		  ,AC_MSG_ERROR([cannot locate gtk+ >= $GTK_MIN_VER]))
241
242dnl Check for rep-gtk
243REP_GTK_MIN_VER="0.90.7"
244
245PKG_CHECK_MODULES(REP_GTK, rep-gtk >= ${REP_GTK_MIN_VER}
246		  ,
247		  ,AC_MSG_ERROR([cannot locate rep-gtk >= $REP_GTK_MIN_VER]))
248
249dnl Check for image handling libraries
250AC_ARG_WITH(gdk-pixbuf,
251  [  --with-gdk-pixbuf	  Use gdk-pixbuf for image management
252  --without-gdk-pixbuf	  Use Imlib1 instead], [], [with_gdk_pixbuf=yes])
253
254if test "$with_gdk_pixbuf" != "no"; then
255	PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-xlib-2.0 >= ${GDK_MIN_VER}
256			  ,IMAGE_CFLAGS="`$PKG_CONFIG --cflags gdk-pixbuf-xlib-2.0`"
257			  IMAGE_LIBS="`$PKG_CONFIG --libs gdk-pixbuf-xlib-2.0`"
258			  IMAGE_PC="gdk-pixbuf-xlib-2.0 >= ${GDK_MIN_VER}"
259			  AC_DEFINE(HAVE_GDK_PIXBUF, 1, [Have gdk-pixbuf])
260			  AC_DEFINE(NEED_PIXMAP_CACHE, 1, [Need pixmap cache])
261			  IMAGE_LOADER="GDK Pixbuf Xlib"
262			  imageloader="gdk-pixbuf-xlib"
263			  with_gdk_pixbuf=yes
264			  ,AC_MSG_ERROR([cannot locate gdk-pixbuf-xlib-2.0 >= $GTK_MIN_VER])
265			  with_gdk_pixbuf=no)
266fi
267
268if test "$with_gdk_pixbuf" = "no"; then
269	PKG_CHECK_MODULES(IMLIB1, imlib >= 1.9
270			  ,IMAGE_CFLAGS="-I`$PKG_CONFIG --variable includedir imlib`"
271			  IMAGE_LIBS="`$PKG_CONFIG --libs imlib`"
272			  IMAGE_PC="imlib >= 1.9"
273			  AC_DEFINE(HAVE_IMLIB, 1, [Have Imlib1])
274			  IMLIB_VERSION="`$PKG_CONFIG --modversion imlib`"
275			  IMAGE_LOADER="IMLIB 1"
276			  imageloader="imlib1"
277			  ,AC_MSG_ERROR([cannot locate imlib1 library]))
278fi
279
280dnl Check wether to install mo files
281
282AC_ARG_WITH(nls,
283  [  --with-nls		  Install translations
284  --without-nls], [], [with_nls=yes])
285
286if test "$with_nls" = "yes"; then
287	SUBDIRS="${SUBDIRS} po"
288fi
289
290dnl session files stuff
291
292AC_ARG_WITH(kde4session,
293  [  --with-kde4session 	install kde4 session files
294  --without-kde4session], [], [with_kde4session=yes])
295
296KDE4_SESSION="$with_kde4session"
297
298if test "$with_kde4session" = "yes"; then
299	KDED4IR="`kde4-config --install data`"
300fi
301
302dnl fallback
303if test "x$KDE4DIR" = x; then
304       KDE4DIR="${datadir}/kde4/apps/"
305fi
306
307AC_ARG_WITH(kde5session,
308  [  --with-kde5session 	install kde5 session files
309  --without-kde5session], [], [with_kde5session=yes])
310
311KDE5_SESSION="$with_kde5session"
312
313if test "$with_kde5session" = "yes"; then
314	KDE5DIR="`kf5-config --install data`"
315fi
316
317dnl fallback
318if test "x$KDE5DIR" = x; then
319       KDE5DIR="${datadir}/"
320fi
321
322AC_ARG_WITH(luminasession,
323  [  --with-luminasession 	install lumina session files
324  --without-luminasession], [], [with_luminasession=yes])
325
326LUMINA_SESSION="$with_luminasession"
327
328AC_ARG_WITH(matesession,
329  [  --with-matesession 	install mate session files
330  --without-matesession], [], [with_matesession=yes])
331
332MATE_SESSION="$with_matesession"
333
334AC_ARG_WITH(xfcesession,
335  [  --with-xfcesession 	install xfce session files
336  --without-xfcesession], [], [with_xfcesession=yes])
337
338XFCE_SESSION="$with_xfcesession"
339
340AC_ARG_WITH(gnome2session,
341  [  --with-gnome2session 	install gnome2 session files
342  --without-gnome2session], [], [with_gnome2session=yes])
343
344GNOME2_SESSION="$with_gnome2session"
345
346dnl Check for GNOME location
347AC_ARG_WITH(gnome_prefix,
348 [  --with-gnome-prefix=DIR Root of GNOME installation], [],
349 [ with_gnome_prefix="" ])
350AC_MSG_CHECKING([for GNOME prefix])
351if test "x$with_gnome_prefix" = "x"; then
352  with_gnome_prefix='${prefix}'
353fi
354AC_MSG_RESULT([$with_gnome_prefix])
355GNOMEDIR=$with_gnome_prefix
356
357dnl How do we get dependency lines in the Makefile?
358if test "x${GCC}" = "xyes"; then
359  MAKEDEP='$(CC) -MM'
360else
361  case ${host} in
362    *-dec-osf*)
363      dnl works on Tru64
364      MAKEDEP='$(CC) -M'
365      ;;
366    *-sun-solaris*)
367      dnl works on Solaris
368      MAKEDEP='/usr/ccs/lib/cpp -M'
369      ;;
370    *)
371      dnl disable dependences?
372      MAKEDEP='true'
373      ;;
374  esac
375fi
376
377AC_MSG_CHECKING(for languages to install)
378AC_ARG_ENABLE(linguas,
379  [  --enable-linguas=LANGS... Install language catalogs for language codes LANGS],
380  [ LINGUAS="$enableval" ], [ LINGUAS="" ])
381if test "x$LINGUAS" = x; then
382  changequote({,})
383  LINGUAS="`echo $srcdir/po/*.po | sed -e 's/[^ ]*\/po\/\([^ ]*\)\.po/\1/g'`"
384  changequote([,])
385fi
386dnl too gross for words..
387if test $REP_MSGFMT = true; then
388  LINGUAS=""
389fi
390AC_MSG_RESULT($LINGUAS)
391
392dnl Nonstandard exported symbols
393AC_SUBST(version)
394AC_SUBST(subversion)
395AC_SUBST(sawfishdir)
396AC_SUBST(sawfishexecdir)
397AC_SUBST(lispdir)
398AC_SUBST(localedir)
399AC_SUBST(install_sh)
400AC_SUBST(datarootdir)
401AC_SUBST(imageloader)
402AC_SUBST(MAKEDEP)
403AC_SUBST(GNOMEDIR)
404AC_SUBST(KDEDIR)
405AC_SUBST(SUBDIRS)
406AC_SUBST(HAVE_X11)
407AC_SUBST(CPPFLAGS)
408AC_SUBST(CFLAGS)
409AC_SUBST(LIBS)
410AC_SUBST(X_CFLAGS)
411AC_SUBST(X_LIBS)
412AC_SUBST(X_EXTRA_LIBS)
413AC_SUBST(XINERAMA_LIBS)
414AC_SUBST(XRANDR_LIBS)
415AC_SUBST(XFT_LIBS)
416AC_SUBST(XFT_CFLAGS)
417AC_SUBST(PANGO_MIN_VER)
418AC_SUBST(PANGO_LIBS)
419AC_SUBST(PANGO_CFLAGS)
420AC_SUBST(REP_EXECDIR)
421AC_SUBST(REP_CFLAGS)
422AC_SUBST(REP_LIBS)
423AC_SUBST(REP_VERSION)
424AC_SUBST(REP_MSGFMT)
425AC_SUBST(IMAGE_LIBS)
426AC_SUBST(IMAGE_CFLAGS)
427AC_SUBST(IMAGE_PC)
428AC_SUBST(GTK_MIN_VER)
429AC_SUBST(GTK_LIBS)
430AC_SUBST(GTK_CFLAGS)
431AC_SUBST(REP_MIN_VER)
432AC_SUBST(REP_GTK_MIN_VER)
433AC_SUBST(VERSION)
434AC_SUBST(PACKAGE)
435AC_SUBST(GETTEXT_PACKAGE)
436AC_SUBST(LINGUAS)
437AC_SUBST(KDE4_SESSION)
438AC_SUBST(GNOME2_SESSION)
439AC_SUBST(KDE5_SESSION)
440AC_SUBST(LUMINA_SESSION)
441AC_SUBST(MATE_SESSION)
442AC_SUBST(XFCE_SESSION)
443AC_SUBST(KDE4DIR)
444AC_SUBST(KDE5DIR)
445AC_SUBST(codename)
446
447dnl Build all files
448AC_CONFIG_FILES([
449Makedefs
450Makefile
451data/sawfish.ebuild
452data/sawfish.pc
453data/sawfish.spec
454lisp/Makefile
455lisp/sawfish/cfg/Makefile
456lisp/sawfish/gtk/Makefile
457lisp/sawfish/gtk/widgets/font.jl
458man/Makefile
459po/Makefile
460scripts/Makefile
461sounds/Makefile
462src/Makefile
463themes/Makefile
464])
465
466AC_OUTPUT
467
468mv data/sawfish.ebuild sawfish-$version.ebuild
469mv data/sawfish.spec sawfish.spec
470
471REP_VERSION="`$PKG_CONFIG --modversion librep`"
472REP_GTK_VERSION="`$PKG_CONFIG --modversion rep-gtk`"
473GLIB_VERSION="`$PKG_CONFIG --modversion glib-2.0`"
474PANGO_VERSION="`$PKG_CONFIG --modversion pango`"
475
476if $PKG_CONFIG --exists cairo; then
477	CAIRO_VERSION="`$PKG_CONFIG --modversion cairo`"
478fi
479
480GTK_VERSION="`$PKG_CONFIG --modversion gtk+-2.0`"
481
482echo "
483  == == == == == == == == == == == == ==
484
485  sawfish:	$version '$codename'
486
487  == == == == == == == == == == == == ==
488
489  prefix:	$prefix
490  exec_prefix:	$exec_prefix
491  libdir:	$libdir
492
493  == == == == == == == == == == == == ==
494
495  compiler:	$CC
496  cflags:	$CFLAGS $DEVELOPMENT_CFLAGS
497  preprocessor:	$CPP
498  cppflags:	$CPPFLAGS
499  ldflags:	$LDFLAGS
500  makeflags:	$MAKEFLAGS
501
502  == == == == == == == == == == == == ==
503
504  rep:		$REP_VERSION
505  rep-gtk:	$REP_GTK_VERSION
506  glib:		$GLIB_VERSION"
507
508if $PKG_CONFIG --exists cairo; then
509	echo "  cairo:	$CAIRO_VERSION"
510fi
511
512echo "  pango:	$PANGO_VERSION
513  gtk+:		$GTK_VERSION"
514
515if test "$with_gdk_pixbuf" = "no"; then
516echo "  imlib1:	$IMLIB_VERSION"
517fi
518
519echo "
520  == == == == == == == == == == == == ==
521
522  xserver:	$X_SERVER
523
524  == == == == == == == == == == == == ==
525
526  image loader:	$IMAGE_LOADER
527
528  == == == == == == == == == == == == ==
529
530  font loader:	$FONT_LOADER
531
532  == == == == == == == == == == == == ==
533
534  Be sure to read README.IMPORTANT!
535
536  == == == == == == == == == == == == ==
537  "
538
539dnl If it doesn't look like GNU Make is being used, give a friendly warning
540tem=`make --version -f /dev/null 2>&1 | grep GNU`
541if test "x$tem" = "x"; then
542  AC_MSG_WARN([You need to use GNU Make when compiling sawfish])
543fi
544
545dnl Local variables:
546dnl major-mode: sh-mode
547dnl End:
548