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