ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/configure.ac
Revision: 1.27
Committed: Mon Jan 23 10:26:21 2006 UTC (18 years, 4 months ago) by ayin
Branch: MAIN
Changes since 1.26: +0 -31 lines
Log Message:
*** empty log message ***

File Contents

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