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