added cairo and librsvg to configure process
[xboard.git] / configure.ac
1 dnl| configure.in
2 dnl|
3 dnl| Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, 2007,
4 dnl| 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
5 dnl|
6 dnl| GNU XBoard is free software: you can redistribute it and/or modify
7 dnl| it under the terms of the GNU General Public License as published by
8 dnl| the Free Software Foundation, either version 3 of the License, or (at
9 dnl| your option) any later version.
10 dnl|
11 dnl| GNU XBoard is distributed in the hope that it will be useful, but
12 dnl| WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 dnl| General Public License for more details.
15 dnl|
16 dnl| You should have received a copy of the GNU General Public License
17 dnl| along with this program. If not, see http://www.gnu.org/licenses/.
18 dnl|
19 dnl| --------------------------------------------------------------------
20 dnl|
21 dnl| You can process this file with autoconf to produce a configure script.
22 dnl| However, normally the supplied configure script will work fine.
23 dnl|
24 dnl| If you do need to change the configure script, instead of editing
25 dnl| it directly, try to edit configure.in (in a way that will keep
26 dnl| it portable to sites and systems other than your own), and run autoconf
27 dnl| to regenerate configure.  Then submit your changes to be folded into
28 dnl| the standard version of xboard.
29
30 dnl| define second argument as VERSION.PATCHLEVEL. e.g. 4.4.0j
31 AC_INIT([xboard],[master-20120930],[bug-xboard@gnu.org])
32
33 dnl| need this to be able to compile some files in a subdir (filebrowser)
34 AM_INIT_AUTOMAKE([subdir-objects])
35 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
36
37 AC_CONFIG_HEADERS([config.h])
38
39 dnl | a bunch of templates for defines used below
40 AH_TEMPLATE([FIRST_PTY_LETTER],[template])
41 AH_TEMPLATE([HAVE_FCNTL_H],[template])
42 AH_TEMPLATE([HAVE_GETHOSTNAME],[template])
43 AH_TEMPLATE([HAVE_GETTIMEOFDAY],[template])
44 AH_TEMPLATE([HAVE_RANDOM],[template])
45 AH_TEMPLATE([HAVE_SYS_SOCKET_H],[template])
46 AH_TEMPLATE([IBMRTAIX],[template])
47 AH_TEMPLATE([LAST_PTY_LETTER],[template])
48 AH_TEMPLATE([PTY_ITERATION],[template])
49 AH_TEMPLATE([PTY_NAME_SPRINTF],[template])
50 AH_TEMPLATE([PTY_OPEN],[template])
51 AH_TEMPLATE([PTY_TTY_NAME_SPRINTF],[template])
52 AH_TEMPLATE([REMOTE_SHELL],[template])
53 AH_TEMPLATE([RTU],[template])
54 AH_TEMPLATE([UNIPLUS],[template])
55 AH_TEMPLATE([USE_PTYS],[template])
56 AH_TEMPLATE([X_WCHAR],[template])
57 AH_TEMPLATE([ATTENTION],[template])
58 AH_TEMPLATE([DEFINED_SYS_ERRLIST],[template])
59 AH_TEMPLATE([HAVE_LIBXPM],[template])
60 AH_TEMPLATE([USE_XAW3D],[template])
61 AH_TEMPLATE([X_LOCALE],[template])
62
63
64
65 if test -z "$CFLAGS" ; then
66 dnl| Prevent the next macro from setting CFLAGS to -g
67   CFLAGS=" "
68 fi
69 AC_PROG_CC
70
71 dnl| need this to be able to compile files in a subdir
72 AM_PROG_CC_C_O
73
74 AC_PROG_CPP
75 AC_ISC_POSIX
76 AC_PROG_INSTALL
77
78 dnl| add gettext support
79 AM_GNU_GETTEXT_VERSION(0.17)
80 AM_GNU_GETTEXT([external])
81
82 AC_CHECK_PROGS(RSH, remsh rsh, rsh)
83 AC_CHECK_PROGS(MINFO, makeinfo, makeinfo_not_found)
84 if test "$MINFO" = makeinfo_not_found ; then
85    echo Please install \"makeinfo\"
86    exit 1
87 fi
88 AC_DEFINE_UNQUOTED(REMOTE_SHELL, "$RSH")
89 AC_CHECK_PROG(NROFF, nroff, [nroff -man], cat)
90 AC_SUBST(NROFFFLAGS)
91 AC_PATH_PROGS(AWKPATH, awk mawk gawk nawk)
92 AC_PATH_PROGS(PERLPATH, perl)
93
94 AC_HEADER_STDC
95 AC_HEADER_TIME
96 AC_HEADER_SYS_WAIT
97 AC_HEADER_DIRENT
98 AC_TYPE_SIGNAL
99 AC_CHECK_HEADERS(stropts.h sys/time.h string.h unistd.h sys/systeminfo.h)
100 AC_CHECK_HEADERS(fcntl.h sys/fcntl.h, break)
101 AC_CHECK_HEADERS(sys/socket.h lan/socket.h, break)
102 AC_CHECK_HEADER(stddef.h, [], AC_DEFINE(X_WCHAR, 1))
103
104 AC_CHECK_FUNCS(_getpty grantpt setitimer usleep)
105 AC_CHECK_FUNCS(gettimeofday ftime, break)
106 AC_CHECK_FUNCS(random rand48, break)
107 AC_CHECK_FUNCS(gethostname sysinfo, break)
108 AC_CHECK_FUNC(setlocale, [],
109   AC_CHECK_LIB(i, setlocale, [], AC_DEFINE(X_LOCALE, 1)))
110
111 AC_CHECK_LIB(seq, getpseudotty)
112
113 dnl | add compiler warnings only if compiler understands them
114 AC_MSG_CHECKING(whether compiler understands -Wall -Wno-parentheses)
115 SAVE_CFLAGS="$CFLAGS"
116 CFLAGS="$CFLAGS -Wall -Wno-parentheses"
117 AC_TRY_COMPILE([],[],
118   AC_MSG_RESULT(yes),
119   AC_MSG_RESULT(no)
120   CFLAGS="$SAVE_CFLAGS")
121
122
123 dnl | check for X-libraries
124 AC_PATH_XTRA
125 if test -n "$no_x" ; then
126   echo $PACKAGE requires the X Window System header files and libraries!
127   echo They were not found on your system.  See FAQ topic C.2.
128   echo configure failed
129   exit 1
130 fi
131
132 save_cflags="$CFLAGS"
133 save_cppflags="$CPPFLAGS"
134 CFLAGS="$CFLAGS $X_CFLAGS"
135 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
136 AC_CHECK_HEADER(X11/Intrinsic.h,xt="yes",xt="no")
137 CFLAGS="$save_cflags"
138 CPPFLAGS="$save_cppflags"
139
140 if test "$xt" = "no" ; then
141    echo Xt headers not found
142    exit 1
143 fi
144
145 dnl | test if user wants ot use Xaw3d or Xaw
146
147 dnl | add configure option for Xaw3d
148 AC_ARG_WITH([Xaw3d],
149             [AS_HELP_STRING([--with-Xaw3d],[use Xaw3d instead of Xaw])],
150             [],
151             [with_Xaw3d=no])
152
153 dnl | check availability of Xaw3d
154 XAW_LIBS=
155 AS_IF([test x"$with_Xaw3d" != x"no"],
156       [AC_CHECK_LIB([Xaw3d],
157                     [XawTextReplace],
158                     [AC_SUBST([XAW_LIBS],["-lXaw3d"])
159                      AC_DEFINE([USE_XAW3D], [1],
160                                [Define if you want to use Xaw3d])],
161                     [AC_MSG_ERROR([--with-Xaw3d was given, but test for Xaw3d failed. Make sure that you have Xaw3d installed, else you might want to try the configure option --without-Xaw3d])],
162                                [-lXaw])])
163 dnl | no Xaw3d, check for Xaw
164 if test x"$with_Xaw3d" = x"no" ; then
165    save_cflags="$CFLAGS"
166    save_cppflags="$CPPFLAGS"
167    CFLAGS="$CFLAGS $X_CFLAGS"
168    CPPFLAGS="$CPPFLAGS $X_CFLAGS"
169    AC_CHECK_HEADER(X11/Xaw/Dialog.h,xaw_headers="yes", xaw_headers="no")
170    CFLAGS="$save_cflags"
171    CPPFLAGS="$save_cppflags"
172    if test x"$xaw_headers" = x"no" ; then
173       AC_MSG_ERROR([Xaw headers not found. Please install the Xaw package and headers.])
174    fi
175    XAW_LIBS="-lXaw"
176 fi
177 AC_SUBST(XAW_LIBS)
178
179 dnl | end Xaw/Xaw3d test
180
181 dnl | check for cairo and librsvg
182 CAIRO_REQUIRED=1.2.0
183 LIBRSVG_REQUIRED=2.14.0
184
185
186 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_REQUIRED librsvg-2.0 >= LIBRSVG_REQUIRED)
187 AC_SUBST(CAIRO_CFLAGS)
188 AC_SUBST(CAIRO_LIBS)
189
190 AC_CANONICAL_HOST
191
192 dnl| The following info is mostly gathered from GNU Emacs 19.24.  Basically,
193 dnl| we are trying to find out whether this is a System-V derivative in
194 dnl| which pipes don't work with select() and if so, whether there is anything
195 dnl| strange about the way to open a pty.  Some of the work was done above
196 dnl| by looking for _getpty, grantpt, and getpseudotty.  A few other strange
197 dnl| properties of particular systems are also handled here.
198
199 dnl| 4/6/97 I'm not sure there really are any systems where pipes
200 dnl| don't work with select(), and ptys cause problems on many
201 dnl| systems, so I'm changing the default to disable ptys in all
202 dnl| cases.  I will change it back if I get bug reports that are fixed
203 dnl| by doing a "configure --enable-ptys"
204
205 USE_PTYS=0
206 case "$host" in
207   *-*-hpux* )
208     AC_DEFINE(PTY_TTY_NAME_SPRINTF,
209         [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
210     AC_DEFINE(PTY_NAME_SPRINTF,
211         [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
212 dnl| USE_PTYS=1
213     if test "$GCC" = yes; then
214       CONF_CFLAGS="-fwritable-strings"
215     else
216
217 dnl| Note: You might be able to build xboard even if your compiler does not
218 dnl| support ANSI C (-Aa).  xboard itself does not require ANSI C.  I don't
219 dnl| know whether the X header files on HP-UX require it.
220
221       CONF_CFLAGS="-Aa -D_HPUX_SOURCE"
222     fi
223
224 dnl| HP doesn't supply a full set of X header files and libraries.  People
225 dnl| often have some things installed in one place and some in another.
226 dnl| AC_PATH_XTRA will find only one place, so we try to add all the
227 dnl| likely ones that might be missing here.  It might be better to
228 dnl| change AC_PATH_XTRA to try to extract this information from imake,
229 dnl| since folks who install the missing bits often configure their
230 dnl| imake to find them, but I don't want to delve into autoconf and
231 dnl| hack on its internals.
232
233     if test -d /opt/hppd/include/X11; then
234       X_CFLAGS="$X_CFLAGS -I/opt/hppd/include"
235       X_LIBS="$X_LIBS -L/opt/hppd/lib"
236     elif test -d /usr/contrib/X11R5/include; then
237       X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include"
238       X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib"
239     elif test -d /usr/contrib/mitX11R5/include; then
240       X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include"
241       X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib"
242     elif test -d /MIT/X11R5/include; then
243       X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include"
244       X_LIBS="$X_LIBS -L/MIT/X11R5/lib"
245     elif test -d /usr/local/include/X11R5; then
246       X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5"
247       X_LIBS="$X_LIBS -L/usr/local/lib/X11R5"
248     fi
249     if test -d /usr/include/X11R5; then
250       X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5"
251       X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4"
252     elif test -d /usr/include/X11R4; then
253       X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4"
254       X_LIBS="$X_LIBS -L/usr/lib/X11R4"
255     fi
256   ;;
257
258   romp-ibm-aix* )
259     AC_DEFINE(IBMRTAIX, 1)
260 dnl| USE_PTYS=1
261   ;;
262
263   i386-ibm-aix )
264 dnl| USE_PTYS=1
265     if test "$GCC" = yes; then
266       CONF_CFLAGS="-fwritable-strings"
267     fi
268   ;;
269
270   *-*-aix3* | *-*-bosx* )
271     AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)])
272     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
273     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
274 dnl| USE_PTYS=1
275   ;;
276
277   *-*-cxux* )
278     AC_DEFINE(FIRST_PTY_LETTER, 'A')
279     AC_DEFINE(LAST_PTY_LETTER, 'P')
280 dnl| USE_PTYS=1
281   ;;
282
283   *-*-uniplus* )
284     AC_DEFINE(UNIPLUS, 1)
285 dnl| USE_PTYS=1
286   ;;
287
288   *-*-rtu* )
289     AC_DEFINE(FIRST_PTY_LETTER, 'z')
290     AC_DEFINE(PTY_TTY_NAME_SPRINTF,
291         [sprintf (pty_name, "/dev/ttyp%x", i);])
292     AC_DEFINE(PTY_NAME_SPRINTF,
293         [sprintf (pty_name, "/dev/pty%x", i);])
294     AC_DEFINE(RTU, 1)
295 dnl| USE_PTYS=1
296   ;;
297
298   *-*-iris* | *-*-irix3* )
299     AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)])
300     AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
301     AC_DEFINE(PTY_TTY_NAME_SPRINTF,
302         [sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));])
303 dnl| USE_PTYS=1
304   ;;
305
306   *-*-irix* )
307 dnl| USE_PTYS=1
308   ;;
309
310   *-*-sunos4* | *-*-solaris1* )
311
312 dnl| Work around a bug in the SunOS 4.x linker.  Not needed if you have patches
313 dnl|  100512-02 and 100573-03 from Sun.  The X FAQ says that the following is
314 dnl|  "overkill," but doesn't explain what should be done instead.
315
316     if test "$GCC" = yes; then
317       PRE_XMULIB="-static"
318       POST_XMULIB="-dynamic"
319     else
320       PRE_XMULIB="-Bstatic"
321       POST_XMULIB="-Bdynamic"
322     fi
323   ;;
324
325   *-*-sunos5* | *-*-solaris2* )
326 dnl| USE_PTYS=1
327
328 dnl| I'm not sure -lelf is needed, but it was in the old Imakefile.
329 dnl| The other libraries should all be found by Ac_PATH_XTRA or other
330 dnl| code above.
331
332     X_LIBS="$X_LIBS -lelf"
333   ;;
334
335   *-*-sco* )
336     AC_DEFINE(PTY_ITERATION, [for (i = 0; ; i++)])
337     AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptyp%d", i);])
338     AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ttyp%d", i);])
339 dnl| USE_PTYS=1
340   ;;
341
342   *-*-dynix* | *-*-ptx* )
343 dnl| USE_PTYS=1
344   ;;
345
346   *-*-esix* )
347 dnl| USE_PTYS=1
348   ;;
349
350   *-*-usg5-4* | *-*-sysvr4* )
351 dnl| USE_PTYS=1
352   ;;
353
354   *-*-usg* | *-*-sysv* | *-*-aix* )
355 dnl| USE_PTYS=1
356   ;;
357
358   vax-*-ultrix )
359     if test "$GCC" = yes; then
360       CONF_CFLAGS="-fwritable-strings"
361     fi
362   ;;
363
364 dnl| add some libs for OS X
365   *-apple-* )
366   ;;
367 esac
368
369 AC_ARG_ENABLE(  [xpm],
370                 [AS_HELP_STRING([--enable-xpm],[libXpm will be used if found (default)])],
371                 [enable_xpm="$enableval"],
372                 [enable_xpm="yes"])
373
374 if test x"$enable_xpm" != "xno"; then
375   save_cflags="$CFLAGS"
376   save_cppflags="$CPPFLAGS"
377   CFLAGS="$CFLAGS $X_CFLAGS"
378   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
379   AC_CHECK_HEADERS(X11/xpm.h)
380   CFLAGS="$save_cflags"
381   CPPFLAGS="$save_cppflags"
382   if test "$ac_cv_header_X11_xpm_h" = "yes"; then
383     save_ldflags="$LDFLAGS"
384     LDFLAGS="$LDFLAGS $X_LIBS"
385     AC_CHECK_LIB(Xpm, XpmReadFileToPixmap,
386                  [X_PRE_LIBS="-lXpm $X_PRE_LIBS"; AC_DEFINE(HAVE_LIBXPM)], [],
387                  [$X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
388     LDFLAGS="$save_ldflags"
389   fi
390 fi
391
392 AC_SUBST(PRE_XMULIB)
393 AC_SUBST(POST_XMULIB)
394 AC_SUBST(CONF_CFLAGS)
395 AC_SUBST(CONF_LDFLAGS)
396
397 AC_MSG_CHECKING(whether ptys or pipes should be used)
398 AC_ARG_ENABLE( [ptys],
399                [AS_HELP_STRING([--enable-ptys],[force use of pseudo-ttys with child processes])],
400 [if test "$enableval" = yes; then
401   USE_PTYS=1
402   enable_ptys="ptys"
403   AC_MSG_RESULT([ptys (user override)])
404 fi
405 if test "$enableval" = no; then
406   USE_PTYS=0
407   enable_ptys="pipes"
408   AC_MSG_RESULT([pipes (user override)])
409 fi],
410 [if test "$USE_PTYS" = 1; then
411   AC_MSG_RESULT(ptys)
412   enable_ptys="ptys"
413 else
414   AC_MSG_RESULT(pipes)
415   enable_ptys="pipes"
416 fi])
417 AC_DEFINE_UNQUOTED(USE_PTYS, $USE_PTYS)
418
419
420 dnl | define not to build zippy as a default, so that autoheader is happy
421 AC_DEFINE(ZIPPY, 0,[should zippy be enabled])
422 AC_ARG_ENABLE( [zippy],
423                [AS_HELP_STRING([--enable-zippy],[support interfacing a chess program to ICS (default)])],
424                [],
425                [enable_zippy="yes"])
426
427 if test x"$enable_zippy" != xno; then
428   AC_DEFINE(ZIPPY, 1,[should zippy be enabled])
429 fi
430 AM_CONDITIONAL([ZIPPY], [test x$enable_zippy != xno])
431
432
433 AC_ARG_ENABLE(sigint,
434 [AS_HELP_STRING([--enable-sigint],[sending SIGINT (^C) wakes up GNU Chess (default)])],
435 [if test "$enableval" = yes; then
436   AC_DEFINE(ATTENTION, 1)
437 fi
438 enable_sigint=$enableval
439 ],
440 [enable_sigint="yes"
441 AC_DEFINE(ATTENTION, 1)])
442
443
444 dnl | save all information for X in X_LIBS, also add the libraries themself
445 dnl | since AC_PATH_XTRA only adds the paths
446 X_LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS -lXmu -lX11 -lXt "
447 AC_SUBST(X_CFLAGS)
448 AC_SUBST(X_LIBS)
449
450 dnl | should we install desktop icons and mime associations?
451 AC_ARG_ENABLE(  [update-mimedb],
452                 [AS_HELP_STRING([--disable-update-mimedb],[disable the update-mime-database after install [default=no]])],
453                 [enable_mimedb="no"],
454                 [enable_mimedb="yes"])
455
456 AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, test x"$enable_mimedb" = "xyes")
457
458 if test x"$enable_mimedb" = "xyes"; then
459    AC_PATH_PROG([XDG_MIME],[xdg-mime])
460    AC_SUBST(XDG_MIME)
461    AC_PATH_PROG([XDG_DESKTOP_MENU],[xdg-desktop-menu])
462    AC_SUBST(XDG_DESKTOP_MENU)
463    AC_PATH_PROG([XDG_ICON_RESOURCE],[xdg-icon-resource])
464    AC_SUBST(XDG_ICON_RESOURCE)
465 fi
466
467 dnl |  output Makefile
468 AC_CONFIG_FILES([Makefile cmail po/Makefile.in])
469 AC_CONFIG_COMMANDS([test-stamp-h],[test -z "$CONFIG_HEADERS" || date > stamp-h])
470 AC_CONFIG_COMMANDS([chmod-cmail],[chmod 755 cmail])
471 AC_OUTPUT
472
473 dnl
474 dnl Output a summary
475 dnl
476 echo ""
477 echo " Configurations summary:"
478 echo ""
479 echo "        prefix:          $prefix       "
480 echo "        datarootdir:     $datarootdir  "
481 echo "        datadir:         $datadir   (icons will go in \$datadir/icons/hicolor/...)"
482 echo "                                    (bitmaps will go in \$datadir/games/xboard/...)"
483 echo "        infodir:         $infodir   (info files will go here)"
484 echo "        sysconfdir:      $sysconfdir   (xboard.conf will go here)"
485 echo ""
486 echo "        update mimedb:   $enable_mimedb"
487 echo ""
488 echo "        NLS support:     $USE_NLS"
489 echo ""
490 echo "        Xaw3d:           $with_Xaw3d"
491 echo ""
492 echo "        xpm:             $enable_xpm"
493 echo "        ptys:            $enable_ptys"
494 echo "        zippy:           $enable_zippy"
495 echo "        sigint:          $enable_sigint"