Clean up the pkgs declared for use in the .pc files.
[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 PANGO_REQUIRED=1.22.0
221 GTK_REQUIRED=2.12.0
222 AC_DEFINE(GDK_MULTIHEAD_SAFE,1,[Force use of GDK's multihead-safe APIs.])
223 PKG_CHECK_MODULES(GLIB,[glib-2.0 > $GLIB_REQUIRED])
224 PKG_CHECK_MODULES(GOBJECT,[glib-2.0 gobject-2.0])
225 PKG_CHECK_MODULES(GTK,[glib-2.0 >= $GLIB_REQUIRED gobject-2.0 gtk+-2.0 >= $GTK_REQUIRED])
226
227 AC_ARG_ENABLE(deprecation,
228               [AS_HELP_STRING([--enable-deprecation],
229                               [prohibit VTE from using deprecated GLib/Pango/GDK/GTK+ features])
230               ],
231               usedeprecation=$enableval, usedeprecation=no)
232 if test "x$usedeprecation" = "xyes" ; then
233         AC_DEFINE(G_DISABLE_DEPRECATED, 1, [Disable deprecated GLib features.])
234         AC_DEFINE(GDK_DISABLE_DEPRECATED, 1, [Disable deprecated GDK features.])
235         AC_DEFINE(GDK_PIXBUF_DISABLE_DEPRECATED, 1, [Disable deprecated gdk-pixbuf features.])
236         AC_DEFINE(GTK_DISABLE_DEPRECATED, 1, [Disable deprecated GTK+ features.])
237         AC_DEFINE(PANGO_DISABLE_DEPRECATED, 1, [Disable deprecated Pango features.])
238 fi
239
240 # Let the user specify the default terminal emulation.
241 AC_ARG_WITH(default-emulation,
242 AS_HELP_STRING(--with-default-emulation=xterm,default terminal type to be emulated),
243 emulation=$withval,emulation=xterm)
244 AC_DEFINE_UNQUOTED(VTE_DEFAULT_EMULATION,"$emulation",[The default terminal type to be emulated.])
245 VTE_DEFAULT_EMULATION=$emulation
246 AC_SUBST(VTE_DEFAULT_EMULATION)
247
248 # Miscellaneous definitions.
249 AC_DEFINE(VTE_UTF8_BPC,6,[Maximum number of bytes used per UTF-8 character.])
250 AC_DEFINE(VTE_INVALID_SOURCE,(guint)-1,[A number which can never be a valid source ID.])
251 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE",[Package name.])
252
253 # Check for headers.
254 AC_CHECK_HEADERS(sys/select.h sys/syslimits.h sys/termios.h sys/un.h sys/wait.h stropts.h termios.h wchar.h)
255 AC_HEADER_TIOCGWINSZ
256
257 # Check for PTY handling functions.
258 AC_CHECK_FUNCS([cfmakeraw fork setsid setpgid getpgid getpt grantpt unlockpt ptsname ptsname_r tcgetattr tcsetattr])
259
260 # Pull in the right libraries for various functions which might not be
261 # bundled into an exploded libc.
262 AC_CHECK_FUNC(socket,[have_socket=1],AC_CHECK_LIB(socket,socket,[have_socket=1; LIBS="$LIBS -lsocket"]))
263 AC_CHECK_FUNC(socketpair,[have_socketpair=1],AC_CHECK_LIB(socket,socketpair,[have_socketpair=1; LIBS="$LIBS -lsocket"]))
264 AC_CHECK_FUNC(recvmsg,[have_recvmsg=1],AC_CHECK_LIB(socket,recvmsg,[have_recvmsg=1; LIBS="$LIBS -lsocket -lnsl"]))
265 if test x$have_socket = x1 ; then
266         AC_DEFINE(HAVE_SOCKET,1,[Define if you have the socket function.])
267 fi
268 if test x$have_socketpair = x1 ; then
269         AC_DEFINE(HAVE_SOCKETPAIR,1,[Define if you have the socketpair function.])
270 fi
271 if test x$have_recvmsg = x1 ; then
272         AC_DEFINE(HAVE_RECVMSG,1,[Define if you have the recvmsg function.])
273 fi
274 AC_CHECK_FUNC(floor,,AC_CHECK_LIB(m,floor,LIBS=["$LIBS -lm"]))
275 AC_CHECK_FUNCS([ceil floor])
276
277 # Look for ncurses or curses or termcap.
278 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])])])])
279 if test x$ac_cv_lib_ncurses_tgetent != xyes ; then
280         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])])])])
281         if test x$ac_cv_lib_ncurses_tgetent != xyes ; then
282                 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])])])])
283                 if test x$ac_cv_lib_curses_tgetent != xyes ; then
284                         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])])])
285                         if test x$ac_cv_header_termcap_h != xyes ; then
286                                 AC_MSG_ERROR([You must have at least one of ncurses, curses, or libtermcap installed to build vte.])
287                         fi
288                 fi
289         fi
290 fi
291
292
293 # Search for the required modules.
294 VTE_PKGS="glib-2.0 >= $GLIB_REQUIRED gobject-2.0 pango >= $PANGO_REQUIRED gtk+-2.0 >= $GTK_REQUIRED"
295 PKG_CHECK_MODULES([VTE],[$VTE_PKGS])
296 AC_SUBST([VTE_PKGS])
297
298 wcs_funcs_includes="
299 #ifdef HAVE_STRING_H
300 # if !STDC_HEADERS && HAVE_MEMORY_H
301 #  include <memory.h>
302 # endif
303 # include <string.h>
304 #else
305 # ifdef HAVE_STRINGS_H
306 #  include <strings.h>
307 # endif
308 #endif
309 #ifdef HAVE_WCHAR_H
310 # include <wchar.h>
311 #endif
312 "
313
314 AC_CHECK_TYPES(wint_t, AC_DEFINE(HAVE_WINT_T, , [Defined when the wint_t type is supported]), ,$wcs_funcs_includes)
315
316
317 ################################################################################
318 # Auxillary modules
319 ################################################################################
320
321 # Search for Python.
322 BUILD_PYTHON=true
323 AC_ARG_ENABLE(python, [AS_HELP_STRING(--enable-python,Build python bindings [default=yes])],[
324 if test x"$enableval" != xno ; then
325         BUILD_PYTHON=true
326 else
327         BUILD_PYTHON=false
328 fi],BUILD_PYTHON=true)
329
330 if $BUILD_PYTHON ; then
331         AM_PATH_PYTHON
332         if test -z "$PYTHON" ; then
333                 BUILD_PYTHON=false
334         fi
335 fi
336
337 if $BUILD_PYTHON ; then
338         AC_MSG_CHECKING(for python >= 2.2)
339         prog="
340 import sys, string
341 minver = (2,2,0,'final',0)
342 if sys.version_info < minver:
343         sys.exit(1)
344 sys.exit(0)
345 "
346         if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
347         then
348                 AC_MSG_RESULT([okay])
349         else
350                 BUILD_PYTHON=false
351                 AC_MSG_RESULT([too old])
352         fi
353 fi
354
355 if $BUILD_PYTHON ; then
356         AM_CHECK_PYTHON_HEADERS(,BUILD_PYTHON=false)
357 fi
358
359 if $BUILD_PYTHON ; then
360         AC_MSG_CHECKING([for pygtk-2.0])
361         if pkg-config --exists pygtk-2.0 ; then
362                 AC_MSG_RESULT([found])
363                 PKG_CHECK_MODULES(PYGTK,[pygtk-2.0])
364
365                 AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
366                 if test "x$PYGTK_CODEGEN" = xno; then
367                   AC_MSG_ERROR(could not find pygtk-codegen-2.0 script)
368                 fi
369
370                 AC_MSG_CHECKING(for pygtk defs)
371                 PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
372                 AC_SUBST(PYGTK_DEFSDIR)
373                 AC_MSG_RESULT($PYGTK_DEFSDIR)
374         else
375                 AC_MSG_RESULT([not found])
376                 BUILD_PYTHON=false
377         fi
378 fi
379
380 if ! $BUILD_PYTHON ; then
381         AC_MSG_RESULT([Python bindings disabled.])
382 fi
383
384 AC_SUBST(PYTHONREV)
385 AC_SUBST(PYTHONMODULES)
386 AM_CONDITIONAL(BUILD_PYTHON_MODULES, $BUILD_PYTHON)
387
388 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)
389 if test "$enable_gnome_pty_helper" != no; then
390         AC_DEFINE(VTE_USE_GNOME_PTY_HELPER,1,[Define if you intend to use gnome-pty-helper.])
391         AC_CONFIG_SUBDIRS(gnome-pty-helper)
392 fi
393 AM_CONDITIONAL(BUILD_GNOME_PTY_HELPER,[test "$enable_gnome_pty_helper" != no])
394
395 AC_PATH_PROG([GLIB_GENMARSHAL],[glib-genmarshal])
396 AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
397
398 ################################################################################
399 # Glade catalogue
400 ################################################################################
401
402 AC_MSG_CHECKING([whether to install the glade catalogue])
403 AC_ARG_ENABLE([glade-catalogue],
404   [AS_HELP_STRING([--disable-glade],[Disable installing the glade catalogue])],
405   [],[enable_glade_catalogue=no])
406 AC_MSG_RESULT([$enable_glade_catalogue])
407
408 if test "$enable_glade_catalogue" = "yes"; then
409   GLADE_CATALOGUE_DIR="$($PKG_CONFIG --variable=catalogdir gladeui-1.0)"
410   GLADE_ICON_DIR="$($PKG_CONFIG --variable=pixmapdir gladeui-1.0)"
411   GLADE_MODULE_DIR="$($PKG_CONFIG --variable=moduledir gladeui-1.0)"
412
413   if test -z "$GLADE_CATALOGUE_DIR" -o -z "$GLADE_MODULE_DIR"; then
414     AC_MSG_ERROR([gladeui-1.0 not found])
415   fi
416
417   AC_SUBST([GLADE_CATALOGUE_DIR])
418   AC_SUBST([GLADE_ICON_DIR])
419   AC_SUBST([GLADE_MODULE_DIR])
420 fi
421   
422 AM_CONDITIONAL([ENABLE_GLADE_CATALOGUE],[test "$enable_glade_catalogue" = "yes"])
423
424 ################################################################################
425
426 GTK_DOC_CHECK([1.0])
427
428 ################################################################################
429
430 AC_SUBST([VTE_MAJOR_VERSION],[vte_version_major])
431 AC_SUBST([VTE_MINOR_VERSION],[vte_version_minor])
432 AC_SUBST([VTE_MICRO_VERSION],[vte_version_micro])
433
434 ################################################################################
435
436 AC_CONFIG_FILES([
437 Makefile
438 src/Makefile
439 src/vteversion.h
440 termcaps/Makefile
441 python/Makefile
442 po/Makefile.in
443 doc/Makefile
444 doc/openi18n/Makefile
445 doc/reference/Makefile
446 glade/Makefile
447 vte.pc
448 vte-uninstalled.pc
449 ])
450 AC_OUTPUT
451
452
453 #####################
454 # Print configuration
455 #####################
456 cat <<EOF | tee -a config.log
457
458 ## -------------- ##
459 ## Configuration. ##
460 ## -------------- ##
461
462 Configuration for libvte $VERSION
463         With PCRE: $use_pcre
464         Installing Glade catalogue: $enable_glade_catalogue
465         Debugging: $DEBUG
466         Disable deprecated features: $usedeprecation
467 EOF