Remove more configure cruft: OTHERLIBS/CFLAGS and X_LIBS/CFLAGS.
[vte.git] / configure.in
1 m4_define([vte_version_major],[0])
2 m4_define([vte_version_minor],[17])
3 m4_define([vte_version_micro],[5])
4 m4_define([vte_version],[vte_version_major.vte_version_minor.vte_version_micro])
5
6 AC_PREREQ(2.56)
7 AC_INIT(vte, [vte_version],
8         [http://bugzilla.gnome.org/enter_bug.cgi?product=vte])
9 AC_CONFIG_SRCDIR([src/vte.c])
10 AC_CONFIG_HEADERS([config.h])
11
12 AM_INIT_AUTOMAKE([1.9 no-dist-gzip dist-bzip2])
13
14 ################################################################################
15 # Libtool shared library versioning stuffs.
16 # REVISION gets incremented whenever the source code changes without adding
17 # an API or ABI change.
18 LTVERSION_REVISION=4
19 # CURRENT must be incremented when an API or ABI change (addition or removal)
20 # is made, and REVISION must be reset to 0 when this happens.
21 LTVERSION_CURRENT=12
22 # AGE must be incremented when an API or ABI addition is made, and REVISION
23 # must be reset to 0 when this happens.
24 LTVERSION_AGE=3
25
26 LIBVTE_LTVERSION=${LTVERSION_CURRENT}:${LTVERSION_REVISION}:${LTVERSION_AGE}
27 AC_SUBST([LIBVTE_LTVERSION])
28
29 ################################################################################
30
31 AC_ISC_POSIX
32 AC_PROG_CC
33 AC_STDC_HEADERS
34 AM_PROG_CC_STDC
35 AM_MAINTAINER_MODE
36 AM_PROG_CC_C_O
37
38 AM_PROG_LIBTOOL
39 IT_PROG_INTLTOOL([0.35.0])
40
41 GETTEXT_PACKAGE=vte
42 AC_SUBST(GETTEXT_PACKAGE)
43 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
44                    [Package translatable messages domain name.])
45 AM_GLIB_GNU_GETTEXT
46 AC_CHECK_DECLS(bind_textdomain_codeset,,,[#include "libintl.h"])
47
48
49 ################################################################################
50 # Platform checks
51 ################################################################################
52
53 AC_MSG_CHECKING([for a win32 platform])
54 platform_win32=no
55 case "$host" in
56         *-*-mingw*|*-*-cygwin*)
57                 platform_win32=yes
58                 ;;
59 esac
60 AC_MSG_RESULT([$platform_win32])
61 AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
62
63 os_win32=no
64 if test "x$platform_win32" = "xyes"; then
65         AC_MSG_CHECKING([for native win32])
66         case "$host" in
67                 *-*-mingw*)
68                         os_win32=yes
69                         ;;
70         esac
71         AC_MSG_RESULT([$os_win32])
72 fi
73 AM_CONDITIONAL(OS_WIN32, test "x$os_win32" = "xyes")
74
75
76 if test "x$platform_win32" != "xyes"; then
77         LIBTOOL_EXPORT_OPTIONS=
78 else
79         LIBTOOL_EXPORT_OPTIONS='-no-undefined'
80 fi
81 AC_SUBST([LIBTOOL_EXPORT_OPTIONS])
82 LIBTOOL_FLAGS='-as-needed'
83 AC_SUBST([LIBTOOL_FLAGS])
84
85
86 ################################################################################
87 # Compilation
88 ################################################################################
89
90 dnl Use lots of warning flags with with gcc and compatible compilers
91 dnl Copied from cairo
92 AC_DEFUN([VTE_CC_TRY_FLAG], [
93   AC_MSG_CHECKING([whether $CC supports $1])
94
95   vte_save_CFLAGS="$CFLAGS"
96   CFLAGS="$CFLAGS $1"
97
98   AC_COMPILE_IFELSE([ ], [vte_cc_flag=yes], [vte_cc_flag=no])
99   CFLAGS="$vte_save_CFLAGS"
100
101   if test "x$vte_cc_flag" = "xyes"; then
102     ifelse([$2], , :, [$2])
103   else
104     ifelse([$3], , :, [$3])
105   fi
106   AC_MSG_RESULT([$vte_cc_flag])
107 ])
108 AC_DEFUN([VTE_LD_TRY_FLAG], [
109   AC_MSG_CHECKING([whether $CC supports $1 when linking])
110
111   vte_save_LDFLAGS="$LDFLAGS"
112   LDFLAGS="$LDFLAGS $1"
113
114   AC_LINK_IFELSE([int main(void) {return 0;}],
115                 [vte_ld_flag=yes], [vte_ld_flag=no])
116   LDFLAGS="$vte_save_LDFLAGS"
117
118   if test "x$vte_ld_flag" = "xyes"; then
119     ifelse([$2], , :, [$2])
120   else
121     ifelse([$3], , :, [$3])
122   fi
123   AC_MSG_RESULT([$vte_ld_flag])
124 ])
125
126
127 dnl Note: if you change the following variable, the cache is automatically
128 dnl skipped and all flags rechecked.  So there's no need to do anything
129 dnl else.  If for any reason you need to force a recheck, just change
130 dnl MAYBE_WARN in an ignorable way (like adding whitespace)
131
132 MAYBE_WARN="-Wall -Wextra \
133 -Wsign-compare -Werror-implicit-function-declaration \
134 -Wpointer-arith -Wwrite-strings -Wstrict-prototypes \
135 -Waggregate-return -Wcast-align -Wimplicit -Wuninitialised \
136 -Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
137 -Wpacked -Wmissing-format-attribute -Wshadow \
138 -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \
139 -Wdeclaration-after-statement -Wold-style-definition \
140 -Wno-missing-field-initializers -Wno-unused-parameter \
141 -fno-common"
142
143 dnl Other flags you may wish to try: -Wswitch-enum 
144
145
146 # invalidate cached value if MAYBE_WARN has changed
147 if test "x$vte_cv_warn_maybe" != "x$MAYBE_WARN"; then
148         unset vte_cv_warn_cflags
149 fi
150 AC_CACHE_CHECK([for supported warning flags], vte_cv_warn_cflags, [
151         echo
152         WARN_CFLAGS=""
153
154         # Some warning options are not supported by all versions of
155         # gcc, so test all desired options against the current
156         # compiler.
157         #
158         # Note that there are some order dependencies
159         # here. Specifically, an option that disables a warning will
160         # have no net effect if a later option then enables that
161         # warnings, (perhaps implicitly). So we put some grouped
162         # options (-Wall and -Wextra) up front and the -Wno options
163         # last.
164
165         for W in $MAYBE_WARN; do
166                 VTE_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"])
167         done
168
169         vte_cv_warn_cflags=$WARN_CFLAGS
170         vte_cv_warn_maybe=$MAYBE_WARN
171
172         AC_MSG_CHECKING([which warning flags were supported])])
173 WARN_CFLAGS=$vte_cv_warn_cflags
174 AC_SUBST(WARN_CFLAGS)
175 CFLAGS="$CFLAGS $WARN_CFLAGS"
176
177 PYTHON_LDFLAGS=""
178 for W in "-Wl,--warn-unresolved-symbols"; do
179         VTE_LD_TRY_FLAG([$W], [PYTHON_LDFLAGS="$PYTHON_LDFLAGS $W"])
180 done
181 AC_SUBST(PYTHON_LDFLAGS)
182
183 # Enable debugging messages and additional run-time checks.
184 AC_ARG_ENABLE(debug,
185               [AS_HELP_STRING([--enable-debug],
186                               [enable extra debugging checks and logging messages]
187                               )],
188               DEBUG=$enableval, DEBUG=no)
189 if test "x$DEBUG" != "xno" ; then
190         AC_MSG_RESULT([enabling debug checks and messages])
191         AC_DEFINE(VTE_DEBUG,1,[Enable debugging messages.])
192 fi
193
194
195
196 ################################################################################
197 # Core
198 ################################################################################
199
200 # Use all available features under glibc, and disable accidental use of
201 # deprecated functionality.
202 AC_EGREP_CPP(glibc,
203                 [
204                  #include <stdio.h>
205                  #ifdef __GLIBC__
206                  glibc
207                  #endif
208                 ],
209                 AC_DEFINE(_GNU_SOURCE,1,[Use all glibc features.]))
210
211 case $host in
212 *-*-solaris*)
213         AC_DEFINE(_XOPEN_SOURCE_EXTENDED,1,[Needed to get declarations for msg_control and msg_controllen on Solaris])
214         AC_DEFINE(_XOPEN_SOURCE,1,[Needed to get declarations for msg_control and msg_controllen on Solaris])
215         AC_DEFINE(__EXTENSIONS__,1,[Needed to get declarations for msg_control and msg_controllen on Solaris])
216         ;;
217 esac
218
219 GLIB_REQUIRED=2.14.0
220 GTK_REQUIRED=2.6.0
221 AC_DEFINE(GDK_MULTIHEAD_SAFE,1,[Force use of GDK's multihead-safe APIs.])
222 PKG_CHECK_MODULES(GLIB,[glib-2.0 > $GLIB_REQUIRED])
223 PKG_CHECK_MODULES(GOBJECT,[glib-2.0 gobject-2.0])
224 PKG_CHECK_MODULES(GTK,[glib-2.0 >= $GLIB_REQUIRED gobject-2.0 gtk+-2.0 >= $GTK_REQUIRED])
225
226 wantedmodules="glib-2.0 gobject-2.0 gtk+-2.0 fontconfig pango >= 1.22.0"
227
228 AC_ARG_ENABLE(deprecation,
229               [AS_HELP_STRING([--enable-deprecation],
230                               [prohibit VTE from using deprecated GLib/Pango/GDK/GTK+ features])
231               ],
232               usedeprecation=$enableval, usedeprecation=no)
233 if test "x$usedeprecation" = "xyes" ; then
234         AC_DEFINE(G_DISABLE_DEPRECATED, 1, [Disable deprecated GLib features.])
235         AC_DEFINE(GDK_DISABLE_DEPRECATED, 1, [Disable deprecated GDK features.])
236         AC_DEFINE(GDK_PIXBUF_DISABLE_DEPRECATED, 1, [Disable deprecated gdk-pixbuf features.])
237         AC_DEFINE(GTK_DISABLE_DEPRECATED, 1, [Disable deprecated GTK+ features.])
238         AC_DEFINE(PANGO_DISABLE_DEPRECATED, 1, [Disable deprecated Pango features.])
239 fi
240
241 # Let the user specify the default terminal emulation.
242 AC_ARG_WITH(default-emulation,
243 AS_HELP_STRING(--with-default-emulation=xterm,default terminal type to be emulated),
244 emulation=$withval,emulation=xterm)
245 AC_DEFINE_UNQUOTED(VTE_DEFAULT_EMULATION,"$emulation",[The default terminal type to be emulated.])
246 VTE_DEFAULT_EMULATION=$emulation
247 AC_SUBST(VTE_DEFAULT_EMULATION)
248
249 # Miscellaneous definitions.
250 AC_DEFINE(VTE_UTF8_BPC,6,[Maximum number of bytes used per UTF-8 character.])
251 AC_DEFINE(VTE_INVALID_SOURCE,(guint)-1,[A number which can never be a valid source ID.])
252 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE",[Package name.])
253
254 # Check for headers.
255 AC_CHECK_HEADERS(sys/select.h sys/syslimits.h sys/termios.h sys/un.h sys/wait.h stropts.h termios.h wchar.h)
256 AC_HEADER_TIOCGWINSZ
257
258 # Check for PTY handling functions.
259 AC_CHECK_FUNCS([cfmakeraw fork setsid setpgid getpgid getpt grantpt unlockpt ptsname ptsname_r tcgetattr tcsetattr])
260
261 # Pull in the right libraries for various functions which might not be
262 # bundled into an exploded libc.
263 AC_CHECK_FUNC(socket,[have_socket=1],AC_CHECK_LIB(socket,socket,[have_socket=1; LIBS="$LIBS -lsocket"]))
264 AC_CHECK_FUNC(socketpair,[have_socketpair=1],AC_CHECK_LIB(socket,socketpair,[have_socketpair=1; LIBS="$LIBS -lsocket"]))
265 AC_CHECK_FUNC(recvmsg,[have_recvmsg=1],AC_CHECK_LIB(socket,recvmsg,[have_recvmsg=1; LIBS="$LIBS -lsocket -lnsl"]))
266 if test x$have_socket = x1 ; then
267         AC_DEFINE(HAVE_SOCKET,1,[Define if you have the socket function.])
268 fi
269 if test x$have_socketpair = x1 ; then
270         AC_DEFINE(HAVE_SOCKETPAIR,1,[Define if you have the socketpair function.])
271 fi
272 if test x$have_recvmsg = x1 ; then
273         AC_DEFINE(HAVE_RECVMSG,1,[Define if you have the recvmsg function.])
274 fi
275 AC_CHECK_FUNC(floor,,AC_CHECK_LIB(m,floor,LIBS=["$LIBS -lm"]))
276 AC_CHECK_FUNCS([ceil floor])
277
278 # Look for ncurses or curses or termcap.
279 AC_CHECK_HEADER(ncurses.h,[AC_CHECK_HEADER(term.h,[AC_CHECK_LIB(ncurses,tgetent,[LIBS="-lncurses $LIBS";AC_DEFINE(HAVE_NCURSES,1,[Define if you have ncurses.h and libncurses])])])])
280 if test x$ac_cv_lib_ncurses_tgetent != xyes ; then
281         AC_CHECK_HEADER(ncurses/curses.h,[AC_CHECK_HEADER(ncurses/term.h,[AC_CHECK_LIB(ncurses,tgetent,[LIBS="-lncurses $LIBS";AC_DEFINE(HAVE_NCURSES_CURSES,1,[Define if you have ncurses/curses.h and libncurses])])])])
282         if test x$ac_cv_lib_ncurses_tgetent != xyes ; then
283                 AC_CHECK_HEADER(curses.h,[AC_CHECK_HEADER(term.h,[AC_CHECK_LIB(curses,tgetent,[LIBS="-lcurses $LIBS";AC_DEFINE(HAVE_CURSES,1,[Define if you have curses.h and libcurses])])])])
284                 if test x$ac_cv_lib_curses_tgetent != xyes ; then
285                         AC_CHECK_HEADER(termcap.h,[AC_CHECK_LIB(termcap,tgetent,[LIBS="-ltermcap $LIBS";AC_DEFINE(HAVE_TERMCAP,1,[Define if you have termcap.h and libtermcap])])])
286                         if test x$ac_cv_header_termcap_h != xyes ; then
287                                 AC_MSG_ERROR([You must have at least one of ncurses, curses, or libtermcap installed to build vte.])
288                         fi
289                 fi
290         fi
291 fi
292
293
294 # Search for the required modules.
295 PKG_CHECK_MODULES(VTE,[$wantedmodules])
296 NEEDEDPACKAGES="$wantedmodules"
297 AC_SUBST(NEEDEDPACKAGES)
298
299 wcs_funcs_includes="
300 #ifdef HAVE_STRING_H
301 # if !STDC_HEADERS && HAVE_MEMORY_H
302 #  include <memory.h>
303 # endif
304 # include <string.h>
305 #else
306 # ifdef HAVE_STRINGS_H
307 #  include <strings.h>
308 # endif
309 #endif
310 #ifdef HAVE_WCHAR_H
311 # include <wchar.h>
312 #endif
313 "
314
315 AC_CHECK_TYPES(wint_t, AC_DEFINE(HAVE_WINT_T, , [Defined when the wint_t type is supported]), ,$wcs_funcs_includes)
316
317
318 ################################################################################
319 # Auxillary modules
320 ################################################################################
321
322 # Search for Python.
323 BUILD_PYTHON=true
324 AC_ARG_ENABLE(python, [AS_HELP_STRING(--enable-python,Build python bindings [default=yes])],[
325 if test x"$enableval" != xno ; then
326         BUILD_PYTHON=true
327 else
328         BUILD_PYTHON=false
329 fi],BUILD_PYTHON=true)
330
331 if $BUILD_PYTHON ; then
332         AM_PATH_PYTHON
333         if test -z "$PYTHON" ; then
334                 BUILD_PYTHON=false
335         fi
336 fi
337
338 if $BUILD_PYTHON ; then
339         AC_MSG_CHECKING(for python >= 2.2)
340         prog="
341 import sys, string
342 minver = (2,2,0,'final',0)
343 if sys.version_info < minver:
344         sys.exit(1)
345 sys.exit(0)
346 "
347         if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
348         then
349                 AC_MSG_RESULT([okay])
350         else
351                 BUILD_PYTHON=false
352                 AC_MSG_RESULT([too old])
353         fi
354 fi
355
356 if $BUILD_PYTHON ; then
357         AM_CHECK_PYTHON_HEADERS(,BUILD_PYTHON=false)
358 fi
359
360 if $BUILD_PYTHON ; then
361         AC_MSG_CHECKING([for pygtk-2.0])
362         if pkg-config --exists pygtk-2.0 ; then
363                 AC_MSG_RESULT([found])
364                 PKG_CHECK_MODULES(PYGTK,[pygtk-2.0])
365
366                 AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
367                 if test "x$PYGTK_CODEGEN" = xno; then
368                   AC_MSG_ERROR(could not find pygtk-codegen-2.0 script)
369                 fi
370
371                 AC_MSG_CHECKING(for pygtk defs)
372                 PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
373                 AC_SUBST(PYGTK_DEFSDIR)
374                 AC_MSG_RESULT($PYGTK_DEFSDIR)
375         else
376                 AC_MSG_RESULT([not found])
377                 BUILD_PYTHON=false
378         fi
379 fi
380
381 if ! $BUILD_PYTHON ; then
382         AC_MSG_RESULT([Python bindings disabled.])
383 fi
384
385 AC_SUBST(PYTHONREV)
386 AC_SUBST(PYTHONMODULES)
387 AM_CONDITIONAL(BUILD_PYTHON_MODULES, $BUILD_PYTHON)
388
389 AC_ARG_ENABLE(gnome-pty-helper, [AS_HELP_STRING(--enable-gnome-pty-helper,Build a setuid helper for opening ptys [default=yes])], enable_gnome_pty_helper="$enableval", enable_gnome_pty_helper=yes)
390 if test "$enable_gnome_pty_helper" != no; then
391         AC_DEFINE(VTE_USE_GNOME_PTY_HELPER,1,[Define if you intend to use gnome-pty-helper.])
392         AC_CONFIG_SUBDIRS(gnome-pty-helper)
393 fi
394 AM_CONDITIONAL(BUILD_GNOME_PTY_HELPER,[test "$enable_gnome_pty_helper" != no])
395
396 AC_PATH_PROG([GLIB_GENMARSHAL],[glib-genmarshal])
397 AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
398
399 ################################################################################
400 # Glade catalogue
401 ################################################################################
402
403 AC_MSG_CHECKING([whether to install the glade catalogue])
404 AC_ARG_ENABLE([glade-catalogue],
405   [AS_HELP_STRING([--disable-glade],[Disable installing the glade catalogue])],
406   [],[enable_glade_catalogue=no])
407 AC_MSG_RESULT([$enable_glade_catalogue])
408
409 if test "$enable_glade_catalogue" = "yes"; then
410   GLADE_CATALOGUE_DIR="$($PKG_CONFIG --variable=catalogdir gladeui-1.0)"
411   GLADE_ICON_DIR="$($PKG_CONFIG --variable=pixmapdir gladeui-1.0)"
412   GLADE_MODULE_DIR="$($PKG_CONFIG --variable=moduledir gladeui-1.0)"
413
414   if test -z "$GLADE_CATALOGUE_DIR" -o -z "$GLADE_MODULE_DIR"; then
415     AC_MSG_ERROR([gladeui-1.0 not found])
416   fi
417
418   AC_SUBST([GLADE_CATALOGUE_DIR])
419   AC_SUBST([GLADE_ICON_DIR])
420   AC_SUBST([GLADE_MODULE_DIR])
421 fi
422   
423 AM_CONDITIONAL([ENABLE_GLADE_CATALOGUE],[test "$enable_glade_catalogue" = "yes"])
424
425 ################################################################################
426
427 GTK_DOC_CHECK([1.0])
428
429 ################################################################################
430
431 AC_SUBST([VTE_MAJOR_VERSION],[vte_version_major])
432 AC_SUBST([VTE_MINOR_VERSION],[vte_version_minor])
433 AC_SUBST([VTE_MICRO_VERSION],[vte_version_micro])
434
435 ################################################################################
436
437 AC_CONFIG_FILES([
438 Makefile
439 src/Makefile
440 src/vteversion.h
441 termcaps/Makefile
442 python/Makefile
443 po/Makefile.in
444 doc/Makefile
445 doc/openi18n/Makefile
446 doc/reference/Makefile
447 glade/Makefile
448 vte.pc
449 vte-uninstalled.pc
450 ])
451 AC_OUTPUT
452
453
454 #####################
455 # Print configuration
456 #####################
457 cat <<EOF | tee -a config.log
458
459 ## -------------- ##
460 ## Configuration. ##
461 ## -------------- ##
462
463 Configuration for libvte $VERSION
464         With PCRE: $use_pcre
465         Installing Glade catalogue: $enable_glade_catalogue
466         Debugging: $DEBUG
467         Disable deprecated features: $usedeprecation
468 EOF