*** empty log message ***
[dana/urxvt.git] / configure.ac
1 dnl#
2 dnl# Process this file with autoconf to produce a configure script.
3 dnl#
4
5 AC_INIT
6 AC_PREREQ(2.50)
7 AC_CONFIG_SRCDIR([src/feature.h])
8 AC_CONFIG_HEADER(config.h:config.h.in)
9
10 AC_CANONICAL_HOST
11
12 dnl RXVT version
13 changequote(, )dnl
14 VERSION=`sed -n -e 's/^.*[ \t]VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
15 DATE=`sed -n -e 's/^.*[ \t]DATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
16 dnl LIBVERSION=`sed -n -e 's/^.*[ \t]LIBVERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
17 changequote([, ])dnl
18 AC_SUBST(VERSION)dnl
19 AC_SUBST(DATE)dnl
20 AC_SUBST(LSMDATE)dnl
21 AC_SUBST(LIBVERSION)dnl
22 echo ""
23 echo "configuring for rxvt $VERSION"
24 echo ""
25
26 orig_CXXFLAGS="$CXXFLAGS"
27
28 dnl# Checks for programs.
29 dnl AC_MAKE_SET
30
31 AC_PROG_CC
32 AC_PROG_CXX
33 AC_PROG_CPP
34 AC_PROG_INSTALL
35
36 AC_AIX
37 AC_ISC_POSIX
38 AC_LANG(C++)
39
40 dnl check wether we can link with gcc -lsupc++
41 if test x$GCC = xyes && test x$GXX = xyes; then
42    dnl FreeBSD (at least up to 5.3) has a broken GCC, workaround it
43    AC_MSG_CHECKING([for working libsupc++])
44    save_CXX="$CXX"
45    save_LIBS="$LIBS"
46    CXX="$CC"
47    LIBS="$LIBS -lsupc++"
48    LINKER="$CC"
49    AC_LINK_IFELSE(
50       [AC_LANG_PROGRAM([struct test { }; void f() try { throw new test; } catch (...) { throw; }],[])],
51       [AC_MSG_RESULT(ok)],
52       [
53          AC_MSG_RESULT([no, making everything bigger and slower])
54          LIBS="$save_LIBS"
55          LINKER="$save_CXX"
56       ]
57    )
58    CXX="$save_CXX"
59 fi
60 AC_SUBST(LINKER,[$LINKER])
61
62 dnl# --------------------------------------------------------------------------
63 dnl# Supply default CXXFLAGS, if not specified by `CXXFLAGS=flags ./configure'
64 dnl#
65 if test -z "$orig_CXXFLAGS"; then
66   if test x$GCC = xyes && test "x$GXX" = xyes; then
67      CXXFLAGS="-g -O3 -fno-threadsafe-statics -fno-enforce-eh-specs"
68     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])], [], [CXXFLAGS="-g -O3"])
69   else
70     CXXFLAGS="-O"
71   fi
72   CFLAGS="$CXXFLAGS"
73 fi
74
75 AC_DEFINE(_GNU_SOURCE, 1, Use all glibc features.)
76
77 case $host in
78    *-*-solaris* )
79       AC_DEFINE(_XOPEN_SOURCE, 500, Needed to get declarations for msg_control and msg_controllen on Solaris)
80       ;;
81 esac
82
83 dnl if test x$GXX = xyes; then
84 dnl    CXXFLAGS="$CXXFLAGS" dnl I once had -fno-exceptions, but I am using them now...
85 dnl fi
86
87 dnl# FreeBSD needs to link libxpg4
88 AC_CHECK_FUNC(setlocale,     [], [AC_CHECK_LIB(xpg4,   setlocale,     [LIBS="$LIBS -lxpg4"])])
89
90 dnl# solaris needs to link libnsl and socket
91 AC_CHECK_FUNC(gethostbyname, [], [AC_CHECK_LIB(nsl,    gethostbyname, [LIBS="$LIBS -lnsl"])])
92 AC_CHECK_FUNC(socket,        [], [AC_CHECK_LIB(socket, socket,        [LIBS="$LIBS -lsocket"])])
93
94 dnl AC_ENABLE_SHARED(no)dnl#    libtool
95 dnl AC_ENABLE_STATIC(yes)dnl#   libtool
96 dnl AC_PROG_LIBTOOL()dnl#               libtool
97
98 support_frills=yes
99 support_inheritpixmap=yes
100 support_tinting=yes
101 support_fading=yes
102 support_keepscrolling=yes
103 support_selectionscrolling=yes
104 support_mousewheel=yes
105 support_mouseslipwheel=yes
106 support_text_blink=yes
107 support_pointer_blank=yes
108 support_scroll_rxvt=yes
109 support_scroll_next=yes
110 support_scroll_xterm=yes
111 support_scroll_plain=yes
112 support_xim=yes
113 support_xpm=yes
114 support_afterimage=yes
115 support_afterstep=yes
116 support_xft=yes
117 support_unicode3=no
118 support_combining=yes
119 support_8bitctrls=no
120 support_iso14755=yes
121 support_styles=yes
122 support_perl=yes
123 codesets=all
124
125 dnl# --------------------------------------------------------------------------
126 dnl# CHECKING COMMAND LINE OPTIONS
127 dnl# --------------------------------------------------------------------------
128
129 if test "x$enable_shared" = xyes; then
130     AC_DEFINE(LIBRXVT, 1, Build shared library version - specify via configure only)
131     INSTALL_LIBRXVT=yes
132 fi
133 AC_SUBST(INSTALL_LIBRXVT)
134
135 AC_ARG_ENABLE(everything,
136   [  --enable-everything     enable standard non-multichoice features
137                      NOTE: this option is order dependent
138                      NOTE: automatically enabled with --enable-shared],
139   [
140     if test x$enableval = xno; then
141        support_frills=no
142        support_inheritpixmap=no
143        support_tinting=no
144        support_fading=no
145        support_keepscrolling=no
146        support_selectionscrolling=no
147        support_lastlog=no
148        support_mousewheel=no
149        support_mouseslipwheel=no
150        support_text_blink=no
151        support_pointer_blank=no
152        support_scroll_rxvt=no
153        support_scroll_next=no
154        support_scroll_xterm=no
155        support_scroll_plain=no
156        support_utmp=no
157        support_wtmp=no
158        support_xim=no
159        support_xpm=no
160        support_afterimage=no
161        support_afterstep=no
162        support_xft=no
163        support_unicode3=no
164        support_combining=no
165        support_8bitctrls=no
166        support_iso14755=no
167        support_styles=no
168        support_perl=no
169        codesets=
170     fi
171     if test x$enableval = xyes; then
172        support_frills=yes
173        support_inheritpixmap=yes
174        support_tinting=yes
175        support_fading=yes
176        support_keepscrolling=yes
177        support_selectionscrolling=yes
178        support_lastlog=yes
179        support_mousewheel=yes
180        support_mouseslipwheel=yes
181        support_text_blink=yes
182        support_pointer_blank=yes
183        support_scroll_rxvt=yes
184        support_scroll_next=yes
185        support_scroll_xterm=yes
186        support_scroll_plain=yes
187        support_utmp=yes
188        support_wtmp=yes
189        support_xim=yes
190        support_xpm=yes
191        support_afterimage=yes
192        support_afterstep=yes
193        support_xft=yes
194        support_unicode3=yes
195        support_combining=yes
196        #support_8bitctrls=yes
197        support_iso14755=yes
198        support_styles=yes
199        support_perl=yes
200        codesets=all
201     fi
202   ])
203
204 AC_ARG_ENABLE(unicode3,
205   [  --enable-unicode3       use 21 instead of 16 bits to represent unicode characters],
206   [if test x$enableval = xyes -o x$enableval = xno; then
207     support_unicode3=$enableval
208   fi])
209
210 AC_ARG_ENABLE(combining,
211   [  --enable-combining      enable composition of base and combining characters],
212   [if test x$enableval = xyes -o x$enableval = xno; then
213     support_combining=$enableval
214   fi])
215
216 AC_ARG_ENABLE(xft,
217   [  --enable-xft            enable xft support on systems that have it],
218   [if test x$enableval = xyes -o x$enableval = xno; then
219     support_xft=$enableval
220   fi])
221
222 AC_ARG_ENABLE(font-styles,
223   [  --enable-font-styles    enable bold and italic support],
224   [if test x$enableval = xyes -o x$enableval = xno; then
225     support_styles=$enableval
226   fi])
227
228 AC_ARG_ENABLE(xpm-background,
229   [  --enable-xpm-background enable background pixmaps],
230   [if test x$enableval = xyes -o x$enableval = xno; then
231     support_xpm=$enableval
232   fi])
233
234 AC_ARG_ENABLE(afterimage,
235   [  --enable-afterimage enable integration with libAfterImage for background images],
236   [if test x$enableval = xyes -o x$enableval = xno; then
237     support_afterimage=$enableval
238   fi])
239
240 AC_ARG_WITH(afterimage_config,
241   [  --with-afterimage-config=DIR  use libAfterImage config script in DIR],
242   [if test "x$withval" != x; then
243     afterimage_config=$withval/afterimage-config
244   fi])
245
246 AC_ARG_ENABLE(afterstep,
247   [  --enable-afterstep enable integration with AfterStep window manager],
248   [if test x$enableval = xyes -o x$enableval = xno; then
249     support_afterstep=$enableval
250   fi])
251
252 AC_ARG_ENABLE(transparency,
253   [  --enable-transparency   enable transparent backgrounds],
254   [if test x$enableval = xyes -o x$enableval = xno; then
255     support_inheritpixmap=$enableval
256   fi])
257
258 AC_ARG_ENABLE(tinting,
259   [  --enable-tinting        enable tinting of transparent bg],
260   [if test x$enableval = xyes -o x$enableval = xno; then
261     support_tinting=$enableval
262   fi])
263
264 AC_ARG_ENABLE(fading,
265   [  --enable-fading         enable colors fading when off focus],
266   [if test x$enableval = xyes -o x$enableval = xno; then
267     support_fading=$enableval
268   fi])
269
270 AC_ARG_ENABLE(rxvt-scroll,
271   [  --enable-rxvt-scroll    enable rxvt style scrollbar],
272   [if test x$enableval = xyes -o x$enableval = xno; then
273     support_scroll_rxvt=$enableval
274   fi])
275
276 AC_ARG_ENABLE(next-scroll,
277   [  --enable-next-scroll    enable NeXT style scrollbar],
278   [if test x$enableval = xyes -o x$enableval = xno; then
279     support_scroll_next=$enableval
280   fi])
281
282 AC_ARG_ENABLE(xterm-scroll,
283   [  --enable-xterm-scroll   enable Xterm style scrollbar],
284   [if test x$enableval = xyes -o x$enableval = xno; then
285     support_scroll_xterm=$enableval
286   fi])
287
288 AC_ARG_ENABLE(perl,
289   [  --enable-perl           enable embedded perl interpreter],
290   [if test x$enableval = xyes -o x$enableval = xno; then
291     support_perl=$enableval
292   fi])
293
294 AC_ARG_ENABLE(plain-scroll,
295   [  --enable-plain-scroll   enable plain style scrollbar],
296   [if test x$enableval = xyes -o x$enableval = xno; then
297     support_scroll_plain=$enableval
298   fi])
299
300 AC_ARG_WITH(codesets,
301   [  --with-codesets=NAME,.. compile in additional codesets (jp,jp_ext,kr,zh,zh_ext,all)],
302   [codesets="$withval"])
303
304 AC_ARG_ENABLE(xim,
305   [  --enable-xim            XIM (X Input Method) protocol support],
306   [if test x$enableval = xyes -o x$enableval = xno; then
307     support_xim=$enableval
308   fi])
309
310 AC_ARG_ENABLE(backspace-key,
311   [  --disable-backspace-key disable handling of the backspace key],
312   [if test x$enableval = xno; then
313     AC_DEFINE(NO_BACKSPACE_KEY, 1, Define if you don't want support for the backspace key)
314   fi])
315
316 AC_ARG_ENABLE(delete-key,
317   [  --disable-delete-key    disable handling of the delete key],
318   [if test x$enableval = xno; then
319     AC_DEFINE(NO_DELETE_KEY, 1, Define if you don't want support for the (non-keypad) delete key)
320   fi])
321
322 AC_ARG_ENABLE(resources,
323   [  --disable-resources     disable all resource checking],
324   [if test x$enableval = xno; then
325     AC_DEFINE(NO_RESOURCES, 1, Define if you don't want any resources read)
326   fi])
327
328 AC_ARG_ENABLE(8bitctrls,
329   [  --enable-8bitctrls      enable 8 bit control sequences (not recommended)],
330   [if test x$enableval = xyes -o x$enableval = xno; then
331     support_8bitctrls=$enableval
332   fi])
333
334 RESFALLBACK=Rxvt
335 AC_ARG_ENABLE(fallback,
336   [  --enable-fallback(=CLASS) fall back on CLASS resources in addition to URxvt ones (default: Rxvt)],
337   [
338    test x$enableval = xyes && enableval=Rxvt
339    test x$enableval = xno  && enableval=
340    RESFALLBACK="$enableval"
341   ])
342
343 if test x$RESFALLBACK != x; then
344    AC_DEFINE_UNQUOTED(RESFALLBACK, "$RESFALLBACK", [Fallback resource class])
345 fi
346
347 RESNAME=urxvt
348 AC_ARG_WITH(res-name,
349   [  --with-res-name=NAME    use this as default resource name (default: urxvt)],
350   [RESNAME="$withval"])
351 AC_DEFINE_UNQUOTED(RESNAME,"$RESNAME", [Default resource name])
352
353 RESCLASS=URxvt
354 AC_ARG_WITH(res-class,
355   [  --with-res-class=CLASS  use this as the resource class (default: URxvt)],
356   [RESCLASS="$withval"])
357 AC_DEFINE_UNQUOTED(RESCLASS,"$RESCLASS", [Resource class])
358
359 RXVTNAME=urxvt
360 AC_ARG_WITH(name,
361   [  --with-name=NAME        set the basename for the installed binaries (default: urxvt)],
362   [RXVTNAME="$withval"])
363 AC_DEFINE_UNQUOTED(RXVTNAME,"$RXVTNAME", [Binary base name])
364
365 RXVTNAME=`echo "$RXVTNAME"|sed "$program_transform_name"`
366 AC_SUBST(RXVTNAME)
367
368 AC_ARG_ENABLE(swapscreen,
369   [  --disable-swapscreen    disable swap screen support],
370   [if test x$enableval = xno; then
371     AC_DEFINE(NO_SECONDARY_SCREEN, 1, Disable the secondary screen. Many programs use the secondary screen as their workplace)
372   fi])
373
374 AC_ARG_ENABLE(iso14755,
375   [  --enable-iso14755       enable support for extended ISO 14755 modes],
376   [if test x$enableval = xyes -o x$enableval = xno; then
377     support_iso14755=$enableval
378   fi])
379
380 AC_ARG_ENABLE(frills,
381   [  --enable-frills         enable support for rarely used features],
382   [if test x$enableval = xyes -o x$enableval = xno; then
383     support_frills=$enableval
384   fi])
385
386 AC_ARG_ENABLE(keepscrolling,
387   [  --enable-keepscrolling  enable continual scrolling on scrollbar arrow press],
388   [if test x$enableval = xyes -o x$enableval = xno; then
389     support_keepscrolling=$enableval
390   fi])
391
392 AC_ARG_ENABLE(selectionscrolling,
393   [  --enable-selectionscrolling  enable scrolling during selections],
394   [if test x$enableval = xyes -o x$enableval = xno; then
395     support_selectionscrolling=$enableval
396   fi])
397
398 AC_ARG_ENABLE(mousewheel,
399   [  --enable-mousewheel     enable scrolling via mouse wheel or buttons 4 & 5],
400   [if test x$enableval = xyes -o x$enableval = xno; then
401     support_mousewheel=$enableval
402   fi])
403
404 AC_ARG_ENABLE(slipwheeling,
405   [  --enable-slipwheeling   enable slip wheel scrolling     (requires previous)],
406   [if test x$enableval = xyes -o x$enableval = xno; then
407     support_mouseslipwheel=$enableval
408   fi])
409
410 AC_ARG_ENABLE(smart-resize,
411   [  --enable-smart-resize   enable smart growth/shrink behaviour],
412   [if test x$enableval = xyes; then
413     AC_DEFINE(SMART_RESIZE, 1, Define to use "smart" resize behavior)
414   fi])
415
416 AC_ARG_ENABLE(text-blink,
417   [  --enable-text-blink     enable blinking text],
418   [if test x$enableval = xyes -o x$enableval = xno; then
419     support_text_blink=$enableval
420   fi])
421
422 AC_ARG_ENABLE(pointer-blank,
423   [  --enable-pointer-blank  enable pointer blank when typing or inactive pointer],
424   [if test x$enableval = xyes -o x$enableval = xno; then
425     support_pointer_blank=$enableval
426   fi])
427
428 AC_ARG_WITH(term,
429   [  --with-term=NAME        set the terminal to NAME (default: rxvt)],
430   [if test x$withval != x; then
431     AC_DEFINE_UNQUOTED(TERMENV, "$withval",Set TERM to the value given by configure) term="$withval"
432   fi])
433
434 AC_ARG_WITH(terminfo,
435   [  --with-terminfo=PATH    set the path to the terminfo tree to PATH],
436   [if test x$withval != x; then
437     AC_DEFINE_UNQUOTED(RXVT_TERMINFO, "$withval", Set TERMINFO value to the value given by configure) terminfo="$withval"
438   fi])
439
440 dnl# --------------------------------------------------------------------------
441
442 AC_PATH_PROG(TIC, tic)
443
444 dnl# need a neat way to detect SVR4 or its features
445 dnl# in src/command.c we use these functions:
446 dnl# grantpt(), unlockpt(), ptsname(), which are defined in <sys/ptms.h>
447 dnl# - but are these also defined for other systems?
448
449 dnl# hack to find if this is SVR4 -- who knows?
450 dnl## AC_MSG_CHECKING(for SVR4)
451 dnl## AC_EGREP_CPP(yes,
452 dnl## [#if defined (SVR4) || defined (_SVR4) || defined (__svr4__)
453 dnl##   yes;
454 dnl## #endif
455 dnl## ], [AC_MSG_RESULT(yes); AC_DEFINE(PERHAPS_SVR4)], AC_MSG_RESULT(perhaps not?))
456
457 AC_PATH_XTRA
458
459 dnl# the only reasonable way to find libXpm is do-it-yourself
460 dnl# only check if we want xpm-background
461
462 AFTERIMAGE_CFLAGS=
463 AFTERIMAGE_LIBS=
464 AFTERIMAGE_VERSION=
465
466 if test x$support_afterimage = xyes; then
467   support_afterimage=no
468
469   if test "x$afterimage_config" = "x" ; then
470     AC_PATH_PROG(afterimage_config, afterimage-config, no)
471   fi
472   AC_MSG_CHECKING(for libAfterImage version >= 1.15)
473   AFTERIMAGE_VERSION=`$afterimage_config --version`
474   if test -n "$AFTERIMAGE_VERSION" ; then
475     AFTERIMAGE_CFLAGS=`$afterimage_config --cflags`
476     AFTERIMAGE_LIBS=`$afterimage_config --libs`
477     if test "x$AFTERIMAGE_LIBS" != "x"; then
478       libai_ver_major=`echo $AFTERIMAGE_VERSION | cut -f 1 -d .`
479       libai_ver_minor=`echo $AFTERIMAGE_VERSION | cut -f 2 -d .`
480       if test $libai_ver_major -gt 1 -o \( $libai_ver_major -eq 1 -a $libai_ver_minor -ge 15 \); then
481         support_afterimage=yes
482       fi
483     fi
484   fi
485
486   if test "x$support_afterimage" = "xyes"; then
487     AC_MSG_RESULT($AFTERIMAGE_LIBS)
488   else
489     AC_MSG_RESULT(no)
490   fi
491 fi
492
493 if test x$support_afterimage != xyes -a x$support_xpm = xyes ; then
494   VT_FIND_LIBXPM
495   if test x$no_xpm = xyes; then
496     support_xpm=needsmanualspecification
497   fi
498 fi
499
500 dnl# --------------------------------------------------------------------------
501 dnl# CHECKING FOR HEADER FILES
502 dnl# --------------------------------------------------------------------------
503 AC_HEADER_SYS_WAIT
504 AC_CHECK_HEADERS( \
505         assert.h \
506         fcntl.h \
507         stdarg.h \
508         stdlib.h \
509         string.h \
510         termios.h \
511         unistd.h \
512         sys/byteorder.h \
513         sys/ioctl.h \
514         sys/select.h \
515         sys/sockio.h \
516         sys/strredir.h \
517         sys/time.h \
518         stdint.h \
519         wchar.h \
520         cwchar \
521         clocale \
522 )
523
524 AC_HEADER_TIME
525
526 dnl# check to allow both <termios.h> and <sys/ioctl.h>
527 AC_CACHE_CHECK(whether termios.h and sys/ioctl.h may both be included, rxvt_cv_header_sysioctl,
528 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
529 #include <sys/ioctl.h>
530 #ifdef HAVE_TERMIOS_H
531 #include <termios.h>
532 #endif]], [[int a = ECHO;]])],[rxvt_cv_header_sysioctl=yes],[rxvt_cv_header_sysioctl=no])])
533
534 AC_CACHE_CHECK([for XPointer], rxvt_cv_xpointer,
535 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]], [[XPointer dummy;]])],[rxvt_cv_xpointer=yes],[rxvt_cv_xpointer=no])])
536 if test x$rxvt_cv_xpointer = xyes; then
537   AC_DEFINE(HAVE_XPOINTER, 1, Define if you have XPointer typedef)
538 fi
539
540 AC_CACHE_CHECK([for XLIB_ILLEGAL_ACCESS], rxvt_xlib_illegal_access,
541 [AC_COMPILE_IFELSE(
542    [AC_LANG_PROGRAM([
543 #define XLIB_ILLEGAL_ACCESS
544 #include <X11/Xlib.h>
545    ],[
546       Display *dpy;
547       dpy->xdefaults = (char *)0;
548    ])],
549    [rxvt_xlib_illegal_access=yes],[rxvt_xlib_illegal_access=no]
550 )])
551 if test x$rxvt_xlib_illegal_access = xyes; then
552    AC_DEFINE(XLIB_ILLEGAL_ACCESS, 1, Define ONLY iff Xlib.h supports it)
553 fi
554
555 AC_C_CONST
556 AC_C_INLINE
557
558 dnl> AC_HEADER_STDC      dnl# skip this test, Sun always fails anyhow.
559
560 dnl# --------------------------------------------------------------------------
561 dnl# CHECKING FOR MISSING TYPEDEFS
562 dnl# --------------------------------------------------------------------------
563 dnl# Missing typedefs and replacements
564 AC_TYPE_MODE_T
565 dnl> AC_CHECK_TYPE(umode_t, int)
566 dnl> AC_CHECK_TYPE(off_t, long)
567 AC_TYPE_PID_T
568 AC_TYPE_UID_T
569
570 AC_CHECK_SIZEOF(short, 2)
571 AC_CHECK_SIZEOF(int, 4)
572 dnl AC_CHECK_SIZEOF(long, 4)
573 AC_CHECK_SIZEOF(long long, 8)
574 AC_CHECK_SIZEOF(int *, 4)
575
576 dnl# see usage below
577 AC_DEFUN([RXVT_CHECK_SIZE],
578   [AC_CACHE_CHECK([for $2], $1,
579     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdint.h>]], [[$2 dummy;]])],[$1=yes],[dnl
580 if test "$ac_cv_sizeof_char" -ge $3; then
581   $1="$4 char"
582 else
583   if test "$ac_cv_sizeof_short" -ge $3; then
584     $1="$4 short"
585   else
586     if test "$ac_cv_sizeof_int" -ge $3; then
587       $1="$4 int"
588     else
589       if test "$ac_cv_sizeof_long" -ge $3; then
590         $1="$4 long"
591       else
592         if test "$ac_cv_sizeof_long_long" -ge $3; then
593           $1="$4 long long"
594         else
595           $1="$4 $5" # we _must_ have a (possibly wrong) default
596         fi
597       fi
598     fi
599   fi
600 fi])])]
601 if test x"$$1" != xyes; then
602   $6="typedef $$1 $2;"
603 else
604   if test x"$4" = x; then
605     $6="/* typedef $5 $2; */"
606   else
607     $6="/* typedef $4 $5 $2; */"
608   fi
609 fi dnl
610 )
611 dnl#
612 dnl# Look for types the system may know about anyway.
613 dnl#
614 RXVT_CHECK_SIZE(rxvt_cv_int16_t, int16_t, 2, , short, rxvt_int16_typedef)
615 AC_SUBST(rxvt_int16_typedef)
616 RXVT_CHECK_SIZE(rxvt_cv_uint16_t, uint16_t, 2, unsigned, short, rxvt_uint16_typedef)
617 AC_SUBST(rxvt_uint16_typedef)
618 RXVT_CHECK_SIZE(rxvt_cv_int32_t, int32_t, 4, , int, rxvt_int32_typedef)
619 AC_SUBST(rxvt_int32_typedef)
620 RXVT_CHECK_SIZE(rxvt_cv_uint32_t, uint32_t, 4, unsigned, int, rxvt_uint32_typedef)
621 AC_SUBST(rxvt_uint32_typedef)
622 dnl RXVT_CHECK_SIZE(rxvt_cv_int64_t, int64_t, 8, , long long, rxvt_int64_typedef)
623 dnl AC_SUBST(rxvt_int64_typedef)
624 dnl RXVT_CHECK_SIZE(rxvt_cv_uint64_t, uint64_t, 8, unsigned, long long, rxvt_uint64_typedef)
625 dnl AC_SUBST(rxvt_uint64_typedef)
626 dnl#
627 dnl# Now look for another we use
628 dnl#
629 if test "$ac_cv_sizeof_int_p" -eq 8; then
630   rxvt_intp_define="#define intp_t int64_t"
631   rxvt_u_intp_define="#define u_intp_t u_int64_t"
632 else
633   if test "$ac_cv_sizeof_int_p" -eq 4; then
634     rxvt_intp_define="#define intp_t int32_t"
635     rxvt_u_intp_define="#define u_intp_t u_int32_t"
636   else
637     if test "$ac_cv_sizeof_int_p" -eq 2; then
638       rxvt_intp_define="#define intp_t int16_t"
639       rxvt_u_intp_define="#define u_intp_t u_int16_t"
640     else
641       rxvt_intp_define="#error set intp_t"
642       rxvt_u_intp_define="#error set u_intp_t"
643     fi
644   fi
645 fi
646 AC_SUBST(rxvt_intp_define)
647 AC_SUBST(rxvt_u_intp_define)
648
649 dnl# --------------------------------------------------------------------------
650 dnl# CHECKING FOR LIBRARY FUNCTIONS
651 dnl# --------------------------------------------------------------------------
652 AC_TYPE_SIGNAL
653 dnl> AC_FUNC_VPRINTF
654
655 AC_CHECK_FUNCS( \
656         unsetenv \
657         setutent \
658         on_exit \
659 )
660
661 UTMP_CHECK
662
663 dnl# --------------------------------------------------------------------------
664
665 dnl# find ttys/ttytab
666 AC_CACHE_CHECK(where ttys/ttytab is located, rxvt_cv_path_ttytab,
667 [for ttys_file in   dnl
668   /etc/ttys /etc/ttytab;
669 do
670   if test -f "$ttys_file" ; then
671     rxvt_cv_path_ttytab=$ttys_file
672     break
673   fi
674 done
675 ])
676 if test x$rxvt_cv_path_ttytab != x; then
677   AC_DEFINE_UNQUOTED(TTYTAB_FILENAME, "$rxvt_cv_path_ttytab", Define location of ttys/ttytab)
678 fi
679
680 dnl# --------------------------------------------------------------------------
681 dnl# --------------------------------------------------------------------------
682
683 dnl# this is a really hack test for some basic Xlocale stuff
684 ac_save_LIBS=$LIBS
685 ac_save_CFLAGS=$CFLAGS
686 CFLAGS="$CFLAGS $X_CFLAGS"
687 LIBS="$LIBS $X_LIBS $X_EXTRA_LIBS -lX11"
688 AC_CACHE_CHECK(for working Xlocale, rxvt_cv_func_xlocale,
689 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <X11/Xlib.h>
690 #include <stdlib.h>
691 main() {
692 char *p;
693 if ((p = XSetLocaleModifiers("@im=none")) != NULL && *p)
694 exit (XSupportsLocale() ? 0 : 1);
695 else
696 exit (1);}]])],[dnl
697   rxvt_cv_func_xlocale=yes],[rxvt_cv_func_xlocale=no],[dnl
698   :])])
699 if test x$support_xim = xyes; then
700   if test x$rxvt_cv_func_xlocale = xyes; then
701     AC_DEFINE(USE_XIM, 1, Define if you want to have XIM (X Input Method) protocol support - required for multibyte characters input)
702   fi
703 fi
704
705 AC_CACHE_CHECK(for working X setlocale, rxvt_cv_func_xsetlocale,
706 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define X_LOCALE 1
707 #include <X11/Xlocale.h>]], [[setlocale(LC_CTYPE, "");]])],[rxvt_cv_func_xsetlocale=yes],[rxvt_cv_func_xsetlocale=no])])
708 if test x$rxvt_cv_func_xsetlocale = xyes; then
709   AC_DEFINE(HAVE_XSETLOCALE, 1, Define if setlocale (defined to Xsetlocale) works)
710 fi
711 LIBS=$ac_save_LIBS
712 CFLAGS=$ac_save_CFLAGS
713
714 AC_CACHE_CHECK(for working plain setlocale, rxvt_cv_func_setlocale,
715 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <clocale>]], [[setlocale(LC_CTYPE, "");]])],[rxvt_cv_func_setlocale=yes],[rxvt_cv_func_setlocale=no])])
716 if test x$rxvt_cv_func_setlocale = xyes; then
717   AC_DEFINE(HAVE_SETLOCALE, 1, Define if plain old setlocale works)
718 fi
719
720 AC_CACHE_CHECK(for working nl_langinfo, rxvt_cv_func_nl_langinfo,
721 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo(CODESET);]])],[rxvt_cv_func_nl_langinfo=yes],[rxvt_cv_func_nl_langinfo=no])])
722 if test x$rxvt_cv_func_nl_langinfo = xyes; then
723   AC_DEFINE(HAVE_NL_LANGINFO, 1, Define if nl_langinfo(CODESET) works)
724 fi
725
726 SCM_RIGHTS_CHECK
727
728 AC_CACHE_CHECK(for broken XIM callback, rxvt_broken_ximcb,
729 [AC_COMPILE_IFELSE([
730 #include <X11/Xlib.h>
731
732 void im_destroy_cb (XIC unused1, XPointer client_data, XPointer unused3);
733
734 void f() {
735   XIMCallback cb;
736   cb.callback = im_destroy_cb;
737 }
738 ],rxvt_broken_ximcb=yes,rxvt_broken_ximcb=no)])
739
740 if test x$rxvt_broken_ximcb = xyes; then
741    AC_DEFINE(XIMCB_PROTO_BROKEN, 1, Define if your XIMCallback specifies XIC as first type.)
742 fi
743
744 PTY_CHECK
745
746 TTY_GROUP_CHECK
747
748 dnl# --------------------------------------------------------------------------
749 dnl# now add and remove other stuff
750 dnl# --------------------------------------------------------------------------
751 if test x$support_xft = xyes; then
752   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
753   if test $PKG_CONFIG != no && $PKG_CONFIG --exists xft; then
754     LIBS="$LIBS `$PKG_CONFIG xft --libs`"
755     CPPFLAGS="$CPPFLAGS `$PKG_CONFIG xft --cflags`"
756   else
757     AC_PATH_PROG(XFT_CONFIG, xft-config, no)
758     if test $XFT_CONFIG != no; then
759       LIBS="$LIBS `$XFT_CONFIG --libs`"
760       CPPFLAGS="$CPPFLAGS `$XFT_CONFIG --cflags`"
761     fi
762   fi
763
764   AC_CHECK_HEADERS(X11/Xft/Xft.h,,[support_xft=no])
765   AC_CHECK_LIB(Xft,XftDrawString32,,[support_xft=no])
766
767   if test x$support_xft = xyes; then
768     AC_DEFINE(XFT, 1, Define to enable xft support)
769   fi
770 fi
771 if test x$support_styles = xyes; then
772   AC_DEFINE(ENABLE_STYLES, 1, Define if you want bold and italic support)
773 fi
774 if test x$support_iso14755 = xyes; then
775   AC_DEFINE(ISO_14755, 1, Define if you want ISO 14755 extended support)
776 fi
777 if test x$support_8bitctrls = xyes; then
778   AC_DEFINE(EIGHT_BIT_CONTROLS, 1, Define if you want 8 bit control sequences)
779 fi
780 if test x$support_fading = xyes; then
781   AC_DEFINE(OFF_FOCUS_FADING, 1, Define if you want faded colors when focus is lost)
782 fi
783 if test x$support_tinting = xyes; then
784   AC_DEFINE(TINTING, 1, Define if you want your background to be tinted)
785 fi
786 if test x$support_inheritpixmap = xyes; then
787   AC_DEFINE(ENABLE_TRANSPARENCY, 1, Define if you want your background to use the parent window background)
788 fi
789 if test x$support_keepscrolling = xno; then
790   AC_DEFINE(NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING, 1, Define for continual scrolling when you keep the scrollbar button pressed)
791 fi
792 if test x$support_selectionscrolling = xyes; then
793   AC_DEFINE(SELECTION_SCROLLING, 1, Define to allow scrolling when the selection moves to the top or bottom of the screen)
794 fi
795 if test x$support_mousewheel = xyes; then
796   AC_DEFINE(MOUSE_WHEEL, 1, Define to use wheel events (button4 and button5) to scroll)
797 fi
798 if test x$support_mouseslipwheel = xyes; then
799   AC_DEFINE(MOUSE_SLIP_WHEELING, 1, Define to have CTRL cause wheel events to accelerate scrolling. Release CTRL to halt scrolling)
800 fi
801 if test x$support_xpm = xyes -o x$support_afterimage = xyes ; then
802   AC_DEFINE(XPM_BACKGROUND, 1, Define if you want to have sexy-looking background pixmaps. Needs libXpm or libAfterImage)
803 fi
804
805 if test x$support_afterimage = xyes; then
806   AC_DEFINE(HAVE_AFTERIMAGE, 1, Define if you want to use libAfterImage for image processing)
807 fi
808
809 if test x$support_afterstep = xyes; then
810   AC_DEFINE(AFTERSTEP_INTEGRATION, 1, Define if you want to integrate with AfterStep window manager)
811 fi
812
813 if test x$support_scroll_rxvt = xyes; then
814   AC_DEFINE(RXVT_SCROLLBAR, 1, Support Rxvt original style scrollbars)
815   scrolltypes="rxvt"
816 fi
817 if test x$support_scroll_next = xyes; then
818   AC_DEFINE(NEXT_SCROLLBAR, 1, Support NeXT style scrollbars)
819   scrolltypes="$scrolltypes next"
820 fi
821 if test x$support_scroll_xterm = xyes; then
822   AC_DEFINE(XTERM_SCROLLBAR, 1, Support Xterm style scrollbars)
823   scrolltypes="$scrolltypes xterm"
824 fi
825 if test x$support_scroll_plain = xyes; then
826   AC_DEFINE(PLAIN_SCROLLBAR, 1, Support plain style scrollbars)
827   scrolltypes="$scrolltypes plain"
828 fi
829 if test x$support_pointer_blank = xyes; then
830   AC_DEFINE(POINTER_BLANK, 1, Define if you want hide the pointer while typing)
831 fi
832 if test x$support_text_blink = xyes; then
833   AC_DEFINE(TEXT_BLINK, 1, Define if you want blinking text support)
834 fi
835 if test x$support_unicode3 = xyes; then
836   AC_DEFINE(UNICODE_3, 1, Define if you want to represent unicode characters outside plane 0)
837 fi
838 if test x$support_combining = xyes; then
839   AC_DEFINE(ENABLE_COMBINING, 1, Define if you want to automatically compose combining characters)
840 fi
841 if test x$codesets = xall; then
842   codesets=jp,jp-ext,kr,zh,zh-ext
843 fi
844 AC_DEFINE(ENCODING_EU, 1, Define if you want european extended codesets)
845 AC_DEFINE(ENCODING_VN, 1, Define if you want vietnamese codesets)
846 for codeset in `echo $codesets | tr "[a-z,\\-]" "[A-Z _]"`; do
847   case "$codeset" in
848     JP     ) AC_DEFINE(ENCODING_JP,     1, Define if you want japanese codesets) ;;
849     JP_EXT ) AC_DEFINE(ENCODING_JP_EXT, 1, Define if you want extended japanese codesets) ;;
850     KR     ) AC_DEFINE(ENCODING_KR,     1, Define if you want korean codesets) ;;
851     ZH     ) AC_DEFINE(ENCODING_ZH,     1, Define if you want chinese codesets) ;;
852     ZH_EXT ) AC_DEFINE(ENCODING_ZH_EXT, 1, Define if you want extended chinese codesets) ;;
853   esac
854 done
855
856 IF_PERL=\#
857 if test x$support_perl = xyes; then
858   AC_PATH_PROG(PERL, perl5)
859   AC_PATH_PROG(PERL, perl)
860
861   AC_MSG_CHECKING(for $PERL suitability)
862   if $PERL -MExtUtils::Embed -e "use v5.8" >/dev/null 2>/dev/null; then
863
864      save_CXXFLAGS="$CXXFLAGS"
865      save_LIBS="$LIBS"
866      CXXFLAGS="$CXXFLAGS `$PERL -MExtUtils::Embed -e ccopts`"
867      LIBS="$LIBS `$PERL -MExtUtils::Embed -e ldopts`"
868      AC_TRY_LINK([
869 #include <EXTERN.h>
870 #include <perl.h>
871 #include <XSUB.h>
872 ],[
873      PerlInterpreter *perl = perl_alloc ();
874 ],[rxvt_perl_link=yes],[rxvt_perl_link=no])
875      CXXFLAGS="$save_CXXFLAGS"
876      LIBS="$save_LIBS"
877
878      if test x$rxvt_perl_link = xyes; then
879         AC_MSG_RESULT(ok)
880         AC_DEFINE(ENABLE_PERL, 1, Define if you can embed a perl interpreter)
881         IF_PERL=
882         PERL_O=rxvtperl.o
883         PERLFLAGS="`$PERL -MExtUtils::Embed -e ccopts`"
884         PERLLIB="`$PERL -MExtUtils::Embed -e ldopts`"
885         PERLPRIVLIBEXP="`$PERL -MConfig -e 'print $Config{privlibexp}'`"
886      else
887         AC_MSG_ERROR([no, unable to link])
888      fi
889   else
890      AC_MSG_ERROR([no working perl found, or perl not version >= 5.8])
891   fi
892 fi
893 AC_SUBST(PERLLIB)
894 AC_SUBST(PERLFLAGS)
895 AC_SUBST(PERLPRIVLIBEXP)
896 AC_SUBST(PERL)
897 AC_SUBST(IF_PERL)
898 AC_SUBST(PERL_O)
899
900 if test x$support_perl = xyes; then
901    support_frills=yes
902 fi
903
904 if test x$support_frills = xyes; then
905   AC_DEFINE(ENABLE_FRILLS, 1, Define if you want handling for rarely used but handy features)
906 fi
907
908 AC_SUBST(CFLAGS)
909 AC_SUBST(CPPFLAGS)
910 AC_SUBST(LDFLAGS)
911 AC_SUBST(X_CFLAGS)
912
913 dnl# Attack the libs
914 AC_SUBST(LIBS)
915 AC_SUBST(X_LIBS)
916 AC_SUBST(X_EXTRA_LIBS)
917
918 AC_SUBST(AFTERIMAGE_CFLAGS)
919 AC_SUBST(AFTERIMAGE_LIBS)
920
921 AC_ARG_PROGRAM
922
923 dnl# test for "sun" or "__sun__" before include sys_ioctl
924
925 dnl# revert HAVE_BLAH_H into a "#include <blah.h>"
926 AC_DEFUN([RXVT_DEFINE_TO_INCLUDE], dnl
927 [if test "$$3" = "$4" -o "$$5" = "$6"; then
928   $1="#include <$2>"
929 else
930   $1="/* #include <$2> */"
931 fi dnl
932 AC_SUBST($1)])
933
934 RXVT_DEFINE_TO_INCLUDE(include_stdint_h, stdint.h, ac_cv_header_stdint_h, yes, notset, dontmatch)
935 RXVT_DEFINE_TO_INCLUDE(include_stdarg_h, cstdarg, ac_cv_header_stdarg_h, yes, notset, dontmatch)
936 RXVT_DEFINE_TO_INCLUDE(include_stdlib_h, cstdlib, ac_cv_header_stdlib_h, yes, notset, dontmatch)
937 RXVT_DEFINE_TO_INCLUDE(include_unistd_h, unistd.h, ac_cv_header_unistd_h, yes, notset, dontmatch)
938 RXVT_DEFINE_TO_INCLUDE(include_string_h, cstring, ac_cv_header_string_h, yes, notset, dontmatch)
939 RXVT_DEFINE_TO_INCLUDE(include_fcntl_h, fcntl.h, ac_cv_header_fcntl_h, yes, notset, dontmatch)
940 RXVT_DEFINE_TO_INCLUDE(include_util_h, util.h, ac_cv_header_util_h, yes, notset, dontmatch)
941 RXVT_DEFINE_TO_INCLUDE(include_assert_h, assert.h, ac_cv_header_assert_h, yes, notset, dontmatch)
942 RXVT_DEFINE_TO_INCLUDE(include_sys_ioctl_h, sys/ioctl.h, rxvt_cv_header_sysioctl, yes, notset, dontmatch)
943 RXVT_DEFINE_TO_INCLUDE(include_sys_select_h, sys/select.h, ac_cv_header_sys_select_h, yes, notset, dontmatch)
944 RXVT_DEFINE_TO_INCLUDE(include_sys_strredir_h, sys/strredir.h, ac_cv_header_sys_strredir_h, yes, notset, dontmatch)
945 RXVT_DEFINE_TO_INCLUDE(include_sys_time_h, sys/time.h, ac_cv_header_sys_time_h, yes, notset, dontmatch)
946 RXVT_DEFINE_TO_INCLUDE(include_time_h, time.h, ac_cv_header_sys_time_h, no, ac_cv_header_time, yes)
947
948 AC_CONFIG_FILES([Makefile \
949 doc/Makefile \
950 src/Makefile \
951 src/rxvtlib.h \
952 ])
953 AC_OUTPUT
954
955 echo "Configuration:
956
957   Rxvt version:               $VERSION : $DATE
958   Source code location:       $srcdir
959   Install path:               ${prefix}/bin
960   Compiler:                   $CXX
961   Compiler flags:             $CXXFLAGS
962   Linker:                     $LINKER"
963
964 if test x$support_xpm = xyes; then
965   echo "  Xpm library:                $XPM_LIBS"
966 fi
967
968 if test x$support_afterimage = xyes; then
969   echo "  AfterImage support:         yes"
970 fi
971
972 if test x$support_afterstep = xyes; then
973   echo "  AfterStep integration:      yes"
974 fi
975
976 if test x$term != x; then
977   echo "  set TERM to:                $term"
978 fi
979 if test x$terminfo != x; then
980   echo "  set TERMINFO to:            $terminfo"
981 fi
982 echo "  default resource name:      $RESNAME"
983 echo "  resource class:             $RESCLASS"
984 if test x$RESFALLBACK != x; then
985    echo "  resource class fallback:    $RESFALLBACK"
986 fi
987 echo
988 echo "  embedded perl:              $support_perl"
989 echo
990 if test x$support_xpm = xneedsmanualspecification; then
991   echo ".----------------------------------------------------------------."
992   echo ". WARNING: --enable-xpm-background was specified however the     ."
993   echo ".          XPM includes files and libraries could not be found.  ."
994   echo ".          XPM backgrounds are now being DISABLED!  If you want  ."
995   echo ".          to use them you should rerun   configure   with the   ."
996   echo ".          appropriate --with-xpm-includes=/path/to/xpm/includes ."
997   echo ".          and --with-xpm-library=/path/to/xpm/library lines.    ."
998   echo ".----------------------------------------------------------------."
999 fi
1000 if test x$support_xim = xyes -a x$rxvt_cv_func_xlocale = xno; then
1001   echo ".----------------------------------------------------------------."
1002   echo ". WARNING: --enable-xim was specified however the locale support ."
1003   echo ".          functions could not be found.                         ."
1004   echo ".          XIM is now being DISABLED!                            ."
1005   echo ".----------------------------------------------------------------."
1006 fi
1007
1008 echo "*** Optionally check src/feature.h for further, rarely used options ***"
1009 echo
1010