*** empty log message ***
[dana/urxvt.git] / autoconf / configure.in
1 dnl# -*- sh -*-
2 dnl#
3 dnl# Process this file with autoconf to produce a configure script.
4 dnl#
5 orig_CXXFLAGS="$CXXFLAGS"
6
7 AC_INIT
8 AC_CONFIG_SRCDIR([src/feature.h])
9 AC_CONFIG_AUX_DIR(autoconf)
10 AC_CONFIG_HEADER(config.h:autoconf/config.h.in)
11
12 AC_CANONICAL_HOST
13
14 dnl RXVT version
15 changequote(, )dnl
16 VERSION=`sed -n -e 's/^.*[ \t]VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
17 DATE=`sed -n -e 's/^.*[ \t]DATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
18 LSMDATE=`sed -n -e 's/^.*[ \t]LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
19 LIBVERSION=`sed -n -e 's/^.*[ \t]LIBVERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h`
20 changequote([, ])dnl
21 AC_SUBST(VERSION)dnl 
22 AC_SUBST(DATE)dnl 
23 AC_SUBST(LSMDATE)dnl 
24 AC_SUBST(LIBVERSION)dnl 
25 echo ""
26 echo "configuring for rxvt $VERSION"
27 echo ""
28
29 dnl# Checks for programs.
30 dnl AC_MAKE_SET
31
32 AC_PROG_CC
33 AC_PROG_CXX
34 AC_PROG_CPP
35 AC_PROG_INSTALL
36 AC_PROG_AWK
37
38 AC_LANG(C)
39
40 dnl# --------------------------------------------------------------------------
41 dnl# Supply default CFLAGS, if not specified by `CFLAGS=flags ./configure'
42 dnl#
43 if test -z "$orig_CXXFLAGS"; then
44   CXXFLAGS='-O'
45   if test x$GCC = xyes && test "x$GXX" = xyes; then
46     CXXFLAGS="-g -O3"
47   fi
48   CFLAGS="$CXXFLAGS"
49 fi
50
51 LINKER="$CXX"
52 if test x$GCC = xyes && test x$GXX = xyes; then
53    AC_CHECK_LIB(supc++, main, [
54       LINKER="$CC"
55       LIBS="$LIBS -lsupc++"
56    ])
57 fi
58 AC_SUBST(LINKER,[$LINKER])
59
60 AC_DEFINE(_GNU_SOURCE, 1, Use all glibc features.)
61
62 case $host in
63    *-*-solaris* )
64       AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
65       AC_DEFINE(_XOPEN_SOURCE,          2, Needed to get declarations for msg_control and msg_controllen on Solaris)
66       AC_DEFINE(__EXTENSIONS__,         1, Needed to get declarations for msg_control and msg_controllen on Solaris)
67       ;;
68 esac
69
70 dnl if test x$GXX = xyes; then
71 dnl    CXXFLAGS="$CXXFLAGS" dnl I once had -fno-exceptions, but I am using them now...
72 dnl fi
73
74 AC_LANG(C++)
75
76 dnl# system hacks
77 AC_AIX
78 AC_ISC_POSIX
79
80 dnl# FreeBSD needs to link libxpg4
81 AC_CHECK_LIB(xpg4, setlocale, [LIBS="$LIBS -lxpg4"])
82
83 dnl solaris needs to link libnsl and socket
84 AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"])
85 AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"])
86
87 AC_ENABLE_SHARED(no)dnl#        libtool
88 AC_ENABLE_STATIC(yes)dnl#       libtool
89 AC_PROG_LIBTOOL()dnl#           libtool
90
91 MALLOC_TYPE=S
92 support_addstrings=no
93 support_frills=no
94 support_inheritpixmap=no
95 support_tinting=no
96 support_fading=no
97 support_keepscrolling=no
98 support_selectionscrolling=no
99 support_menubar=no 
100 support_mousewheel=no
101 support_mouseslipwheel=no
102 support_utmp=no
103 support_wtmp=no
104 support_lastlog=no
105 support_cursor_blink=no
106 support_text_blink=no
107 support_pointer_blank=no
108 support_scroll_rxvt=no
109 support_scroll_next=no
110 support_scroll_xterm=no
111 support_scroll_plain=no
112 support_xim=no
113 support_xpm=no
114 support_xft=no
115 support_unicode3=no
116 support_combining=no
117 support_8bitctrls=no
118 support_iso14755=no
119 support_styles=no
120 codesets=
121
122 dnl# --------------------------------------------------------------------------
123 dnl# CHECKING COMMAND LINE OPTIONS
124 dnl# --------------------------------------------------------------------------
125
126 if test "x$enable_shared" = xyes; then
127     AC_DEFINE(LIBRXVT, 1, Build shared library version - specify via configure only)
128     INSTALL_LIBRXVT=yes
129 fi
130 AC_SUBST(INSTALL_LIBRXVT)
131
132 AC_ARG_ENABLE(everything,
133   [  --enable-everything     enable standard non-multichoice features
134                      NOTE: this option is order dependent
135                      NOTE: automatically enabled with --enable-shared],
136   [if test x$enableval = xyes; then
137     support_24bit=yes
138     support_frills=yes
139     support_inheritpixmap=yes
140     support_tinting=yes
141     support_fading=yes
142     support_keepscrolling=yes
143     support_selectionscrolling=yes
144     support_lastlog=yes
145     support_menubar=yes
146     support_mousewheel=yes
147     support_mouseslipwheel=yes
148     support_cursor_blink=yes
149     support_text_blink=yes
150     support_pointer_blank=yes
151     support_scroll_rxvt=yes
152     support_scroll_next=yes
153     support_scroll_xterm=yes
154     support_scroll_plain=yes
155     support_utmp=yes
156     support_wtmp=yes
157     support_xim=yes
158     support_xpm=yes
159     support_xft=yes
160     support_unicode3=yes
161     support_combining=yes
162     #support_8bitctrls=yes
163     support_iso14755=yes
164     support_styles=yes
165     codesets=all
166   fi])
167
168 AC_ARG_ENABLE(unicode3,
169   [  --enable-unicode3       use 21 instead of 16 bits to represent unicode characters],
170   [if test x$enableval = xyes -o x$enableval = xno; then
171     support_unicode3=$enableval
172   fi])
173
174 AC_ARG_ENABLE(combining,
175   [  --enable-combining      enable composition of base and combining characters],
176   [if test x$enableval = xyes -o x$enableval = xno; then
177     support_combining=$enableval
178   fi])
179
180 AC_ARG_ENABLE(xft,
181   [  --enable-xft            enable xft support on systems that have it],
182   [if test x$enableval = xyes -o x$enableval = xno; then
183     support_xft=$enableval
184   fi])
185
186 AC_ARG_ENABLE(font-styles,
187   [  --enable-font-styles    enable bold and italic support],
188   [if test x$enableval = xyes -o x$enableval = xno; then
189     support_styles=$enableval
190   fi])
191
192 AC_ARG_ENABLE(utmp,
193   [  --enable-utmp           enable utmp (utmpx) support],
194   [if test x$enableval = xyes -o x$enableval = xno; then
195     support_utmp=$enableval
196   fi])
197
198 AC_ARG_ENABLE(wtmp,
199   [  --enable-wtmp           enable wtmp (wtmpx) support (requires --enable-utmp)],
200   [if test x$enableval = xyes -o x$enableval = xno; then
201     support_wtmp=$enableval
202   fi])
203
204 AC_ARG_ENABLE(lastlog,
205   [  --enable-lastlog        enable lastlog support (requires --enable-utmp)],
206   [if test x$enableval = xyes -o x$enableval = xno; then
207     support_lastlog=$enableval
208   fi])
209
210 AC_ARG_ENABLE(xpm-background,
211   [  --enable-xpm-background enable XPM background pixmaps],
212   [if test x$enableval = xyes -o x$enableval = xno; then
213     support_xpm=$enableval
214   fi])
215
216 AC_ARG_ENABLE(transparency,
217   [  --enable-transparency   enable transparent backgrounds],
218   [if test x$enableval = xyes -o x$enableval = xno; then
219     support_inheritpixmap=$enableval
220   fi])
221
222 AC_ARG_ENABLE(tinting,
223   [  --enable-tinting        enable tinting of transparent bg],
224   [if test x$enableval = xyes -o x$enableval = xno; then
225     support_tinting=$enableval
226   fi])
227
228 AC_ARG_ENABLE(fading,
229   [  --enable-fading         enable colors fading when off focus],
230   [if test x$enableval = xyes -o x$enableval = xno; then
231     support_fading=$enableval
232   fi])
233
234 AC_ARG_ENABLE(menubar,
235   [  --enable-menubar        enable menubar],
236   [if test x$enableval = xyes -o x$enableval = xno; then
237     support_menubar=$enableval
238   fi])
239
240 AC_ARG_ENABLE(rxvt-scroll,
241   [  --enable-rxvt-scroll    enable rxvt style scrollbar],
242   [if test x$enableval = xyes -o x$enableval = xno; then
243     support_scroll_rxvt=$enableval
244   fi])
245
246 AC_ARG_ENABLE(next-scroll,
247   [  --enable-next-scroll    enable NeXT style scrollbar],
248   [if test x$enableval = xyes -o x$enableval = xno; then
249     support_scroll_next=$enableval
250   fi])
251
252 AC_ARG_ENABLE(xterm-scroll,
253   [  --enable-xterm-scroll   enable Xterm style scrollbar],
254   [if test x$enableval = xyes -o x$enableval = xno; then
255     support_scroll_xterm=$enableval
256   fi])
257
258 AC_ARG_ENABLE(plain-scroll,
259   [  --enable-plain-scroll   enable plain style scrollbar],
260   [if test x$enableval = xyes -o x$enableval = xno; then
261     support_scroll_plain=$enableval
262   fi])
263
264 AC_ARG_ENABLE(half-shadow,
265   [  --enable-half-shadow    use half width/height shadow on rxvt scrollbar],
266   [if test x$enableval = xyes; then
267     AC_DEFINE(HALFSHADOW, 1, Define if you want the depth of scrollbars and menus to be less)
268   fi])
269
270 AC_ARG_WITH(codesets,
271   [  --with-codesets=NAME,.. compile in additional codesets (jp,jp_ext,kr,zh,zh_ext,all)],
272   [codesets="$withval"])
273
274 AC_ARG_ENABLE(xim,
275   [  --enable-xim            XIM (X Input Method) protocol support],
276   [if test x$enableval = xyes -o x$enableval = xno; then
277     support_xim=$enableval
278   fi])
279
280 AC_ARG_ENABLE(ttygid,
281   [  --enable-ttygid         enable tty setting to group named "tty"],
282   [if test x$enableval = xyes; then
283     AC_DEFINE(TTY_GID_SUPPORT, 1, Define to change gid of ttys to group tty)
284   fi])
285
286 AC_ARG_ENABLE(backspace-key,
287   [  --disable-backspace-key disable handling of the backspace key],
288   [if test x$enableval = xno; then
289     AC_DEFINE(NO_BACKSPACE_KEY, 1, Define if you don't want support for the backspace key)
290   fi])
291
292 AC_ARG_ENABLE(delete-key,
293   [  --disable-delete-key    disable handling of the delete key],
294   [if test x$enableval = xno; then
295     AC_DEFINE(NO_DELETE_KEY, 1, Define if you don't want support for the (non-keypad) delete key)
296   fi])
297
298 AC_ARG_ENABLE(resources,
299   [  --disable-resources     disable all resource checking],
300   [if test x$enableval = xno; then
301     AC_DEFINE(NO_RESOURCES, 1, Define if you don't want any resources read)
302   fi])
303
304 AC_ARG_ENABLE(xgetdefault,
305   [  --enable-xgetdefault    enable resources via X instead of our small version],
306   [if test x$enableval = xyes; then
307     AC_DEFINE(USE_XGETDEFAULT, 1, Define if you want to use XGetDefault instead of our internal version)
308   fi])
309
310 AC_ARG_ENABLE(8bitctrls,
311   [  --enable-8bitctrls      enable 8 bit control sequences (not recommended)],
312   [if test x$enableval = xyes -o x$enableval = xno; then
313     support_8bitctrls=$enableval
314   fi])
315
316 RESFALLBACK=Rxvt
317 AC_ARG_ENABLE(fallback,
318   [  --enable-fallback(=CLASS) fall back on CLASS resources in addition to URxvt ones (default: Rxvt)],
319   [
320    test x$enableval = xyes && enableval=Rxvt
321    test x$enableval = xno  && enableval=
322    RESFALLBACK="$enableval"
323   ])
324
325 if test x$RESFALLBACK != x; then
326    AC_DEFINE_UNQUOTED(RESFALLBACK, "$RESFALLBACK", [Fallback resource class])
327 fi
328
329 RESNAME=urxvt
330 AC_ARG_WITH(res-name,
331   [  --with-res-name=NAME    use this as default resource name (default: urxvt)],
332   [RESNAME="$withval"])
333 AC_DEFINE_UNQUOTED(RESNAME,"$RESNAME", [Default resource name])
334
335 RESCLASS=URxvt
336 AC_ARG_WITH(res-class,
337   [  --with-res-class=CLASS  use this as the resource class (default: URxvt)],
338   [RESCLASS="$withval"])
339 AC_DEFINE_UNQUOTED(RESCLASS,"$RESCLASS", [Resource class])
340
341 RXVTNAME=urxvt
342 AC_ARG_WITH(name,
343   [  --with-name=NAME        set the basename for the installed binaries (default: urxvt)],
344   [RXVTNAME="$withval"])
345 AC_DEFINE_UNQUOTED(RXVTNAME,"$RXVTNAME", [Binary base name])
346
347 RXVTNAME=`echo "$RXVTNAME"|sed "$program_transform_name"`
348 AC_SUBST(RXVTNAME)
349
350 AC_ARG_ENABLE(strings,
351   [  --enable-strings        enable some replacement system functions],
352   [if test x$enableval = xyes -o x$enableval = xno; then
353     support_addstrings=$enableval
354   fi])
355
356 AC_ARG_ENABLE(swapscreen,
357   [  --disable-swapscreen    disable swap screen support],
358   [if test x$enableval = xno; then
359     AC_DEFINE(NO_SECONDARY_SCREEN, 1, Disable the secondary screen. Many programs use the secondary screen as their workplace)
360   fi])
361
362 AC_ARG_ENABLE(iso14755,
363   [  --enable-iso14755       enable support for extended ISO 14755 modes],
364   [if test x$enableval = xyes -o x$enableval = xno; then
365     support_iso14755=$enableval
366   fi])
367
368 AC_ARG_ENABLE(frills,
369   [  --enable-frills         enable support for rarely used features],
370   [if test x$enableval = xyes -o x$enableval = xno; then
371     support_frills=$enableval
372   fi])
373
374 AC_ARG_ENABLE(24bit,
375   [  --enable-24bit          enable support for using 24bit visuals if available],
376   [if test x$enableval = xyes -o x$enableval = xno; then
377     support_24bit=$enableval
378   fi])
379
380 AC_ARG_ENABLE(keepscrolling,
381   [  --enable-keepscrolling  enable continual scrolling on scrollbar arrow press],
382   [if test x$enableval = xyes -o x$enableval = xno; then
383     support_keepscrolling=$enableval
384   fi])
385
386 AC_ARG_ENABLE(selectionscrolling,
387   [  --enable-selectionscrolling  enable scrolling during selections],
388   [if test x$enableval = xyes -o x$enableval = xno; then
389     support_selectionscrolling=$enableval
390   fi])
391
392 AC_ARG_ENABLE(mousewheel,
393   [  --enable-mousewheel     enable scrolling via mouse wheel or buttons 4 & 5],
394   [if test x$enableval = xyes -o x$enableval = xno; then
395     support_mousewheel=$enableval
396   fi])
397
398 AC_ARG_ENABLE(slipwheeling,
399   [  --enable-slipwheeling   enable slip wheel scrolling     (requires previous)],
400   [if test x$enableval = xyes -o x$enableval = xno; then
401     support_mouseslipwheel=$enableval
402   fi])
403
404 AC_ARG_ENABLE(dmalloc,
405   [  --enable-dmalloc        enable Gray Watson's malloc - for debugging use],
406   [if test x$enableval = xyes; then
407     MALLOC_TYPE=G
408     DEBUG=-DDEBUG_MALLOC
409     DLIB="-L/usr/local/lib -ldmalloc"
410     DINCLUDE=-I/usr/local/include
411   fi])
412
413 AC_ARG_ENABLE(dlmalloc,
414   [  --enable-dlmalloc       enable Doug Lea's malloc - for production use
415                      NOTE: enable only one malloc package],
416   [if test x$enableval = xyes; then
417     MALLOC_TYPE=D
418     DEBUG=
419     DLIB="-L/usr/local/lib -ldlmalloc"
420     DINCLUDE=
421   fi])
422
423 AC_ARG_ENABLE(smart-resize,
424   [  --enable-smart-resize   enable smart growth/shrink behaviour],
425   [if test x$enableval = xyes; then
426     AC_DEFINE(SMART_RESIZE, 1, Define to use "smart" resize behavior)
427   fi])
428
429 AC_ARG_ENABLE(cursor-blink,
430   [  --enable-cursor-blink   enable blinking cursor],
431   [if test x$enableval = xyes -o x$enableval = xno; then
432     support_cursor_blink=$enableval
433   fi])
434
435 AC_ARG_ENABLE(text-blink,
436   [  --enable-text-blink     enable blinking text],
437   [if test x$enableval = xyes -o x$enableval = xno; then
438     support_text_blink=$enableval
439   fi])
440
441 AC_ARG_ENABLE(pointer-blank,
442   [  --enable-pointer-blank  enable pointer blank when typing or inactive pointer],
443   [if test x$enableval = xyes -o x$enableval = xno; then
444     support_pointer_blank=$enableval
445   fi])
446
447 AC_ARG_WITH(term,
448   [  --with-term=NAME        set the terminal to NAME (default: rxvt)],
449   [if test x$withval != x; then
450     AC_DEFINE_UNQUOTED(TERMENV, "$withval",Set TERM to the value given by configure) term="$withval"
451   fi])
452
453 AC_ARG_WITH(terminfo,
454   [  --with-terminfo=PATH    set the path to the terminfo tree to PATH],
455   [if test x$withval != x; then
456     AC_DEFINE_UNQUOTED(RXVT_TERMINFO, "$withval", Set TERMINFO value to the value given by configure) terminfo="$withval"
457   fi])
458
459 dnl# --------------------------------------------------------------------------
460
461 AC_DEFINE(PROTOTYPES, 1, Define if you need function prototypes)
462
463 AC_PATH_PROG(MV, mv, mv)
464 AC_PATH_PROG(RM, rm, rm)
465 AC_PATH_PROG(CP, cp, cp)
466 AC_PATH_PROG(LN, ln, ln)
467 AC_PATH_PROG(SED, sed, sed)
468 AC_PATH_PROG(ECHO, echo, echo)
469 AC_PATH_PROG(CMP, cmp, cmp)
470 AC_PATH_PROG(TBL, tbl)
471 AC_PATH_PROG(TIC, tic)
472
473 dnl# need a neat way to detect SVR4 or its features
474 dnl# in src/command.c we use these functions:
475 dnl# grantpt(), unlockpt(), ptsname(), which are defined in <sys/ptms.h>
476 dnl# - but are these also defined for other systems?
477
478 dnl# hack to find if this is SVR4 -- who knows?
479 dnl## AC_MSG_CHECKING(for SVR4)
480 dnl## AC_EGREP_CPP(yes,
481 dnl## [#if defined (SVR4) || defined (_SVR4) || defined (__svr4__)
482 dnl##   yes;
483 dnl## #endif
484 dnl## ], [AC_MSG_RESULT(yes); AC_DEFINE(PERHAPS_SVR4)], AC_MSG_RESULT(perhaps not?))
485
486 AC_PATH_XTRA
487
488 dnl# the only reasonable way to find libXpm is do-it-yourself
489 dnl# only check if we want xpm-background
490
491 if test x$support_xpm = xyes; then
492   VT_FIND_LIBXPM
493   if test x$no_xpm = xyes; then
494     support_xpm=needsmanualspecification
495   fi
496 fi
497
498 dnl# --------------------------------------------------------------------------
499 dnl# CHECKING FOR HEADER FILES
500 dnl# --------------------------------------------------------------------------
501 AC_HEADER_SYS_WAIT
502 AC_CHECK_HEADERS( \
503         assert.h \
504         fcntl.h \
505         grp.h \
506         libc.h \
507         lastlog.h \
508         stdarg.h \
509         stdlib.h \
510         string.h \
511         termios.h \
512         unistd.h \
513         sys/byteorder.h \
514         sys/ioctl.h \
515         sys/select.h \
516         sys/sockio.h \
517         sys/strredir.h \
518         sys/stropts.h \
519         sys/time.h \
520         utmp.h \
521         utmpx.h \
522         stdint.h \
523         pty.h \
524 )
525
526 AC_HEADER_TIME
527
528 dnl# check to allow both <termios.h> and <sys/ioctl.h>
529 AC_CACHE_CHECK(whether termios.h and sys/ioctl.h may both be included, rxvt_cv_header_sysioctl,
530 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
531 #include <sys/ioctl.h>
532 #ifdef HAVE_TERMIOS_H
533 #include <termios.h>
534 #endif]], [[int a = ECHO;]])],[rxvt_cv_header_sysioctl=yes],[rxvt_cv_header_sysioctl=no])])
535
536 dnl# ELF systems may want to store paths for dynamic libraries.
537 dnl# Lets see if the compiler can accept "-Rpath" or "-Wl,-Rpath"
538 dnl# At least one version of SunOS wants "-R path" but it's not checked yet.
539 if test -n "$GCC"; then
540   LDARG="-Wl,"
541 else
542   LDARG=""
543 fi
544 changequote(, )dnl
545 R_TRANSLATE='s/-L\([^ ]*\)/-L\1 '$LDARG'-rpath '$LDARG'\1/g'
546 changequote([, ])dnl
547
548 ac_save_CFLAGS=$CFLAGS
549 ac_save_LIBS=$LIBS
550 CFLAGS="$CFLAGS $X_CFLAGS"
551 LIBS=`echo "$LIBS $X_LIBS $X_EXTRA_LIBS -lX11" | sed "$R_TRANSLATE"`
552 AC_CACHE_CHECK([for -rpath dynamic library path recording], rxvt_cv_rpath,
553 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
554 main()
555 {
556     exit(0);
557     (void) XOpenDisplay("foobar");
558 }]])],[rxvt_cv_rpath=yes],[rxvt_cv_rpath=no],[dnl                  
559   AC_MSG_WARN(You may need to check the LIBS line)])])             
560 if test x$rxvt_cv_rpath != xyes; then
561   changequote(, )dnl
562   R_TRANSLATE='s/-L\([^ ]*\)/-L\1 '$LDARG'-R\1/g'
563   changequote([, ])dnl
564   LIBS=`echo "$ac_save_LIBS $X_LIBS $X_EXTRA_LIBS -lX11" | sed "$R_TRANSLATE"`
565   AC_CACHE_CHECK([for -R dynamic library path recording], rxvt_cv_R,
566 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
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
586 AC_C_CONST
587 AC_C_INLINE
588
589 dnl> AC_HEADER_STDC      dnl# skip this test, Sun always fails anyhow.
590
591 dnl# --------------------------------------------------------------------------
592 dnl# CHECKING FOR MISSING TYPEDEFS
593 dnl# --------------------------------------------------------------------------
594 dnl# Missing typedefs and replacements
595 AC_TYPE_MODE_T
596 dnl> AC_CHECK_TYPE(umode_t, int)
597 dnl> AC_CHECK_TYPE(off_t, long)
598 AC_TYPE_PID_T
599 AC_TYPE_UID_T
600
601 AC_CHECK_SIZEOF(short, 2)
602 AC_CHECK_SIZEOF(int, 4)
603 dnl AC_CHECK_SIZEOF(long, 4)
604 AC_CHECK_SIZEOF(long long, 8)
605 AC_CHECK_SIZEOF(int *, 4)
606
607 dnl# see usage below
608 AC_DEFUN(RXVT_CHECK_SIZE,
609   [AC_CACHE_CHECK([for $2], $1,
610     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdint.h>]], [[$2 dummy;]])],[$1=yes],[dnl
611 if test $ac_cv_sizeof_char -ge $3; then
612   $1="$4 char"
613 else
614   if test $ac_cv_sizeof_short -ge $3; then
615     $1="$4 short"
616   else
617     if test $ac_cv_sizeof_int -ge $3; then
618       $1="$4 int"
619     else
620       if test $ac_cv_sizeof_long -ge $3; then
621         $1="$4 long"
622       else
623         if test $ac_cv_sizeof_long_long -ge $3; then
624           $1="$4 long long"
625         else
626           $1="$4 $5" # we _must_ have a (possibly wrong) default
627         fi
628       fi
629     fi
630   fi
631 fi])])]
632 if test x"$$1" != xyes; then
633   $6="typedef $$1 $2;"
634 else
635   if test x"$4" = x; then
636     $6="/* typedef $5 $2; */"
637   else
638     $6="/* typedef $4 $5 $2; */"
639   fi
640 fi dnl
641 )
642 dnl#
643 dnl# Look for types the system may know about anyway.
644 dnl#
645 RXVT_CHECK_SIZE(rxvt_cv_int16_t, int16_t, 2, , short, rxvt_int16_typedef)
646 AC_SUBST(rxvt_int16_typedef)
647 RXVT_CHECK_SIZE(rxvt_cv_uint16_t, uint16_t, 2, unsigned, short, rxvt_uint16_typedef)
648 AC_SUBST(rxvt_uint16_typedef)
649 RXVT_CHECK_SIZE(rxvt_cv_int32_t, int32_t, 4, , int, rxvt_int32_typedef)
650 AC_SUBST(rxvt_int32_typedef)
651 RXVT_CHECK_SIZE(rxvt_cv_uint32_t, uint32_t, 4, unsigned, int, rxvt_uint32_typedef)
652 AC_SUBST(rxvt_uint32_typedef)
653 dnl RXVT_CHECK_SIZE(rxvt_cv_int64_t, int64_t, 8, , long long, rxvt_int64_typedef)
654 dnl AC_SUBST(rxvt_int64_typedef)
655 dnl RXVT_CHECK_SIZE(rxvt_cv_uint64_t, uint64_t, 8, unsigned, long long, rxvt_uint64_typedef)
656 dnl AC_SUBST(rxvt_uint64_typedef)
657 dnl#
658 dnl# Now look for another we use
659 dnl#
660 if test $ac_cv_sizeof_int_p -eq 8; then
661   rxvt_intp_define="#define intp_t int64_t"
662   rxvt_u_intp_define="#define u_intp_t u_int64_t"
663 else
664   if test $ac_cv_sizeof_int_p -eq 4; then
665     rxvt_intp_define="#define intp_t int32_t"
666     rxvt_u_intp_define="#define u_intp_t u_int32_t"
667   else
668     if test $ac_cv_sizeof_int_p -eq 2; then
669       rxvt_intp_define="#define intp_t int16_t"
670       rxvt_u_intp_define="#define u_intp_t u_int16_t"
671     else
672       rxvt_intp_define="#error set intp_t"
673       rxvt_u_intp_define="#error set u_intp_t"
674     fi
675   fi
676 fi
677 AC_SUBST(rxvt_intp_define)
678 AC_SUBST(rxvt_u_intp_define)
679
680 dnl# --------------------------------------------------------------------------
681 dnl# CHECKING FOR LIBRARY FUNCTIONS
682 dnl# --------------------------------------------------------------------------
683 AC_TYPE_SIGNAL
684 dnl> AC_FUNC_VPRINTF
685
686 dnl# Note: On Ultrix, setsid() does weirdo stuff, disable it
687 case "$host_alias" in
688     *ultrix) ac_cv_func_setsid='no' ;;
689     *) break;;
690 esac
691
692 AC_CHECK_FUNCS( \
693         atexit \
694         revoke \
695         unsetenv \
696         setutent \
697         seteuid \
698         setreuid \
699         setsid \
700         setpgrp \
701         setpgid \
702         openpty \
703         _getpty \
704         grantpt \
705         unlockpt \
706         isastream \
707         on_exit \
708         nanosleep \
709         updwtmp \
710         ttyslot \
711 )
712 dnl# Note: On NetBSD, openpty() exists in libutil.  Don't pull it in
713
714 dnl# --------------------------------------------------------------------------
715 dnl# DO ALL UTMP AND WTMP CHECKING
716 dnl# --------------------------------------------------------------------------
717 dnl# check for host field in utmp structure
718
719 dnl# --------------------------------------------
720 AC_CHECK_HEADER(utmp.h,
721 [AC_CACHE_CHECK([for struct utmp], rxvt_cv_struct_utmp,
722 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
723 #include <stdint.h>
724 #include <utmp.h>]], [[struct utmp ut;]])],[rxvt_cv_struct_utmp=yes],[rxvt_cv_struct_utmp=no])])
725 if test x$rxvt_cv_struct_utmp = xyes; then
726   AC_DEFINE(HAVE_STRUCT_UTMP, 1, Define if utmp.h has struct utmp)
727 fi
728 ]
729
730 AC_CACHE_CHECK(for ut_host in utmp struct, rxvt_cv_struct_utmp_host,
731 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
732 #include <utmp.h>]], [[struct utmp ut; ut.ut_host;]])],[rxvt_cv_struct_utmp_host=yes],[rxvt_cv_struct_utmp_host=no])])
733 if test x$rxvt_cv_struct_utmp_host = xyes; then
734   AC_DEFINE(HAVE_UTMP_HOST, 1, Define if struct utmp contains ut_host)
735 fi
736
737 AC_CACHE_CHECK(for ut_pid in utmp struct, rxvt_cv_struct_utmp_pid,
738 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
739 #include <utmp.h>]], [[struct utmp ut; ut.ut_pid;]])],[rxvt_cv_struct_utmp_pid=yes],[rxvt_cv_struct_utmp_pid=no])])
740 if test x$rxvt_cv_struct_utmp_pid = xyes; then
741   AC_DEFINE(HAVE_UTMP_PID, 1, Define if struct utmp contains ut_pid)
742 fi
743 ) dnl# AC_CHECK_HEADER(utmp.h
744
745 dnl# --------------------------------------------
746
747 AC_CHECK_HEADER(utmpx.h,
748 [AC_CACHE_CHECK([for struct utmpx], rxvt_cv_struct_utmpx,
749 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
750 #include <utmpx.h>]], [[struct utmpx ut;]])],[rxvt_cv_struct_utmpx=yes],[rxvt_cv_struct_utmpx=no])])
751 if test x$rxvt_cv_struct_utmpx = xyes; then
752   AC_DEFINE(HAVE_STRUCT_UTMPX, 1, Define if utmpx.h has struct utmpx)
753 fi
754 ]
755
756 AC_CACHE_CHECK(for host in utmpx struct, rxvt_cv_struct_utmpx_host,
757 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
758 #include <utmpx.h>]], [[struct utmpx utx; utx.ut_host;]])],[rxvt_cv_struct_utmpx_host=yes],[rxvt_cv_struct_utmpx_host=no])])
759 if test x$rxvt_cv_struct_utmpx_host = xyes; then
760   AC_DEFINE(HAVE_UTMPX_HOST, 1, Define if struct utmpx contains ut_host)
761 fi
762 ) dnl# AC_CHECK_HEADER(utmpx.h
763
764
765 dnl# --------------------------------------------------------------------------
766 dnl# check for struct lastlog
767 AC_CACHE_CHECK(for struct lastlog, rxvt_cv_struct_lastlog,
768 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
769 #include <utmp.h>
770 #ifdef HAVE_LASTLOG_H
771 #include <lastlog.h>
772 #endif
773 ]], [[struct lastlog ll;]])],[rxvt_cv_struct_lastlog=yes],[rxvt_cv_struct_lastlog=no])])
774 if test x$rxvt_cv_struct_lastlog = xyes; then
775   AC_DEFINE(HAVE_STRUCT_LASTLOG, 1, Define if utmp.h or lastlog.h has struct lastlog)
776 fi
777
778 dnl# check for struct lastlogx
779 AC_CACHE_CHECK(for struct lastlogx, rxvt_cv_struct_lastlogx,
780 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
781 #include <utmpx.h>
782 #ifdef HAVE_LASTLOG_H
783 #include <lastlog.h>
784 #endif
785 ]], [[struct lastlogx ll;]])],[rxvt_cv_struct_lastlogx=yes],[rxvt_cv_struct_lastlogx=no])])
786 if test x$rxvt_cv_struct_lastlogx = xyes; then
787   AC_DEFINE(HAVE_STRUCT_LASTLOGX, 1, Define if utmpx.h or lastlog.h has struct lastlogx)
788 fi
789
790 dnl# --------------------------------------------------------------------------
791 dnl# FIND FILES
792 dnl# --------------------------------------------------------------------------
793
794 dnl# find utmp
795 AC_CACHE_CHECK(where utmp is located, rxvt_cv_path_utmp,
796 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
797 #include <sys/types.h>
798 #include <utmp.h>
799 #include <errno.h>
800 main()
801 {
802     char **u, *utmplist[] = {
803     "/var/run/utmp", "/var/adm/utmp", "/etc/utmp", "/usr/etc/utmp", "/usr/adm/utmp", NULL };
804     FILE *a, *f=fopen("conftestval", "w");
805     if (!f) exit(1);
806 #ifdef UTMP_FILE
807     fprintf(f, "%s\n", UTMP_FILE);
808     exit(0);
809 #endif
810 #ifdef _PATH_UTMP
811     fprintf(f, "%s\n", _PATH_UTMP);
812     exit(0);
813 #endif
814     for (u = utmplist; *u; u++) {
815         if ((a = fopen(*u, "r")) != NULL || errno == EACCES) {
816             fprintf(f, "%s\n", *u);
817             exit(0);
818         }
819     }
820     exit(0);
821 }]])],[rxvt_cv_path_utmp=`cat conftestval`],[rxvt_cv_path_utmp=],[dnl
822   AC_MSG_WARN(Define RXVT_UTMP_FILE in config.h manually)])])
823 if test x$rxvt_cv_path_utmp != x; then
824   AC_DEFINE_UNQUOTED(RXVT_UTMP_FILE, "$rxvt_cv_path_utmp", Define location of utmp)
825 fi
826
827 dnl# --------------------------------------------------------------------------
828
829 dnl# find utmpx - if a utmp file exists at the same location and is more than
830 dnl# a day newer, then dump the utmpx.  People leave lots of junk around.
831 AC_CACHE_CHECK(where utmpx is located, rxvt_cv_path_utmpx,
832 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
833 #include <sys/types.h>
834 #include <utmpx.h>
835 #include <errno.h>
836 #include <sys/stat.h>
837 #ifdef HAVE_STRING_H
838 #include <string.h>
839 #endif
840 main()
841 {
842     char **u, *p, *utmplist[] = {
843 #ifdef UTMPX_FILE
844         UTMPX_FILE,
845 #endif
846 #ifdef _PATH_UTMPX
847         _PATH_UTMPX,
848 #endif
849     "/var/adm/utmpx", "/etc/utmpx", NULL };
850     FILE *a, *f=fopen("conftestval", "w");
851     struct stat statu, statux;
852     if (!f) exit(1);
853     for (u = utmplist; *u; u++) {
854         if ((a = fopen(*u, "r")) != NULL || errno == EACCES) {
855             if (stat(*u, &statux) < 0)
856                 continue;
857             p = strdup(*u);
858             p[strlen(p) - 1] = '\0';
859             if (stat(p, &statu) >= 0
860                 && (statu.st_mtime - statux.st_mtime > 86400))
861                 continue;
862             fprintf(f, "%s\n", *u);
863             exit(0);
864         }
865     }
866     exit(0);
867 }]])],[rxvt_cv_path_utmpx=`cat conftestval`],[rxvt_cv_path_utmpx=],[dnl
868   AC_MSG_WARN(Define RXVT_UTMPX_FILE in config.h manually)])])
869 if test x$rxvt_cv_path_utmpx != x; then
870   AC_DEFINE_UNQUOTED(RXVT_UTMPX_FILE, "$rxvt_cv_path_utmpx", Define location of utmpx)
871 fi
872
873 dnl# --------------------------------------------------------------------------
874
875 dnl# find wtmp
876 AC_CACHE_CHECK(where wtmp is located, rxvt_cv_path_wtmp,
877 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
878 #include <sys/types.h>
879 #ifdef HAVE_UTMP_H
880 #include <utmp.h>
881 #endif
882 #include <errno.h>
883 main()
884 {
885     char **w, *wtmplist[] = {
886     "/var/log/wtmp", "/var/adm/wtmp", "/etc/wtmp", "/usr/etc/wtmp", "/usr/adm/wtmp", NULL }; 
887     FILE *a, *f=fopen("conftestval", "w");
888     if (!f) exit(1);
889 #ifdef WTMP_FILE
890     fprintf(f, "%s\n", WTMP_FILE);
891     exit(0);
892 #endif
893 #ifdef _PATH_WTMP
894     fprintf(f, "%s\n", _PATH_WTMP);
895     exit(0);
896 #endif
897     for (w = wtmplist; *w; w++) {
898         if ((a = fopen(*w, "r")) != NULL || errno == EACCES) {
899             fprintf(f, "%s\n", *w);
900             exit(0);
901         }
902     }
903     exit(0);
904 }]])],[rxvt_cv_path_wtmp=`cat conftestval`],[rxvt_cv_path_wtmp=],[dnl
905   AC_MSG_WARN(Define RXVT_WTMP_FILE in config.h manually)])])
906 if test x$rxvt_cv_path_wtmp != x; then
907   AC_DEFINE_UNQUOTED(RXVT_WTMP_FILE, "$rxvt_cv_path_wtmp", Define location of wtmp)
908 fi
909 dnl# --------------------------------------------------------------------------
910
911 dnl# find wtmpx
912 AC_CACHE_CHECK(where wtmpx is located, rxvt_cv_path_wtmpx,
913 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
914 #ifdef HAVE_UTMPX_H
915 #include <utmpx.h>
916 #endif
917 #include <errno.h>
918 main()
919 {
920     char **w, *wtmplist[] = {
921     "/var/log/wtmpx", "/var/adm/wtmpx", NULL }; 
922     FILE *a, *f=fopen("conftestval", "w");
923     if (!f) exit(1);
924 #ifdef WTMPX_FILE
925     fprintf(f, "%s\n", WTMPX_FILE);
926     exit(0);
927 #endif
928 #ifdef _PATH_WTMPX
929     fprintf(f, "%s\n", _PATH_WTMPX);
930     exit(0);
931 #endif
932     for (w = wtmplist; *w; w++) {
933         if ((a = fopen(*w, "r")) != NULL || errno == EACCES) {
934             fprintf(f, "%s\n", *w);
935             exit(0);
936         }
937     }
938     exit(0);
939 }]])],[rxvt_cv_path_wtmpx=`cat conftestval`],[rxvt_cv_path_wtmpx=],[dnl
940   AC_MSG_WARN(Define RXVT_WTMPX_FILE in config.h manually)])])
941 if test x$rxvt_cv_path_wtmpx != x; then
942   AC_DEFINE_UNQUOTED(RXVT_WTMPX_FILE, "$rxvt_cv_path_wtmpx", Define location of wtmpx)
943 fi
944 dnl# --------------------------------------------------------------------------
945
946 dnl# find lastlog
947 AC_CACHE_CHECK(where lastlog is located, rxvt_cv_path_lastlog,
948 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
949 #include <sys/types.h>
950 #ifdef HAVE_UTMPX_H
951 #include <utmpx.h>
952 #elif defined(HAVE_UTMP_H)
953 #include <utmp.h>
954 #endif
955 #ifdef HAVE_LASTLOG_H
956 #include <lastlog.h>
957 #endif
958 #include <errno.h>
959 main()
960 {
961     char **w, *lastloglist[] = { "/var/log/lastlog", NULL };
962     FILE *a, *f=fopen("conftestval", "w");
963     if (!f) exit(1);
964 #ifdef LASTLOG_FILE
965     fprintf(f, "%s\n", LASTLOG_FILE);
966     exit(0);
967 #endif
968 #ifdef _PATH_LASTLOG
969     fprintf(f, "%s\n", _PATH_LASTLOG);
970     exit(0);
971 #endif
972     for (w = lastloglist; *w; w++) {
973         if ((a = fopen(*w, "r")) != NULL || errno == EACCES) {
974             fprintf(f, "%s\n", *w);
975             exit(0);
976         }
977     }
978     exit(0);
979 }]])],[rxvt_cv_path_lastlog=`cat conftestval`],[rxvt_cv_path_lastlog=],[dnl
980   AC_MSG_WARN(Define RXVT_LASTLOG_FILE in config.h manually)])])
981 if test x$rxvt_cv_path_lastlog != x; then
982   AC_DEFINE_UNQUOTED(RXVT_LASTLOG_FILE, "$rxvt_cv_path_lastlog", Define location of lastlog)
983   if test -d "$rxvt_cv_path_lastlog"; then
984     AC_DEFINE(LASTLOG_IS_DIR, 1, Define if lastlog is provided via a directory)
985   fi
986 fi
987 dnl# --------------------------------------------------------------------------
988
989 dnl# find lastlogx
990 AC_CACHE_CHECK(where lastlogx is located, rxvt_cv_path_lastlogx,
991 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
992 #ifdef HAVE_UTMPX_H
993 #include <utmpx.h>
994 #endif
995 #include <errno.h>
996 main()
997 {
998     char **w, *wtmplist[] = { "/var/log/lastlogx", "/var/adm/lastlogx", NULL };
999     FILE *a, *f=fopen("conftestval", "w");
1000     if (!f) exit(1);
1001 #ifdef LASTLOGX_FILE
1002     fprintf(f, "%s\n", LASTLOGX_FILE);
1003     exit(0);
1004 #endif
1005 #ifdef _PATH_LASTLOGX
1006     fprintf(f, "%s\n", _PATH_LASTLOGX);
1007     exit(0);
1008 #endif
1009     for (w = wtmplist; *w; w++) {
1010         if ((a = fopen(*w, "r")) != NULL || errno == EACCES) {
1011             fprintf(f, "%s\n", *w);
1012             exit(0);
1013         }
1014     }
1015     exit(0);
1016 }]])],[rxvt_cv_path_lastlogx=`cat conftestval`],[rxvt_cv_path_lastlogx=],[dnl
1017   AC_MSG_WARN(Define RXVT_LASTLOGX_FILE in config.h manually)])])
1018 if test x$rxvt_cv_path_lastlogx != x; then
1019   AC_DEFINE_UNQUOTED(RXVT_LASTLOGX_FILE, "$rxvt_cv_path_lastlogx", Define location of lastlogx)
1020 fi
1021
1022 dnl# --------------------------------------------------------------------------
1023
1024 dnl# find ttys/ttytab
1025 AC_CACHE_CHECK(where ttys/ttytab is located, rxvt_cv_path_ttytab,
1026 [for ttys_file in   dnl
1027   /etc/ttys /etc/ttytab;
1028 do
1029   if test -f "$ttys_file" ; then 
1030     rxvt_cv_path_ttytab=$ttys_file
1031     break
1032   fi
1033 done
1034 ])
1035 if test x$rxvt_cv_path_ttytab != x; then
1036   AC_DEFINE_UNQUOTED(TTYTAB_FILENAME, "$rxvt_cv_path_ttytab", Define location of ttys/ttytab)
1037 fi
1038
1039 dnl# --------------------------------------------------------------------------
1040 dnl# --------------------------------------------------------------------------
1041
1042 dnl# this is a really hack test for some basic Xlocale stuff
1043 ac_save_LIBS=$LIBS
1044 ac_save_CFLAGS=$CFLAGS
1045 CFLAGS="$CFLAGS $X_CFLAGS"
1046 LIBS="$LIBS $X_LIBS $X_EXTRA_LIBS -lX11"
1047 if test x$rxvt_cv_rpath = xyes -o x$rxvt_cv_R = xyes; then
1048   LIBS=`echo $LIBS | sed "$R_TRANSLATE"`
1049 fi
1050 AC_CACHE_CHECK(for working Xlocale, rxvt_cv_func_xlocale,
1051 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <X11/Xlib.h>
1052 main() {
1053 char *p;
1054 if ((p = XSetLocaleModifiers("@im=none")) != NULL && *p)
1055 exit (XSupportsLocale() ? 0 : 1);
1056 else
1057 exit (1);}]])],[dnl
1058   rxvt_cv_func_xlocale=yes],[rxvt_cv_func_xlocale=no],[dnl
1059   AC_MSG_WARN(Define NO_XLOCALE in config.h manually)])])
1060 if test x$rxvt_cv_func_xlocale = xyes; then
1061   AC_DEFINE(HAVE_XLOCALE, 1, Define if Xlocale support works)
1062 fi
1063
1064 AC_CACHE_CHECK(for working X setlocale, rxvt_cv_func_xsetlocale,
1065 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define X_LOCALE 1
1066 #include <X11/Xlocale.h>]], [[setlocale(LC_CTYPE, "");]])],[rxvt_cv_func_xsetlocale=yes],[rxvt_cv_func_xsetlocale=no])])
1067 if test x$rxvt_cv_func_xsetlocale = xyes; then
1068   AC_DEFINE(HAVE_XSETLOCALE, 1, Define if setlocale (defined to Xsetlocale) works)
1069 fi
1070 LIBS=$ac_save_LIBS
1071 CFLAGS=$ac_save_CFLAGS
1072
1073 AC_CACHE_CHECK(for working plain setlocale, rxvt_cv_func_setlocale,
1074 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <clocale>]], [[setlocale(LC_CTYPE, "");]])],[rxvt_cv_func_setlocale=yes],[rxvt_cv_func_setlocale=no])])
1075 if test x$rxvt_cv_func_setlocale = xyes; then
1076   AC_DEFINE(HAVE_SETLOCALE, 1, Define if plain old setlocale works)
1077 fi
1078
1079 AC_CACHE_CHECK(for working nl_langinfo, rxvt_cv_func_nl_langinfo,
1080 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo(CODESET);]])],[rxvt_cv_func_nl_langinfo=yes],[rxvt_cv_func_nl_langinfo=no])])
1081 if test x$rxvt_cv_func_nl_langinfo = xyes; then
1082   AC_DEFINE(HAVE_NL_LANGINFO, 1, Define if nl_langinfo(CODESET) works)
1083 fi
1084
1085 AC_CACHE_CHECK(for broken XIM callback, rxvt_broken_ximcb,
1086 [AC_COMPILE_IFELSE([
1087 #include <X11/Xlib.h>
1088
1089 void im_destroy_cb (XIC unused1, XPointer client_data, XPointer unused3);
1090
1091 void f() {
1092   XIMCallback cb;
1093   cb.callback = im_destroy_cb;
1094 }
1095 ],rxvt_broken_ximcb=yes,rxvt_broken_ximcb=no)])
1096
1097 if test x$rxvt_broken_ximcb = xyes; then
1098    AC_DEFINE(XIMCB_PROTO_BROKEN, 1, Define if your XIMCallback specifies XIC as first type.)
1099 fi
1100
1101 AC_CACHE_CHECK(for getpt, rxvt_cv_func_getpt,
1102 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#define _GNU_SOURCE
1103 #ifdef HAVE_STDLIB_H
1104 # include <cstdlib>
1105 #endif]], [[(void)getpt();]])],[rxvt_cv_func_getpt=yes],[rxvt_cv_func_getpt=no])])
1106 if test x$rxvt_cv_func_getpt = xyes; then
1107   AC_DEFINE(HAVE_GETPT, 1, Define if you have _GNU_SOURCE getpt() )
1108 fi
1109
1110 dnl# if we don't guess right then it's up to the user
1111 AC_CACHE_CHECK(for pty/tty type, rxvt_cv_ptys,
1112 [if test x$ac_cv_func_openpty = xyes; then
1113     rxvt_cv_ptys=OPENPTY
1114  else if test x$ac_cv_func__getpty = xyes; then
1115     rxvt_cv_ptys=SGI4
1116  else if test -c /dev/ttyp20; then
1117     rxvt_cv_ptys=SCO
1118  else if test -c /dev/ptym/clone; then
1119     rxvt_cv_ptys=HPUX
1120  else if test x$rxvt_cv_func_getpt = xyes; then
1121     rxvt_cv_ptys=GLIBC
1122  else if test -c /dev/ptc -a -c /dev/pts; then
1123     rxvt_cv_ptys=PTC
1124  else if test -c /dev/ptc -a -d /dev/pts; then
1125     rxvt_cv_ptys=PTC
1126  else if test -c /dev/ptmx -a -c /dev/pts/0; then
1127     rxvt_cv_ptys=STREAMS
1128  else if test x$ac_cv_func_grantpt = xyes && test x$ac_cv_func_unlockpt = xyes; then
1129 dnl# catch CYGWIN
1130     rxvt_cv_ptys=STREAMS
1131  else
1132     rxvt_cv_ptys=BSD
1133 fi
1134 fi
1135 fi
1136 fi
1137 fi
1138 fi
1139 fi
1140 fi
1141 fi
1142 ])
1143
1144 if test x$rxvt_cv_ptys = xOPENPTY; then
1145   AC_DEFINE(PTYS_ARE_OPENPTY, 1, Define for this pty type)
1146 fi
1147 if test x$rxvt_cv_ptys = xSCO; then
1148   AC_DEFINE(PTYS_ARE_NUMERIC, 1, Define for this pty type)
1149 fi
1150 if test x$rxvt_cv_ptys = xSTREAMS; then
1151   AC_DEFINE(PTYS_ARE_PTMX, 1, Define for this pty type)
1152 fi
1153 if test x$rxvt_cv_ptys = xPTC; then
1154   AC_DEFINE(PTYS_ARE_PTC, 1, Define for this pty type)
1155 fi
1156 if test x$rxvt_cv_ptys = xSGI4; then
1157   AC_DEFINE(PTYS_ARE__GETPTY, 1, Define for this pty type)
1158 fi
1159 if test x$rxvt_cv_ptys = xCONVEX; then
1160   AC_DEFINE(PTYS_ARE_GETPTY, 1, Define for this pty type)
1161 fi
1162 if test x$rxvt_cv_ptys = xGLIBC; then
1163   AC_DEFINE(PTYS_ARE_GETPT, 1, Define for this pty type)
1164 fi
1165 if test x$rxvt_cv_ptys = xHPUX; then
1166   AC_DEFINE(PTYS_ARE_CLONE, 1, Define for this pty type)
1167 fi
1168 if test x$rxvt_cv_ptys = xBSD -o x$rxvt_cv_ptys = xHPUX -o x$rxvt_cv_ptys = xGLIBC; then
1169   AC_DEFINE(PTYS_ARE_SEARCHED, 1, Define for this pty type)
1170 fi
1171
1172
1173 AS_MESSAGE(checking for pty ranges...)
1174 ptys=`echo /dev/pty??`
1175 pch1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
1176 pch2=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
1177 if test x$pch1 != x; then
1178   AC_DEFINE_UNQUOTED(PTYCHAR1, "$pch1", Define for first char in devptyXX)
1179 fi
1180 if test x$pch2 != x; then
1181   AC_DEFINE_UNQUOTED(PTYCHAR2, "$pch2", Define for second char in devptyXX)
1182 fi
1183
1184 dnl# --------------------------------------------------------------------------
1185 dnl# now add and remove other stuff
1186 dnl# --------------------------------------------------------------------------
1187 if test x$support_xft = xyes; then
1188   LIBS="$LIBS `pkg-config xft --libs`"
1189   CFLAGS="$CFLAGS `pkg-config xft --cflags`"
1190   CPPFLAGS="$CPPFLAGS `pkg-config xft --cflags`"
1191
1192   AC_CHECK_HEADERS(X11/Xft/Xft.h,,[support_xft=no])
1193   AC_CHECK_LIB(Xft,XftDrawString32,,[support_xft=no])
1194
1195   if test x$support_xft = xyes; then
1196     AC_DEFINE(XFT, 1, Define to enable xft support)
1197   fi
1198 fi
1199 if test x$support_styles = xyes; then
1200   AC_DEFINE(ENABLE_STYLES, 1, Define if you want bold and italic support)
1201 fi
1202 if test x$support_iso14755 = xyes; then
1203   AC_DEFINE(ISO_14755, 1, Define if you want ISO 14755 extended support)
1204 fi
1205 if test x$support_8bitctrls = xyes; then
1206   AC_DEFINE(EIGHT_BIT_CONTROLS, 1, Define if you want 8 bit control sequences)
1207 fi
1208 if test x$support_fading = xyes; then
1209   AC_DEFINE(OFF_FOCUS_FADING, 1, Define if you want faded colors when focus is lost)
1210 fi
1211 if test x$support_tinting = xyes; then
1212   AC_DEFINE(TINTING, 1, Define if you want your background to be tinted)
1213 fi
1214 if test x$support_inheritpixmap = xyes; then
1215   AC_DEFINE(TRANSPARENT, 1, Define if you want your background to use the parent window background)
1216 fi
1217 if test x$support_keepscrolling = xno; then
1218   AC_DEFINE(NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING, 1, Define for continual scrolling when you keep the scrollbar button pressed)
1219 fi
1220 if test x$support_selectionscrolling = xyes; then
1221   AC_DEFINE(SELECTION_SCROLLING, 1, Define to allow scrolling when the selection moves to the top or bottom of the screen)
1222 fi
1223 if test x$support_menubar = xyes; then
1224   AC_DEFINE(MENUBAR, 1, Define if you want Menubar support)
1225 fi
1226 if test x$support_frills = xyes; then
1227   AC_DEFINE(ENABLE_FRILLS, 1, Define if you want handling for rarely used but handy features)
1228 fi
1229 if test x$support_24bit = xyes; then
1230   AC_DEFINE(PREFER_24BIT, 1, Define to use a 24 bit visual if the screen has 24 bit mode, even if the default is 8 bit)
1231 fi
1232 if test x$support_mousewheel = xyes; then
1233   AC_DEFINE(MOUSE_WHEEL, 1, Define to use wheel events (button4 and button5) to scroll)
1234 fi
1235 if test x$support_mouseslipwheel = xyes; then
1236   AC_DEFINE(MOUSE_SLIP_WHEELING, 1, Define to have CTRL cause wheel events to accelerate scrolling. Release CTRL to halt scrolling)
1237 fi
1238 if test x$support_utmp = xyes; then
1239   AC_DEFINE(UTMP_SUPPORT, 1, Define if you want to have utmp/utmpx support)
1240 fi
1241 if test x$support_wtmp = xyes; then
1242   AC_DEFINE(WTMP_SUPPORT, 1, Define if you want to have wtmp support when utmp/utmpx is enabled)
1243 fi
1244 if test x$support_lastlog = xyes; then
1245   AC_DEFINE(LASTLOG_SUPPORT, 1, Define if you want to have lastlog support when utmp/utmpx is enabled)
1246 fi
1247 if test x$support_xim = xyes -o x$multichar_set = xyes; then
1248   if test x$rxvt_cv_func_xlocale = xyes; then
1249     AC_DEFINE(USE_XIM, 1, Define if you want to have XIM (X Input Method) protocol support - required for multibyte characters input)
1250   fi
1251 fi
1252 if test x$support_xpm = xyes; then
1253   AC_DEFINE(XPM_BACKGROUND, 1, Define if you want to have sexy-looking background pixmaps. Needs libXpm)
1254 fi
1255 if test x$support_scroll_rxvt = xyes; then
1256   AC_DEFINE(RXVT_SCROLLBAR, 1, Support Rxvt original style scrollbars)
1257   scrolltypes="rxvt"
1258 fi
1259 if test x$support_scroll_next = xyes; then
1260   AC_DEFINE(NEXT_SCROLLBAR, 1, Support NeXT style scrollbars)
1261   scrolltypes="$scrolltypes next"
1262 fi
1263 if test x$support_scroll_xterm = xyes; then
1264   AC_DEFINE(XTERM_SCROLLBAR, 1, Support Xterm style scrollbars)
1265   scrolltypes="$scrolltypes xterm"
1266 fi
1267 if test x$support_scroll_plain = xyes; then
1268   AC_DEFINE(PLAIN_SCROLLBAR, 1, Support plain style scrollbars)
1269   scrolltypes="$scrolltypes plain"
1270 fi
1271 if test x$support_pointer_blank = xyes; then
1272   AC_DEFINE(POINTER_BLANK, 1, Define if you want hide the pointer while typing)
1273 fi
1274 if test x$support_cursor_blink = xyes; then
1275   AC_DEFINE(CURSOR_BLINK, 1, Define if you want blinking cursor support)
1276 fi
1277 if test x$support_text_blink = xyes; then
1278   AC_DEFINE(TEXT_BLINK, 1, Define if you want blinking text support)
1279 fi
1280 if test x$support_unicode3 = xyes; then
1281   AC_DEFINE(UNICODE_3, 1, Define if you want to represent unicode characters outside plane 0)
1282 fi
1283 if test x$support_combining = xyes; then
1284   AC_DEFINE(ENABLE_COMBINING, 1, Define if you want to automatically compose combining characters)
1285 fi
1286 if test x$codesets = xall; then
1287   codesets=jp,jp-ext,kr,zh,zh-ext
1288 fi
1289 AC_DEFINE(ENCODING_EU, 1, Define if you want european extended codesets)
1290 AC_DEFINE(ENCODING_VN, 1, Define if you want vietnamese codesets)
1291 for codeset in `echo $codesets | tr "[a-z,\\-]" "[A-Z _]"`; do
1292   case "$codeset" in
1293     JP     ) AC_DEFINE(ENCODING_JP,     1, Define if you want japanese codesets) ;;
1294     JP_EXT ) AC_DEFINE(ENCODING_JP_EXT, 1, Define if you want extended japanese codesets) ;;
1295     KR     ) AC_DEFINE(ENCODING_KR,     1, Define if you want korean codesets) ;;
1296     ZH     ) AC_DEFINE(ENCODING_ZH,     1, Define if you want chinese codesets) ;;
1297     ZH_EXT ) AC_DEFINE(ENCODING_ZH_EXT, 1, Define if you want extended chinese codesets) ;;
1298   esac
1299 done
1300
1301 dnl> AC_CHECK_FUNCS(gettimeofday putenv select socket)
1302
1303 CFLAGS=${CFLAGS--O}
1304 LDFLAGS=${LDFLAGS--O}
1305
1306 CPPFLAGS="$CPPFLAGS"
1307 AC_SUBST(DEBUG)
1308 AC_SUBST(DINCLUDE)
1309 AC_SUBST(CFLAGS)
1310 AC_SUBST(CPPFLAGS)
1311 AC_SUBST(LDFLAGS)
1312 AC_SUBST(X_CFLAGS)
1313
1314 dnl# Attack the libs
1315 if test x$rxvt_cv_rpath = xyes -o x$rxvt_cv_R = xyes; then
1316   DLIB=`echo $DLIB | sed "$R_TRANSLATE"`
1317   LIBS=`echo $LIBS | sed "$R_TRANSLATE"`
1318   X_LIBS=`echo $X_LIBS | sed "$R_TRANSLATE"`
1319   X_EXTRA_LIBS=`echo $X_EXTRA_LIBS | sed "$R_TRANSLATE"`
1320   XPM_LIBS=`echo $XPM_LIBS | sed "$R_TRANSLATE"`
1321 fi
1322 AC_SUBST(DLIB)
1323 AC_SUBST(LIBS)
1324 AC_SUBST(X_LIBS)
1325 AC_SUBST(X_EXTRA_LIBS)
1326
1327 if test x$support_addstrings = xno; then
1328     AC_DEFINE(NO_STRINGS, 1, Define if you don't need to use our replacement string functions)
1329 fi
1330
1331 dnl# common parts of the Makefile
1332 MCOMMON=./autoconf/Make.common
1333 AC_SUBST_FILE(MCOMMON)
1334
1335 AC_ARG_PROGRAM
1336
1337 dnl# test for "sun" or "__sun__" before include sys_ioctl
1338
1339 dnl# revert HAVE_BLAH_H into a "#include <blah.h>"
1340 AC_DEFUN(RXVT_DEFINE_TO_INCLUDE, dnl
1341 [if test "$$3" = "$4" -o "$$5" = "$6"; then
1342   $1="#include <$2>"
1343 else
1344   $1="/* #include <$2> */"
1345 fi dnl
1346 AC_SUBST($1)])
1347
1348 RXVT_DEFINE_TO_INCLUDE(include_stdint_h, stdint.h, ac_cv_header_stdint_h, yes, notset, dontmatch)
1349 RXVT_DEFINE_TO_INCLUDE(include_stdarg_h, cstdarg, ac_cv_header_stdarg_h, yes, notset, dontmatch)
1350 RXVT_DEFINE_TO_INCLUDE(include_stdlib_h, cstdlib, ac_cv_header_stdlib_h, yes, notset, dontmatch)
1351 RXVT_DEFINE_TO_INCLUDE(include_unistd_h, unistd.h, ac_cv_header_unistd_h, yes, notset, dontmatch)
1352 RXVT_DEFINE_TO_INCLUDE(include_string_h, cstring, ac_cv_header_string_h, yes, notset, dontmatch)
1353 RXVT_DEFINE_TO_INCLUDE(include_fcntl_h, fcntl.h, ac_cv_header_fcntl_h, yes, notset, dontmatch)
1354 RXVT_DEFINE_TO_INCLUDE(include_util_h, util.h, ac_cv_header_util_h, yes, notset, dontmatch)
1355 RXVT_DEFINE_TO_INCLUDE(include_assert_h, assert.h, ac_cv_header_assert_h, yes, notset, dontmatch)
1356 RXVT_DEFINE_TO_INCLUDE(include_sys_ioctl_h, sys/ioctl.h, rxvt_cv_header_sysioctl, yes, notset, dontmatch)
1357 RXVT_DEFINE_TO_INCLUDE(include_sys_select_h, sys/select.h, ac_cv_header_sys_select_h, yes, notset, dontmatch)
1358 RXVT_DEFINE_TO_INCLUDE(include_sys_strredir_h, sys/strredir.h, ac_cv_header_sys_strredir_h, yes, notset, dontmatch)
1359 RXVT_DEFINE_TO_INCLUDE(include_sys_time_h, sys/time.h, ac_cv_header_sys_time_h, yes, notset, dontmatch)
1360 RXVT_DEFINE_TO_INCLUDE(include_time_h, time.h, ac_cv_header_sys_time_h, no, ac_cv_header_time, yes)
1361
1362 AC_CONFIG_FILES([autoconf/Make.common \
1363 Makefile \
1364 doc/Makefile \
1365 src/Makefile \
1366 src/rxvtlib.h \
1367 ])
1368 AC_OUTPUT
1369
1370 echo "Configuration:
1371
1372   Rxvt version:               $VERSION : $DATE
1373   Source code location:       $srcdir
1374   Install path:               ${prefix}/bin
1375   Compiler:                   $CXX
1376   Compiler flags:             $CFLAGS
1377   Linker:                     $LINKER"
1378
1379 if test "$MALLOC_TYPE" = S; then
1380   echo "  malloc support:             system default"
1381 fi
1382 if test "$MALLOC_TYPE" = G; then
1383   echo "  malloc support:             Gray Watson's dmalloc"
1384 fi
1385 if test "$MALLOC_TYPE" = D; then
1386   echo "  malloc support:             Doug Lea's malloc"
1387 fi
1388
1389 if test x$support_xpm = xyes; then
1390   echo "  Xpm library:                $XPM_LIBS"
1391 fi
1392
1393 echo "
1394 The following are set in config.h
1395 "
1396 echo "  pty/tty type:               "$rxvt_cv_ptys
1397 if test x$support_utmp != xyes; then
1398   echo "  utmp support:               disabled"
1399   echo
1400 else
1401   echo "  utmp support:               enabled
1402   utmp file:                  $rxvt_cv_path_utmp
1403   utmpx file:                 $rxvt_cv_path_utmpx
1404   wtmp file:                  $rxvt_cv_path_wtmp
1405   wtmpx file:                 $rxvt_cv_path_wtmpx
1406   lastlog file:               $rxvt_cv_path_lastlog
1407   ttys/ttytab file:           $rxvt_cv_path_ttytab"
1408   echo
1409 fi
1410 if test x$term != x; then
1411   echo "  set TERM to:                $term"
1412 fi
1413 if test x$terminfo != x; then
1414   echo "  set TERMINFO to:            $terminfo"
1415 fi
1416 echo "  default resource name:      $RESNAME"
1417 echo "  resource class:             $RESCLASS"
1418 if test x$RESFALLBACK != x; then
1419    echo "  resource class fallback:    $RESFALLBACK"
1420 fi
1421 echo
1422 if test x$rxvt_cv_ptys = xUNKNOWN; then
1423   echo ".----------------------------------------------------------------."
1424   echo ". WARNING: could not determine pty/tty type.  Do not build until ."
1425   echo ".          the appropriate PTYS_ARE_* is defined in config.h     ."
1426   echo ".----------------------------------------------------------------."
1427 fi
1428 if test x$support_xpm = xneedsmanualspecification; then
1429   echo ".----------------------------------------------------------------."
1430   echo ". WARNING: --enable-xpm-background was specified however the     ."
1431   echo ".          XPM includes files and libraries could not be found.  ."
1432   echo ".          XPM backgrounds are now being DISABLED!  If you want  ."
1433   echo ".          to use them you should rerun   configure   with the   ."
1434   echo ".          appropriate --with-xpm-includes=/path/to/xpm/includes ."
1435   echo ".          and --with-xpm-library=/path/to/xpm/library lines.    ."
1436   echo ".----------------------------------------------------------------."
1437 fi
1438 if test x$support_xim = xyes -a x$rxvt_cv_func_xlocale = xno; then
1439   echo ".----------------------------------------------------------------."
1440   echo ". WARNING: --enable-xim was specified however the locale support ."
1441   echo ".          functions could not be found.                         ."
1442   echo ".          XIM is now being DISABLED!                            ."
1443   echo ".----------------------------------------------------------------."
1444 fi
1445
1446 echo "  *** Please check src/feature.h for further options ***"
1447 echo
1448
1449 echo ".----------------------------------------------------------------."
1450 echo ". NOTE: most features are disabled by default, try               ."
1451 echo ". configure --help to get an idea of the optional features       ."
1452 echo ".----------------------------------------------------------------."
1453 echo
1454