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