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