Merge from emacs-24; up to 2014-04-25T10:35:01Z!michael.albinus@gmx.de
[bpt/emacs.git] / configure.ac
1 dnl Autoconf script for GNU Emacs
2 dnl To rebuild the `configure' script from this, execute the command
3 dnl autoconf
4 dnl in the directory containing this script.
5 dnl If you changed any AC_DEFINES, also run autoheader.
6 dnl
7 dnl Copyright (C) 1994-1996, 1999-2014 Free Software Foundation, Inc.
8 dnl
9 dnl This file is part of GNU Emacs.
10 dnl
11 dnl GNU Emacs is free software: you can redistribute it and/or modify
12 dnl it under the terms of the GNU General Public License as published by
13 dnl the Free Software Foundation, either version 3 of the License, or
14 dnl (at your option) any later version.
15 dnl
16 dnl GNU Emacs is distributed in the hope that it will be useful,
17 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
18 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 dnl GNU General Public License for more details.
20 dnl
21 dnl You should have received a copy of the GNU General Public License
22 dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23
24 AC_PREREQ(2.65)
25 dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
26 AC_INIT(GNU Emacs, 24.4.50, bug-gnu-emacs@gnu.org)
27
28 dnl We get MINGW64 with MSYS2
29 if test "x$MSYSTEM" = "xMINGW32" -o "x$MSYSTEM" = "xMINGW64"
30 then
31 . $srcdir/nt/mingw-cfg.site
32
33 case $srcdir in
34 /* | ?:*)
35 # srcdir is an absolute path. In this case, force the format
36 # "/c/foo/bar", to simplify later conversions to native Windows
37 # format ("c:/foo/bar")
38 srcdir=`cd "${srcdir}" && pwd -W`
39 srcdir="/${srcdir:0:1}${srcdir:2}"
40 ;;
41 esac
42 fi
43
44 dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
45 dnl and then quoted again for a C string. Separate options with spaces.
46 dnl Add some environment variables, if they were passed via the environment
47 dnl rather than on the command-line.
48 emacs_config_options=
49 optsep=
50 dnl This is the documented way to record the args passed to configure,
51 dnl rather than $ac_configure_args.
52 for opt in ${1+"$@"} CFLAGS CPPFLAGS LDFLAGS; do
53 case $opt in
54 -n | --no-create | --no-recursion)
55 continue ;;
56 CFLAGS | CPPFLAGS | LDFLAGS)
57 eval 'test "${'$opt'+set}" = set' || continue
58 case " $*" in
59 *" $opt="*) continue ;;
60 esac
61 eval opt=$opt=\$$opt ;;
62 esac
63
64 emacs_shell_specials=$IFS\''"#$&()*;<>?@<:@\\`{|~'
65 case $opt in
66 *[["$emacs_shell_specials"]]*)
67 case $opt in
68 *\'*)
69 emacs_quote_apostrophes="s/'/'\\\\''/g"
70 opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_apostrophes"` ;;
71 esac
72 opt="'$opt'"
73 case $opt in
74 *[['"\\']]*)
75 emacs_quote_for_c='s/[["\\]]/\\&/g; $!s/$/\\n\\/'
76 opt=`AS_ECHO(["$opt"]) | sed "$emacs_quote_for_c"` ;;
77 esac ;;
78 esac
79 AS_VAR_APPEND([emacs_config_options], ["$optsep$opt"])
80 optsep=' '
81 done
82
83 AC_CONFIG_HEADERS(src/config.h:src/config.in)
84 AC_CONFIG_SRCDIR(src/lisp.h)
85 AC_CONFIG_AUX_DIR(build-aux)
86
87 xcsdkdir=
88 AC_CHECK_PROGS(XCRUN, [xcrun])
89 if test -n "$XCRUN"; then
90 if test -z "$MAKE"; then
91 dnl Call the variable MAKE_PROG, not MAKE, to avoid confusion with
92 dnl SET_MAKE and with the usual MAKE variable that 'make' itself uses.
93 AC_CHECK_PROG([MAKE_PROG], [make], [yes])
94 if test -z "$MAKE_PROG"; then
95 MAKE="$XCRUN MAKE"
96 export MAKE
97 xcsdkdir=`$XCRUN --show-sdk-path 2>/dev/null`
98 fi
99 fi
100 fi
101
102 dnl Fairly arbitrary, older versions might work too.
103 AM_INIT_AUTOMAKE(1.11)
104
105 dnl Support for --program-prefix, --program-suffix and
106 dnl --program-transform-name options
107 AC_ARG_PROGRAM
108
109 dnl It is important that variables on the RHS not be expanded here,
110 dnl hence the single quotes. This is per the GNU coding standards, see
111 dnl (autoconf) Installation Directory Variables
112 dnl See also epaths.h below.
113 lispdir='${datadir}/emacs/${version}/lisp'
114 standardlisppath='${lispdir}'
115 locallisppath='${datadir}/emacs/${version}/site-lisp:'\
116 '${datadir}/emacs/site-lisp'
117 lisppath='${locallisppath}:${standardlisppath}'
118 etcdir='${datadir}/emacs/${version}/etc'
119 archlibdir='${libexecdir}/emacs/${version}/${configuration}'
120 etcdocdir='${datadir}/emacs/${version}/etc'
121 gamedir='${localstatedir}/games/emacs'
122
123 dnl Special option to disable the most of other options.
124 AC_ARG_WITH(all,
125 [AS_HELP_STRING([--without-all],
126 [omit almost all features and build
127 small executable with minimal dependencies])],
128 [with_features=$withval],
129 [with_features=yes])
130
131 dnl OPTION_DEFAULT_OFF(NAME, HELP-STRING)
132 dnl Create a new --with option that defaults to being disabled.
133 dnl NAME is the base name of the option. The shell variable with_NAME
134 dnl will be set to either the user's value (if the option is
135 dnl specified; 'yes' for a plain --with-NAME) or to 'no' (if the
136 dnl option is not specified). Note that the shell variable name is
137 dnl constructed as autoconf does, by replacing non-alphanumeric
138 dnl characters with "_".
139 dnl HELP-STRING is the help text for the option.
140 AC_DEFUN([OPTION_DEFAULT_OFF], [dnl
141 AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl
142 m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl
143 ])dnl
144
145 dnl OPTION_DEFAULT_ON(NAME, HELP-STRING)
146 dnl Create a new --with option that defaults to $with_features.
147 dnl NAME is the base name of the option. The shell variable with_NAME
148 dnl will be set either to 'no' (for a plain --without-NAME) or to
149 dnl 'yes' (if the option is not specified). Note that the shell
150 dnl variable name is constructed as autoconf does, by replacing
151 dnl non-alphanumeric characters with "_".
152 dnl HELP-STRING is the help text for the option.
153 AC_DEFUN([OPTION_DEFAULT_ON], [dnl
154 AC_ARG_WITH([$1],[AS_HELP_STRING([--without-$1],[$2])],[],[dnl
155 m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=$with_features])dnl
156 ])dnl
157
158 OPTION_DEFAULT_ON([pop],[don't support POP mail retrieval with movemail])
159 if test "$with_pop" = yes; then
160 AC_DEFINE(MAIL_USE_POP)
161 fi
162 AH_TEMPLATE(MAIL_USE_POP, [Define to support POP mail retrieval.])dnl
163
164 OPTION_DEFAULT_OFF([kerberos],[support Kerberos-authenticated POP])
165 if test "$with_kerberos" != no; then
166 AC_DEFINE(KERBEROS)
167 fi
168 AH_TEMPLATE(KERBEROS,
169 [Define to support Kerberos-authenticated POP mail retrieval.])dnl
170
171 OPTION_DEFAULT_OFF([kerberos5],[support Kerberos version 5 authenticated POP])
172 if test "${with_kerberos5}" != no; then
173 if test "${with_kerberos}" = no; then
174 with_kerberos=yes
175 AC_DEFINE(KERBEROS)
176 fi
177 AC_DEFINE(KERBEROS5, 1, [Define to use Kerberos 5 instead of Kerberos 4.])
178 fi
179
180 OPTION_DEFAULT_OFF([hesiod],[support Hesiod to get the POP server host])
181 dnl FIXME hesiod support may not be present, so it seems like an error
182 dnl to define, or at least use, this unconditionally.
183 if test "$with_hesiod" != no; then
184 AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the POP server.])
185 fi
186
187 OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
188 if test "$with_mmdf" != no; then
189 AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
190 fi
191
192 OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after reading])
193 if test "$with_mail_unlink" != no; then
194 AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail spool after reading.])
195 fi
196
197 AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
198 [string giving default POP mail host])],
199 AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
200
201 AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE],
202 [compile with sound support (VALUE one of: yes, alsa, oss, bsd-ossaudio, no;
203 default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW.])],
204 [ case "${withval}" in
205 yes|no|alsa|oss|bsd-ossaudio) val=$withval ;;
206 *) AC_MSG_ERROR([`--with-sound=$withval' is invalid;
207 this option's value should be `yes', `no', `alsa', `oss', or `bsd-ossaudio'.])
208 ;;
209 esac
210 with_sound=$val
211 ],
212 [with_sound=$with_features])
213
214 dnl FIXME currently it is not the last.
215 dnl This should be the last --with option, because --with-x is
216 dnl added later on when we find the file name of X, and it's best to
217 dnl keep them together visually.
218 AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
219 [use an X toolkit (KIT one of: yes or gtk, gtk2, gtk3, lucid or athena, motif, no)])],
220 [ case "${withval}" in
221 y | ye | yes ) val=gtk ;;
222 n | no ) val=no ;;
223 l | lu | luc | luci | lucid ) val=lucid ;;
224 a | at | ath | athe | athen | athena ) val=athena ;;
225 m | mo | mot | moti | motif ) val=motif ;;
226 g | gt | gtk ) val=gtk ;;
227 gtk2 ) val=gtk2 ;;
228 gtk3 ) val=gtk3 ;;
229 * )
230 AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
231 this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk',
232 `gtk2' or `gtk3'. `yes' and `gtk' are synonyms.
233 `athena' and `lucid' are synonyms.])
234 ;;
235 esac
236 with_x_toolkit=$val
237 ])
238
239 OPTION_DEFAULT_OFF([wide-int], [prefer wide Emacs integers (typically 62-bit)])
240 if test "$with_wide_int" = yes; then
241 AC_DEFINE([WIDE_EMACS_INT], 1, [Use long long for EMACS_INT if available.])
242 fi
243
244 dnl _ON results in a '--without' option in the --help output, so
245 dnl the help text should refer to "don't compile", etc.
246 OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support])
247 OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support])
248 OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
249 OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
250 OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
251 OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
252 OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
253 OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
254
255 OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
256 OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
257 OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
258
259 OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
260 OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
261 OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
262 OPTION_DEFAULT_OFF([ns],[use NeXTstep (Cocoa or GNUstep) windowing system])
263 OPTION_DEFAULT_OFF([w32], [use native MS Windows GUI in a Cygwin build])
264
265 OPTION_DEFAULT_ON([gpm],[don't use -lgpm for mouse support on a GNU/Linux console])
266 OPTION_DEFAULT_ON([dbus],[don't compile with D-Bus support])
267 OPTION_DEFAULT_ON([gconf],[don't compile with GConf support])
268 OPTION_DEFAULT_ON([gsettings],[don't compile with GSettings support])
269 OPTION_DEFAULT_ON([selinux],[don't compile with SELinux support])
270 OPTION_DEFAULT_ON([gnutls],[don't use -lgnutls for SSL/TLS support])
271 OPTION_DEFAULT_ON([zlib],[don't compile with zlib decompression support])
272
273 AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
274 [use a file notification library (LIB one of: yes, gfile, inotify, w32, no)])],
275 [ case "${withval}" in
276 y | ye | yes ) val=yes ;;
277 n | no ) val=no ;;
278 g | gf | gfi | gfil | gfile ) val=gfile ;;
279 i | in | ino | inot | inoti | inotif | inotify ) val=inotify ;;
280 w | w3 | w32 ) val=w32 ;;
281 * ) AC_MSG_ERROR([`--with-file-notification=$withval' is invalid;
282 this option's value should be `yes', `no', `gfile', `inotify' or `w32'.
283 `yes' is a synonym for `w32' on MS-Windows, for `no' on Nextstep,
284 otherwise for the first of `gfile' or `inotify' that is usable.])
285 ;;
286 esac
287 with_file_notification=$val
288 ],
289 [with_file_notification=$with_features])
290
291 ## For the times when you want to build Emacs but don't have
292 ## a suitable makeinfo, and can live without the manuals.
293 dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
294 OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
295
296 ## Makefile.in needs the cache file name.
297 AC_SUBST(cache_file)
298
299 ## This is an option because I do not know if all info/man support
300 ## compressed files, nor how to test if they do so.
301 OPTION_DEFAULT_ON([compress-install],
302 [don't compress some files (.el, .info, etc.) when installing. Equivalent to:
303 make GZIP_PROG= install])
304
305 AC_ARG_WITH([pkg-config-prog],dnl
306 [AS_HELP_STRING([--with-pkg-config-prog=FILENAME],
307 [file name of pkg-config for finding GTK and librsvg])])
308 if test "X${with_pkg_config_prog}" != X; then
309 if test "${with_pkg_config_prog}" != yes; then
310 PKG_CONFIG="${with_pkg_config_prog}"
311 fi
312 fi
313
314 AC_ARG_WITH(gameuser,dnl
315 [AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
316 test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
317 && gameuser="${with_gameuser}"
318 test "X$gameuser" = X && gameuser=games
319
320 AC_ARG_WITH([gnustep-conf],dnl
321 [AS_HELP_STRING([--with-gnustep-conf=FILENAME],
322 [name of GNUstep.conf; default $GNUSTEP_CONFIG_FILE, or /etc/GNUstep/GNUstep.conf])])
323 test "X${with_gnustep_conf}" != X && test "${with_gnustep_conf}" != yes && \
324 GNUSTEP_CONFIG_FILE="${with_gnustep_conf}"
325 test "X$GNUSTEP_CONFIG_FILE" = "X" && \
326 GNUSTEP_CONFIG_FILE=/etc/GNUstep/GNUstep.conf
327
328 AC_ARG_ENABLE(ns-self-contained,
329 [AS_HELP_STRING([--disable-ns-self-contained],
330 [disable self contained build under NeXTstep])],
331 EN_NS_SELF_CONTAINED=$enableval,
332 EN_NS_SELF_CONTAINED=yes)
333
334 AC_ARG_ENABLE(locallisppath,
335 [AS_HELP_STRING([--enable-locallisppath=PATH],
336 [directories Emacs should search for lisp files specific
337 to this site])],
338 if test "${enableval}" = "no"; then
339 locallisppath=
340 elif test "${enableval}" != "yes"; then
341 locallisppath=${enableval}
342 fi)
343
344 AC_ARG_ENABLE(checking,
345 [AS_HELP_STRING([--enable-checking@<:@=LIST@:>@],
346 [enable expensive run-time checks. With LIST,
347 enable only specific categories of checks.
348 Categories are: all,yes,no.
349 Flags are: stringbytes, stringoverrun, stringfreelist,
350 xmallocoverrun, conslist, glyphs])],
351 [ac_checking_flags="${enableval}"],[])
352 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
353 for check in $ac_checking_flags
354 do
355 case $check in
356 # these set all the flags to specific states
357 yes) ac_enable_checking=1 ;;
358 no) ac_enable_checking= ;
359 ac_gc_check_stringbytes= ;
360 ac_gc_check_string_overrun= ;
361 ac_gc_check_string_free_list= ;
362 ac_xmalloc_overrun= ;
363 ac_gc_check_cons_list= ;
364 ac_glyphs_debug= ;;
365 all) ac_enable_checking=1 ;
366 ac_gc_check_stringbytes=1 ;
367 ac_gc_check_string_overrun=1 ;
368 ac_gc_check_string_free_list=1 ;
369 ac_xmalloc_overrun=1 ;
370 ac_gc_check_cons_list=1 ;
371 ac_glyphs_debug=1 ;;
372 # these enable particular checks
373 stringbytes) ac_gc_check_stringbytes=1 ;;
374 stringoverrun) ac_gc_check_string_overrun=1 ;;
375 stringfreelist) ac_gc_check_string_free_list=1 ;;
376 xmallocoverrun) ac_xmalloc_overrun=1 ;;
377 conslist) ac_gc_check_cons_list=1 ;;
378 glyphs) ac_glyphs_debug=1 ;;
379 *) AC_MSG_ERROR(unknown check category $check) ;;
380 esac
381 done
382 IFS="$ac_save_IFS"
383
384 if test x$ac_enable_checking != x ; then
385 AC_DEFINE(ENABLE_CHECKING, 1,
386 [Define to 1 if expensive run-time data type and consistency checks are enabled.])
387 fi
388 if test x$ac_gc_check_stringbytes != x ; then
389 AC_DEFINE(GC_CHECK_STRING_BYTES, 1,
390 [Define this temporarily to hunt a bug. If defined, the size of
391 strings is redundantly recorded in sdata structures so that it can
392 be compared to the sizes recorded in Lisp strings.])
393 fi
394 if test x$ac_gc_check_string_overrun != x ; then
395 AC_DEFINE(GC_CHECK_STRING_OVERRUN, 1,
396 [Define this to check for short string overrun.])
397 fi
398 if test x$ac_gc_check_string_free_list != x ; then
399 AC_DEFINE(GC_CHECK_STRING_FREE_LIST, 1,
400 [Define this to check the string free list.])
401 fi
402 if test x$ac_xmalloc_overrun != x ; then
403 AC_DEFINE(XMALLOC_OVERRUN_CHECK, 1,
404 [Define this to check for malloc buffer overrun.])
405 fi
406 if test x$ac_gc_check_cons_list != x ; then
407 AC_DEFINE(GC_CHECK_CONS_LIST, 1,
408 [Define this to check for errors in cons list.])
409 fi
410 if test x$ac_glyphs_debug != x ; then
411 AC_DEFINE(GLYPH_DEBUG, 1,
412 [Define this to enable glyphs debugging code.])
413 fi
414
415 AC_ARG_ENABLE(check-lisp-object-type,
416 [AS_HELP_STRING([--enable-check-lisp-object-type],
417 [enable compile time checks for the Lisp_Object data type.
418 This is useful for development for catching certain types of bugs.])],
419 if test "${enableval}" != "no"; then
420 AC_DEFINE(CHECK_LISP_OBJECT_TYPE, 1,
421 [Define this to enable compile time checks for the Lisp_Object data type.])
422 fi)
423
424
425 dnl The name of this option is unfortunate. It predates, and has no
426 dnl relation to, the "sampling-based elisp profiler" added in 24.3.
427 dnl Actually, it stops it working.
428 dnl http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00393.html
429 AC_ARG_ENABLE(profiling,
430 [AS_HELP_STRING([--enable-profiling],
431 [build emacs with low-level, gprof profiling support.
432 Mainly useful for debugging Emacs itself. May not work on
433 all platforms. Stops profiler.el working.])],
434 [ac_enable_profiling="${enableval}"],[])
435 if test x$ac_enable_profiling != x ; then
436 PROFILING_CFLAGS="-DPROFILING=1 -pg"
437 else
438 PROFILING_CFLAGS=
439 fi
440 AC_SUBST(PROFILING_CFLAGS)
441
442 AC_ARG_ENABLE(autodepend,
443 [AS_HELP_STRING([--enable-autodepend],
444 [automatically generate dependencies to .h-files.
445 Requires gcc, enabled if found.])],
446 [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
447
448 AC_ARG_ENABLE(gtk-deprecation-warnings,
449 [AS_HELP_STRING([--enable-gtk-deprecation-warnings],
450 [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
451 [ac_enable_gtk_deprecation_warnings="${enableval}"],[])
452
453 ### Canonicalize the configuration name.
454
455 AC_CANONICAL_HOST
456 canonical=$host
457 configuration=${host_alias-${build_alias-$host}}
458
459 dnl This used to use changequote, but, apart from `changequote is evil'
460 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
461 dnl the great gob of text. Thus it's not processed for possible expansion.
462 dnl Just make sure the brackets remain balanced.
463 dnl
464 dnl Since Emacs can't find matching pairs of quotes, boundaries are
465 dnl indicated by comments.
466 dnl quotation begins
467 [
468
469 ### If you add support for a new configuration, add code to this
470 ### switch statement to recognize your configuration name and select
471 ### the appropriate opsys.
472
473 ### As far as handling version numbers on operating systems is
474 ### concerned, make sure things will fail in a fixable way. If
475 ### /etc/MACHINES doesn't say anything about version numbers, be
476 ### prepared to handle anything reasonably. If version numbers
477 ### matter, be sure /etc/MACHINES says something about it.
478
479 opsys='' unported=no
480 case "${canonical}" in
481
482 ## GNU/Linux and similar ports
483 *-*-linux* )
484 opsys=gnu-linux
485 ;;
486
487 ## FreeBSD ports
488 *-*-freebsd* )
489 opsys=freebsd
490 ;;
491
492 ## DragonFly ports
493 *-*-dragonfly* )
494 opsys=dragonfly
495 ;;
496
497 ## FreeBSD kernel + glibc based userland
498 *-*-kfreebsd*gnu* )
499 opsys=gnu-kfreebsd
500 ;;
501
502 ## NetBSD ports
503 *-*-netbsd* )
504 opsys=netbsd
505 ;;
506
507 ## OpenBSD ports
508 *-*-openbsd* )
509 opsys=openbsd
510 ;;
511
512 ## Apple Darwin / Mac OS X
513 *-apple-darwin* )
514 case "${canonical}" in
515 i[3456]86-* ) ;;
516 powerpc-* ) ;;
517 x86_64-* ) ;;
518 * ) unported=yes ;;
519 esac
520 opsys=darwin
521 ## Use fink packages if available.
522 ## FIXME find a better way to do this: http://debbugs.gnu.org/11507
523 ## if test -d /sw/include && test -d /sw/lib; then
524 ## GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
525 ## NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS}
526 ## fi
527 ;;
528
529 ## Cygwin ports
530 *-*-cygwin )
531 opsys=cygwin
532 ;;
533
534 ## HP 9000 series 700 and 800, running HP/UX
535 hppa*-hp-hpux10.2* )
536 opsys=hpux10-20
537 ;;
538 hppa*-hp-hpux1[1-9]* )
539 opsys=hpux11
540 CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
541 ;;
542
543 ## IBM machines
544 rs6000-ibm-aix4.[23]* )
545 opsys=aix4-2
546 ;;
547 powerpc-ibm-aix4.[23]* )
548 opsys=aix4-2
549 ;;
550 rs6000-ibm-aix[56]* )
551 opsys=aix4-2
552 ;;
553 powerpc-ibm-aix[56]* )
554 opsys=aix4-2
555 ;;
556
557 ## Silicon Graphics machines
558 ## Iris 4D
559 mips-sgi-irix6.5 )
560 opsys=irix6-5
561 # Without defining _LANGUAGE_C, things get masked out in the headers
562 # so that, for instance, grepping for `free' in stdlib.h fails and
563 # AC_HEADER_STD_C fails. (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
564 NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
565 ;;
566
567 ## Suns
568 *-sun-solaris* \
569 | i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
570 | x86_64-*-solaris2* | x86_64-*-sunos5*)
571 case "${canonical}" in
572 i[3456]86-*-* ) ;;
573 amd64-*-*|x86_64-*-*) ;;
574 sparc* ) ;;
575 * ) unported=yes ;;
576 esac
577 case "${canonical}" in
578 *-sunos5.[1-9][0-9]* | *-solaris2.[1-9][0-9]* )
579 opsys=sol2-10
580 emacs_check_sunpro_c=yes
581 ;;
582 *-sunos5.6* | *-solaris2.6* )
583 opsys=sol2-6
584 RANLIB="ar -ts"
585 ;;
586 *-sunos5.[7-9]* | *-solaris2.[7-9]* )
587 opsys=sol2-6
588 emacs_check_sunpro_c=yes
589 ;;
590 esac
591 ## Watch out for a compiler that we know will not work.
592 case "${canonical}" in
593 *-solaris* | *-sunos5* )
594 if [ "x$CC" = x/usr/ucb/cc ]; then
595 ## /usr/ucb/cc doesn't work;
596 ## we should find some other compiler that does work.
597 unset CC
598 fi
599 ;;
600 *) ;;
601 esac
602 ;;
603
604 ## Intel 386 machines where we don't care about the manufacturer.
605 i[3456]86-*-* )
606 case "${canonical}" in
607 *-darwin* ) opsys=darwin ;;
608 *-mingw32 )
609 opsys=mingw32
610 # MinGW overrides and adds some system headers in nt/inc.
611 GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
612 ;;
613 *-sysv4.2uw* ) opsys=unixware ;;
614 *-sysv5uw* ) opsys=unixware ;;
615 *-sysv5OpenUNIX* ) opsys=unixware ;;
616 ## Otherwise, we'll fall through to the generic opsys code at the bottom.
617 esac
618 ;;
619
620 # MinGW64
621 x86_64-*-* )
622 case "${canonical}" in
623 *-mingw32 )
624 opsys=mingw32
625 # MinGW overrides and adds some system headers in nt/inc.
626 GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
627 ;;
628 ## Otherwise, we'll fall through to the generic opsys code at the bottom.
629 esac
630 ;;
631
632 * )
633 unported=yes
634 ;;
635 esac
636
637 ### If the code above didn't choose an operating system, just choose
638 ### an operating system based on the configuration name. You really
639 ### only want to use this when you have no idea what the right
640 ### operating system is; if you know what operating systems a machine
641 ### runs, it's cleaner to make it explicit in the case statement
642 ### above.
643 if test x"${opsys}" = x; then
644 case "${canonical}" in
645 *-gnu* ) opsys=gnu ;;
646 * )
647 unported=yes
648 ;;
649 esac
650 fi
651
652 ]
653 dnl quotation ends
654
655 if test $unported = yes; then
656 AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
657 If you think it should, please send a report to ${PACKAGE_BUGREPORT}.
658 Check `etc/MACHINES' for recognized configuration names.])
659 fi
660
661
662 AC_MSG_CHECKING([whether we are using GNU Make])
663 testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
664 if test "x$testval" != x; then
665 AC_MSG_RESULT([yes])
666 else
667 AC_MSG_RESULT([no])
668 AC_MSG_ERROR([Building Emacs requires GNU make.
669 If you have it installed under another name, configure with 'MAKE=...'.
670 For example, run './configure MAKE=gmake'.])
671 fi
672
673
674 #### Choose a compiler.
675
676 dnl Sets GCC=yes if using gcc.
677 AC_PROG_CC([gcc cc cl clang "$XCRUN gcc" "$XCRUN clang"])
678 if test -n "$XCRUN"; then
679 AC_CHECK_PROGS(AR, [ar "$XCRUN ar"])
680 test -n "$AR" && export AR
681 fi
682
683 AM_PROG_CC_C_O
684
685 if test x$GCC = xyes; then
686 test "x$GCC_TEST_OPTIONS" != x && CC="$CC $GCC_TEST_OPTIONS"
687 else
688 test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
689 fi
690
691 dnl This is used in lib/Makefile.am to use nt/gnulib.mk, the
692 dnl alternative to lib/gnulib.mk, so as to avoid generating header files
693 dnl that clash with MinGW.
694 AM_CONDITIONAL([BUILDING_FOR_WINDOWSNT], [test "x$opsys" = "xmingw32"])
695
696 # Avoid gnulib's tests for -lcrypto, so that there's no static dependency on it.
697 AC_DEFUN([gl_CRYPTO_CHECK])
698 # Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW,
699 # as we don't use them.
700 AC_DEFUN([gl_FCNTL_O_FLAGS])
701 # Avoid gnulib's threadlib module, as we do threads our own way.
702 AC_DEFUN([gl_THREADLIB])
703
704 # Initialize gnulib right after choosing the compiler.
705 dnl Amongst other things, this sets AR and ARFLAGS.
706 gl_EARLY
707
708 if test "$ac_test_CFLAGS" != set; then
709 # It's helpful to have C macros available to GDB, so prefer -g3 to -g
710 # if -g3 works and the user does not specify CFLAGS.
711 # This test must follow gl_EARLY; otherwise AC_LINK_IFELSE complains.
712 case $CFLAGS in
713 '-g')
714 emacs_g3_CFLAGS='-g3';;
715 '-g -O2')
716 emacs_g3_CFLAGS='-g3 -O2';;
717 *)
718 emacs_g3_CFLAGS='';;
719 esac
720 if test -n "$emacs_g3_CFLAGS"; then
721 emacs_save_CFLAGS=$CFLAGS
722 CFLAGS=$emacs_g3_CFLAGS
723 AC_CACHE_CHECK([whether $CC accepts $emacs_g3_CFLAGS],
724 [emacs_cv_prog_cc_g3],
725 [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
726 [emacs_cv_prog_cc_g3=yes],
727 [emacs_cv_prog_cc_g3=no])])
728 if test $emacs_cv_prog_cc_g3 != yes; then
729 CFLAGS=$emacs_save_CFLAGS
730 fi
731 if test $opsys = mingw32; then
732 CFLAGS="$CFLAGS -gdwarf-2"
733 fi
734 fi
735
736 case $CFLAGS in
737 *-O*) ;;
738 *)
739 # No optimization flag was inferred for this non-GCC compiler.
740 # Try -O. This is needed for xlc on AIX; see Bug#14258.
741 emacs_save_CFLAGS=$CFLAGS
742 test -z "$CFLAGS" || CFLAGS="$CFLAGS "
743 CFLAGS=${CFLAGS}-O
744 AC_CACHE_CHECK([whether $CC accepts -O],
745 [emacs_cv_prog_cc_o],
746 [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
747 [emacs_cv_prog_cc_o=yes],
748 [emacs_cv_prog_cc_o=no])])
749 if test $emacs_cv_prog_cc_o != yes; then
750 CFLAGS=$emacs_save_CFLAGS
751 fi ;;
752 esac
753 fi
754
755 AC_ARG_ENABLE([gcc-warnings],
756 [AS_HELP_STRING([--enable-gcc-warnings],
757 [turn on lots of GCC warnings/errors. This is intended for
758 developers, and may generate false alarms when used
759 with older or non-GNU development tools.])],
760 [case $enableval in
761 yes|no) ;;
762 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
763 esac
764 gl_gcc_warnings=$enableval],
765 [gl_gcc_warnings=no]
766 )
767
768 AC_ARG_ENABLE(link-time-optimization,
769 [AS_HELP_STRING([--enable-link-time-optimization],
770 [build emacs with link-time optimization.
771 This is supported only for GCC since 4.5.0.])],
772 if test "${enableval}" != "no"; then
773 AC_MSG_CHECKING([whether link-time optimization is supported])
774 ac_lto_supported=no
775 if test x$GCC = xyes; then
776 CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
777 if test x$CPUS != x; then
778 LTO="-flto=$CPUS"
779 else
780 LTO="-flto"
781 fi
782 old_CFLAGS=$CFLAGS
783 CFLAGS="$CFLAGS $LTO"
784 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
785 [ac_lto_supported=yes], [ac_lto_supported=no])
786 CFLAGS="$old_CFLAGS"
787 fi
788 AC_MSG_RESULT([$ac_lto_supported])
789 if test "$ac_lto_supported" = "yes"; then
790 CFLAGS="$CFLAGS $LTO"
791 fi
792 fi)
793
794 # clang is unduly picky about some things.
795 AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
796 [AC_COMPILE_IFELSE(
797 [AC_LANG_PROGRAM([[
798 #ifndef __clang__
799 error "not clang";
800 #endif
801 ]])],
802 [emacs_cv_clang=yes],
803 [emacs_cv_clang=no])])
804
805 # When compiling with GCC, prefer -isystem to -I when including system
806 # include files, to avoid generating useless diagnostics for the files.
807 if test "$gl_gcc_warnings" != yes; then
808 isystem='-I'
809 if test "$emacs_cv_clang" = yes
810 then
811 # Turn off some warnings if supported.
812 gl_WARN_ADD([-Wno-switch])
813 gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
814 gl_WARN_ADD([-Wno-pointer-sign])
815 fi
816 else
817 isystem='-isystem '
818
819 # This, $nw, is the list of warnings we disable.
820 nw=
821
822 case $with_x_toolkit in
823 lucid | athena | motif)
824 # Old toolkits mishandle 'const'.
825 nw="$nw -Wwrite-strings"
826 ;;
827 *)
828 gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
829 ;;
830 esac
831 AC_SUBST([WERROR_CFLAGS])
832
833 nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
834 nw="$nw -Woverlength-strings" # Not a problem these days
835 nw="$nw -Wlogical-op" # any use of fwrite provokes this
836 nw="$nw -Wformat-nonliteral" # we do this a lot
837 nw="$nw -Wvla" # warnings in gettext.h
838 nw="$nw -Wnested-externs" # use of XARGMATCH/verify_function__
839 nw="$nw -Wswitch-default" # Too many warnings for now
840 nw="$nw -Winline" # OK to ignore 'inline'
841 nw="$nw -Wjump-misses-init" # We sometimes safely jump over init.
842 nw="$nw -Wstrict-overflow" # OK to optimize assuming that
843 # signed overflow has undefined behavior
844 nw="$nw -Wsync-nand" # irrelevant here, and provokes ObjC warning
845 nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
846 nw="$nw -Wbad-function-cast" # These casts are no worse than others.
847
848 # Emacs doesn't care about shadowing; see
849 # <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
850 nw="$nw -Wshadow"
851
852 # Emacs's use of alloca inhibits protecting the stack.
853 nw="$nw -Wstack-protector"
854
855 # The following line should be removable at some point.
856 nw="$nw -Wsuggest-attribute=pure"
857
858 # This part is merely for shortening the command line,
859 # since -Wno-FOO needs to be added below regardless.
860 nw="$nw -Wmissing-field-initializers"
861 nw="$nw -Wswitch"
862 nw="$nw -Wtype-limits"
863 nw="$nw -Wunused-parameter"
864
865 if test $emacs_cv_clang = yes; then
866 nw="$nw -Wcast-align"
867 fi
868
869 gl_MANYWARN_ALL_GCC([ws])
870 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
871 for w in $ws; do
872 gl_WARN_ADD([$w])
873 done
874 gl_WARN_ADD([-Wno-missing-field-initializers]) # We need this one
875 gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now
876 gl_WARN_ADD([-Wno-type-limits]) # Too many warnings for now
877 gl_WARN_ADD([-Wno-switch]) # Too many warnings for now
878 gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
879 gl_WARN_ADD([-Wno-format-nonliteral])
880
881 # In spite of excluding -Wlogical-op above, it is enabled, as of
882 # gcc 4.5.0 20090517.
883 gl_WARN_ADD([-Wno-logical-op])
884
885 # More things that clang is unduly picky about.
886 if test $emacs_cv_clang = yes; then
887 gl_WARN_ADD([-Wno-format-extra-args])
888 gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
889 gl_WARN_ADD([-Wno-unused-command-line-argument])
890 gl_WARN_ADD([-Wno-unused-value])
891 fi
892
893 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
894 AH_VERBATIM([FORTIFY_SOURCE],
895 [/* Enable compile-time and run-time bounds-checking, and some warnings,
896 without upsetting glibc 2.15+. */
897 #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
898 # define _FORTIFY_SOURCE 2
899 #endif
900 ])
901 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
902
903 # We use a slightly smaller set of warning options for lib/.
904 # Remove the following and save the result in GNULIB_WARN_CFLAGS.
905 nw=
906 nw="$nw -Wunused-macros"
907
908 gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
909 AC_SUBST([GNULIB_WARN_CFLAGS])
910 fi
911
912
913
914 dnl Some other nice autoconf tests.
915 dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
916 dnl AC_PROG_INSTALL
917 dnl AC_PROG_MKDIR_P
918 dnl if test "x$RANLIB" = x; then
919 dnl AC_PROG_RANLIB
920 dnl fi
921
922
923 dnl Sadly, AC_PROG_LN_S is too restrictive. It also tests whether links
924 dnl can be made to directories. This is not relevant for our usage, and
925 dnl excludes some cases that work fine for us. Eg MS Windows or files
926 dnl hosted on AFS, both examples where simple links work, but links to
927 dnl directories fail. We use a cut-down version instead.
928 dnl AC_PROG_LN_S
929
930 AC_MSG_CHECKING([whether ln -s works for files in the same directory])
931 rm -f conf$$ conf$$.file
932
933 LN_S_FILEONLY='cp -p'
934
935 dnl On MinGW, ensure we will call the MSYS /bin/ln.exe, not some
936 dnl random program in the current directory.
937 if (echo >conf$$.file) 2>/dev/null; then
938 if ln -s conf$$.file conf$$ 2>/dev/null; then
939 if test "$opsys" = "mingw32"; then
940 LN_S_FILEONLY='/bin/ln -s'
941 else
942 LN_S_FILEONLY='ln -s'
943 fi
944 elif ln conf$$.file conf$$ 2>/dev/null; then
945 if test "$opsys" = "mingw32"; then
946 LN_S_FILEONLY=/bin/ln
947 else
948 LN_S_FILEONLY=ln
949 fi
950 fi
951 fi
952
953 rm -f conf$$ conf$$.file
954
955 if test "$LN_S_FILEONLY" = "ln -s"; then
956 AC_MSG_RESULT([yes])
957 else
958 AC_MSG_RESULT([no, using $LN_S_FILEONLY])
959 fi
960
961 AC_SUBST(LN_S_FILEONLY)
962
963
964 dnl AC_PROG_LN_S sets LN_S to 'cp -pR' for MinGW, on the premise that 'ln'
965 dnl doesn't support links to directories, as in "ln file dir". But that
966 dnl use is non-portable, and OTOH MinGW wants to use hard links for Emacs
967 dnl executables at "make install" time.
968 dnl See http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00475.html
969 dnl for more details.
970 if test "$opsys" = "mingw32"; then
971 LN_S="/bin/ln"
972 fi
973
974 AC_PATH_PROG(INSTALL_INFO, install-info, :,
975 $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
976 dnl Don't use GZIP, which is used by gzip for additional parameters.
977 AC_PATH_PROG(GZIP_PROG, gzip)
978
979 test $with_compress_install != yes && test -n "$GZIP_PROG" && \
980 GZIP_PROG=" # $GZIP_PROG # (disabled by configure --without-compress-install)"
981
982 if test $opsys = gnu-linux; then
983 AC_PATH_PROG(PAXCTL, paxctl,,
984 [$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/sbin])
985 if test "X$PAXCTL" != X; then
986 AC_MSG_CHECKING([whether binaries have a PT_PAX_FLAGS header])
987 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
988 [if $PAXCTL -v conftest$EXEEXT >/dev/null 2>&1; then AC_MSG_RESULT(yes)
989 else AC_MSG_RESULT(no); PAXCTL=""; fi])
990 fi
991
992 if test "${SETFATTR+set}" != set; then
993 AC_CACHE_CHECK([for setfattr],
994 [emacs_cv_prog_setfattr],
995 [touch conftest.tmp
996 if (setfattr -n user.pax.flags conftest.tmp) >/dev/null 2>&1; then
997 emacs_cv_prog_setfattr=yes
998 else
999 emacs_cv_prog_setfattr=no
1000 fi])
1001 if test "$emacs_cv_prog_setfattr" = yes; then
1002 SETFATTR=setfattr
1003 else
1004 SETFATTR=
1005 fi
1006 rm -f conftest.tmp
1007 AC_SUBST([SETFATTR])
1008 fi
1009 fi
1010
1011 ## Need makeinfo >= 4.7 (?) to build the manuals.
1012 AC_PATH_PROG(MAKEINFO, makeinfo, no)
1013 dnl By this stage, configure has already checked for egrep and set EGREP,
1014 dnl or exited with an error if no egrep was found.
1015 if test "$MAKEINFO" != "no"; then
1016 case `
1017 $MAKEINFO --version 2> /dev/null |
1018 $EGREP 'texinfo[[^0-9]]*([[1-4]][[0-9]]+|[[5-9]]|4\.[[7-9]]|4\.[[1-6]][[0-9]]+)'
1019 ` in
1020 '') MAKEINFO=no;;
1021 esac
1022 fi
1023
1024 ## Makeinfo is unusual. For a released Emacs, the manuals are
1025 ## pre-built, and not deleted by the normal clean rules. makeinfo is
1026 ## therefore in the category of "special tools" not normally required, which
1027 ## configure does not have to check for (eg autoconf itself).
1028 ## In a repository checkout on the other hand, the manuals are not included.
1029 ## So makeinfo is a requirement to build from the repository, and configure
1030 ## should test for it as it does for any other build requirement.
1031 ## We use the presence of $srcdir/info/emacs to distinguish a release,
1032 ## with pre-built manuals, from a repository checkout.
1033 HAVE_MAKEINFO=yes
1034
1035 if test "$MAKEINFO" = "no"; then
1036 MAKEINFO=makeinfo
1037 if test "x${with_makeinfo}" = "xno"; then
1038 HAVE_MAKEINFO=no
1039 elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; then
1040 AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
1041 source tree does not seem to have pre-built manuals in the `info' directory.
1042 Either install a suitable version of makeinfo, or re-run configure
1043 with the `--without-makeinfo' option to build without the manuals.] )
1044 fi
1045 fi
1046 AC_SUBST(HAVE_MAKEINFO)
1047
1048 dnl Just so that there is only a single place we need to edit.
1049 INFO_EXT=.info
1050 INFO_OPTS=--no-split
1051 AC_SUBST(INFO_EXT)
1052 AC_SUBST(INFO_OPTS)
1053
1054 if test $opsys = mingw32; then
1055 DOCMISC_W32=efaq-w32
1056 else
1057 DOCMISC_W32=
1058 fi
1059 AC_SUBST(DOCMISC_W32)
1060
1061 dnl Add our options to ac_link now, after it is set up.
1062
1063 if test x$GCC = xyes; then
1064 test "x$GCC_LINK_TEST_OPTIONS" != x && \
1065 ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
1066 else
1067 test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
1068 ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
1069 fi
1070
1071 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
1072 dnl If we can link with the flag, it shouldn't do any harm anyhow.
1073 dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
1074 dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
1075 dnl if not built to support GNU ld.
1076
1077 dnl For a long time, -znocombreloc was added to LDFLAGS rather than
1078 dnl LD_SWITCH_SYSTEM_TEMACS. That is:
1079 dnl * inappropriate, as LDFLAGS is a user option but this is essential.
1080 dnl Eg "make LDFLAGS=... all" could run into problems,
1081 dnl http://bugs.debian.org/684788
1082 dnl * unnecessary, since temacs is the only thing that actually needs it.
1083 dnl Indeed this is where it was originally, prior to:
1084 dnl http://lists.gnu.org/archive/html/emacs-pretest-bug/2004-03/msg00170.html
1085 late_LDFLAGS="$LDFLAGS"
1086 if test x$GCC = xyes; then
1087 LDFLAGS_NOCOMBRELOC="-Wl,-znocombreloc"
1088 else
1089 LDFLAGS_NOCOMBRELOC="-znocombreloc"
1090 fi
1091
1092 LDFLAGS="$LDFLAGS $LDFLAGS_NOCOMBRELOC"
1093
1094 AC_MSG_CHECKING([for -znocombreloc])
1095 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
1096 [AC_MSG_RESULT(yes)],
1097 LDFLAGS_NOCOMBRELOC=
1098 [AC_MSG_RESULT(no)])
1099
1100 LDFLAGS="$late_LDFLAGS"
1101
1102 AC_CACHE_CHECK([whether addresses are sanitized],
1103 [emacs_cv_sanitize_address],
1104 [AC_COMPILE_IFELSE(
1105 [AC_LANG_PROGRAM(
1106 [[#ifndef __has_feature
1107 #define __has_feature(f) 0
1108 #endif
1109 #if defined __SANITIZE_ADDRESS__ || __has_feature (address_sanitizer)
1110 #else
1111 error "Addresses are not sanitized.";
1112 #endif
1113 ]])],
1114 [emacs_cv_sanitize_address=yes],
1115 [emacs_cv_sanitize_address=no])])
1116
1117 dnl The function dump-emacs will not be defined and temacs will do
1118 dnl (load "loadup") automatically unless told otherwise.
1119 test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
1120 case "$opsys" in
1121 your-opsys-here) CANNOT_DUMP=yes ;;
1122 esac
1123
1124 if test "$CANNOT_DUMP" = "yes"; then
1125 AC_DEFINE(CANNOT_DUMP, 1, [Define if Emacs cannot be dumped on your system.])
1126 elif test "$emacs_cv_sanitize_address" = yes; then
1127 AC_MSG_WARN([[Addresses are sanitized; suggest CANNOT_DUMP=yes]])
1128 fi
1129
1130 AC_SUBST(CANNOT_DUMP)
1131
1132
1133 UNEXEC_OBJ=unexelf.o
1134 case "$opsys" in
1135 # MSDOS uses unexcoff.o
1136 aix4-2)
1137 UNEXEC_OBJ=unexaix.o
1138 ;;
1139 cygwin)
1140 UNEXEC_OBJ=unexcw.o
1141 ;;
1142 darwin)
1143 UNEXEC_OBJ=unexmacosx.o
1144 ;;
1145 hpux10-20 | hpux11)
1146 UNEXEC_OBJ=unexhp9k800.o
1147 ;;
1148 mingw32)
1149 UNEXEC_OBJ=unexw32.o
1150 ;;
1151 sol2-10)
1152 # Use the Solaris dldump() function, called from unexsol.c, to dump
1153 # emacs, instead of the generic ELF dump code found in unexelf.c.
1154 # The resulting binary has a complete symbol table, and is better
1155 # for debugging and other observability tools (debuggers, pstack, etc).
1156 #
1157 # If you encounter a problem using dldump(), please consider sending
1158 # a message to the OpenSolaris tools-linking mailing list:
1159 # http://mail.opensolaris.org/mailman/listinfo/tools-linking
1160 #
1161 # It is likely that dldump() works with older Solaris too, but this has
1162 # not been tested, so for now this change is for Solaris 10 or newer.
1163 UNEXEC_OBJ=unexsol.o
1164 ;;
1165 esac
1166
1167 LD_SWITCH_SYSTEM=
1168 case "$opsys" in
1169 freebsd|dragonfly)
1170 ## Let `ld' find image libs and similar things in /usr/local/lib.
1171 ## The system compiler, GCC, has apparently been modified to not
1172 ## look there, contrary to what a stock GCC would do.
1173 ### It's not our place to do this. See bug#10313#17.
1174 ### LD_SWITCH_SYSTEM=-L/usr/local/lib
1175 :
1176 ;;
1177
1178 gnu-linux)
1179 ## cpp test was "ifdef __mips__", but presumably this is equivalent...
1180 case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
1181 ;;
1182
1183 netbsd)
1184 ### It's not our place to do this. See bug#10313#17.
1185 ### LD_SWITCH_SYSTEM="-Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib"
1186 :
1187 ;;
1188
1189 openbsd)
1190 ## Han Boetes <han@boetes.org> says this is necessary,
1191 ## otherwise Emacs dumps core on elf systems.
1192 LD_SWITCH_SYSTEM="-Z"
1193 ;;
1194 esac
1195 AC_SUBST(LD_SWITCH_SYSTEM)
1196
1197 ac_link="$ac_link $LD_SWITCH_SYSTEM"
1198
1199 ## This setting of LD_SWITCH_SYSTEM references LD_SWITCH_X_SITE_RPATH,
1200 ## which has not been defined yet. When this was handled with cpp,
1201 ## it was expanded to null when configure sourced the s/*.h file.
1202 ## Thus LD_SWITCH_SYSTEM had different values in configure and the Makefiles.
1203 ## FIXME it would be cleaner to put this in LD_SWITCH_SYSTEM_TEMACS
1204 ## (or somesuch), but because it is supposed to go at the _front_
1205 ## of LD_SWITCH_SYSTEM, we cannot do that in exactly the same way.
1206 ## Compare with the gnu-linux case below, which added to the end
1207 ## of LD_SWITCH_SYSTEM, and so can instead go at the front of
1208 ## LD_SWITCH_SYSTEM_TEMACS.
1209 case "$opsys" in
1210 netbsd|openbsd)
1211 LD_SWITCH_SYSTEM="\$(LD_SWITCH_X_SITE_RPATH) $LD_SWITCH_SYSTEM" ;;
1212 esac
1213
1214
1215 C_SWITCH_MACHINE=
1216 case $canonical in
1217 alpha*)
1218 AC_CHECK_DECL([__ELF__])
1219 if test "$ac_cv_have_decl___ELF__" = "yes"; then
1220 ## With ELF, make sure that all common symbols get allocated to in the
1221 ## data section. Otherwise, the dump of temacs may miss variables in
1222 ## the shared library that have been initialized. For example, with
1223 ## GNU libc, __malloc_initialized would normally be resolved to the
1224 ## shared library's .bss section, which is fatal.
1225 if test "x$GCC" = "xyes"; then
1226 C_SWITCH_MACHINE="-fno-common"
1227 else
1228 AC_MSG_ERROR([Non-GCC compilers are not supported.])
1229 fi
1230 else
1231 dnl This was the unexalpha.c case. Removed in 24.1, 2010-07-24,
1232 dnl albeit under the mistaken assumption that said file
1233 dnl was no longer used.
1234 AC_MSG_ERROR([Non-ELF systems are not supported since Emacs 24.1.])
1235 fi
1236 ;;
1237 esac
1238 AC_SUBST(C_SWITCH_MACHINE)
1239
1240 AC_SUBST(UNEXEC_OBJ)
1241
1242 C_SWITCH_SYSTEM=
1243 ## Some programs in src produce warnings saying certain subprograms
1244 ## are too complex and need a MAXMEM value greater than 2000 for
1245 ## additional optimization. --nils@exp-math.uni-essen.de
1246 test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
1247 C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
1248 if test "$opsys" = "mingw32"; then
1249 case "$canonical" in
1250 x86_64-*-mingw32) C_SWITCH_SYSTEM="-mtune=generic" ;;
1251 *) C_SWITCH_SYSTEM="-mtune=pentium4" ;;
1252 esac
1253 fi
1254 ## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
1255 ## It is redundant in glibc2, since we define _GNU_SOURCE.
1256 AC_SUBST(C_SWITCH_SYSTEM)
1257
1258
1259 LIBS_SYSTEM=
1260 case "$opsys" in
1261 ## IBM's X11R5 uses -lIM and -liconv in AIX 3.2.2.
1262 aix4-2) LIBS_SYSTEM="-lrts -lIM -liconv" ;;
1263
1264 freebsd|dragonfly) LIBS_SYSTEM="-lutil" ;;
1265
1266 hpux*) LIBS_SYSTEM="-l:libdld.sl" ;;
1267
1268 sol2*) LIBS_SYSTEM="-lsocket -lnsl" ;;
1269
1270 ## Motif needs -lgen.
1271 unixware) LIBS_SYSTEM="-lsocket -lnsl -lelf -lgen" ;;
1272 esac
1273
1274 AC_SUBST(LIBS_SYSTEM)
1275
1276 ### Make sure subsequent tests use flags consistent with the build flags.
1277
1278 if test x"${OVERRIDE_CPPFLAGS}" != x; then
1279 CPPFLAGS="${OVERRIDE_CPPFLAGS}"
1280 else
1281 CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
1282 fi
1283
1284 # Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
1285 AC_DEFUN([AC_TYPE_SIZE_T])
1286 # Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
1287 AC_DEFUN([AC_TYPE_UID_T])
1288
1289 # sqrt and other floating-point functions such as fmod and frexp
1290 # are found in -lm on many systems.
1291 OLD_LIBS=$LIBS
1292 AC_SEARCH_LIBS([sqrt], [m])
1293 if test "X$LIBS" = "X$OLD_LIBS"; then
1294 LIB_MATH=
1295 else
1296 LIB_MATH=$ac_cv_search_sqrt
1297 fi
1298 LIBS=$OLD_LIBS
1299
1300 dnl Current possibilities handled by sed (aix4-2 -> aix,
1301 dnl gnu-linux -> gnu/linux, etc.):
1302 dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
1303 dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
1304 SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
1305
1306 case $opsys in
1307 cygwin )
1308 LIB_MATH=
1309 ;;
1310 darwin )
1311 ## Adding -lm confuses the dynamic linker, so omit it.
1312 LIB_MATH=
1313 ;;
1314 freebsd | dragonfly )
1315 SYSTEM_TYPE=berkeley-unix
1316 ;;
1317 gnu-linux | gnu-kfreebsd )
1318 ;;
1319 hpux10-20 | hpux11 )
1320 ;;
1321 mingw32 )
1322 LIB_MATH=
1323 SYSTEM_TYPE=windows-nt
1324 ;;
1325 dnl NB this may be adjusted below.
1326 netbsd | openbsd )
1327 SYSTEM_TYPE=berkeley-unix
1328 ;;
1329
1330 sol2* | unixware )
1331 SYSTEM_TYPE=usg-unix-v
1332 ;;
1333
1334 esac
1335
1336 AC_SUBST(LIB_MATH)
1337 AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
1338 [The type of system you are compiling for; sets `system-type'.])
1339
1340
1341 pre_PKG_CONFIG_CFLAGS=$CFLAGS
1342 pre_PKG_CONFIG_LIBS=$LIBS
1343
1344 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1345
1346 dnl This function definition taken from Gnome 2.0
1347 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1348 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1349 dnl also defines GSTUFF_PKG_ERRORS on error
1350 AC_DEFUN([PKG_CHECK_MODULES], [
1351 succeeded=no
1352
1353 if test "$PKG_CONFIG" = "no" ; then
1354 ifelse([$4], , [AC_MSG_ERROR([
1355 *** The pkg-config script could not be found. Make sure it is in your path, or give the full name of pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config.])], [$4])
1356 else
1357 PKG_CONFIG_MIN_VERSION=0.9.0
1358 if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1359 AC_MSG_CHECKING(for $2)
1360
1361 if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
1362 $1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
1363 $1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
1364 edit_cflags="
1365 s,///*,/,g
1366 s/^/ /
1367 s/ -I/ $isystem/g
1368 s/^ //
1369 "
1370 $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
1371 $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
1372 AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
1373 succeeded=yes
1374 else
1375 AC_MSG_RESULT(no)
1376 $1_CFLAGS=""
1377 $1_LIBS=""
1378 ## If we have a custom action on failure, don't print errors, but
1379 ## do set a variable so people can do so. Do it in a subshell
1380 ## to capture any diagnostics in invoking pkg-config.
1381 $1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
1382 ifelse([$4], ,echo "$$1_PKG_ERRORS",)
1383 fi
1384
1385 AC_SUBST($1_CFLAGS)
1386 AC_SUBST($1_LIBS)
1387 else
1388 echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1389 echo "*** See http://www.freedesktop.org/software/pkgconfig"
1390 fi
1391 fi
1392
1393 if test $succeeded = yes; then
1394 ifelse([$3], , :, [$3])
1395 else
1396 ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
1397 fi
1398 ])
1399
1400 HAVE_SOUND=no
1401 if test "${with_sound}" != "no"; then
1402 # Sound support for GNU/Linux, the free BSDs, and MinGW.
1403 AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h],
1404 have_sound_header=yes, [], [
1405 #ifdef __MINGW32__
1406 #define WIN32_LEAN_AND_MEAN
1407 #include <windows.h>
1408 #endif
1409 ])
1410 test "${with_sound}" = "oss" && test "${have_sound_header}" != "yes" && \
1411 AC_MSG_ERROR([OSS sound support requested but not found.])
1412
1413 if test "${with_sound}" = "bsd-ossaudio" || test "${with_sound}" = "yes"; then
1414 # Emulation library used on NetBSD.
1415 AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
1416 test "${with_sound}" = "bsd-ossaudio" && test -z "$LIBSOUND" && \
1417 AC_MSG_ERROR([bsd-ossaudio sound support requested but not found.])
1418 dnl FIXME? If we did find ossaudio, should we set with_sound=bsd-ossaudio?
1419 dnl Traditionally, we go on to check for alsa too. Does that make sense?
1420 fi
1421 AC_SUBST(LIBSOUND)
1422
1423 if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
1424 ALSA_REQUIRED=1.0.0
1425 ALSA_MODULES="alsa >= $ALSA_REQUIRED"
1426 PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
1427 if test $HAVE_ALSA = yes; then
1428 SAVE_CFLAGS="$CFLAGS"
1429 SAVE_LIBS="$LIBS"
1430 CFLAGS="$ALSA_CFLAGS $CFLAGS"
1431 LIBS="$ALSA_LIBS $LIBS"
1432 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
1433 emacs_alsa_normal=yes,
1434 emacs_alsa_normal=no)
1435 if test "$emacs_alsa_normal" != yes; then
1436 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
1437 [[snd_lib_error_set_handler (0);]])],
1438 emacs_alsa_subdir=yes,
1439 emacs_alsa_subdir=no)
1440 if test "$emacs_alsa_subdir" != yes; then
1441 AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
1442 fi
1443 ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
1444 fi
1445
1446 CFLAGS="$SAVE_CFLAGS"
1447 LIBS="$SAVE_LIBS"
1448 LIBSOUND="$LIBSOUND $ALSA_LIBS"
1449 CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
1450 AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
1451 elif test "${with_sound}" = "alsa"; then
1452 AC_MSG_ERROR([ALSA sound support requested but not found.])
1453 fi
1454 fi dnl with_sound = alsa|yes
1455
1456 dnl Define HAVE_SOUND if we have sound support. We know it works and
1457 dnl compiles only on the specified platforms. For others, it
1458 dnl probably doesn't make sense to try.
1459 dnl FIXME So surely we should bypass this whole section if not using
1460 dnl one of these platforms?
1461 if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
1462 case "$opsys" in
1463 dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
1464 dnl Adjust the --with-sound help text if you change this.
1465 gnu-linux|freebsd|netbsd|mingw32)
1466 AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
1467 HAVE_SOUND=yes
1468 ;;
1469 esac
1470 fi
1471
1472 AC_SUBST(CFLAGS_SOUND)
1473 fi
1474
1475 dnl checks for header files
1476 AC_CHECK_HEADERS_ONCE(
1477 sys/systeminfo.h
1478 coff.h pty.h
1479 sys/resource.h
1480 sys/utsname.h pwd.h utmp.h util.h)
1481
1482 AC_MSG_CHECKING(if personality LINUX32 can be set)
1483 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/personality.h>]], [[personality (PER_LINUX32)]])],
1484 emacs_cv_personality_linux32=yes,
1485 emacs_cv_personality_linux32=no)
1486 AC_MSG_RESULT($emacs_cv_personality_linux32)
1487
1488 if test $emacs_cv_personality_linux32 = yes; then
1489 AC_DEFINE(HAVE_PERSONALITY_LINUX32, 1,
1490 [Define to 1 if personality LINUX32 can be set.])
1491 fi
1492
1493 dnl On Solaris 8 there's a compilation warning for term.h because
1494 dnl it doesn't define `bool'.
1495 AC_CHECK_HEADERS(term.h, , , -)
1496 AC_HEADER_TIME
1497 AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
1498 ]])
1499 if test $ac_cv_have_decl_sys_siglist != yes; then
1500 # For Tru64, at least:
1501 AC_CHECK_DECLS([__sys_siglist], [], [], [[#include <signal.h>
1502 ]])
1503 fi
1504 AC_HEADER_SYS_WAIT
1505
1506 AC_CHECK_HEADERS_ONCE(sys/socket.h)
1507 AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
1508 #if HAVE_SYS_SOCKET_H
1509 #include <sys/socket.h>
1510 #endif])
1511 AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
1512 #if HAVE_SYS_SOCKET_H
1513 #include <sys/socket.h>
1514 #endif])
1515 AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1516 #if HAVE_SYS_SOCKET_H
1517 #include <sys/socket.h>
1518 #endif])
1519
1520 dnl checks for structure members
1521 AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1522 struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1523 struct ifreq.ifr_addr,
1524 struct ifreq.ifr_addr.sa_len], , ,
1525 [AC_INCLUDES_DEFAULT
1526 #if HAVE_SYS_SOCKET_H
1527 #include <sys/socket.h>
1528 #endif
1529 #if HAVE_NET_IF_H
1530 #include <net/if.h>
1531 #endif])
1532
1533 dnl Check for endianness.
1534 dnl AC_C_BIGENDIAN is done by gnulib.
1535
1536 dnl check for Make feature
1537 dnl AC_PROG_MAKE_SET is done by Automake.
1538
1539 DEPFLAGS=
1540 MKDEPDIR=":"
1541 deps_frag=deps.mk
1542 dnl check if we have GCC and autodepend is on.
1543 if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
1544 AC_MSG_CHECKING([whether gcc understands -MMD -MF])
1545 SAVE_CFLAGS="$CFLAGS"
1546 CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
1547 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
1548 CFLAGS="$SAVE_CFLAGS"
1549 test -f deps.d || ac_enable_autodepend=no
1550 rm -rf deps.d
1551 AC_MSG_RESULT([$ac_enable_autodepend])
1552 if test $ac_enable_autodepend = yes; then
1553 DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
1554 ## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
1555 MKDEPDIR='${MKDIR_P} ${DEPDIR}'
1556 deps_frag=autodeps.mk
1557 fi
1558 fi
1559 deps_frag=$srcdir/src/$deps_frag
1560 AC_SUBST(MKDEPDIR)
1561 AC_SUBST(DEPFLAGS)
1562 AC_SUBST_FILE(deps_frag)
1563
1564
1565 lisp_frag=$srcdir/src/lisp.mk
1566 AC_SUBST_FILE(lisp_frag)
1567
1568
1569 dnl checks for operating system services
1570 AC_SYS_LONG_FILE_NAMES
1571
1572 #### Choose a window system.
1573
1574 ## We leave window_system equal to none if
1575 ## we end up building without one. Any new window system should
1576 ## set window_system to an appropriate value and add objects to
1577 ## window-system-specific substs.
1578
1579 window_system=none
1580 AC_PATH_X
1581 if test "$no_x" != yes; then
1582 window_system=x11
1583 fi
1584
1585 LD_SWITCH_X_SITE_RPATH=
1586 if test "${x_libraries}" != NONE; then
1587 if test -n "${x_libraries}"; then
1588 LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"`
1589 LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"`
1590 fi
1591 x_default_search_path=""
1592 x_search_path=${x_libraries}
1593 if test -z "${x_search_path}"; then
1594 x_search_path=/usr/lib
1595 fi
1596 for x_library in `echo ${x_search_path}: | \
1597 sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do
1598 x_search_path="\
1599 ${x_library}/X11/%L/%T/%N%C%S:\
1600 ${x_library}/X11/%l/%T/%N%C%S:\
1601 ${x_library}/X11/%T/%N%C%S:\
1602 ${x_library}/X11/%L/%T/%N%S:\
1603 ${x_library}/X11/%l/%T/%N%S:\
1604 ${x_library}/X11/%T/%N%S"
1605 if test x"${x_default_search_path}" = x; then
1606 x_default_search_path=${x_search_path}
1607 else
1608 x_default_search_path="${x_search_path}:${x_default_search_path}"
1609 fi
1610 done
1611 fi
1612 AC_SUBST(LD_SWITCH_X_SITE_RPATH)
1613
1614 if test "${x_includes}" != NONE && test -n "${x_includes}"; then
1615 C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"`
1616 fi
1617
1618 if test x"${x_includes}" = x; then
1619 bitmapdir=/usr/include/X11/bitmaps
1620 else
1621 # accumulate include directories that have X11 bitmap subdirectories
1622 bmd_acc="dummyval"
1623 for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do
1624 if test -d "${bmd}/X11/bitmaps"; then
1625 bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps"
1626 fi
1627 if test -d "${bmd}/bitmaps"; then
1628 bmd_acc="${bmd_acc}:${bmd}/bitmaps"
1629 fi
1630 done
1631 if test ${bmd_acc} != "dummyval"; then
1632 bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"`
1633 fi
1634 fi
1635
1636 HAVE_NS=no
1637 NS_IMPL_COCOA=no
1638 NS_IMPL_GNUSTEP=no
1639 tmp_CPPFLAGS="$CPPFLAGS"
1640 tmp_CFLAGS="$CFLAGS"
1641 CPPFLAGS="$CPPFLAGS -x objective-c"
1642 CFLAGS="$CFLAGS -x objective-c"
1643 GNU_OBJC_CFLAGS=
1644 LIBS_GNUSTEP=
1645 if test "${with_ns}" != no; then
1646 if test "${opsys}" = darwin; then
1647 NS_IMPL_COCOA=yes
1648 ns_appdir=`pwd`/nextstep/Emacs.app
1649 ns_appbindir=${ns_appdir}/Contents/MacOS
1650 ns_appresdir=${ns_appdir}/Contents/Resources
1651 ns_appsrc=Cocoa/Emacs.base
1652 elif test -f $GNUSTEP_CONFIG_FILE; then
1653 NS_IMPL_GNUSTEP=yes
1654 ns_appdir=`pwd`/nextstep/Emacs.app
1655 ns_appbindir=${ns_appdir}
1656 ns_appresdir=${ns_appdir}/Resources
1657 ns_appsrc=GNUstep/Emacs.base
1658 dnl FIXME sourcing this several times in subshells seems inefficient.
1659 GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
1660 GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
1661 dnl I seemed to need these as well with GNUstep-startup 0.25.
1662 GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)"
1663 GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)"
1664 test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \
1665 GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}"
1666 test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \
1667 GNUSTEP_LOCAL_LIBRARIES="-L${GNUSTEP_LOCAL_LIBRARIES}"
1668 CPPFLAGS="$CPPFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1669 CFLAGS="$CFLAGS -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
1670 LDFLAGS="$LDFLAGS -L${GNUSTEP_SYSTEM_LIBRARIES} ${GNUSTEP_LOCAL_LIBRARIES}"
1671 LIBS_GNUSTEP="-lgnustep-gui -lgnustep-base -lobjc -lpthread"
1672 dnl GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS to 0 or 1.
1673 dnl If they had chosen to either define it or not, we could have
1674 dnl just used AC_CHECK_DECL here.
1675 AC_CACHE_CHECK(if GNUstep defines BASE_NATIVE_OBJC_EXCEPTIONS,
1676 emacs_cv_objc_exceptions,
1677 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <GNUstepBase/GSConfig.h>]],
1678 [[#if defined BASE_NATIVE_OBJC_EXCEPTIONS && BASE_NATIVE_OBJC_EXCEPTIONS > 0
1679 1;
1680 #else
1681 fail;
1682 #endif]])], emacs_cv_objc_exceptions=yes, emacs_cv_objc_exceptions=no ) )
1683 if test $emacs_cv_objc_exceptions = yes; then
1684 dnl _NATIVE_OBJC_EXCEPTIONS is used by the GNUstep headers.
1685 AC_DEFINE(_NATIVE_OBJC_EXCEPTIONS, 1,
1686 [Define if GNUstep uses ObjC exceptions.])
1687 GNU_OBJC_CFLAGS="-fobjc-exceptions"
1688 fi
1689 fi
1690
1691 dnl This is only used while we test the NS headers, it gets reset below.
1692 CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
1693
1694 AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
1695 [AC_MSG_ERROR([`--with-ns' was specified, but the include
1696 files are missing or cannot be compiled.])])
1697
1698 macfont_file=""
1699 if test "${NS_IMPL_COCOA}" = "yes"; then
1700 AC_MSG_CHECKING([for OSX 10.4 or newer])
1701 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
1702 [
1703 #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
1704 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1040
1705 ; /* OK */
1706 #else
1707 error "OSX 10.4 or newer required";
1708 #endif
1709 #endif
1710 ])],
1711 ns_osx_have_104=yes,
1712 ns_osx_have_104=no)
1713 AC_MSG_RESULT([$ns_osx_have_104])
1714
1715 if test $ns_osx_have_104 = no; then
1716 AC_MSG_ERROR([`OSX 10.4 or newer is required']);
1717 fi
1718 AC_MSG_CHECKING([for OSX 10.5 or newer])
1719 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <AppKit/AppKit.h>],
1720 [
1721 #ifdef MAC_OS_X_VERSION_MAX_ALLOWED
1722 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
1723 ; /* OK */
1724 #else
1725 error "OSX 10.5 not found";
1726 #endif
1727 #endif
1728 ])],
1729 ns_osx_have_105=yes,
1730 ns_osx_have_105=no)
1731 AC_MSG_RESULT([$ns_osx_have_105])
1732 if test $ns_osx_have_105 = yes; then
1733 macfont_file="macfont.o"
1734 fi
1735 fi
1736 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <Foundation/NSObjCRuntime.h>],
1737 [NSInteger i;])],
1738 ns_have_nsinteger=yes,
1739 ns_have_nsinteger=no)
1740 if test $ns_have_nsinteger = yes; then
1741 AC_DEFINE(NS_HAVE_NSINTEGER, 1, [Define to 1 if `NSInteger' is defined.])
1742 fi
1743 fi
1744
1745 AC_SUBST(LIBS_GNUSTEP)
1746
1747 INSTALL_ARCH_INDEP_EXTRA=install-etc
1748 ns_self_contained=no
1749 NS_OBJ=
1750 NS_OBJC_OBJ=
1751 if test "${HAVE_NS}" = yes; then
1752 if test "$with_toolkit_scroll_bars" = "no"; then
1753 AC_MSG_ERROR([Non-toolkit scroll bars are not implemented for Nextstep.])
1754 fi
1755
1756 window_system=nextstep
1757 # set up packaging dirs
1758 if test "${EN_NS_SELF_CONTAINED}" = yes; then
1759 ns_self_contained=yes
1760 prefix=${ns_appresdir}
1761 exec_prefix=${ns_appbindir}
1762 dnl This one isn't really used, only archlibdir is.
1763 libexecdir="\${ns_appbindir}/libexec"
1764 archlibdir="\${ns_appbindir}/libexec"
1765 etcdocdir="\${ns_appresdir}/etc"
1766 etcdir="\${ns_appresdir}/etc"
1767 dnl FIXME maybe set datarootdir instead.
1768 dnl That would also get applications, icons, man.
1769 infodir="\${ns_appresdir}/info"
1770 mandir="\${ns_appresdir}/man"
1771 lispdir="\${ns_appresdir}/lisp"
1772 INSTALL_ARCH_INDEP_EXTRA=
1773 fi
1774
1775 NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o $macfont_file"
1776 fi
1777 CFLAGS="$tmp_CFLAGS"
1778 CPPFLAGS="$tmp_CPPFLAGS"
1779 AC_SUBST(INSTALL_ARCH_INDEP_EXTRA)
1780 AC_SUBST(ns_self_contained)
1781 AC_SUBST(NS_OBJ)
1782 AC_SUBST(NS_OBJC_OBJ)
1783
1784 HAVE_W32=no
1785 W32_OBJ=
1786 W32_LIBS=
1787 EMACSRES=
1788 CLIENTRES=
1789 CLIENTW=
1790 W32_RES_LINK=
1791 EMACS_MANIFEST=
1792 UPDATE_MANIFEST=
1793 if test "${with_w32}" != no; then
1794 case "${opsys}" in
1795 cygwin)
1796 AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
1797 [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
1798 cannot be found.])])
1799 ;;
1800 mingw32)
1801 ## Using --with-w32 with MinGW is a no-op, but we allow it.
1802 ;;
1803 *)
1804 AC_MSG_ERROR([Using w32 with an autotools build is only supported for Cygwin and MinGW32.])
1805 ;;
1806 esac
1807 fi
1808
1809 if test "${opsys}" = "mingw32"; then
1810 AC_MSG_CHECKING([whether Windows API headers are recent enough])
1811 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1812 #include <windows.h>
1813 #include <usp10.h>]],
1814 [[PIMAGE_NT_HEADERS pHeader;
1815 PIMAGE_SECTION_HEADER pSection = IMAGE_FIRST_SECTION(pHeader)]])],
1816 [emacs_cv_w32api=yes
1817 HAVE_W32=yes],
1818 emacs_cv_w32api=no)
1819 AC_MSG_RESULT($emacs_cv_w32api)
1820 if test "${emacs_cv_w32api}" = "no"; then
1821 AC_MSG_ERROR([the Windows API headers are too old to support this build.])
1822 fi
1823 fi
1824
1825 FIRSTFILE_OBJ=
1826 NTDIR=
1827 LIBS_ECLIENT=
1828 LIB_WSOCK32=
1829 NTLIB=
1830 CM_OBJ="cm.o"
1831 XARGS_LIMIT=
1832 if test "${HAVE_W32}" = "yes"; then
1833 AC_DEFINE(HAVE_NTGUI, 1, [Define to use native MS Windows GUI.])
1834 AC_CHECK_TOOL(WINDRES, [windres],
1835 [AC_MSG_ERROR([No resource compiler found.])])
1836 W32_OBJ="w32fns.o w32menu.o w32reg.o w32font.o w32term.o"
1837 W32_OBJ="$W32_OBJ w32xfns.o w32select.o w32uniscribe.o"
1838 EMACSRES="emacs.res"
1839 case "$canonical" in
1840 x86_64-*-*) EMACS_MANIFEST="emacs-x64.manifest" ;;
1841 *) EMACS_MANIFEST="emacs-x86.manifest" ;;
1842 esac
1843 if test "${opsys}" = "cygwin"; then
1844 W32_LIBS="$W32_LIBS -lkernel32 -luser32 -lgdi32 -lole32 -lcomdlg32"
1845 W32_LIBS="$W32_LIBS -lusp10 -lcomctl32 -lwinspool"
1846 # Tell the linker that emacs.res is an object (which we compile from
1847 # the rc file), not a linker script.
1848 W32_RES_LINK="-Wl,emacs.res"
1849 else
1850 UPDATE_MANIFEST=update-game-score.exe.manifest
1851 W32_OBJ="$W32_OBJ w32.o w32console.o w32heap.o w32inevt.o w32proc.o"
1852 W32_LIBS="$W32_LIBS -lwinmm -lgdi32 -lcomdlg32"
1853 W32_LIBS="$W32_LIBS -lmpr -lwinspool -lole32 -lcomctl32 -lusp10"
1854 W32_RES_LINK="\$(EMACSRES)"
1855 CLIENTRES="emacsclient.res"
1856 CLIENTW="emacsclientw\$(EXEEXT)"
1857 FIRSTFILE_OBJ=firstfile.o
1858 NTDIR=nt
1859 CM_OBJ=
1860 LIBS_ECLIENT="-lcomctl32"
1861 LIB_WSOCK32="-lwsock32"
1862 NTLIB="ntlib.$ac_objext"
1863 XARGS_LIMIT="-s 10000"
1864 fi
1865 fi
1866 AC_SUBST(W32_OBJ)
1867 AC_SUBST(W32_LIBS)
1868 AC_SUBST(EMACSRES)
1869 AC_SUBST(EMACS_MANIFEST)
1870 AC_SUBST(UPDATE_MANIFEST)
1871 AC_SUBST(CLIENTRES)
1872 AC_SUBST(CLIENTW)
1873 AC_SUBST(W32_RES_LINK)
1874 AC_SUBST(FIRSTFILE_OBJ)
1875 AC_SUBST(NTDIR)
1876 AC_SUBST(CM_OBJ)
1877 AC_SUBST(LIBS_ECLIENT)
1878 AC_SUBST(LIB_WSOCK32)
1879 AC_SUBST(NTLIB)
1880 AC_SUBST(XARGS_LIMIT)
1881
1882 if test "${HAVE_W32}" = "yes"; then
1883 window_system=w32
1884 with_xft=no
1885 fi
1886
1887 ## $window_system is now set to the window system we will
1888 ## ultimately use.
1889
1890 if test "$window_system" = none && test "$gl_gcc_warnings" = yes; then
1891 # Too many warnings for now.
1892 nw=
1893 nw="$nw -Wsuggest-attribute=const"
1894 nw="$nw -Wsuggest-attribute=noreturn"
1895 gl_MANYWARN_COMPLEMENT([WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
1896
1897 gl_WARN_ADD([-Wno-unused-variable])
1898 gl_WARN_ADD([-Wno-unused-but-set-variable])
1899 gl_WARN_ADD([-Wno-unused-but-set-parameter])
1900 fi
1901
1902 term_header=
1903 HAVE_X_WINDOWS=no
1904 HAVE_X11=no
1905 USE_X_TOOLKIT=none
1906
1907 case "${window_system}" in
1908 x11 )
1909 HAVE_X_WINDOWS=yes
1910 HAVE_X11=yes
1911 term_header=xterm.h
1912 case "${with_x_toolkit}" in
1913 athena | lucid ) USE_X_TOOLKIT=LUCID ;;
1914 motif ) USE_X_TOOLKIT=MOTIF ;;
1915 gtk ) with_gtk=yes
1916 term_header=gtkutil.h
1917 dnl Don't set this for GTK. A lot of tests below assumes Xt when
1918 dnl USE_X_TOOLKIT is set.
1919 USE_X_TOOLKIT=none ;;
1920 gtk2 ) with_gtk2=yes
1921 term_header=gtkutil.h
1922 USE_X_TOOLKIT=none ;;
1923 gtk3 ) with_gtk3=yes
1924 term_header=gtkutil.h
1925 USE_X_TOOLKIT=none ;;
1926 no ) USE_X_TOOLKIT=none ;;
1927 dnl If user did not say whether to use a toolkit, make this decision later:
1928 dnl use the toolkit if we have gtk, or X11R5 or newer.
1929 * ) USE_X_TOOLKIT=maybe ;;
1930 esac
1931 ;;
1932 nextstep )
1933 term_header=nsterm.h
1934 ;;
1935 w32 )
1936 term_header=w32term.h
1937 ;;
1938 esac
1939
1940 if test "$window_system" = none && test "X$with_x" != "Xno"; then
1941 AC_CHECK_PROG(HAVE_XSERVER, X, true, false)
1942 if test "$HAVE_XSERVER" = true ||
1943 test -n "$DISPLAY" ||
1944 test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then
1945 AC_MSG_ERROR([You seem to be running X, but no X development libraries
1946 were found. You should install the relevant development files for X
1947 and for the toolkit you want, such as Gtk+ or Motif. Also make
1948 sure you have development files for image handling, i.e.
1949 tiff, gif, jpeg, png and xpm.
1950 If you are sure you want Emacs compiled without X window support, pass
1951 --without-x
1952 to configure.])
1953 fi
1954 fi
1955
1956 # Does the opsystem file prohibit the use of the GNU malloc?
1957 # Assume not, until told otherwise.
1958 GNU_MALLOC=yes
1959
1960 AC_CACHE_CHECK(
1961 [whether malloc is Doug Lea style],
1962 [emacs_cv_var_doug_lea_malloc],
1963 [emacs_cv_var_doug_lea_malloc=no
1964 dnl Hooks do not work with address sanitization.
1965 if test "$emacs_cv_sanitize_address" != yes; then
1966 AC_LINK_IFELSE(
1967 [AC_LANG_PROGRAM(
1968 [[#include <malloc.h>
1969 static void hook (void) {}]],
1970 [[malloc_set_state (malloc_get_state ());
1971 __after_morecore_hook = hook;
1972 __malloc_initialize_hook = hook;]])],
1973 [emacs_cv_var_doug_lea_malloc=yes])])
1974 fi
1975 doug_lea_malloc=$emacs_cv_var_doug_lea_malloc
1976
1977 system_malloc=$emacs_cv_sanitize_address
1978 case "$opsys" in
1979 ## darwin ld insists on the use of malloc routines in the System framework.
1980 darwin|sol2-10) system_malloc=yes ;;
1981 esac
1982
1983 GMALLOC_OBJ=
1984 if test "${system_malloc}" = "yes"; then
1985 AC_DEFINE([SYSTEM_MALLOC], 1,
1986 [Define to 1 to use the system memory allocator, even if it is not
1987 Doug Lea style.])
1988 GNU_MALLOC=no
1989 GNU_MALLOC_reason="
1990 (The GNU allocators don't work with this system configuration.)"
1991 VMLIMIT_OBJ=
1992 else
1993 test "$doug_lea_malloc" != "yes" && GMALLOC_OBJ=gmalloc.o
1994 VMLIMIT_OBJ=vm-limit.o
1995
1996 AC_CHECK_HEADERS([sys/vlimit.h])
1997 AC_CACHE_CHECK([for data_start], [emacs_cv_data_start],
1998 [AC_LINK_IFELSE(
1999 [AC_LANG_PROGRAM(
2000 [[extern char data_start[]; char ch;]],
2001 [[return data_start < &ch;]])],
2002 [emacs_cv_data_start=yes],
2003 [emacs_cv_data_start=no])])
2004 if test $emacs_cv_data_start = yes; then
2005 AC_DEFINE([HAVE_DATA_START], 1,
2006 [Define to 1 if data_start is the address of the start
2007 of the main data segment.])
2008 fi
2009 fi
2010 AC_SUBST(GMALLOC_OBJ)
2011 AC_SUBST(VMLIMIT_OBJ)
2012
2013 if test "$doug_lea_malloc" = "yes" ; then
2014 if test "$GNU_MALLOC" = yes ; then
2015 GNU_MALLOC_reason="
2016 (Using Doug Lea's new malloc from the GNU C Library.)"
2017 fi
2018 AC_DEFINE(DOUG_LEA_MALLOC, 1,
2019 [Define to 1 if the system memory allocator is Doug Lea style,
2020 with malloc hooks and malloc_set_state.])
2021
2022 ## Use mmap directly for allocating larger buffers.
2023 ## FIXME this comes from src/s/{gnu,gnu-linux}.h:
2024 ## #ifdef DOUG_LEA_MALLOC; #undef REL_ALLOC; #endif
2025 ## Does the AC_FUNC_MMAP test below make this check unnecessary?
2026 case "$opsys" in
2027 gnu*) REL_ALLOC=no ;;
2028 esac
2029 fi
2030
2031 if test x"${REL_ALLOC}" = x; then
2032 REL_ALLOC=${GNU_MALLOC}
2033 fi
2034
2035 use_mmap_for_buffers=no
2036 case "$opsys" in
2037 cygwin|freebsd|irix6-5) use_mmap_for_buffers=yes ;;
2038 esac
2039
2040 AC_FUNC_MMAP
2041 if test $use_mmap_for_buffers = yes; then
2042 AC_DEFINE(USE_MMAP_FOR_BUFFERS, 1, [Define to use mmap to allocate buffer text.])
2043 REL_ALLOC=no
2044 fi
2045
2046 LIBS="$LIBS_SYSTEM $LIBS"
2047
2048 dnl FIXME replace main with a function we actually want from this library.
2049 AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
2050
2051 dnl Check for the POSIX thread library.
2052 LIB_PTHREAD=
2053 AC_CHECK_HEADERS_ONCE(pthread.h)
2054 if test "$ac_cv_header_pthread_h"; then
2055 dnl gmalloc.c uses pthread_atfork, which is not available on older-style
2056 dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
2057 dnl testing for pthread_kill if Emacs uses gmalloc.c.
2058 if test "$GMALLOC_OBJ" = gmalloc.o; then
2059 emacs_pthread_function=pthread_atfork
2060 else
2061 emacs_pthread_function=pthread_kill
2062 fi
2063 OLD_LIBS=$LIBS
2064 AC_SEARCH_LIBS([$emacs_pthread_function], [pthread],
2065 [AC_DEFINE([HAVE_PTHREAD], [1],
2066 [Define to 1 if you have pthread (-lpthread).])])
2067 if test "X$LIBS" != "X$OLD_LIBS"; then
2068 eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
2069 fi
2070 LIBS=$OLD_LIBS
2071 fi
2072 AC_SUBST([LIB_PTHREAD])
2073
2074 dnl Check for need for bigtoc support on IBM AIX
2075
2076 case ${host_os} in
2077 aix*)
2078 AC_CACHE_CHECK([for -bbigtoc option], [gdb_cv_bigtoc], [
2079 case $GCC in
2080 yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
2081 *) gdb_cv_bigtoc=-bbigtoc ;;
2082 esac
2083
2084 LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
2085 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[int i;]])], [], [gdb_cv_bigtoc=])
2086 ])
2087 ;;
2088 esac
2089
2090 # Change CFLAGS, CPPFLAGS, and LIBS temporarily so that C_SWITCH_X_SITE
2091 # is for the tests that follow. We set them back later on.
2092
2093 REAL_CFLAGS="$CFLAGS"
2094 REAL_CPPFLAGS="$CPPFLAGS"
2095 REAL_LIBS="$LIBS"
2096
2097 if test "${HAVE_X11}" = "yes"; then
2098 DEFS="$C_SWITCH_X_SITE $DEFS"
2099 LDFLAGS="$LDFLAGS $LD_SWITCH_X_SITE"
2100 LIBS="-lX11 $LIBS"
2101 CFLAGS="$C_SWITCH_X_SITE $CFLAGS"
2102 CPPFLAGS="$C_SWITCH_X_SITE $CPPFLAGS"
2103
2104 # On Solaris, arrange for LD_RUN_PATH to point to the X libraries for tests.
2105 # This is handled by LD_SWITCH_X_SITE_RPATH during the real build,
2106 # but it's more convenient here to set LD_RUN_PATH since this
2107 # also works on hosts that don't understand LD_SWITCH_X_SITE_RPATH.
2108 if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then
2109 LD_RUN_PATH=$x_libraries${LD_RUN_PATH+:}$LD_RUN_PATH
2110 export LD_RUN_PATH
2111 fi
2112
2113 if test "${opsys}" = "gnu-linux"; then
2114 AC_MSG_CHECKING(whether X on GNU/Linux needs -b to link)
2115 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
2116 [[XOpenDisplay ("foo");]])],
2117 [xgnu_linux_first_failure=no],
2118 [xgnu_linux_first_failure=yes])
2119 if test "${xgnu_linux_first_failure}" = "yes"; then
2120 OLD_CPPFLAGS="$CPPFLAGS"
2121 OLD_LIBS="$LIBS"
2122 CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
2123 LIBS="$LIBS -b i486-linuxaout"
2124 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
2125 [[XOpenDisplay ("foo");]])],
2126 [xgnu_linux_second_failure=no],
2127 [xgnu_linux_second_failure=yes])
2128 if test "${xgnu_linux_second_failure}" = "yes"; then
2129 # If we get the same failure with -b, there is no use adding -b.
2130 # So leave it out. This plays safe.
2131 AC_MSG_RESULT(no)
2132 else
2133 LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
2134 C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
2135 AC_MSG_RESULT(yes)
2136 fi
2137 CPPFLAGS=$OLD_CPPFLAGS
2138 LIBS=$OLD_LIBS
2139 else
2140 AC_MSG_RESULT(no)
2141 fi
2142 fi
2143
2144 # Reportedly, some broken Solaris systems have XKBlib.h but are missing
2145 # header files included from there.
2146 AC_MSG_CHECKING(for Xkb)
2147 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>
2148 #include <X11/XKBlib.h>]],
2149 [[XkbDescPtr kb = XkbGetKeyboard (0, XkbAllComponentsMask, XkbUseCoreKbd);]])],
2150 emacs_xkb=yes, emacs_xkb=no)
2151 AC_MSG_RESULT($emacs_xkb)
2152 if test $emacs_xkb = yes; then
2153 AC_DEFINE(HAVE_XKB, 1, [Define to 1 if you have the Xkb extension.])
2154 fi
2155
2156 AC_CHECK_FUNCS(XrmSetDatabase XScreenResourceString \
2157 XScreenNumberOfScreen)
2158 fi
2159
2160 if test "${window_system}" = "x11"; then
2161 AC_MSG_CHECKING(X11 version 6)
2162 AC_CACHE_VAL(emacs_cv_x11_version_6,
2163 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlib.h>]],
2164 [[#if XlibSpecificationRelease < 6
2165 fail;
2166 #endif
2167 ]])], emacs_cv_x11_version_6=yes, emacs_cv_x11_version_6=no)])
2168 if test $emacs_cv_x11_version_6 = yes; then
2169 AC_MSG_RESULT(6 or newer)
2170 AC_DEFINE(HAVE_X11R6, 1,
2171 [Define to 1 if you have the X11R6 or newer version of Xlib.])
2172 AC_DEFINE(HAVE_X_I18N, 1, [Define if you have usable i18n support.])
2173 ## inoue@ainet.or.jp says Solaris has a bug related to X11R6-style
2174 ## XIM support.
2175 case "$opsys" in
2176 sol2-*) : ;;
2177 *) AC_DEFINE(HAVE_X11R6_XIM, 1,
2178 [Define if you have usable X11R6-style XIM support.])
2179 ;;
2180 esac
2181 else
2182 AC_MSG_RESULT(before 6)
2183 fi
2184 fi
2185
2186
2187 ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
2188 HAVE_RSVG=no
2189 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" = "mingw32"; then
2190 if test "${with_rsvg}" != "no"; then
2191 RSVG_REQUIRED=2.11.0
2192 RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
2193
2194 PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
2195 AC_SUBST(RSVG_CFLAGS)
2196 AC_SUBST(RSVG_LIBS)
2197
2198 if test $HAVE_RSVG = yes; then
2199 AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
2200 CFLAGS="$CFLAGS $RSVG_CFLAGS"
2201 # Windows loads librsvg dynamically
2202 if test "${opsys}" = "mingw32"; then
2203 RSVG_LIBS=
2204 fi
2205 fi
2206 fi
2207 fi
2208
2209 HAVE_IMAGEMAGICK=no
2210 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${HAVE_W32}" = "yes"; then
2211 if test "${with_imagemagick}" != "no"; then
2212 ## 6.2.8 is the earliest version known to work, but earlier versions
2213 ## might work - let us know if you find one.
2214 ## 6.0.7 does not work. See bug#7955.
2215 ## 6.8.2 makes Emacs crash; see Bug#13867.
2216 IMAGEMAGICK_MODULE="Wand >= 6.2.8 Wand != 6.8.2"
2217 PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
2218 AC_SUBST(IMAGEMAGICK_CFLAGS)
2219 AC_SUBST(IMAGEMAGICK_LIBS)
2220
2221 if test $HAVE_IMAGEMAGICK = yes; then
2222 AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
2223 OLD_CFLAGS=$CFLAGS
2224 OLD_LIBS=$LIBS
2225 CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
2226 LIBS="$IMAGEMAGICK_LIBS $LIBS"
2227 AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
2228 CFLAGS=$OLD_CFLAGS
2229 LIBS=$OLD_LIBS
2230 fi
2231 fi
2232 fi
2233
2234
2235 HAVE_GTK=no
2236 GTK_OBJ=
2237 gtk_term_header=$term_header
2238 check_gtk2=no
2239 gtk3_pkg_errors=
2240 if test "${opsys}" != "mingw32"; then
2241 if test "${with_gtk3}" = "yes" || test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
2242 GLIB_REQUIRED=2.28
2243 GTK_REQUIRED=3.0
2244 GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2245
2246 dnl Checks for libraries.
2247 PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2248 if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
2249 AC_MSG_ERROR($GTK_PKG_ERRORS)
2250 fi
2251 if test "$pkg_check_gtk" = "yes"; then
2252 AC_DEFINE(HAVE_GTK3, 1, [Define to 1 if using GTK 3 or later.])
2253 GTK_OBJ=emacsgtkfixed.o
2254 gtk_term_header=gtkutil.h
2255 USE_GTK_TOOLKIT="GTK3"
2256 if test "x$ac_enable_gtk_deprecation_warnings" = x; then
2257 AC_DEFINE([GDK_DISABLE_DEPRECATION_WARNINGS], [1],
2258 [Define to 1 to disable GTK+/GDK deprecation warnings.])
2259 AC_DEFINE([GLIB_DISABLE_DEPRECATION_WARNINGS], [1],
2260 [Define to 1 to disable Glib deprecation warnings.])
2261 fi
2262 else
2263 check_gtk2=yes
2264 gtk3_pkg_errors="$GTK_PKG_ERRORS "
2265 fi
2266 fi
2267
2268 if test "${with_gtk2}" = "yes" || test "$check_gtk2" = "yes"; then
2269 GLIB_REQUIRED=2.10
2270 GTK_REQUIRED=2.10
2271 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
2272
2273 dnl Checks for libraries.
2274 PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
2275 if test "$pkg_check_gtk" = "no" &&
2276 { test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
2277 then
2278 AC_MSG_ERROR($gtk3_pkg_errors$GTK_PKG_ERRORS)
2279 fi
2280 test "$pkg_check_gtk" = "yes" && USE_GTK_TOOLKIT="GTK2"
2281 fi
2282 fi
2283
2284 OLD_CFLAGS=$CFLAGS
2285 OLD_LIBS=$LIBS
2286
2287 if test x"$pkg_check_gtk" = xyes; then
2288
2289 AC_SUBST(GTK_LIBS)
2290 CFLAGS="$CFLAGS $GTK_CFLAGS"
2291 LIBS="$GTK_LIBS $LIBS"
2292 dnl Try to compile a simple GTK program.
2293 AC_MSG_CHECKING([whether GTK compiles])
2294 GTK_COMPILES=no
2295 AC_LINK_IFELSE(
2296 [AC_LANG_PROGRAM(
2297 [[/* Check the Gtk and Glib APIs. */
2298 #include <gtk/gtk.h>
2299 #include <glib-object.h>
2300 static void
2301 callback (GObject *go, GParamSpec *spec, gpointer user_data)
2302 {}
2303 ]],
2304 [[
2305 GtkSettings *gs = 0;
2306 /* Use G_CALLBACK to make sure function pointers can be cast to void *;
2307 strict C prohibits this. Use gtk_main_iteration to test that the
2308 libraries are there. */
2309 if (g_signal_handler_find (G_OBJECT (gs), G_SIGNAL_MATCH_FUNC,
2310 0, 0, 0, G_CALLBACK (callback), 0))
2311 gtk_main_iteration ();
2312 ]])],
2313 [GTK_COMPILES=yes])
2314 AC_MSG_RESULT([$GTK_COMPILES])
2315 if test "${GTK_COMPILES}" != "yes"; then
2316 GTK_OBJ=
2317 if test "$USE_X_TOOLKIT" != "maybe"; then
2318 AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
2319 fi
2320 else
2321 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
2322 HAVE_GTK=yes
2323 AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
2324 GTK_OBJ="gtkutil.o $GTK_OBJ"
2325 term_header=$gtk_term_header
2326 USE_X_TOOLKIT=none
2327 if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
2328 :
2329 else
2330 AC_MSG_WARN([[Your version of Gtk+ will have problems with
2331 closing open displays. This is no problem if you just use
2332 one display, but if you use more than one and close one of them
2333 Emacs may crash.]])
2334 sleep 3
2335 fi
2336 fi
2337
2338 fi
2339 AC_SUBST(GTK_OBJ)
2340
2341
2342 if test "${HAVE_GTK}" = "yes"; then
2343
2344 dnl GTK scrollbars resemble toolkit scrollbars a lot, so to avoid
2345 dnl a lot if #ifdef:s, say we have toolkit scrollbars.
2346 if test "$with_toolkit_scroll_bars" != no; then
2347 with_toolkit_scroll_bars=yes
2348 fi
2349
2350 dnl Check if we have the old file selection dialog declared and
2351 dnl in the link library. In 2.x it may be in the library,
2352 dnl but not declared if deprecated featured has been selected out.
2353 dnl AC_CHECK_DECL checks for a macro, so check for GTK_TYPE_FILE_SELECTION.
2354 HAVE_GTK_FILE_SELECTION=no
2355 AC_CHECK_DECL(GTK_TYPE_FILE_SELECTION, HAVE_GTK_FILE_SELECTION=yes,
2356 HAVE_GTK_FILE_SELECTION=no, [AC_INCLUDES_DEFAULT
2357 #include <gtk/gtk.h>])
2358 if test "$HAVE_GTK_FILE_SELECTION" = yes; then
2359 AC_CHECK_FUNCS(gtk_file_selection_new)
2360 fi
2361
2362 dnl Same as above for gtk_handle_box.
2363 HAVE_GTK_HANDLE_BOX=no
2364 AC_CHECK_DECL(GTK_TYPE_HANDLE_BOX, HAVE_GTK_HANDLE_BOX=yes,
2365 HAVE_GTK_HANDLE_BOX=no, [AC_INCLUDES_DEFAULT
2366 #include <gtk/gtk.h>])
2367 if test "$HAVE_GTK_HANDLE_BOX" = yes; then
2368 AC_CHECK_FUNCS(gtk_handle_box_new)
2369 fi
2370
2371 dnl Same as above for gtk_tearoff_menu_item.
2372 HAVE_GTK_TEAROFF_MENU_ITEM=no
2373 AC_CHECK_DECL(GTK_TYPE_TEAROFF_MENU_ITEM, HAVE_GTK_TEAROFF_MENU_ITEM=yes,
2374 HAVE_GTK_TEAROFF_MENU_ITEM=no, [AC_INCLUDES_DEFAULT
2375 #include <gtk/gtk.h>])
2376 if test "$HAVE_GTK_TEAROFF_MENU_ITEM" = yes; then
2377 AC_CHECK_FUNCS(gtk_tearoff_menu_item_new)
2378 fi
2379
2380 dnl Check for functions introduced in 2.14 and later.
2381 AC_CHECK_FUNCS(gtk_widget_get_window gtk_widget_set_has_window \
2382 gtk_dialog_get_action_area gtk_widget_get_sensitive \
2383 gtk_widget_get_mapped gtk_adjustment_get_page_size \
2384 gtk_orientable_set_orientation \
2385 gtk_window_set_has_resize_grip)
2386
2387 term_header=gtkutil.h
2388 fi
2389
2390 CFLAGS=$OLD_CFLAGS
2391 LIBS=$OLD_LIBS
2392
2393 dnl D-Bus has been tested under GNU/Linux only. Must be adapted for
2394 dnl other platforms.
2395 HAVE_DBUS=no
2396 DBUS_OBJ=
2397 if test "${with_dbus}" = "yes"; then
2398 PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
2399 if test "$HAVE_DBUS" = yes; then
2400 AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
2401 dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
2402 dnl dbus_type_is_valid and dbus_validate_* have been introduced in
2403 dnl D-Bus 1.5.12.
2404 OLD_LIBS=$LIBS
2405 LIBS="$LIBS $DBUS_LIBS"
2406 AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
2407 dbus_type_is_valid \
2408 dbus_validate_bus_name \
2409 dbus_validate_path \
2410 dbus_validate_interface \
2411 dbus_validate_member)
2412 LIBS=$OLD_LIBS
2413 DBUS_OBJ=dbusbind.o
2414 fi
2415 fi
2416 AC_SUBST(DBUS_OBJ)
2417
2418 dnl GSettings has been tested under GNU/Linux only.
2419 HAVE_GSETTINGS=no
2420 if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
2421 PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
2422 if test "$HAVE_GSETTINGS" = "yes"; then
2423 old_CFLAGS=$CFLAGS
2424 CFLAGS="$CFLAGS $GSETTINGS_CFLAGS"
2425 old_LIBS=$LIBS
2426 LIBS="$LIBS $GSETTINGS_LIBS"
2427 AC_MSG_CHECKING([whether GSettings is in gio])
2428 AC_LINK_IFELSE(
2429 [AC_LANG_PROGRAM(
2430 [[/* Check that gsettings really is present. */
2431 #include <glib-object.h>
2432 #include <gio/gio.h>
2433 ]],
2434 [[
2435 GSettings *settings;
2436 GVariant *val = g_settings_get_value (settings, "");
2437 ]])],
2438 [], HAVE_GSETTINGS=no)
2439 AC_MSG_RESULT([$HAVE_GSETTINGS])
2440
2441 if test "$HAVE_GSETTINGS" = "yes"; then
2442 AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
2443 SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
2444 SETTINGS_LIBS="$GSETTINGS_LIBS"
2445 fi
2446 CFLAGS=$old_CFLAGS
2447 LIBS=$old_LIBS
2448 fi
2449 fi
2450
2451 dnl GConf has been tested under GNU/Linux only.
2452 dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
2453 HAVE_GCONF=no
2454 if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
2455 PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
2456 if test "$HAVE_GCONF" = yes; then
2457 AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
2458 dnl Newer GConf doesn't link with g_objects, so this is not defined.
2459 SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GCONF_CFLAGS"
2460 SETTINGS_LIBS="$SETTINGS_LIBS $GCONF_LIBS"
2461 fi
2462 fi
2463
2464 if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
2465 PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
2466 if test "$HAVE_GOBJECT" = "yes"; then
2467 SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
2468 SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
2469 fi
2470 SAVE_CFLAGS="$CFLAGS"
2471 SAVE_LIBS="$LIBS"
2472 CFLAGS="$SETTINGS_CFLAGS $CFLAGS"
2473 LIBS="$SETTINGS_LIBS $LIBS"
2474 CFLAGS="$SAVE_CFLAGS"
2475 LIBS="$SAVE_LIBS"
2476 fi
2477 AC_SUBST(SETTINGS_CFLAGS)
2478 AC_SUBST(SETTINGS_LIBS)
2479
2480
2481 dnl SELinux is available for GNU/Linux only.
2482 HAVE_LIBSELINUX=no
2483 LIBSELINUX_LIBS=
2484 if test "${with_selinux}" = "yes"; then
2485 AC_CHECK_LIB([selinux], [lgetfilecon], HAVE_LIBSELINUX=yes, HAVE_LIBSELINUX=no)
2486 if test "$HAVE_LIBSELINUX" = yes; then
2487 AC_DEFINE(HAVE_LIBSELINUX, 1, [Define to 1 if using SELinux.])
2488 LIBSELINUX_LIBS=-lselinux
2489 fi
2490 fi
2491 AC_SUBST(LIBSELINUX_LIBS)
2492
2493 HAVE_GNUTLS=no
2494 HAVE_GNUTLS3=no
2495 if test "${with_gnutls}" = "yes" ; then
2496 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0], HAVE_GNUTLS3=yes, HAVE_GNUTLS3=no)
2497 if test "${HAVE_GNUTLS3}" = "yes"; then
2498 AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.])
2499 HAVE_GNUTLS="yes"
2500 else
2501 PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
2502 fi
2503 if test "${HAVE_GNUTLS}" = "yes"; then
2504 AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
2505 fi
2506
2507 # Windows loads GnuTLS dynamically
2508 if test "${opsys}" = "mingw32"; then
2509 LIBGNUTLS_LIBS=
2510 fi
2511 fi
2512
2513 AC_SUBST(LIBGNUTLS_LIBS)
2514 AC_SUBST(LIBGNUTLS_CFLAGS)
2515
2516 NOTIFY_OBJ=
2517 NOTIFY_SUMMARY=no
2518
2519 dnl FIXME? Don't auto-detect on NS, but do allow someone to specify
2520 dnl a particular library. This doesn't make much sense?
2521 if test "${with_ns}" = yes && test ${with_file_notification} = yes; then
2522 with_file_notification=no
2523 fi
2524
2525 dnl MS Windows native file monitor is available for mingw32 only.
2526 case $with_file_notification,$opsys in
2527 w32,* | yes,mingw32)
2528 AC_CHECK_HEADER(windows.h)
2529 if test "$ac_cv_header_windows_h" = yes ; then
2530 AC_DEFINE(HAVE_W32NOTIFY, 1, [Define to 1 to use w32notify.])
2531 NOTIFY_OBJ=w32notify.o
2532 NOTIFY_SUMMARY="yes (w32)"
2533 fi ;;
2534 esac
2535
2536 dnl g_file_monitor exists since glib 2.18. G_FILE_MONITOR_EVENT_MOVED
2537 dnl has been added in glib 2.24. It has been tested under
2538 dnl GNU/Linux only. We take precedence over inotify, but this makes
2539 dnl only sense when glib has been compiled with inotify support. How
2540 dnl to check?
2541 case $with_file_notification,$NOTIFY_OBJ in
2542 gfile, | yes,)
2543 PKG_CHECK_MODULES(GFILENOTIFY, gio-2.0 >= 2.24, HAVE_GFILENOTIFY=yes, HAVE_GFILENOTIFY=no)
2544 if test "$HAVE_GFILENOTIFY" = "yes"; then
2545 AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
2546 NOTIFY_OBJ=gfilenotify.o
2547 NOTIFY_SUMMARY="yes -lgio (gfile)"
2548 fi ;;
2549 esac
2550
2551 dnl inotify is only available on GNU/Linux.
2552 case $with_file_notification,$NOTIFY_OBJ in
2553 inotify, | yes,)
2554 AC_CHECK_HEADER(sys/inotify.h)
2555 if test "$ac_cv_header_sys_inotify_h" = yes ; then
2556 AC_CHECK_FUNC(inotify_init1)
2557 if test "$ac_cv_func_inotify_init1" = yes; then
2558 AC_DEFINE(HAVE_INOTIFY, 1, [Define to 1 to use inotify.])
2559 NOTIFY_OBJ=inotify.o
2560 NOTIFY_SUMMARY="yes -lglibc (inotify)"
2561 fi
2562 fi ;;
2563 esac
2564
2565 case $with_file_notification,$NOTIFY_OBJ in
2566 yes,* | no,* | *,?*) ;;
2567 *) AC_MSG_ERROR([File notification `$with_file_notification' requested but requirements not found.]) ;;
2568 esac
2569
2570 if test -n "$NOTIFY_OBJ"; then
2571 AC_DEFINE(USE_FILE_NOTIFY, 1, [Define to 1 if using file notifications.])
2572 fi
2573 AC_SUBST(NOTIFY_OBJ)
2574 AC_SUBST(GFILENOTIFY_CFLAGS)
2575 AC_SUBST(GFILENOTIFY_LIBS)
2576
2577 dnl Do not put whitespace before the #include statements below.
2578 dnl Older compilers (eg sunos4 cc) choke on it.
2579 HAVE_XAW3D=no
2580 LUCID_LIBW=
2581 if test x"${USE_X_TOOLKIT}" = xmaybe || test x"${USE_X_TOOLKIT}" = xLUCID; then
2582 if test "$with_xaw3d" != no; then
2583 AC_CACHE_VAL(emacs_cv_xaw3d,
2584 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2585 #include <X11/Intrinsic.h>
2586 #include <X11/Xaw3d/Simple.h>]],
2587 [[]])],
2588 [AC_CHECK_LIB(Xaw3d, XawScrollbarSetThumb,
2589 emacs_cv_xaw3d=yes, emacs_cv_xaw3d=no)],
2590 emacs_cv_xaw3d=no)])
2591 else
2592 emacs_cv_xaw3d=no
2593 fi
2594 if test $emacs_cv_xaw3d = yes; then
2595 AC_MSG_CHECKING(for xaw3d)
2596 AC_MSG_RESULT([yes; using Lucid toolkit])
2597 USE_X_TOOLKIT=LUCID
2598 HAVE_XAW3D=yes
2599 LUCID_LIBW=-lXaw3d
2600 AC_DEFINE(HAVE_XAW3D, 1,
2601 [Define to 1 if you have the Xaw3d library (-lXaw3d).])
2602 else
2603 AC_MSG_CHECKING(for xaw3d)
2604 AC_MSG_RESULT(no)
2605 AC_MSG_CHECKING(for libXaw)
2606 AC_CACHE_VAL(emacs_cv_xaw,
2607 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2608 #include <X11/Intrinsic.h>
2609 #include <X11/Xaw/Simple.h>]],
2610 [[]])],
2611 emacs_cv_xaw=yes,
2612 emacs_cv_xaw=no)])
2613 if test $emacs_cv_xaw = yes; then
2614 AC_MSG_RESULT([yes; using Lucid toolkit])
2615 USE_X_TOOLKIT=LUCID
2616 LUCID_LIBW=-lXaw
2617 elif test x"${USE_X_TOOLKIT}" = xLUCID; then
2618 AC_MSG_ERROR([Lucid toolkit requires X11/Xaw include files])
2619 else
2620 AC_MSG_ERROR([No X toolkit could be found.
2621 If you are sure you want Emacs compiled without an X toolkit, pass
2622 --with-x-toolkit=no
2623 to configure. Otherwise, install the development libraries for the toolkit
2624 that you want to use (e.g. Gtk+) and re-run configure.])
2625 fi
2626 fi
2627 fi
2628
2629 X_TOOLKIT_TYPE=$USE_X_TOOLKIT
2630
2631 LIBXTR6=
2632 LIBXMU=
2633 if test "${USE_X_TOOLKIT}" != "none"; then
2634 AC_MSG_CHECKING(X11 toolkit version)
2635 AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
2636 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/Intrinsic.h>]],
2637 [[#if XtSpecificationRelease < 6
2638 fail;
2639 #endif
2640 ]])], emacs_cv_x11_toolkit_version_6=yes, emacs_cv_x11_toolkit_version_6=no)])
2641 HAVE_X11XTR6=$emacs_cv_x11_toolkit_version_6
2642 if test $emacs_cv_x11_toolkit_version_6 = yes; then
2643 AC_MSG_RESULT(6 or newer)
2644 AC_DEFINE(HAVE_X11XTR6, 1,
2645 [Define to 1 if you have the X11R6 or newer version of Xt.])
2646 LIBXTR6="-lSM -lICE"
2647 case "$opsys" in
2648 ## Use libw.a along with X11R6 Xt.
2649 unixware) LIBXTR6="$LIBXTR6 -lw" ;;
2650 esac
2651 else
2652 AC_MSG_RESULT(before 6)
2653 fi
2654
2655 dnl If using toolkit, check whether libXmu.a exists.
2656 dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
2657 OLDLIBS="$LIBS"
2658 if test x$HAVE_X11XTR6 = xyes; then
2659 OTHERLIBS='-lXt -lSM -lICE'
2660 else
2661 OTHERLIBS='-lXt'
2662 fi
2663 AC_SEARCH_LIBS([XmuConvertStandardSelection], [Xmu], [], [], [$OTHERLIBS])
2664 if test "X$LIBS" != "X$OLDLIBS"; then
2665 LIBXMU=$ac_cv_search_XmuConvertStandardSelection
2666 fi
2667 LIBS=$OLDLIBS
2668 dnl ac_cv_search_XmuConvertStandardSelection is also referenced below.
2669 fi
2670 AC_SUBST(LIBXTR6)
2671 AC_SUBST(LIBXMU)
2672
2673 LIBXP=
2674 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2675 # OpenMotif may be installed in such a way on some GNU/Linux systems.
2676 if test -d /usr/include/openmotif; then
2677 CPPFLAGS="-I/usr/include/openmotif $CPPFLAGS"
2678 emacs_cv_openmotif=yes
2679 case "$canonical" in
2680 x86_64-*-linux-gnu* | powerpc64-*-linux-gnu* | sparc64-*-linux-gnu*)
2681 test -d /usr/lib64/openmotif && LDFLAGS="-L/usr/lib64/openmotif $LDFLAGS"
2682 ;;
2683 *)
2684 test -d /usr/lib/openmotif && LDFLAGS="-L/usr/lib/openmotif $LDFLAGS"
2685 esac
2686 else
2687 emacs_cv_openmotif=no
2688 fi
2689 AC_CACHE_CHECK(for (Open)Motif version 2.1, emacs_cv_motif_version_2_1,
2690 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Xm/Xm.h>]],
2691 [[#if XmVERSION > 2 || (XmVERSION == 2 && XmREVISION >= 1)
2692 int x = 5;
2693 #else
2694 Motif version prior to 2.1.
2695 #endif]])],
2696 emacs_cv_motif_version_2_1=yes, emacs_cv_motif_version_2_1=no)])
2697 if test $emacs_cv_motif_version_2_1 = yes; then
2698 AC_CHECK_LIB(Xp, XpCreateContext, LIBXP=-lXp)
2699 if test x$emacs_cv_openmotif = xyes; then
2700 REAL_CPPFLAGS="-I/usr/include/openmotif $REAL_CPPFLAGS"
2701 fi
2702 else
2703 AC_CACHE_CHECK(for LessTif where some systems put it, emacs_cv_lesstif,
2704 # We put this in CFLAGS temporarily to precede other -I options
2705 # that might be in CFLAGS temporarily.
2706 # We put this in CPPFLAGS where it precedes the other -I options.
2707 OLD_CPPFLAGS=$CPPFLAGS
2708 OLD_CFLAGS=$CFLAGS
2709 CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CPPFLAGS"
2710 CFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $CFLAGS"
2711 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include </usr/X11R6/LessTif/Motif1.2/include/Xm/Xm.h>]],
2712 [[int x = 5;]])],
2713 emacs_cv_lesstif=yes, emacs_cv_lesstif=no)])
2714 if test $emacs_cv_lesstif = yes; then
2715 # Make sure this -I option remains in CPPFLAGS after it is set
2716 # back to REAL_CPPFLAGS.
2717 # There is no need to change REAL_CFLAGS, because REAL_CFLAGS does not
2718 # have those other -I options anyway. Ultimately, having this
2719 # directory ultimately in CPPFLAGS will be enough.
2720 REAL_CPPFLAGS="-I/usr/X11R6/LessTif/Motif1.2/include $REAL_CPPFLAGS"
2721 LDFLAGS="-L/usr/X11R6/LessTif/Motif1.2/lib $LDFLAGS"
2722 else
2723 CFLAGS=$OLD_CFLAGS
2724 CPPFLAGS=$OLD_CPPFLAGS
2725 fi
2726 fi
2727 AC_CHECK_HEADER([Xm/BulletinB.h], [],
2728 [AC_MSG_ERROR([Motif toolkit requested but requirements not found.])])
2729 fi
2730
2731 dnl Use toolkit scroll bars if configured for GTK or X toolkit and either
2732 dnl using Motif or Xaw3d is available, and unless
2733 dnl --with-toolkit-scroll-bars=no was specified.
2734
2735 AH_TEMPLATE(USE_TOOLKIT_SCROLL_BARS,
2736 [Define to 1 if we should use toolkit scroll bars.])dnl
2737 USE_TOOLKIT_SCROLL_BARS=no
2738 if test "${with_toolkit_scroll_bars}" != "no"; then
2739 if test "${USE_X_TOOLKIT}" != "none"; then
2740 if test "${USE_X_TOOLKIT}" = "MOTIF"; then
2741 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2742 HAVE_XAW3D=no
2743 USE_TOOLKIT_SCROLL_BARS=yes
2744 elif test "${HAVE_XAW3D}" = "yes" || test "${USE_X_TOOLKIT}" = "LUCID"; then
2745 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2746 USE_TOOLKIT_SCROLL_BARS=yes
2747 fi
2748 elif test "${HAVE_GTK}" = "yes"; then
2749 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2750 USE_TOOLKIT_SCROLL_BARS=yes
2751 elif test "${HAVE_NS}" = "yes"; then
2752 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2753 USE_TOOLKIT_SCROLL_BARS=yes
2754 elif test "${HAVE_W32}" = "yes"; then
2755 AC_DEFINE(USE_TOOLKIT_SCROLL_BARS)
2756 USE_TOOLKIT_SCROLL_BARS=yes
2757 fi
2758 fi
2759
2760 dnl See if XIM is available.
2761 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2762 #include <X11/Xlib.h>
2763 #include <X11/Xresource.h>]],
2764 [[XIMProc callback;]])],
2765 [HAVE_XIM=yes
2766 AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
2767 HAVE_XIM=no)
2768
2769 dnl `--with-xim' now controls only the initial value of use_xim at run time.
2770
2771 if test "${with_xim}" != "no"; then
2772 AC_DEFINE(USE_XIM, 1,
2773 [Define to 1 if we should use XIM, if it is available.])
2774 fi
2775
2776
2777 if test "${HAVE_XIM}" != "no"; then
2778 late_CFLAGS=$CFLAGS
2779 if test "$GCC" = yes; then
2780 CFLAGS="$CFLAGS --pedantic-errors"
2781 fi
2782 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2783 #include <X11/Xlib.h>
2784 #include <X11/Xresource.h>]],
2785 [[Display *display;
2786 XrmDatabase db;
2787 char *res_name;
2788 char *res_class;
2789 XIMProc callback;
2790 XPointer *client_data;
2791 #ifndef __GNUC__
2792 /* If we're not using GCC, it's probably not XFree86, and this is
2793 probably right, but we can't use something like --pedantic-errors. */
2794 extern Bool XRegisterIMInstantiateCallback(Display*, XrmDatabase, char*,
2795 char*, XIMProc, XPointer*);
2796 #endif
2797 (void)XRegisterIMInstantiateCallback(display, db, res_name, res_class, callback,
2798 client_data);]])],
2799 [emacs_cv_arg6_star=yes])
2800 AH_TEMPLATE(XRegisterIMInstantiateCallback_arg6,
2801 [Define to the type of the 6th arg of XRegisterIMInstantiateCallback,
2802 either XPointer or XPointer*.])dnl
2803 if test "$emacs_cv_arg6_star" = yes; then
2804 AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer*])
2805 else
2806 AC_DEFINE(XRegisterIMInstantiateCallback_arg6, [XPointer])
2807 fi
2808 CFLAGS=$late_CFLAGS
2809 fi
2810
2811 ### Start of font-backend (under any platform) section.
2812 # (nothing here yet -- this is a placeholder)
2813 ### End of font-backend (under any platform) section.
2814
2815 ### Start of font-backend (under X11) section.
2816 if test "${HAVE_X11}" = "yes"; then
2817 PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
2818
2819 ## Use -lXft if available, unless `--with-xft=no'.
2820 HAVE_XFT=maybe
2821 if test "${HAVE_FC}" = "no" || test "x${with_x}" = "xno"; then
2822 with_xft="no";
2823 fi
2824 if test "x${with_xft}" != "xno"; then
2825
2826 PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
2827 ## Because xftfont.c uses XRenderQueryExtension, we also
2828 ## need to link to -lXrender.
2829 HAVE_XRENDER=no
2830 AC_CHECK_LIB(Xrender, XRenderQueryExtension, HAVE_XRENDER=yes)
2831 if test "$HAVE_XFT" != no && test "$HAVE_XRENDER" != no; then
2832 OLD_CPPFLAGS="$CPPFLAGS"
2833 OLD_CFLAGS="$CFLAGS"
2834 OLD_LIBS="$LIBS"
2835 CPPFLAGS="$CPPFLAGS $XFT_CFLAGS"
2836 CFLAGS="$CFLAGS $XFT_CFLAGS"
2837 XFT_LIBS="-lXrender $XFT_LIBS"
2838 LIBS="$XFT_LIBS $LIBS"
2839 AC_CHECK_HEADER(X11/Xft/Xft.h,
2840 AC_CHECK_LIB(Xft, XftFontOpen, HAVE_XFT=yes, , $XFT_LIBS) , ,
2841 [[#include <X11/X.h>]])
2842
2843 if test "${HAVE_XFT}" = "yes"; then
2844 AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
2845 AC_SUBST(XFT_LIBS)
2846 C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
2847 fi # "${HAVE_XFT}" = "yes"
2848 CPPFLAGS=$OLD_CPPFLAGS
2849 CFLAGS=$OLD_CFLAGS
2850 LIBS=$OLD_LIBS
2851 fi # "$HAVE_XFT" != no
2852 fi # "x${with_xft}" != "xno"
2853
2854 ## We used to allow building with FreeType and without Xft.
2855 ## However, the ftx font backend driver is not in good shape.
2856 if test "$HAVE_XFT" != "yes"; then
2857 dnl For the "Does Emacs use" message at the end.
2858 HAVE_XFT=no
2859 HAVE_FREETYPE=no
2860 else
2861 dnl Strict linkers fail with
2862 dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
2863 dnl if -lfreetype is not specified.
2864 dnl The following is needed to set FREETYPE_LIBS.
2865 PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
2866 HAVE_FREETYPE=no)
2867
2868 test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
2869 fi
2870
2871 HAVE_LIBOTF=no
2872 if test "${HAVE_FREETYPE}" = "yes"; then
2873 AC_DEFINE(HAVE_FREETYPE, 1,
2874 [Define to 1 if using the freetype and fontconfig libraries.])
2875 if test "${with_libotf}" != "no"; then
2876 PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
2877 HAVE_LIBOTF=no)
2878 if test "$HAVE_LIBOTF" = "yes"; then
2879 AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
2880 AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
2881 HAVE_OTF_GET_VARIATION_GLYPHS=yes,
2882 HAVE_OTF_GET_VARIATION_GLYPHS=no)
2883 if test "${HAVE_OTF_GET_VARIATION_GLYPHS}" = "yes"; then
2884 AC_DEFINE(HAVE_OTF_GET_VARIATION_GLYPHS, 1,
2885 [Define to 1 if libotf has OTF_get_variation_glyphs.])
2886 fi
2887 fi
2888 fi
2889 dnl FIXME should there be an error if HAVE_FREETYPE != yes?
2890 dnl Does the new font backend require it, or can it work without it?
2891 fi
2892
2893 HAVE_M17N_FLT=no
2894 if test "${HAVE_LIBOTF}" = yes; then
2895 if test "${with_m17n_flt}" != "no"; then
2896 PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
2897 if test "$HAVE_M17N_FLT" = "yes"; then
2898 AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
2899 fi
2900 fi
2901 fi
2902 else
2903 HAVE_XFT=no
2904 HAVE_FREETYPE=no
2905 HAVE_LIBOTF=no
2906 HAVE_M17N_FLT=no
2907 fi
2908
2909 ### End of font-backend (under X11) section.
2910
2911 AC_SUBST(FREETYPE_CFLAGS)
2912 AC_SUBST(FREETYPE_LIBS)
2913 AC_SUBST(FONTCONFIG_CFLAGS)
2914 AC_SUBST(FONTCONFIG_LIBS)
2915 AC_SUBST(LIBOTF_CFLAGS)
2916 AC_SUBST(LIBOTF_LIBS)
2917 AC_SUBST(M17N_FLT_CFLAGS)
2918 AC_SUBST(M17N_FLT_LIBS)
2919
2920 ### Use -lXpm if available, unless `--with-xpm=no'.
2921 ### mingw32 doesn't use -lXpm, since it loads the library dynamically.
2922 HAVE_XPM=no
2923 LIBXPM=
2924 if test "${HAVE_W32}" = "yes" && test "${opsys}" = "cygwin"; then
2925 if test "${with_xpm}" != "no"; then
2926 SAVE_CPPFLAGS="$CPPFLAGS"
2927 SAVE_LDFLAGS="$LDFLAGS"
2928 CPPFLAGS="$CPPFLAGS -I/usr/include/noX"
2929 LDFLAGS="$LDFLAGS -L/usr/lib/noX"
2930 AC_CHECK_HEADER(X11/xpm.h,
2931 [AC_CHECK_LIB(Xpm, XpmReadFileToImage, HAVE_XPM=yes)])
2932 if test "${HAVE_XPM}" = "yes"; then
2933 AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2934 AC_EGREP_CPP(no_return_alloc_pixels,
2935 [#include "X11/xpm.h"
2936 #ifndef XpmReturnAllocPixels
2937 no_return_alloc_pixels
2938 #endif
2939 ], HAVE_XPM=no, HAVE_XPM=yes)
2940
2941 if test "${HAVE_XPM}" = "yes"; then
2942 REAL_CPPFLAGS="$REAL_CPPFLAGS -I/usr/include/noX"
2943 AC_MSG_RESULT(yes)
2944 else
2945 AC_MSG_RESULT(no)
2946 CPPFLAGS="$SAVE_CPPFLAGS"
2947 LDFLAGS="$SAVE_LDFLAGS"
2948 fi
2949 fi
2950 fi
2951
2952 if test "${HAVE_XPM}" = "yes"; then
2953 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2954 LIBXPM=-lXpm
2955 fi
2956 fi
2957
2958 if test "${HAVE_X11}" = "yes"; then
2959 if test "${with_xpm}" != "no"; then
2960 AC_CHECK_HEADER(X11/xpm.h,
2961 [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)])
2962 if test "${HAVE_XPM}" = "yes"; then
2963 AC_MSG_CHECKING(for XpmReturnAllocPixels preprocessor define)
2964 AC_EGREP_CPP(no_return_alloc_pixels,
2965 [#include "X11/xpm.h"
2966 #ifndef XpmReturnAllocPixels
2967 no_return_alloc_pixels
2968 #endif
2969 ], HAVE_XPM=no, HAVE_XPM=yes)
2970
2971 if test "${HAVE_XPM}" = "yes"; then
2972 AC_MSG_RESULT(yes)
2973 else
2974 AC_MSG_RESULT(no)
2975 fi
2976 fi
2977 fi
2978
2979 if test "${HAVE_XPM}" = "yes"; then
2980 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2981 LIBXPM=-lXpm
2982 fi
2983 fi
2984
2985 ### FIXME: Perhaps regroup to minimize code duplication due to MinGW's
2986 ### slightly different requirements wrt image libraries (it doesn't
2987 ### use -lXpm because it loads the xpm shared library dynamically at
2988 ### run time).
2989 if test "${opsys}" = "mingw32"; then
2990 if test "${with_xpm}" != "no"; then
2991 AC_CHECK_HEADER(X11/xpm.h, HAVE_XPM=yes, HAVE_XPM=no, [
2992 #define FOR_MSW 1])
2993 fi
2994
2995 if test "${HAVE_XPM}" = "yes"; then
2996 AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).])
2997 fi
2998 fi
2999
3000 AC_SUBST(LIBXPM)
3001
3002 ### Use -ljpeg if available, unless `--with-jpeg=no'.
3003 ### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
3004 HAVE_JPEG=no
3005 LIBJPEG=
3006 if test "${opsys}" = "mingw32"; then
3007 if test "${with_jpeg}" != "no"; then
3008 dnl Checking for jpeglib.h can lose because of a redefinition of
3009 dnl HAVE_STDLIB_H.
3010 AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
3011 fi
3012 AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
3013 if test "${HAVE_JPEG}" = "yes"; then
3014 AC_DEFINE(HAVE_JPEG)
3015 AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
3016 [#include <jpeglib.h>
3017 version=JPEG_LIB_VERSION
3018 ],
3019 [AC_DEFINE(HAVE_JPEG)],
3020 [AC_MSG_WARN([libjpeg found, but not version 6b or later])
3021 HAVE_JPEG=no])
3022 fi
3023 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
3024 if test "${with_jpeg}" != "no"; then
3025 dnl Checking for jpeglib.h can lose because of a redefinition of
3026 dnl HAVE_STDLIB_H.
3027 AC_CHECK_HEADER(jerror.h,
3028 [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
3029 fi
3030
3031 AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
3032 if test "${HAVE_JPEG}" = "yes"; then
3033 AC_DEFINE(HAVE_JPEG)
3034 AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
3035 [#include <jpeglib.h>
3036 version=JPEG_LIB_VERSION
3037 ],
3038 [AC_DEFINE(HAVE_JPEG)],
3039 [AC_MSG_WARN([libjpeg found, but not version 6b or later])
3040 HAVE_JPEG=no])
3041 fi
3042 if test "${HAVE_JPEG}" = "yes"; then
3043 LIBJPEG=-ljpeg
3044 fi
3045 fi
3046 AC_SUBST(LIBJPEG)
3047
3048 ### Use -lpng if available, unless `--with-png=no'.
3049 ### mingw32 doesn't use -lpng, since it loads the library dynamically.
3050 HAVE_PNG=no
3051 LIBPNG=
3052 if test "${opsys}" = "mingw32"; then
3053 if test "${with_png}" != "no"; then
3054 AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
3055 fi
3056 if test "${HAVE_PNG}" = "yes"; then
3057 AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
3058
3059 AC_CHECK_DECL(png_longjmp,
3060 [],
3061 [AC_DEFINE(PNG_DEPSTRUCT, [],
3062 [Define to empty to suppress deprecation warnings when building
3063 with --enable-gcc-warnings and with libpng versions before 1.5,
3064 which lack png_longjmp.])],
3065 [[#ifdef HAVE_LIBPNG_PNG_H
3066 # include <libpng/png.h>
3067 #else
3068 # include <png.h>
3069 #endif
3070 ]])
3071 fi
3072 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
3073 if test "${with_png}" != "no"; then
3074 # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
3075 # in /usr/include/libpng.
3076 AC_CHECK_HEADERS(png.h libpng/png.h, break)
3077 if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
3078 AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
3079 fi
3080 fi
3081
3082 if test "${HAVE_PNG}" = "yes"; then
3083 AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
3084 LIBPNG="-lpng -lz -lm"
3085
3086 AC_CHECK_DECL(png_longjmp,
3087 [],
3088 [AC_DEFINE(PNG_DEPSTRUCT, [],
3089 [Define to empty to suppress deprecation warnings when building
3090 with --enable-gcc-warnings and with libpng versions before 1.5,
3091 which lack png_longjmp.])],
3092 [[#ifdef HAVE_LIBPNG_PNG_H
3093 # include <libpng/png.h>
3094 #else
3095 # include <png.h>
3096 #endif
3097 ]])
3098 fi
3099 fi
3100 AC_SUBST(LIBPNG)
3101
3102 HAVE_ZLIB=no
3103 LIBZ=
3104 if test "${with_zlib}" != "no"; then
3105 OLIBS=$LIBS
3106 AC_SEARCH_LIBS([inflateEnd], [z], [HAVE_ZLIB=yes])
3107 LIBS=$OLIBS
3108 case $ac_cv_search_inflateEnd in
3109 -*) LIBZ=$ac_cv_search_inflateEnd ;;
3110 esac
3111 fi
3112 if test "${HAVE_ZLIB}" = "yes"; then
3113 AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).])
3114 ### mingw32 doesn't use -lz, since it loads the library dynamically.
3115 if test "${opsys}" = "mingw32"; then
3116 LIBZ=
3117 fi
3118 fi
3119 AC_SUBST(LIBZ)
3120
3121
3122 ### Use -ltiff if available, unless `--with-tiff=no'.
3123 ### mingw32 doesn't use -ltiff, since it loads the library dynamically.
3124 HAVE_TIFF=no
3125 LIBTIFF=
3126 if test "${opsys}" = "mingw32"; then
3127 if test "${with_tiff}" != "no"; then
3128 AC_CHECK_HEADER(tiffio.h, HAVE_TIFF=yes, HAVE_TIFF=no)
3129 fi
3130 if test "${HAVE_TIFF}" = "yes"; then
3131 AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
3132 fi
3133 elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
3134 if test "${with_tiff}" != "no"; then
3135 AC_CHECK_HEADER(tiffio.h,
3136 [tifflibs="-lz -lm"
3137 # At least one tiff package requires the jpeg library.
3138 if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
3139 AC_CHECK_LIB(tiff, TIFFGetVersion, HAVE_TIFF=yes, , $tifflibs)])
3140 fi
3141
3142 if test "${HAVE_TIFF}" = "yes"; then
3143 AC_DEFINE(HAVE_TIFF, 1, [Define to 1 if you have the tiff library (-ltiff).])
3144 dnl FIXME -lz -lm, as per libpng?
3145 LIBTIFF=-ltiff
3146 fi
3147 fi
3148 AC_SUBST(LIBTIFF)
3149
3150 ### Use -lgif or -lungif if available, unless `--with-gif=no'.
3151 ### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
3152 HAVE_GIF=no
3153 LIBGIF=
3154 if test "${opsys}" = "mingw32"; then
3155 if test "${with_gif}" != "no"; then
3156 AC_CHECK_HEADER(gif_lib.h, HAVE_GIF=yes, HAVE_GIF=no)
3157 fi
3158 if test "${HAVE_GIF}" = "yes"; then
3159 AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
3160 fi
3161 elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
3162 || test "${HAVE_W32}" = "yes"; then
3163 AC_CHECK_HEADER(gif_lib.h,
3164 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
3165 # Earlier versions can crash Emacs, but version 5.0 removes EGifPutExtensionLast.
3166 [AC_CHECK_LIB(gif, GifMakeMapObject, HAVE_GIF=yes,
3167 [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])])
3168
3169 if test "$HAVE_GIF" = yes; then
3170 LIBGIF=-lgif
3171 elif test "$HAVE_GIF" = maybe; then
3172 # If gif_lib.h but no libgif, try libungif.
3173 AC_CHECK_LIB(ungif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=no)
3174 test "$HAVE_GIF" = yes && LIBGIF=-lungif
3175 fi
3176
3177 if test "${HAVE_GIF}" = "yes"; then
3178 AC_DEFINE(HAVE_GIF, 1, [Define to 1 if you have a gif (or ungif) library.])
3179 fi
3180 fi
3181 AC_SUBST(LIBGIF)
3182
3183 dnl Check for required libraries.
3184 if test "${HAVE_X11}" = "yes"; then
3185 MISSING=""
3186 WITH_NO=""
3187 test "${with_xpm}" != "no" && test "${HAVE_XPM}" != "yes" &&
3188 MISSING="libXpm" && WITH_NO="--with-xpm=no"
3189 test "${with_jpeg}" != "no" && test "${HAVE_JPEG}" != "yes" &&
3190 MISSING="$MISSING libjpeg" && WITH_NO="$WITH_NO --with-jpeg=no"
3191 test "${with_png}" != "no" && test "${HAVE_PNG}" != "yes" &&
3192 MISSING="$MISSING libpng" && WITH_NO="$WITH_NO --with-png=no"
3193 test "${with_gif}" != "no" && test "${HAVE_GIF}" != "yes" &&
3194 MISSING="$MISSING libgif/libungif" && WITH_NO="$WITH_NO --with-gif=no"
3195 test "${with_tiff}" != "no" && test "${HAVE_TIFF}" != "yes" &&
3196 MISSING="$MISSING libtiff" && WITH_NO="$WITH_NO --with-tiff=no"
3197
3198 if test "X${MISSING}" != X; then
3199 AC_MSG_ERROR([The following required libraries were not found:
3200 $MISSING
3201 Maybe some development libraries/packages are missing?
3202 If you don't want to link with them give
3203 $WITH_NO
3204 as options to configure])
3205 fi
3206 fi
3207
3208 ### Use -lgpm if available, unless `--with-gpm=no'.
3209 HAVE_GPM=no
3210 LIBGPM=
3211 if test "${with_gpm}" != "no"; then
3212 AC_CHECK_HEADER(gpm.h,
3213 [AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes)])
3214
3215 if test "${HAVE_GPM}" = "yes"; then
3216 AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
3217 LIBGPM=-lgpm
3218 fi
3219 fi
3220 AC_SUBST(LIBGPM)
3221
3222 dnl Check for malloc/malloc.h on darwin
3223 AC_CHECK_HEADERS_ONCE(malloc/malloc.h)
3224
3225 GNUSTEP_CFLAGS=
3226 ### Use NeXTstep API to implement GUI.
3227 if test "${HAVE_NS}" = "yes"; then
3228 AC_DEFINE(HAVE_NS, 1, [Define to 1 if you are using the NeXTstep API, either GNUstep or Cocoa on Mac OS X.])
3229 if test "${NS_IMPL_COCOA}" = "yes"; then
3230 AC_DEFINE(NS_IMPL_COCOA, 1, [Define to 1 if you are using NS windowing under MacOS X.])
3231 fi
3232 if test "${NS_IMPL_GNUSTEP}" = "yes"; then
3233 AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
3234 # See also .m.o rule in Makefile.in */
3235 # FIXME: are all these flags really needed? Document here why. */
3236 GNUSTEP_CFLAGS="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
3237 ## Extra CFLAGS applied to src/*.m files.
3238 GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
3239 fi
3240 OTHER_FILES=ns-app
3241 fi
3242
3243 ### Use session management (-lSM -lICE) if available
3244 HAVE_X_SM=no
3245 LIBXSM=
3246 if test "${HAVE_X11}" = "yes"; then
3247 AC_CHECK_HEADER(X11/SM/SMlib.h,
3248 [AC_CHECK_LIB(SM, SmcOpenConnection, HAVE_X_SM=yes, , -lICE)])
3249
3250 if test "${HAVE_X_SM}" = "yes"; then
3251 AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
3252 LIBXSM="-lSM -lICE"
3253 fi
3254 fi
3255 AC_SUBST(LIBXSM)
3256
3257 ### Use XRandr (-lXrandr) if available
3258 HAVE_XRANDR=no
3259 if test "${HAVE_X11}" = "yes"; then
3260 XRANDR_REQUIRED=1.2.2
3261 XRANDR_MODULES="xrandr >= $XRANDR_REQUIRED"
3262 PKG_CHECK_MODULES(XRANDR, $XRANDR_MODULES, HAVE_XRANDR=yes, HAVE_XRANDR=no)
3263 if test $HAVE_XRANDR = no; then
3264 # Test old way in case pkg-config doesn't have it (older machines).
3265 AC_CHECK_HEADER(X11/extensions/Xrandr.h,
3266 [AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)])
3267 if test $HAVE_XRANDR = yes; then
3268 XRANDR_LIBS=-lXrandr
3269 AC_SUBST(XRANDR_LIBS)
3270 fi
3271 fi
3272 if test $HAVE_XRANDR = yes; then
3273 SAVE_CFLAGS="$CFLAGS"
3274 SAVE_LIBS="$LIBS"
3275 CFLAGS="$XRANDR_CFLAGS $CFLAGS"
3276 LIBS="$XRANDR_LIBS $LIBS"
3277 AC_CHECK_FUNCS(XRRGetOutputPrimary XRRGetScreenResourcesCurrent)
3278 CFLAGS="$SAVE_CFLAGS"
3279 LIBS="$SAVE_LIBS"
3280
3281 AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
3282 fi
3283 fi
3284
3285 ### Use Xinerama (-lXinerama) if available
3286 HAVE_XINERAMA=no
3287 if test "${HAVE_X11}" = "yes"; then
3288 XINERAMA_REQUIRED=1.0.2
3289 XINERAMA_MODULES="xinerama >= $XINERAMA_REQUIRED"
3290 PKG_CHECK_MODULES(XINERAMA, $XINERAMA_MODULES, HAVE_XINERAMA=yes,
3291 HAVE_XINERAMA=no)
3292 if test $HAVE_XINERAMA = no; then
3293 # Test old way in case pkg-config doesn't have it (older machines).
3294 AC_CHECK_HEADER(X11/extensions/Xinerama.h,
3295 [AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
3296 if test $HAVE_XINERAMA = yes; then
3297 XINERAMA_LIBS=-lXinerama
3298 AC_SUBST(XINERAMA_LIBS)
3299 fi
3300 fi
3301 if test $HAVE_XINERAMA = yes; then
3302 AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
3303 fi
3304 fi
3305
3306
3307 ### Use libxml (-lxml2) if available
3308 ### mingw32 doesn't use -lxml2, since it loads the library dynamically.
3309 HAVE_LIBXML2=no
3310 if test "${with_xml2}" != "no"; then
3311 ### I'm not sure what the version number should be, so I just guessed.
3312 PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
3313 # Built-in libxml2 on OS X 10.8 lacks libxml-2.0.pc.
3314 if test "${HAVE_LIBXML2}" != "yes" -a "$opsys" = "darwin"; then
3315 SAVE_CPPFLAGS="$CPPFLAGS"
3316 CPPFLAGS="$CPPFLAGS -I$xcsdkdir/usr/include/libxml2"
3317 AC_CHECK_HEADER(libxml/HTMLparser.h,
3318 [AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, ,
3319 [#include <libxml/HTMLparser.h>])])
3320 CPPFLAGS="$SAVE_CPPFLAGS"
3321 if test "${HAVE_LIBXML2}" = "yes"; then
3322 LIBXML2_CFLAGS="-I'$xcsdkdir/usr/include/libxml2'"
3323 LIBXML2_LIBS="-lxml2"
3324 fi
3325 fi
3326 if test "${HAVE_LIBXML2}" = "yes"; then
3327 if test "${opsys}" != "mingw32"; then
3328 AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no
3329 [$LIBXML2_LIBS])
3330 else
3331 LIBXML2_LIBS=""
3332 fi
3333 if test "${HAVE_LIBXML2}" = "yes"; then
3334 AC_DEFINE(HAVE_LIBXML2, 1, [Define to 1 if you have the libxml library (-lxml2).])
3335 else
3336 LIBXML2_LIBS=""
3337 LIBXML2_CFLAGS=""
3338 fi
3339 fi
3340 fi
3341 AC_SUBST(LIBXML2_LIBS)
3342 AC_SUBST(LIBXML2_CFLAGS)
3343
3344 # If netdb.h doesn't declare h_errno, we must declare it by hand.
3345 # On MinGW, that is provided by nt/inc/sys/socket.h and w32.c.
3346 if test "${opsys}" = "mingw32"; then
3347 emacs_cv_netdb_declares_h_errno=yes
3348 fi
3349 AC_CACHE_CHECK(whether netdb declares h_errno,
3350 emacs_cv_netdb_declares_h_errno,
3351 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
3352 [[return h_errno;]])],
3353 emacs_cv_netdb_declares_h_errno=yes, emacs_cv_netdb_declares_h_errno=no)])
3354 if test $emacs_cv_netdb_declares_h_errno = yes; then
3355 AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
3356 fi
3357
3358 # Check for mail-locking functions in a "mail" library. Probably this should
3359 # have the same check as for liblockfile below.
3360 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
3361 if test $have_mail = yes; then
3362 LIBS_MAIL=-lmail
3363 AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
3364
3365 OLD_LIBS=$LIBS
3366 LIBS="$LIBS_MAIL $LIBS"
3367 AC_CHECK_FUNCS(touchlock)
3368 LIBS=$OLD_LIBS
3369 else
3370 LIBS_MAIL=
3371 fi
3372 dnl Debian, at least:
3373 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
3374 if test $have_lockfile = yes; then
3375 LIBS_MAIL=-llockfile
3376 AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
3377 else
3378 # If we have the shared liblockfile, assume we must use it for mail
3379 # locking (e.g. Debian). If we couldn't link against liblockfile
3380 # (no liblockfile.a installed), ensure that we don't need to.
3381 dnl This works for files generally, not just executables.
3382 dnl Should we look elsewhere for it? Maybe examine /etc/ld.so.conf?
3383 AC_CHECK_PROG(liblockfile, liblockfile.so, yes, no,
3384 /usr/lib:/lib:/usr/local/lib:$LD_LIBRARY_PATH)
3385 if test $ac_cv_prog_liblockfile = yes; then
3386 AC_MSG_ERROR([Shared liblockfile found but can't link against it.
3387 This probably means that movemail could lose mail.
3388 There may be a `development' package to install containing liblockfile.])
3389 fi
3390 fi
3391 AC_CHECK_HEADERS_ONCE(maillock.h)
3392 AC_SUBST(LIBS_MAIL)
3393
3394 ## Define MAIL_USE_FLOCK (or LOCKF) if the mailer uses flock (or lockf) to
3395 ## interlock access to the mail spool. The alternative is a lock file named
3396 ## /usr/spool/mail/$USER.lock.
3397 mail_lock=no
3398 case "$opsys" in
3399 aix4-2) mail_lock="lockf" ;;
3400
3401 gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
3402
3403 ## On GNU/Linux systems, both methods are used by various mail programs.
3404 ## I assume most people are using newer mailers that have heard of flock.
3405 ## Change this if you need to.
3406 ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
3407 ## configure gets the right answers, and that means *NOT* using flock.
3408 ## Using flock is guaranteed to be the wrong thing. See Debian Policy
3409 ## for details.'' and then uses `#ifdef DEBIAN'. Unfortunately the
3410 ## Debian maintainer hasn't provided a clean fix for Emacs.
3411 ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
3412 ## HAVE_MAILLOCK_H are defined, so the following appears to be the
3413 ## correct logic. -- fx
3414 ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
3415 ## liblockfile is a Free Software replacement for libmail, used on
3416 ## Debian systems and elsewhere. -rfr.
3417 gnu-*)
3418 mail_lock="flock"
3419 if test $have_mail = yes || test $have_lockfile = yes; then
3420 test $ac_cv_header_maillock_h = yes && mail_lock=no
3421 fi
3422 ;;
3423
3424 mingw32)
3425 mail_lock="none-needed" ;;
3426 esac
3427
3428 BLESSMAIL_TARGET=
3429 case "$mail_lock" in
3430 flock) AC_DEFINE(MAIL_USE_FLOCK, 1, [Define if the mailer uses flock to interlock the mail spool.]) ;;
3431
3432 lockf) AC_DEFINE(MAIL_USE_LOCKF, 1, [Define if the mailer uses lockf to interlock the mail spool.]) ;;
3433
3434 none-needed) ;;
3435
3436 *) BLESSMAIL_TARGET="need-blessmail" ;;
3437 esac
3438 AC_SUBST(BLESSMAIL_TARGET)
3439
3440 OLD_LIBS=$LIBS
3441 LIBS="$LIB_MATH $LIBS"
3442 AC_CHECK_FUNCS(accept4 gethostname \
3443 getrusage get_current_dir_name \
3444 lrand48 random rint \
3445 select getpagesize setlocale \
3446 getrlimit setrlimit shutdown getaddrinfo \
3447 strsignal setitimer \
3448 sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
3449 gai_strerror getline getdelim sync \
3450 getpwent endpwent getgrent endgrent \
3451 cfmakeraw cfsetspeed copysign __executable_start log2)
3452 LIBS=$OLD_LIBS
3453
3454 dnl No need to check for aligned_alloc and posix_memalign if using
3455 dnl gmalloc.o, as it supplies them. Don't use these functions on
3456 dnl Darwin as they are incompatible with unexmacosx.c.
3457 if test -z "$GMALLOC_OBJ" && test "$opsys" != darwin; then
3458 AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
3459 fi
3460
3461 dnl Cannot use AC_CHECK_FUNCS
3462 AC_CACHE_CHECK([for __builtin_unwind_init],
3463 emacs_cv_func___builtin_unwind_init,
3464 [AC_LINK_IFELSE([AC_LANG_PROGRAM([], [__builtin_unwind_init ();])],
3465 emacs_cv_func___builtin_unwind_init=yes,
3466 emacs_cv_func___builtin_unwind_init=no)])
3467 if test $emacs_cv_func___builtin_unwind_init = yes; then
3468 AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
3469 [Define to 1 if you have the `__builtin_unwind_init' function.])
3470 fi
3471
3472 AC_CHECK_HEADERS_ONCE(sys/un.h)
3473
3474 AC_FUNC_FSEEKO
3475
3476 # UNIX98 PTYs.
3477 AC_CHECK_FUNCS(grantpt)
3478
3479 # PTY-related GNU extensions.
3480 AC_CHECK_FUNCS(getpt posix_openpt)
3481
3482 # Check this now, so that we will NOT find the above functions in ncurses.
3483 # That is because we have not set up to link ncurses in lib-src.
3484 # It's better to believe a function is not available
3485 # than to expect to find it in ncurses.
3486 # Also we need tputs and friends to be able to build at all.
3487 AC_MSG_CHECKING([for library containing tputs])
3488 # Run a test program that contains a call to tputs, a call that is
3489 # never executed. This tests whether a pre-'main' dynamic linker
3490 # works with the library. It's too much trouble to actually call
3491 # tputs in the test program, due to portability hassles. When
3492 # cross-compiling, assume the test program will run if it links.
3493 AC_DEFUN([tputs_link_source], [
3494 AC_LANG_SOURCE(
3495 [[extern void tputs (const char *, int, int (*)(int));
3496 int main (int argc, char **argv)
3497 {
3498 if (argc == 10000)
3499 tputs (argv[0], 0, 0);
3500 return 0;
3501 }]])
3502 ])
3503 if test "${opsys}" = "mingw32"; then
3504 msg='none required'
3505 else
3506 # Maybe curses should be tried earlier?
3507 # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9736#35
3508 for tputs_library in '' tinfo ncurses terminfo termcap curses; do
3509 OLIBS=$LIBS
3510 if test -z "$tputs_library"; then
3511 LIBS_TERMCAP=
3512 msg='none required'
3513 else
3514 LIBS_TERMCAP=-l$tputs_library
3515 msg=$LIBS_TERMCAP
3516 LIBS="$LIBS_TERMCAP $LIBS"
3517 fi
3518 AC_RUN_IFELSE([tputs_link_source], [], [msg=no],
3519 [AC_LINK_IFELSE([tputs_link_source], [], [msg=no])])
3520 LIBS=$OLIBS
3521 if test "X$msg" != Xno; then
3522 break
3523 fi
3524 done
3525 fi
3526 AC_MSG_RESULT([$msg])
3527 if test "X$msg" = Xno; then
3528 AC_MSG_ERROR([The required function `tputs' was not found in any library.
3529 The following libraries were tried (in order):
3530 libtinfo, libncurses, libterminfo, libtermcap, libcurses
3531 Please try installing whichever of these libraries is most appropriate
3532 for your system, together with its header files.
3533 For example, a libncurses-dev(el) or similar package.])
3534 fi
3535
3536 ## Use termcap instead of terminfo?
3537 ## Only true for: freebsd < 40000, ms-w32, msdos, netbsd < 599002500.
3538 TERMINFO=yes
3539 ## FIXME? In the cases below where we unconditionally set
3540 ## LIBS_TERMCAP="-lncurses", this overrides LIBS_TERMCAP = -ltinfo,
3541 ## if that was found above to have tputs.
3542 ## Should we use the gnu* logic everywhere?
3543 case "$opsys" in
3544 ## darwin: Prevents crashes when running Emacs in Terminal.app under 10.2.
3545 ## The ncurses library has been moved out of the System framework in
3546 ## Mac OS X 10.2. So if configure detects it, set the command-line
3547 ## option to use it.
3548 darwin) LIBS_TERMCAP="-lncurses" ;;
3549
3550 gnu*) test -z "$LIBS_TERMCAP" && LIBS_TERMCAP="-lncurses" ;;
3551
3552 freebsd)
3553 AC_MSG_CHECKING([whether FreeBSD is new enough to use terminfo])
3554 AC_CACHE_VAL(emacs_cv_freebsd_terminfo,
3555 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <osreldate.h>]],
3556 [[#if __FreeBSD_version < 400000
3557 fail;
3558 #endif
3559 ]])], emacs_cv_freebsd_terminfo=yes, emacs_cv_freebsd_terminfo=no)])
3560
3561 AC_MSG_RESULT($emacs_cv_freebsd_terminfo)
3562
3563 if test $emacs_cv_freebsd_terminfo = yes; then
3564 LIBS_TERMCAP="-lncurses"
3565 else
3566 TERMINFO=no
3567 LIBS_TERMCAP="-ltermcap"
3568 fi
3569 ;;
3570
3571 mingw32)
3572 TERMINFO=no
3573 LIBS_TERMCAP=
3574 ;;
3575
3576 netbsd)
3577 if test "x$LIBS_TERMCAP" != "x-lterminfo"; then
3578 TERMINFO=no
3579 LIBS_TERMCAP="-ltermcap"
3580 fi
3581 ;;
3582
3583 openbsd | dragonfly) LIBS_TERMCAP="-lncurses" ;;
3584
3585 ## hpux: Make sure we get select from libc rather than from libcurses
3586 ## because libcurses on HPUX 10.10 has a broken version of select.
3587 ## We used to use -lc -lcurses, but this may be cleaner.
3588 ## FIXME? But TERMINFO = yes on hpux (it used to be explicitly
3589 # set that way, now it uses the default). Isn't this a contradiction?
3590 hpux*) LIBS_TERMCAP="-ltermcap" ;;
3591
3592 esac
3593
3594 TERMCAP_OBJ=tparam.o
3595 if test $TERMINFO = yes; then
3596 AC_DEFINE(TERMINFO, 1, [Define to 1 if you use terminfo instead of termcap.])
3597 TERMCAP_OBJ=terminfo.o
3598 fi
3599 if test "X$LIBS_TERMCAP" = "X-lncurses"; then
3600 AC_DEFINE(USE_NCURSES, 1, [Define to 1 if you use ncurses.])
3601 fi
3602 AC_SUBST(LIBS_TERMCAP)
3603 AC_SUBST(TERMCAP_OBJ)
3604
3605
3606 # Do we have res_init, for detecting changes in /etc/resolv.conf?
3607 # On Darwin, res_init appears not to be useful: see bug#562 and
3608 # http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01467.html
3609 resolv=no
3610
3611 if test $opsys != darwin; then
3612
3613 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
3614 #include <arpa/nameser.h>
3615 #include <resolv.h>]],
3616 [[return res_init();]])],
3617 have_res_init=yes, have_res_init=no)
3618 if test "$have_res_init" = no; then
3619 OLIBS="$LIBS"
3620 LIBS="$LIBS -lresolv"
3621 AC_MSG_CHECKING(for res_init with -lresolv)
3622 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>
3623 #include <arpa/nameser.h>
3624 #include <resolv.h>]],
3625 [[return res_init();]])],
3626 have_res_init=yes, have_res_init=no)
3627 AC_MSG_RESULT($have_res_init)
3628 if test "$have_res_init" = yes ; then
3629 resolv=yes
3630 fi
3631 LIBS="$OLIBS"
3632 fi
3633
3634 if test "$have_res_init" = yes; then
3635 AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if res_init is available.])
3636 fi
3637 fi dnl !darwin
3638
3639 # Do we need the Hesiod library to provide the support routines?
3640 dnl FIXME? Should we be skipping this on Darwin too?
3641 LIBHESIOD=
3642 if test "$with_hesiod" != no ; then
3643 # Don't set $LIBS here -- see comments above. FIXME which comments?
3644 AC_CHECK_FUNC(res_send, , [AC_CHECK_FUNC(__res_send, ,
3645 [AC_CHECK_LIB(resolv, res_send, resolv=yes,
3646 [AC_CHECK_LIB(resolv, __res_send, resolv=yes)])])])
3647 if test "$resolv" = yes ; then
3648 RESOLVLIB=-lresolv
3649 else
3650 RESOLVLIB=
3651 fi
3652 AC_CHECK_FUNC(hes_getmailhost, , [AC_CHECK_LIB(hesiod, hes_getmailhost,
3653 hesiod=yes, :, $RESOLVLIB)])
3654
3655 if test x"$hesiod" = xyes; then
3656 LIBHESIOD=-lhesiod
3657 fi
3658 fi
3659 AC_SUBST(LIBHESIOD)
3660
3661 # Do we need libresolv (due to res_init or Hesiod)?
3662 if test "$resolv" = yes && test $opsys != darwin; then
3663 LIBRESOLV=-lresolv
3664 else
3665 LIBRESOLV=
3666 fi
3667 AC_SUBST(LIBRESOLV)
3668
3669 # These tell us which Kerberos-related libraries to use.
3670 COM_ERRLIB=
3671 CRYPTOLIB=
3672 KRB5LIB=
3673 DESLIB=
3674 KRB4LIB=
3675
3676 if test "${with_kerberos}" != no; then
3677 OLD_LIBS=$LIBS
3678 AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
3679 if test $have_com_err = yes; then
3680 COM_ERRLIB=-lcom_err
3681 LIBS="$COM_ERRLIB $LIBS"
3682 fi
3683 AC_CHECK_LIB(crypto, mit_des_cbc_encrypt, have_crypto=yes, have_crypto=no)
3684 if test $have_crypto = yes; then
3685 CRYPTOLIB=-lcrypto
3686 LIBS="$CRYPTOLIB $LIBS"
3687 fi
3688 AC_CHECK_LIB(k5crypto, mit_des_cbc_encrypt, have_k5crypto=yes, have_k5crypto=no)
3689 if test $have_k5crypto = yes; then
3690 CRYPTOLIB=-lk5crypto
3691 LIBS="$CRYPTOLIB $LIBS"
3692 fi
3693 AC_CHECK_LIB(krb5, krb5_init_context, have_krb5=yes, have_krb5=no)
3694 if test $have_krb5=yes; then
3695 KRB5LIB=-lkrb5
3696 LIBS="$KRB5LIB $LIBS"
3697 fi
3698 dnl FIXME Simplify. Does not match 22 logic, thanks to default_off?
3699 if test "${with_kerberos5}" = no; then
3700 AC_CHECK_LIB(des425, des_cbc_encrypt, have_des425=yes, have_des425=no )
3701 if test $have_des425 = yes; then
3702 DESLIB=-ldes425
3703 LIBS="$DESLIB $LIBS"
3704 else
3705 AC_CHECK_LIB(des, des_cbc_encrypt, have_des=yes, have_des=no)
3706 if test $have_des = yes; then
3707 DESLIB=-ldes
3708 LIBS="$DESLIB $LIBS"
3709 fi
3710 fi
3711 AC_CHECK_LIB(krb4, krb_get_cred, have_krb4=yes, have_krb4=no)
3712 if test $have_krb4 = yes; then
3713 KRB4LIB=-lkrb4
3714 LIBS="$KRB4LIB $LIBS"
3715 else
3716 AC_CHECK_LIB(krb, krb_get_cred, have_krb=yes, have_krb=no)
3717 if test $have_krb = yes; then
3718 KRB4LIB=-lkrb
3719 LIBS="$KRB4LIB $LIBS"
3720 fi
3721 fi
3722 fi
3723
3724 if test "${with_kerberos5}" != no; then
3725 AC_CHECK_HEADERS(krb5.h,
3726 [AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,,
3727 [#include <krb5.h>])])
3728 else
3729 AC_CHECK_HEADERS(krb.h,,
3730 [AC_CHECK_HEADERS(kerberosIV/krb.h,,
3731 [AC_CHECK_HEADERS(kerberos/krb.h)])])
3732 fi
3733 AC_CHECK_HEADERS(com_err.h)
3734 LIBS=$OLD_LIBS
3735 fi
3736
3737 AC_SUBST(COM_ERRLIB)
3738 AC_SUBST(CRYPTOLIB)
3739 AC_SUBST(KRB5LIB)
3740 AC_SUBST(DESLIB)
3741 AC_SUBST(KRB4LIB)
3742
3743 AC_CHECK_HEADERS(valgrind/valgrind.h)
3744
3745 AC_CHECK_FUNCS_ONCE(tzset)
3746 AC_MSG_CHECKING(whether localtime caches TZ)
3747 AC_CACHE_VAL(emacs_cv_localtime_cache,
3748 [if test x$ac_cv_func_tzset = xyes; then
3749 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
3750 char TZ_GMT0[] = "TZ=GMT0";
3751 char TZ_PST8[] = "TZ=PST8";
3752 main()
3753 {
3754 time_t now = time ((time_t *) 0);
3755 int hour_GMT0, hour_unset;
3756 if (putenv (TZ_GMT0) != 0)
3757 exit (1);
3758 hour_GMT0 = localtime (&now)->tm_hour;
3759 unsetenv("TZ");
3760 hour_unset = localtime (&now)->tm_hour;
3761 if (putenv (TZ_PST8) != 0)
3762 exit (1);
3763 if (localtime (&now)->tm_hour == hour_GMT0)
3764 exit (1);
3765 unsetenv("TZ");
3766 if (localtime (&now)->tm_hour != hour_unset)
3767 exit (1);
3768 exit (0);
3769 }]])], emacs_cv_localtime_cache=no, emacs_cv_localtime_cache=yes,
3770 [# If we have tzset, assume the worst when cross-compiling.
3771 emacs_cv_localtime_cache=yes])
3772 else
3773 # If we lack tzset, report that localtime does not cache TZ,
3774 # since we can't invalidate the cache if we don't have tzset.
3775 emacs_cv_localtime_cache=no
3776 fi])dnl
3777 AC_MSG_RESULT($emacs_cv_localtime_cache)
3778 if test $emacs_cv_localtime_cache = yes; then
3779 AC_DEFINE(LOCALTIME_CACHE, 1,
3780 [Define to 1 if localtime caches TZ.])
3781 fi
3782
3783 ok_so_far=yes
3784 AC_CHECK_FUNC(socket, , ok_so_far=no)
3785 if test $ok_so_far = yes; then
3786 AC_CHECK_HEADER(netinet/in.h, , ok_so_far=no)
3787 fi
3788 if test $ok_so_far = yes; then
3789 AC_CHECK_HEADER(arpa/inet.h, , ok_so_far=no)
3790 fi
3791 if test $ok_so_far = yes; then
3792 dnl Fixme: Not used. Should this be HAVE_SOCKETS?
3793 AC_DEFINE(HAVE_INET_SOCKETS, 1,
3794 [Define to 1 if you have inet sockets.])
3795 fi
3796
3797 dnl Check for a Solaris 2.4 vfork bug that Autoconf misses (through 2.69).
3798 dnl This can be removed once we assume Autoconf 2.70.
3799 case $canonical in
3800 *-solaris2.4 | *-solaris2.4.*)
3801 dnl Disable the Autoconf-generated vfork test.
3802 : ${ac_cv_func_vfork_works=no};;
3803 esac
3804
3805 AC_FUNC_FORK
3806
3807 AC_CHECK_FUNCS(snprintf)
3808
3809 dnl Check for glib. This differs from other library checks in that
3810 dnl Emacs need not link to glib unless some other library is already
3811 dnl linking to glib. Although glib provides no facilities that Emacs
3812 dnl needs for its own purposes, when glib is present Emacs needs to
3813 dnl use primitives like g_main_context_query to avoid clashing with
3814 dnl glib at a low level.
3815 dnl
3816 dnl Check this late, since it depends on $GTK_CFLAGS etc.
3817 XGSELOBJ=
3818 OLDCFLAGS="$CFLAGS"
3819 OLDLIBS="$LIBS"
3820 CFLAGS="$CFLAGS $GTK_CFLAGS $RSVG_CFLAGS $DBUS_CFLAGS $SETTINGS_CFLAGS"
3821 LIBS="$LIBS $GTK_LIBS $RSVG_LIBS $DBUS_LIBS $SETTINGS_LIBS"
3822 CFLAGS="$CFLAGS $GFILENOTIFY_CFLAGS"
3823 LIBS="$LIBS $GFILENOTIFY_LIBS"
3824 AC_MSG_CHECKING([whether GLib is linked in])
3825 AC_LINK_IFELSE([AC_LANG_PROGRAM(
3826 [[#include <glib.h>
3827 ]],
3828 [[g_print ("Hello world");]])],
3829 [links_glib=yes],
3830 [links_glib=no])
3831 AC_MSG_RESULT([$links_glib])
3832 if test "${links_glib}" = "yes"; then
3833 AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if GLib is linked in.])
3834 if test "$HAVE_NS" = no;then
3835 XGSELOBJ=xgselect.o
3836 fi
3837 fi
3838 CFLAGS="$OLDCFLAGS"
3839 LIBS="$OLDLIBS"
3840 AC_SUBST(XGSELOBJ)
3841
3842 dnl Adapted from Haible's version.
3843 AC_CACHE_CHECK([for nl_langinfo and CODESET], emacs_cv_langinfo_codeset,
3844 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
3845 [[char* cs = nl_langinfo(CODESET);]])],
3846 emacs_cv_langinfo_codeset=yes,
3847 emacs_cv_langinfo_codeset=no)
3848 ])
3849 if test $emacs_cv_langinfo_codeset = yes; then
3850 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
3851 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
3852 fi
3853
3854 AC_TYPE_MBSTATE_T
3855
3856 AC_CACHE_CHECK([for C restricted array declarations], emacs_cv_c_restrict_arr,
3857 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[void fred (int x[__restrict]);]], [[]])],
3858 emacs_cv_c_restrict_arr=yes, emacs_cv_c_restrict_arr=no)])
3859 if test "$emacs_cv_c_restrict_arr" = yes; then
3860 AC_DEFINE(__restrict_arr, __restrict,
3861 [Define to compiler's equivalent of C99 restrict keyword in array
3862 declarations. Define as empty for no equivalent.])
3863 fi
3864
3865 dnl Fixme: AC_SYS_POSIX_TERMIOS should probably be used, but it's not clear
3866 dnl how the tty code is related to POSIX and/or other versions of termios.
3867 dnl The following looks like a useful start.
3868 dnl
3869 dnl AC_SYS_POSIX_TERMIOS
3870 dnl if test $ac_cv_sys_posix_termios = yes; then
3871 dnl AC_DEFINE(HAVE_TERMIOS, 1, [Define to 1 if you have POSIX-style functions
3872 dnl and macros for terminal control.])
3873 dnl AC_DEFINE(HAVE_TCATTR, 1, [Define to 1 if you have tcgetattr and tcsetattr.])
3874 dnl fi
3875
3876 dnl Turned on June 1996 supposing nobody will mind it.
3877 dnl MinGW emulates passwd database, so this feature doesn't make sense there.
3878 if test "${opsys}" != "mingw32"; then
3879 AC_DEFINE(AMPERSAND_FULL_NAME, 1, [Define to use the convention that &
3880 in the full name stands for the login id.])
3881 fi
3882
3883 dnl Everybody supports this, except MS.
3884 dnl Seems like the kind of thing we should be testing for, though.
3885 ## Note: PTYs are broken on darwin <6. Use at your own risk.
3886 if test "${opsys}" != "mingw32"; then
3887 AC_DEFINE(HAVE_PTYS, 1, [Define if the system supports pty devices.])
3888 fi
3889
3890 dnl Everybody supports this, except MS-DOS.
3891 dnl Seems like the kind of thing we should be testing for, though.
3892 dnl Compare with HAVE_INET_SOCKETS (which is unused...) above.
3893 AC_DEFINE(HAVE_SOCKETS, 1, [Define if the system supports
3894 4.2-compatible sockets.])
3895
3896 AH_TEMPLATE(INTERNAL_TERMINAL, [This is substituted when $TERM is "internal".])
3897
3898 AH_TEMPLATE(NULL_DEVICE, [Name of the file to open to get
3899 a null file, or a data sink.])
3900 if test "${opsys}" = "mingw32"; then
3901 AC_DEFINE(NULL_DEVICE, ["NUL:"])
3902 else
3903 AC_DEFINE(NULL_DEVICE, ["/dev/null"])
3904 fi
3905
3906 if test "${opsys}" = "mingw32"; then
3907 SEPCHAR=';'
3908 else
3909 SEPCHAR=':'
3910 fi
3911 AC_DEFINE_UNQUOTED(SEPCHAR, ['$SEPCHAR'], [Character that separates PATH elements.])
3912 dnl This is for MinGW, and is used in test/automated/Makefile.in.
3913 dnl The MSYS Bash has heuristics for replacing ':' with ';' when it
3914 dnl decides that a command-line argument to be passed to a MinGW program
3915 dnl is a PATH-style list of directories. But that heuristics plays it
3916 dnl safe, and only does the replacement when it is _absolutely_ sure it
3917 dnl sees a colon-separated list of file names; e.g. ":." is left alone,
3918 dnl which breaks in-tree builds. So we do this manually instead.
3919 dnl Note that we cannot rely on PATH_SEPARATOR, as that one will always
3920 dnl be computed as ':' in MSYS Bash.
3921 AC_SUBST(SEPCHAR)
3922
3923 dnl Everybody supports this, except MS-DOS.
3924 AC_DEFINE(subprocesses, 1, [Define to enable asynchronous subprocesses.])
3925
3926 AC_DEFINE(USER_FULL_NAME, [pw->pw_gecos], [How to get a user's full name.])
3927
3928
3929 AC_DEFINE(DIRECTORY_SEP, ['/'],
3930 [Character that separates directories in a file name.])
3931
3932 if test "${opsys}" = "mingw32"; then
3933 AC_DEFINE(IS_DEVICE_SEP(_c_), [((_c_) == ':')],
3934 [Returns true if character is a device separator.])
3935
3936 AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == '/' || (_c_) == '\\')],
3937 [Returns true if character is a directory separator.])
3938
3939 AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_) || IS_DEVICE_SEP(_c_))],
3940 [Returns true if character is any form of separator.])
3941 else
3942 AC_DEFINE(IS_DEVICE_SEP(_c_), 0,
3943 [Returns true if character is a device separator.])
3944
3945 AC_DEFINE(IS_DIRECTORY_SEP(_c_), [((_c_) == DIRECTORY_SEP)],
3946 [Returns true if character is a directory separator.])
3947
3948 AC_DEFINE(IS_ANY_SEP(_c_), [(IS_DIRECTORY_SEP (_c_))],
3949 [Returns true if character is any form of separator.])
3950 fi
3951
3952 AH_TEMPLATE(NO_EDITRES, [Define if XEditRes should not be used.])
3953
3954 case $opsys in
3955 aix4-2)
3956 dnl Unfortunately without libXmu we cannot support EditRes.
3957 if test "x$ac_cv_search_XmuConvertStandardSelection" = xno; then
3958 AC_DEFINE(NO_EDITRES, 1)
3959 fi
3960 ;;
3961
3962 hpux*)
3963 dnl Assar Westerlund <assar@sics.se> says this is necessary for
3964 dnl HP-UX 10.20, and that it works for HP-UX 0 as well.
3965 AC_DEFINE(NO_EDITRES, 1)
3966 ;;
3967 esac
3968
3969
3970 case $opsys in
3971 irix6-5 | sol2* | unixware )
3972 dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
3973 dnl instead, there's a system variable _sys_nsig. Unfortunately, we
3974 dnl need the constant to dimension an array. So wire in the appropriate
3975 dnl value here.
3976 AC_DEFINE(NSIG_MINIMUM, 32, [Minimum value of NSIG.])
3977 ;;
3978 esac
3979
3980 emacs_broken_SIGIO=no
3981
3982 case $opsys in
3983 dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
3984 dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
3985 hpux* | irix6-5 | openbsd | sol2* | unixware )
3986 emacs_broken_SIGIO=yes
3987 ;;
3988
3989 aix4-2)
3990 dnl On AIX Emacs uses the gmalloc.c malloc implementation. But given
3991 dnl the way this system works, libc functions that return malloced
3992 dnl memory use the libc malloc implementation. Calling xfree or
3993 dnl xrealloc on the results of such functions results in a crash.
3994 dnl
3995 dnl One solution for this could be to define SYSTEM_MALLOC in configure,
3996 dnl but that does not currently work on this system.
3997 dnl
3998 dnl It is possible to completely override the malloc implementation on
3999 dnl AIX, but that involves putting the malloc functions in a shared
4000 dnl library and setting the MALLOCTYPE environment variable to point to
4001 dnl that shared library.
4002 dnl
4003 dnl Emacs currently calls xrealloc on the results of get_current_dir name,
4004 dnl to avoid a crash just use the Emacs implementation for that function.
4005 dnl
4006 dnl FIXME We could change the AC_CHECK_FUNCS call near the start
4007 dnl of this file, so that we do not check for get_current_dir_name
4008 dnl on AIX. But that might be fragile if something else ends
4009 dnl up testing for get_current_dir_name as a dependency.
4010 AC_DEFINE(BROKEN_GET_CURRENT_DIR_NAME, 1, [Define if
4011 get_current_dir_name should not be used.])
4012 ;;
4013
4014 freebsd)
4015 dnl Circumvent a bug in FreeBSD. In the following sequence of
4016 dnl writes/reads on a PTY, read(2) returns bogus data:
4017 dnl
4018 dnl write(2) 1022 bytes
4019 dnl write(2) 954 bytes, get EAGAIN
4020 dnl read(2) 1024 bytes in process_read_output
4021 dnl read(2) 11 bytes in process_read_output
4022 dnl
4023 dnl That is, read(2) returns more bytes than have ever been written
4024 dnl successfully. The 1033 bytes read are the 1022 bytes written
4025 dnl successfully after processing (for example with CRs added if the
4026 dnl terminal is set up that way which it is here). The same bytes will
4027 dnl be seen again in a later read(2), without the CRs.
4028 AC_DEFINE(BROKEN_PTY_READ_AFTER_EAGAIN, 1, [Define on FreeBSD to
4029 work around an issue when reading from a PTY.])
4030 ;;
4031 esac
4032
4033 case $opsys in
4034 gnu-* | sol2-10 )
4035 dnl FIXME Can't we test if this exists (eg /proc/$$)?
4036 AC_DEFINE(HAVE_PROCFS, 1, [Define if you have the /proc filesystem.])
4037 ;;
4038 esac
4039
4040 case $opsys in
4041 darwin | dragonfly | freebsd | netbsd | openbsd )
4042 AC_DEFINE(DONT_REOPEN_PTY, 1, [Define if process.c does not need to
4043 close a pty to make it a controlling terminal (it is already a
4044 controlling terminal of the subprocess, because we did ioctl TIOCSCTTY).])
4045 ;;
4046 esac
4047
4048 dnl FIXME Surely we can test for this rather than hard-code it.
4049 case $opsys in
4050 netbsd | openbsd) sound_device="/dev/audio" ;;
4051 *) sound_device="/dev/dsp" ;;
4052 esac
4053
4054 dnl Used in sound.c
4055 AC_DEFINE_UNQUOTED(DEFAULT_SOUND_DEVICE, "$sound_device",
4056 [Name of the default sound device.])
4057
4058
4059 dnl Emacs can read input using SIGIO and buffering characters itself,
4060 dnl or using CBREAK mode and making C-g cause SIGINT.
4061 dnl The choice is controlled by the variable interrupt_input.
4062 dnl
4063 dnl Define INTERRUPT_INPUT to make interrupt_input = 1 the default (use SIGIO)
4064 dnl
4065 dnl Emacs uses the presence of the USABLE_SIGIO macro
4066 dnl to indicate whether or not signal-driven I/O is possible. It uses
4067 dnl INTERRUPT_INPUT to decide whether to use it by default.
4068 dnl
4069 dnl SIGIO can be used only on systems that implement it (4.2 and 4.3).
4070 dnl CBREAK mode has two disadvantages
4071 dnl 1) At least in 4.2, it is impossible to handle the Meta key properly.
4072 dnl I hear that in system V this problem does not exist.
4073 dnl 2) Control-G causes output to be discarded.
4074 dnl I do not know whether this can be fixed in system V.
4075 dnl
4076 dnl Another method of doing input is planned but not implemented.
4077 dnl It would have Emacs fork off a separate process
4078 dnl to read the input and send it to the true Emacs process
4079 dnl through a pipe.
4080 case $opsys in
4081 darwin | gnu-linux | gnu-kfreebsd )
4082 AC_DEFINE(INTERRUPT_INPUT, 1, [Define to read input using SIGIO.])
4083 ;;
4084 esac
4085
4086
4087 dnl If the system's imake configuration file defines `NeedWidePrototypes'
4088 dnl as `NO', we must define NARROWPROTO manually. Such a define is
4089 dnl generated in the Makefile generated by `xmkmf'. If we don't define
4090 dnl NARROWPROTO, we will see the wrong function prototypes for X functions
4091 dnl taking float or double parameters.
4092 case $opsys in
4093 cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
4094 AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
4095 file defines `NeedWidePrototypes' as `NO'.])
4096 ;;
4097 esac
4098
4099
4100 dnl Used in process.c, this must be a loop, even if it only runs once.
4101 dnl (Except on SGI; see below. Take that, clarity and consistency!)
4102 AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
4103 dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z,
4104 dnl trying suffixes 0-16.
4105 AH_TEMPLATE(FIRST_PTY_LETTER, [Letter to use in finding device name of
4106 first PTY, if PTYs are supported.])
4107 AH_TEMPLATE(PTY_OPEN, [How to open a PTY, if non-standard.])
4108 AH_TEMPLATE(PTY_NAME_SPRINTF, [How to get the device name of the control
4109 end of a PTY, if non-standard.])
4110 AH_TEMPLATE(PTY_TTY_NAME_SPRINTF, [How to get device name of the tty
4111 end of a PTY, if non-standard.])
4112
4113 case $opsys in
4114 aix4-2 )
4115 AC_DEFINE(PTY_ITERATION, [int c; for (c = 0; !c ; c++)])
4116 dnl You allocate a pty by opening /dev/ptc to get the master side.
4117 dnl To get the name of the slave side, you just ttyname() the master side.
4118 AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");])
4119 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));])
4120 ;;
4121
4122 cygwin )
4123 AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
4124 dnl multi-line AC_DEFINEs are hard. :(
4125 AC_DEFINE(PTY_OPEN, [ do { int dummy; sigset_t blocked, procmask; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, &procmask); if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) fd = -1; pthread_sigmask (SIG_SETMASK, &procmask, 0); if (fd >= 0) emacs_close (dummy); } while (false)])
4126 AC_DEFINE(PTY_NAME_SPRINTF, [])
4127 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
4128 ;;
4129
4130 dnl FIXME? Maybe use same as freebsd - see bug#12040.
4131 darwin )
4132 AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
4133 dnl Not used, because PTY_ITERATION is defined.
4134 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4135 dnl Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
4136 dnl But we don't have to block SIGCHLD because it is blocked in the
4137 dnl implementation of grantpt.
4138 AC_DEFINE(PTY_OPEN, [ do { int slave; if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1) fd = -1; else emacs_close (slave); } while (false)])
4139 AC_DEFINE(PTY_NAME_SPRINTF, [])
4140 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
4141 ;;
4142
4143 gnu | openbsd )
4144 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4145 ;;
4146
4147 gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd )
4148 dnl if HAVE_GRANTPT
4149 if test "x$ac_cv_func_grantpt" = xyes; then
4150 AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
4151 AC_DEFINE(PTY_ITERATION, [int i; for (i = 0; i < 1; i++)])
4152 dnl Note that grantpt and unlockpt may fork. We must block SIGCHLD
4153 dnl to prevent sigchld_handler from intercepting the child's death.
4154 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptyname = 0; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); if (grantpt (fd) != -1 && unlockpt (fd) != -1) ptyname = ptsname(fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (!ptyname) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
4155 dnl if HAVE_POSIX_OPENPT
4156 if test "x$ac_cv_func_posix_openpt" = xyes; then
4157 AC_DEFINE(PTY_OPEN, [do { fd = posix_openpt (O_RDWR | O_CLOEXEC | O_NOCTTY); if (fd < 0 && errno == EINVAL) fd = posix_openpt (O_RDWR | O_NOCTTY); } while (false)])
4158 AC_DEFINE(PTY_NAME_SPRINTF, [])
4159 dnl if HAVE_GETPT
4160 elif test "x$ac_cv_func_getpt" = xyes; then
4161 AC_DEFINE(PTY_OPEN, [fd = getpt ()])
4162 AC_DEFINE(PTY_NAME_SPRINTF, [])
4163 else
4164 AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
4165 fi
4166 else
4167 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4168 fi
4169 ;;
4170
4171 hpux*)
4172 AC_DEFINE(FIRST_PTY_LETTER, ['p'])
4173 AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);])
4174 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
4175 ;;
4176
4177 irix6-5 )
4178 dnl It looks like this cannot be right, because it is not a loop.
4179 dnl However, process.c actually does this:
4180 dnl # ifndef __sgi
4181 dnl continue;
4182 dnl # else
4183 dnl return -1;
4184 dnl # endif
4185 dnl which presumably makes it OK, since irix == sgi (?).
4186 dnl FIXME it seems like this special treatment is unnecessary?
4187 dnl Why can't irix use a single-trip loop like eg cygwin?
4188 AC_DEFINE(PTY_ITERATION, [])
4189 dnl Not used, because PTY_ITERATION is defined.
4190 AC_DEFINE(FIRST_PTY_LETTER, ['q'])
4191 AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
4192 dnl No need to get the pty name at all.
4193 AC_DEFINE(PTY_NAME_SPRINTF, [])
4194 dnl No need to use sprintf to get the tty name--we get that from _getpty.
4195 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [])
4196 ;;
4197
4198 sol2* )
4199 dnl On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler()
4200 dnl from intercepting that death. If any child but grantpt's should die
4201 dnl within, it should be caught after sigrelse(2).
4202 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1 || unlockpt (fd) == -1 || !(ptyname = ptsname (fd))) { emacs_close (fd); return -1; } snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
4203 ;;
4204
4205 unixware )
4206 dnl Comments are as per sol2*.
4207 AC_DEFINE(PTY_TTY_NAME_SPRINTF, [{ char *ptsname (int), *ptyname; int grantpt_result; sigset_t blocked; sigemptyset (&blocked); sigaddset (&blocked, SIGCHLD); pthread_sigmask (SIG_BLOCK, &blocked, 0); grantpt_result = grantpt (fd); pthread_sigmask (SIG_UNBLOCK, &blocked, 0); if (grantpt_result == -1) fatal("could not grant slave pty"); if (unlockpt(fd) == -1) fatal("could not unlock slave pty"); if (!(ptyname = ptsname(fd))) fatal ("could not enable slave pty"); snprintf (pty_name, PTY_NAME_SIZE, "%s", ptyname); }])
4208 ;;
4209 esac
4210
4211
4212 case $opsys in
4213 sol2* | unixware )
4214 dnl This change means that we don't loop through allocate_pty too
4215 dnl many times in the (rare) event of a failure.
4216 AC_DEFINE(FIRST_PTY_LETTER, ['z'])
4217 AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptmx");])
4218 dnl Push various streams modules onto a PTY channel. Used in process.c.
4219 AC_DEFINE(SETUP_SLAVE_PTY, [if (ioctl (xforkin, I_PUSH, "ptem") == -1) fatal ("ioctl I_PUSH ptem"); if (ioctl (xforkin, I_PUSH, "ldterm") == -1) fatal ("ioctl I_PUSH ldterm"); if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) fatal ("ioctl I_PUSH ttcompat");], [How to set up a slave PTY, if needed.])
4220 ;;
4221 esac
4222
4223
4224 AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
4225 "typing" a signal character on the pty.])
4226
4227 case $opsys in
4228 dnl Perry Smith <pedz@ddivt1.austin.ibm.com> says this is correct for AIX.
4229 dnl thomas@mathematik.uni-bremen.de says this is needed for IRIX.
4230 aix4-2 | cygwin | gnu | irix6-5 | dragonfly | freebsd | netbsd | openbsd | darwin )
4231 AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
4232 ;;
4233
4234 dnl 21 Jun 06: Eric Hanchrow <offby1@blarg.net> says this works.
4235 dnl FIXME Does gnu-kfreebsd have linux/version.h? It seems unlikely...
4236 gnu-linux | gnu-kfreebsd )
4237
4238 AC_MSG_CHECKING([for signals via characters])
4239 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4240 #include <linux/version.h>
4241 #if LINUX_VERSION_CODE < 0x20400
4242 # error "Linux version too old"
4243 #endif
4244 ]], [[]])], emacs_signals_via_chars=yes, emacs_signals_via_chars=no)
4245
4246 AC_MSG_RESULT([$emacs_signals_via_chars])
4247 test $emacs_signals_via_chars = yes && AC_DEFINE(SIGNALS_VIA_CHARACTERS, 1)
4248 ;;
4249 esac
4250
4251
4252 AH_TEMPLATE(TAB3, [Undocumented.])
4253
4254 case $opsys in
4255 darwin) AC_DEFINE(TAB3, OXTABS) ;;
4256
4257 gnu | dragonfly | freebsd | netbsd | openbsd )
4258 AC_DEFINE(TABDLY, OXTABS, [Undocumented.])
4259 AC_DEFINE(TAB3, OXTABS)
4260 ;;
4261
4262 gnu-linux | gnu-kfreebsd )
4263 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4264 #ifndef __ia64__
4265 # error "not ia64"
4266 #endif
4267 ]], [[]])], AC_DEFINE(GC_MARK_SECONDARY_STACK(),
4268 [do { extern void *__libc_ia64_register_backing_store_base; __builtin_ia64_flushrs (); mark_memory (__libc_ia64_register_backing_store_base, __builtin_ia64_bsp ());} while (false)],
4269 [Mark a secondary stack, like the register stack on the ia64.]), [])
4270 ;;
4271
4272 hpux*)
4273 AC_DEFINE(RUN_TIME_REMAP, 1, [Define if emacs.c needs to call
4274 run_time_remap; for HPUX.])
4275 ;;
4276 esac
4277
4278
4279 dnl This won't be used automatically yet. We also need to know, at least,
4280 dnl that the stack is continuous.
4281 AH_TEMPLATE(GC_SETJMP_WORKS, [Define if setjmp is known to save all
4282 registers relevant for conservative garbage collection in the jmp_buf.])
4283
4284
4285 case $opsys in
4286 dnl Not all the architectures are tested, but there are Debian packages
4287 dnl for SCM and/or Guile on them, so the technique must work. See also
4288 dnl comments in alloc.c concerning setjmp and gcc.
4289 dnl Fixme: it's probably safe to just use the GCC conditional below.
4290 gnu-linux | gnu-kfreebsd )
4291 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4292 #if defined __i386__ || defined __sparc__ || defined __mc68000__ \
4293 || defined __alpha__ || defined __mips__ || defined __s390__ \
4294 || defined __arm__ || defined __powerpc__ || defined __amd64__ \
4295 || defined __ia64__ || defined __sh__
4296 /* ok */
4297 #else
4298 # error "setjmp not known to work on this arch"
4299 #endif
4300 ]], [[]])], AC_DEFINE(GC_SETJMP_WORKS, 1))
4301 ;;
4302 esac
4303
4304
4305 if test x$GCC = xyes; then
4306 dnl GC_SETJMP_WORKS is nearly always appropriate for GCC.
4307 AC_DEFINE(GC_SETJMP_WORKS, 1)
4308 else
4309 case $opsys in
4310 dnl irix: Tested on Irix 6.5. SCM worked on earlier versions.
4311 dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* )
4312 AC_DEFINE(GC_SETJMP_WORKS, 1)
4313 ;;
4314 esac
4315 fi dnl GCC?
4316
4317 dnl In a weird quirk, MS runtime uses _setjmp and longjmp.
4318 AC_CACHE_CHECK([for _setjmp], [emacs_cv_func__setjmp],
4319 [AC_LINK_IFELSE(
4320 [AC_LANG_PROGRAM(
4321 [[#include <setjmp.h>
4322 #ifdef __MINGW32__
4323 # define _longjmp longjmp
4324 #endif
4325 ]],
4326 [[jmp_buf j;
4327 if (! _setjmp (j))
4328 _longjmp (j, 1);]])],
4329 [emacs_cv_func__setjmp=yes],
4330 [emacs_cv_func__setjmp=no])])
4331 if test $emacs_cv_func__setjmp = yes; then
4332 AC_DEFINE([HAVE__SETJMP], 1, [Define to 1 if _setjmp and _longjmp work.])
4333 else
4334 AC_CACHE_CHECK([for sigsetjmp], [emacs_cv_func_sigsetjmp],
4335 [AC_LINK_IFELSE(
4336 [AC_LANG_PROGRAM(
4337 [[#include <setjmp.h>
4338 ]],
4339 [[sigjmp_buf j;
4340 if (! sigsetjmp (j, 1))
4341 siglongjmp (j, 1);]])],
4342 [emacs_cv_func_sigsetjmp=yes],
4343 [emacs_cv_func_sigsetjmp=no])])
4344 if test $emacs_cv_func_sigsetjmp = yes; then
4345 AC_DEFINE([HAVE_SIGSETJMP], 1,
4346 [Define to 1 if sigsetjmp and siglongjmp work.
4347 The value of this symbol is irrelevant if HAVE__SETJMP is defined.])
4348 fi
4349 fi
4350
4351 case $opsys in
4352 sol2* | unixware )
4353 dnl TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
4354 dnl subprocesses the usual way. But TIOCSIGNAL does work for PTYs,
4355 dnl and this is all we need.
4356 AC_DEFINE(TIOCSIGSEND, TIOCSIGNAL, [Some platforms redefine this.])
4357 ;;
4358 esac
4359
4360
4361 case $opsys in
4362 hpux* | sol2* )
4363 dnl Used in xfaces.c.
4364 AC_DEFINE(XOS_NEEDS_TIME_H, 1, [Compensate for a bug in Xos.h on
4365 some systems, where it requires time.h.])
4366 ;;
4367 esac
4368
4369
4370 dnl Define symbols to identify the version of Unix this is.
4371 dnl Define all the symbols that apply correctly.
4372 AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
4373 AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
4374 AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
4375 AH_TEMPLATE(USG5_4, [Define if the system is compatible with System V Release 4.])
4376
4377 case $opsys in
4378 aix4-2)
4379 AC_DEFINE(USG, [])
4380 dnl This symbol should be defined on AIX Version 3 ???????
4381 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
4382 #ifndef _AIX
4383 # error "_AIX not defined"
4384 #endif
4385 ]], [[]])], [], AC_DEFINE(_AIX, [], [Define if the system is AIX.]))
4386 ;;
4387
4388 cygwin)
4389 AC_DEFINE(CYGWIN, 1, [Define if the system is Cygwin.])
4390 ;;
4391
4392 darwin)
4393 dnl Not __APPLE__, as this may not be defined on non-OSX Darwin.
4394 dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
4395 dnl distinguish OS X from pure Darwin.
4396 AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
4397 ;;
4398
4399 gnu-linux | gnu-kfreebsd )
4400 AC_DEFINE(USG, [])
4401 AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
4402 ;;
4403
4404 hpux*)
4405 AC_DEFINE(USG, [])
4406 AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
4407 ;;
4408
4409 irix6-5)
4410 AC_DEFINE(USG, [])
4411 AC_DEFINE(USG5_4, [])
4412 AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
4413 ;;
4414
4415 mingw32)
4416 AC_DEFINE(DOS_NT, [])
4417 AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
4418 if test "x$ac_enable_checking" != "x" ; then
4419 AC_DEFINE(EMACSDEBUG, 1, [Define to 1 to enable w32 debug facilities.])
4420 fi
4421 ;;
4422
4423 sol2*)
4424 AC_DEFINE(USG, [])
4425 AC_DEFINE(USG5_4, [])
4426 AC_DEFINE(SOLARIS2, [], [Define if the system is Solaris.])
4427 ;;
4428
4429 unixware)
4430 AC_DEFINE(USG, [])
4431 AC_DEFINE(USG5_4, [])
4432 ;;
4433 esac
4434
4435 AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
4436 [case $opsys in
4437 aix4-2)
4438 dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
4439 emacs_cv_usable_FIONREAD=no
4440 ;;
4441
4442 mingw32)
4443 emacs_cv_usable_FIONREAD=yes
4444 ;;
4445
4446 *)
4447 AC_COMPILE_IFELSE(
4448 [AC_LANG_PROGRAM([[#include <sys/types.h>
4449 #include <sys/ioctl.h>
4450 #ifdef USG5_4
4451 # include <sys/filio.h>
4452 #endif
4453 ]],
4454 [[int foo = ioctl (0, FIONREAD, &foo);]])],
4455 [emacs_cv_usable_FIONREAD=yes],
4456 [emacs_cv_usable_FIONREAD=no])
4457 ;;
4458 esac])
4459 if test $emacs_cv_usable_FIONREAD = yes; then
4460 AC_DEFINE([USABLE_FIONREAD], [1], [Define to 1 if FIONREAD is usable.])
4461
4462 if test $emacs_broken_SIGIO = no; then
4463 AC_CACHE_CHECK([for usable SIGIO], [emacs_cv_usable_SIGIO],
4464 [AC_COMPILE_IFELSE(
4465 [AC_LANG_PROGRAM([[#include <fcntl.h>
4466 #include <signal.h>
4467 ]],
4468 [[int foo = SIGIO | F_SETFL | FASYNC;]])],
4469 [emacs_cv_usable_SIGIO=yes],
4470 [emacs_cv_usable_SIGIO=no])],
4471 [emacs_cv_usable_SIGIO=yes],
4472 [emacs_cv_usable_SIGIO=no])
4473 if test $emacs_cv_usable_SIGIO = yes; then
4474 AC_DEFINE([USABLE_SIGIO], [1], [Define to 1 if SIGIO is usable.])
4475 fi
4476 fi
4477 fi
4478
4479
4480 case $opsys in
4481 dnl Emacs supplies its own malloc, but glib calls posix_memalign,
4482 dnl and on Cygwin prior to version 1.7.24 that becomes the
4483 dnl Cygwin-supplied posix_memalign. As malloc is not the Cygwin
4484 dnl malloc, the Cygwin posix_memalign always returns ENOSYS. A
4485 dnl workaround is to set G_SLICE=always-malloc. This is no longer
4486 dnl needed starting with cygwin-1.7.24, and it is no longer
4487 dnl effective starting with glib-2.36. */
4488 cygwin)
4489 AC_DEFINE(G_SLICE_ALWAYS_MALLOC, 1, [Define to set the
4490 G_SLICE environment variable to "always-malloc" at startup.])
4491 ;;
4492
4493 hpux11)
4494 dnl It works to open the pty's tty in the parent (Emacs), then
4495 dnl close and reopen it in the child.
4496 AC_DEFINE(USG_SUBTTY_WORKS, 1, [Define for USG systems where it
4497 works to open a pty's tty in the parent process, then close and
4498 reopen it in the child.])
4499 ;;
4500
4501 irix6-5)
4502 AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
4503 use VSUSP instead of VSWTCH.])
4504 ;;
4505
4506 sol2-10)
4507 AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
4508 on Solaris.])
4509 ;;
4510 esac
4511
4512 # Set up the CFLAGS for real compilation, so we can substitute it.
4513 CFLAGS="$REAL_CFLAGS"
4514 CPPFLAGS="$REAL_CPPFLAGS"
4515 LIBS="$REAL_LIBS"
4516
4517 ## Hack to detect a buggy GCC version.
4518 if test "x$GCC" = xyes \
4519 && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \
4520 && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \
4521 && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then
4522 AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.])
4523 fi
4524
4525 version=$PACKAGE_VERSION
4526
4527 copyright="Copyright (C) 2014 Free Software Foundation, Inc."
4528 AC_DEFINE_UNQUOTED(COPYRIGHT, ["$copyright"],
4529 [Short copyright string for this version of Emacs.])
4530 AC_SUBST(copyright)
4531
4532 ### Specify what sort of things we'll be editing into Makefile and config.h.
4533 ### Use configuration here uncanonicalized to avoid exceeding size limits.
4534 AC_SUBST(version)
4535 AC_SUBST(configuration)
4536 ## Unused?
4537 AC_SUBST(canonical)
4538 AC_SUBST(srcdir)
4539 AC_SUBST(prefix)
4540 AC_SUBST(exec_prefix)
4541 AC_SUBST(bindir)
4542 AC_SUBST(datadir)
4543 AC_SUBST(sharedstatedir)
4544 AC_SUBST(libexecdir)
4545 AC_SUBST(mandir)
4546 AC_SUBST(infodir)
4547 AC_SUBST(lispdir)
4548 AC_SUBST(standardlisppath)
4549 AC_SUBST(locallisppath)
4550 AC_SUBST(lisppath)
4551 AC_SUBST(x_default_search_path)
4552 AC_SUBST(etcdir)
4553 AC_SUBST(archlibdir)
4554 AC_SUBST(etcdocdir)
4555 AC_SUBST(bitmapdir)
4556 AC_SUBST(gamedir)
4557 AC_SUBST(gameuser)
4558 ## FIXME? Nothing uses @LD_SWITCH_X_SITE@.
4559 ## src/Makefile.in did add LD_SWITCH_X_SITE (as a cpp define) to the
4560 ## end of LIBX_BASE, but nothing ever set it.
4561 AC_SUBST(LD_SWITCH_X_SITE)
4562 AC_SUBST(C_SWITCH_X_SITE)
4563 AC_SUBST(GNUSTEP_CFLAGS)
4564 AC_SUBST(CFLAGS)
4565 ## Used in lwlib/Makefile.in.
4566 AC_SUBST(X_TOOLKIT_TYPE)
4567 AC_SUBST(ns_appdir)
4568 AC_SUBST(ns_appbindir)
4569 AC_SUBST(ns_appresdir)
4570 AC_SUBST(ns_appsrc)
4571 AC_SUBST(GNU_OBJC_CFLAGS)
4572 AC_SUBST(OTHER_FILES)
4573
4574 if test -n "${term_header}"; then
4575 AC_DEFINE_UNQUOTED(TERM_HEADER, "${term_header}",
4576 [Define to the header for the built-in window system.])
4577 fi
4578
4579 AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
4580 [Define to the canonical Emacs configuration name.])
4581 AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${emacs_config_options}",
4582 [Define to the options passed to configure.])
4583 AH_TEMPLATE(config_opsysfile, [Some platforms that do not use configure
4584 define this to include extra configuration information.])
4585
4586 case $opsys in
4587 mingw32)
4588 AC_DEFINE(config_opsysfile, <ms-w32.h>, [])
4589 ;;
4590 esac
4591
4592 XMENU_OBJ=
4593 XOBJ=
4594 FONT_OBJ=
4595 if test "${HAVE_X_WINDOWS}" = "yes" ; then
4596 AC_DEFINE(HAVE_X_WINDOWS, 1,
4597 [Define to 1 if you want to use the X window system.])
4598 XMENU_OBJ=xmenu.o
4599 XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o"
4600 FONT_OBJ=xfont.o
4601 if test "$HAVE_XFT" = "yes"; then
4602 FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
4603 elif test "$HAVE_FREETYPE" = "yes"; then
4604 FONT_OBJ="$FONT_OBJ ftfont.o ftxfont.o"
4605 fi
4606 AC_SUBST(FONT_OBJ)
4607 fi
4608 AC_SUBST(XMENU_OBJ)
4609 AC_SUBST(XOBJ)
4610 AC_SUBST(FONT_OBJ)
4611
4612 WIDGET_OBJ=
4613 MOTIF_LIBW=
4614 if test "${USE_X_TOOLKIT}" != "none" ; then
4615 WIDGET_OBJ=widget.o
4616 AC_DEFINE(USE_X_TOOLKIT, 1, [Define to 1 if using an X toolkit.])
4617 if test "${USE_X_TOOLKIT}" = "LUCID"; then
4618 AC_DEFINE(USE_LUCID, 1, [Define to 1 if using the Lucid X toolkit.])
4619 elif test "${USE_X_TOOLKIT}" = "MOTIF"; then
4620 AC_DEFINE(USE_MOTIF, 1, [Define to 1 if using the Motif X toolkit.])
4621 MOTIF_LIBW=-lXm
4622 case "$opsys" in
4623 gnu-linux)
4624 ## Paul Abrahams <abrahams at equinox.shaysnet.com> says this is needed.
4625 MOTIF_LIBW="$MOTIF_LIBW -lXpm"
4626 ;;
4627
4628 unixware)
4629 ## Richard Anthony Ryan <ryanr at ellingtn.ftc.nrcs.usda.gov>
4630 ## says -lXimp is needed in UNIX_SV ... 4.2 1.1.2.
4631 MOTIF_LIBW="MOTIF_LIBW -lXimp"
4632 ;;
4633
4634 aix4-2)
4635 ## olson@mcs.anl.gov says -li18n is needed by -lXm.
4636 MOTIF_LIBW="$MOTIF_LIBW -li18n"
4637 ;;
4638 esac
4639 MOTIF_LIBW="$MOTIF_LIBW $LIBXP"
4640 fi
4641 fi
4642 AC_SUBST(WIDGET_OBJ)
4643
4644 TOOLKIT_LIBW=
4645 case "$USE_X_TOOLKIT" in
4646 MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
4647 LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
4648 none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
4649 esac
4650 AC_SUBST(TOOLKIT_LIBW)
4651
4652 if test "${opsys}" != "mingw32"; then
4653 if test "$USE_X_TOOLKIT" = "none"; then
4654 LIBXT_OTHER="\$(LIBXSM)"
4655 else
4656 LIBXT_OTHER="\$(LIBXMU) -lXt \$(LIBXTR6) -lXext"
4657 fi
4658 fi
4659 AC_SUBST(LIBXT_OTHER)
4660
4661 if test "${HAVE_X11}" = "yes" ; then
4662 AC_DEFINE(HAVE_X11, 1,
4663 [Define to 1 if you want to use version 11 of X windows.])
4664 LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
4665 else
4666 LIBX_OTHER=
4667 fi
4668 AC_SUBST(LIBX_OTHER)
4669
4670 if test "$HAVE_GTK" = yes || test "$HAVE_X11" != yes; then
4671 LIBXMENU=
4672 elif test "$USE_X_TOOLKIT" = none; then
4673 LIBXMENU='$(oldXMenudir)/libXMenu11.a'
4674 else
4675 LIBXMENU='$(lwlibdir)/liblw.a'
4676 fi
4677 AC_SUBST(LIBXMENU)
4678
4679 if test "${GNU_MALLOC}" = "yes" ; then
4680 AC_DEFINE(GNU_MALLOC, 1,
4681 [Define to 1 if you want to use the GNU memory allocator.])
4682 fi
4683
4684 RALLOC_OBJ=
4685 if test "${REL_ALLOC}" = "yes" ; then
4686 AC_DEFINE(REL_ALLOC, 1,
4687 [Define REL_ALLOC if you want to use the relocating allocator for
4688 buffer space.])
4689
4690 test "$system_malloc" != "yes" && RALLOC_OBJ=ralloc.o
4691 fi
4692 AC_SUBST(RALLOC_OBJ)
4693
4694 if test "$opsys" = "cygwin"; then
4695 CYGWIN_OBJ="sheap.o cygw32.o"
4696 ## Cygwin differs because of its unexec().
4697 PRE_ALLOC_OBJ=
4698 POST_ALLOC_OBJ=lastfile.o
4699 elif test "$opsys" = "mingw32"; then
4700 CYGWIN_OBJ=
4701 PRE_ALLOC_OBJ=
4702 POST_ALLOC_OBJ=lastfile.o
4703 else
4704 CYGWIN_OBJ=
4705 PRE_ALLOC_OBJ=lastfile.o
4706 POST_ALLOC_OBJ=
4707 fi
4708 AC_SUBST(CYGWIN_OBJ)
4709 AC_SUBST(PRE_ALLOC_OBJ)
4710 AC_SUBST(POST_ALLOC_OBJ)
4711
4712 dnl Call this 'FORTIFY_SOUR' so that it sorts before the 'FORTIFY_SOURCE'
4713 dnl verbatim defined above. The tricky name is apropos, as this hack
4714 dnl makes Fortify go sour!
4715 AH_VERBATIM([FORTIFY_SOUR],
4716 [/* Without the following workaround, Emacs runs slowly on OS X 10.8.
4717 The workaround disables some useful run-time checking, so it
4718 should be conditional to the platforms with the performance bug.
4719 Perhaps Apple will fix this some day; also see m4/extern-inline.m4. */
4720 #if defined __APPLE__ && defined __GNUC__
4721 # ifndef _DONT_USE_CTYPE_INLINE_
4722 # define _DONT_USE_CTYPE_INLINE_
4723 # endif
4724 # ifndef _FORTIFY_SOURCE
4725 # define _FORTIFY_SOURCE 0
4726 # endif
4727 #endif
4728 ])
4729
4730 # Configure gnulib. Although this does not affect CFLAGS or LIBS permanently.
4731 # it temporarily reverts them to their pre-pkg-config values,
4732 # because gnulib needs to work with both src (which uses the
4733 # pkg-config stuff) and lib-src (which does not). For example, gnulib
4734 # may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
4735 # and it therefore needs to run in an environment where LIBS does not
4736 # already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
4737 # for some package unrelated to lib-src.
4738 SAVE_CFLAGS=$CFLAGS
4739 SAVE_LIBS=$LIBS
4740 CFLAGS=$pre_PKG_CONFIG_CFLAGS
4741 LIBS="$LIB_PTHREAD $pre_PKG_CONFIG_LIBS"
4742 gl_ASSERT_NO_GNULIB_POSIXCHECK
4743 gl_ASSERT_NO_GNULIB_TESTS
4744 gl_INIT
4745 CFLAGS=$SAVE_CFLAGS
4746 LIBS=$SAVE_LIBS
4747
4748 if test "${opsys}" = "mingw32"; then
4749 CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I \${abs_top_srcdir}/nt/inc"
4750 # Remove unneeded switches from the value of CC that goes to Makefiles
4751 CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"`
4752 fi
4753
4754 case "$opsys" in
4755 aix4-2) LD_SWITCH_SYSTEM_TEMACS="-Wl,-bnodelcsect" ;;
4756
4757 darwin)
4758 ## The -headerpad option tells ld (see man page) to leave room at the
4759 ## end of the header for adding load commands. Needed for dumping.
4760 ## 0x690 is the total size of 30 segment load commands (at 56
4761 ## each); under Cocoa 31 commands are required.
4762 if test "$HAVE_NS" = "yes"; then
4763 libs_nsgui="-framework AppKit"
4764 if test "$NS_IMPL_COCOA" = "yes"; then
4765 libs_nsgui="$libs_nsgui -framework IOKit"
4766 fi
4767 headerpad_extra=6C8
4768 else
4769 libs_nsgui=
4770 headerpad_extra=690
4771 fi
4772 LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
4773
4774 ## This is here because src/Makefile.in did some extra fiddling around
4775 ## with LD_SWITCH_SYSTEM. It seems cleaner to put this in
4776 ## LD_SWITCH_SYSTEM_TEMACS instead,
4777 test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
4778 LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
4779 ;;
4780
4781 ## LD_SWITCH_X_SITE_RPATH is a -rpath option saying where to
4782 ## find X at run-time.
4783 ## When handled by cpp, this was in LD_SWITCH_SYSTEM. However, at the
4784 ## point where configure sourced the s/*.h file, LD_SWITCH_X_SITE_RPATH
4785 ## had not yet been defined and was expanded to null. Hence LD_SWITCH_SYSTEM
4786 ## had different values in configure (in ac_link) and src/Makefile.in.
4787 ## It seems clearer therefore to put this piece in LD_SWITCH_SYSTEM_TEMACS.
4788 gnu*) LD_SWITCH_SYSTEM_TEMACS="\$(LD_SWITCH_X_SITE_RPATH)" ;;
4789
4790 mingw32)
4791 ## MinGW64 does not prepend an underscore to symbols, so we must
4792 ## pass a different -entry switch to linker. FIXME: It is better
4793 ## to make the entry points the same by changing unexw32.c.
4794 case "$canonical" in
4795 x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
4796 *) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
4797 esac
4798 ;;
4799
4800 openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
4801
4802 *) LD_SWITCH_SYSTEM_TEMACS= ;;
4803 esac
4804
4805 if test x$ac_enable_profiling != x ; then
4806 case $opsys in
4807 *freebsd | gnu-linux) ;;
4808 *) LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -pg" ;;
4809 esac
4810 fi
4811
4812 LD_SWITCH_SYSTEM_TEMACS="$LDFLAGS_NOCOMBRELOC $LD_SWITCH_SYSTEM_TEMACS"
4813
4814 AC_SUBST(LD_SWITCH_SYSTEM_TEMACS)
4815
4816 ## MinGW-specific post-link processing of temacs.
4817 TEMACS_POST_LINK=":"
4818 ADDSECTION=
4819 EMACS_HEAPSIZE=
4820 if test "${opsys}" = "mingw32"; then
4821 TEMACS_POST_LINK="\$(MINGW_TEMACS_POST_LINK)"
4822 ADDSECTION="../nt/addsection\$(EXEEXT)"
4823 ## Preload heap size of temacs.exe in MB.
4824 case "$canonical" in
4825 x86_64-*-*) EMACS_HEAPSIZE=42 ;;
4826 *) EMACS_HEAPSIZE=27 ;;
4827 esac
4828 fi
4829
4830 AC_SUBST(ADDSECTION)
4831 AC_SUBST(TEMACS_POST_LINK)
4832 AC_SUBST(EMACS_HEAPSIZE)
4833
4834 ## Common for all window systems
4835 if test "$window_system" != "none"; then
4836 AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
4837 WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
4838 fi
4839
4840 AC_SUBST(WINDOW_SYSTEM_OBJ)
4841
4842 AH_TOP([/* GNU Emacs site configuration template file.
4843
4844 Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2014
4845 Free Software Foundation, Inc.
4846
4847 This file is part of GNU Emacs.
4848
4849 GNU Emacs is free software: you can redistribute it and/or modify
4850 it under the terms of the GNU General Public License as published by
4851 the Free Software Foundation, either version 3 of the License, or
4852 (at your option) any later version.
4853
4854 GNU Emacs is distributed in the hope that it will be useful,
4855 but WITHOUT ANY WARRANTY; without even the implied warranty of
4856 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4857 GNU General Public License for more details.
4858
4859 You should have received a copy of the GNU General Public License
4860 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
4861
4862
4863 /* No code in Emacs #includes config.h twice, but some bits of code
4864 intended to work with other packages as well (like gmalloc.c)
4865 think they can include it as many times as they like. */
4866 #ifndef EMACS_CONFIG_H
4867 #define EMACS_CONFIG_H
4868 ])dnl
4869
4870 AH_BOTTOM([#include <conf_post.h>
4871
4872 #endif /* EMACS_CONFIG_H */
4873
4874 /*
4875 Local Variables:
4876 mode: c
4877 End:
4878 */
4879 ])dnl
4880
4881 #### Report on what we decided to do.
4882 #### Report GTK as a toolkit, even if it doesn't use Xt.
4883 #### It makes printing result more understandable as using GTK sets
4884 #### toolkit_scroll_bars to yes by default.
4885 if test "${HAVE_GTK}" = "yes"; then
4886 USE_X_TOOLKIT="$USE_GTK_TOOLKIT"
4887 fi
4888
4889 if test $USE_ACL -ne 0; then
4890 ACL_SUMMARY="yes $LIB_ACL"
4891 else
4892 ACL_SUMMARY=no
4893 fi
4894
4895 echo "
4896 Configured for \`${canonical}'.
4897
4898 Where should the build process find the source code? ${srcdir}
4899 What compiler should emacs be built with? ${CC} ${CFLAGS}
4900 Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
4901 Should Emacs use a relocating allocator for buffers? ${REL_ALLOC}
4902 Should Emacs use mmap(2) for buffer allocation? $use_mmap_for_buffers
4903 What window system should Emacs use? ${window_system}
4904 What toolkit should Emacs use? ${USE_X_TOOLKIT}"
4905
4906 if test -n "${x_includes}"; then
4907 echo " Where do we find X Windows header files? ${x_includes}"
4908 else
4909 echo " Where do we find X Windows header files? Standard dirs"
4910 fi
4911 if test -n "${x_libraries}"; then
4912 echo " Where do we find X Windows libraries? ${x_libraries}"
4913 else
4914 echo " Where do we find X Windows libraries? Standard dirs"
4915 fi
4916
4917 optsep=
4918 emacs_config_features=
4919 for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS \
4920 GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
4921 LIBOTF XFT ZLIB; do
4922
4923 case $opt in
4924 NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
4925 *) eval val=\${HAVE_$opt} ;;
4926 esac
4927 test x"$val" = xno && continue
4928 AS_VAR_APPEND([emacs_config_features], ["$optsep$opt"])
4929 optsep=' '
4930 done
4931 AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}",
4932 [Summary of some of the main features enabled by configure.])
4933
4934 echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}"
4935 echo " Does Emacs use -lXpm? ${HAVE_XPM}"
4936 echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
4937 echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
4938 echo " Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF"
4939 echo " Does Emacs use -lpng? ${HAVE_PNG}"
4940 echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
4941 echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
4942
4943 echo " Does Emacs support sound? ${HAVE_SOUND}"
4944
4945 echo " Does Emacs use -lgpm? ${HAVE_GPM}"
4946 echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
4947 echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
4948 echo " Does Emacs use GSettings? ${HAVE_GSETTINGS}"
4949 echo " Does Emacs use a file notification library? ${NOTIFY_SUMMARY}"
4950 echo " Does Emacs use access control lists? ${ACL_SUMMARY}"
4951 echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}"
4952 echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}"
4953 echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}"
4954
4955 echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
4956 echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}"
4957 echo " Does Emacs use -lotf? ${HAVE_LIBOTF}"
4958 echo " Does Emacs use -lxft? ${HAVE_XFT}"
4959 echo " Does Emacs directly use zlib? ${HAVE_ZLIB}"
4960
4961 echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
4962 echo
4963
4964 if test -n "${EMACSDATA}"; then
4965 echo " Environment variable EMACSDATA set to: $EMACSDATA"
4966 fi
4967 if test -n "${EMACSDOC}"; then
4968 echo " Environment variable EMACSDOC set to: $EMACSDOC"
4969 fi
4970
4971 echo
4972
4973 if test "$HAVE_NS" = "yes"; then
4974 echo
4975 echo "You must run \"${MAKE-make} install\" in order to test the built application.
4976 The installed application will go to nextstep/Emacs.app and can be
4977 run or moved from there."
4978 if test "$EN_NS_SELF_CONTAINED" = "yes"; then
4979 echo "The application will be fully self-contained."
4980 else
4981 echo "The lisp resources for the application will be installed under ${prefix}.
4982 You may need to run \"${MAKE-make} install\" with sudo. The application will fail
4983 to run if these resources are not installed."
4984 fi
4985 echo
4986 fi
4987
4988 if test "${opsys}" = "cygwin"; then
4989 case `uname -r` in
4990 1.5.*) AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
4991 echo
4992 ;;
4993 esac
4994 fi
4995
4996 # Remove any trailing slashes in these variables.
4997 [test "${prefix}" != NONE &&
4998 prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
4999 test "${exec_prefix}" != NONE &&
5000 exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
5001
5002 if test "$HAVE_NS" = "yes"; then
5003 if test "$NS_IMPL_GNUSTEP" = yes; then
5004 AC_CONFIG_FILES([nextstep/GNUstep/Emacs.base/Resources/Info-gnustep.plist:nextstep/templates/Info-gnustep.plist.in \
5005 nextstep/GNUstep/Emacs.base/Resources/Emacs.desktop:nextstep/templates/Emacs.desktop.in])
5006 ns_check_file=Resources/Info-gnustep.plist
5007 else
5008 AC_CONFIG_FILES([nextstep/Cocoa/Emacs.base/Contents/Info.plist:nextstep/templates/Info.plist.in \
5009 nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:nextstep/templates/InfoPlist.strings.in])
5010 ns_check_file=Contents/Info.plist
5011 fi
5012 AC_SUBST(ns_check_file)
5013 fi
5014
5015 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
5016 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
5017 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a variable
5018 dnl (else you get "no `Makefile.am' found for any configure output").
5019 dnl This will work, but you get a config.status that is not quite right
5020 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
5021 dnl That doesn't have any obvious consequences for Emacs, but on the whole
5022 dnl it seems better to just live with the duplication.
5023 SUBDIR_MAKEFILES="lib/Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile leim/Makefile nextstep/Makefile nt/Makefile"
5024
5025 AC_CONFIG_FILES([Makefile lib/Makefile lib-src/Makefile oldXMenu/Makefile \
5026 doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
5027 doc/lispref/Makefile src/Makefile lwlib/Makefile lisp/Makefile \
5028 leim/Makefile nextstep/Makefile nt/Makefile])
5029
5030 dnl test/ is not present in release tarfiles.
5031 opt_makefile=test/automated/Makefile
5032
5033 if test -f "$srcdir/$opt_makefile.in"; then
5034 SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
5035 dnl Again, it's best not to use a variable. Though you can add
5036 dnl ", [], [opt_makefile='$opt_makefile']" and it should work.
5037 AC_CONFIG_FILES([test/automated/Makefile])
5038 fi
5039
5040
5041 dnl The admin/ directory used to be excluded from tarfiles.
5042 if test -d $srcdir/admin; then
5043 SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES admin/unidata/Makefile admin/grammars/Makefile"
5044 AC_CONFIG_FILES([admin/unidata/Makefile])
5045 AC_CONFIG_FILES([admin/grammars/Makefile])
5046 fi dnl -d admin
5047
5048
5049 SUBDIR_MAKEFILES_IN=`echo " ${SUBDIR_MAKEFILES}" | sed -e 's| | $(srcdir)/|g' -e 's|Makefile|Makefile.in|g'`
5050
5051 AC_SUBST(SUBDIR_MAKEFILES_IN)
5052
5053 dnl You might wonder (I did) why epaths.h is generated by running make,
5054 dnl rather than just letting configure generate it from epaths.in.
5055 dnl One reason is that the various paths are not fully expanded (see above);
5056 dnl eg gamedir=${prefix}/var/games/emacs.
5057 dnl Secondly, the GNU Coding standards require that one should be able
5058 dnl to run `make prefix=/some/where/else' and override the values set
5059 dnl by configure. This also explains the `move-if-change' test and
5060 dnl the use of force in the `epaths-force' rule in Makefile.in.
5061 AC_CONFIG_COMMANDS([src/epaths.h], [
5062 if test "${opsys}" = "mingw32"; then
5063 ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
5064 else
5065 ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force
5066 fi
5067 ], [GCC="$GCC" CPPFLAGS="$CPPFLAGS" opsys="$opsys"])
5068
5069 dnl NB we have to cheat and use the ac_... version because abs_top_srcdir
5070 dnl is not yet set, sigh. Or we could use ../$srcdir/src/.gdbinit,
5071 dnl or a symlink?
5072 AC_CONFIG_COMMANDS([src/.gdbinit], [
5073 if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then
5074 echo "source $ac_abs_top_srcdir/src/.gdbinit" > src/.gdbinit
5075 fi
5076 ])
5077
5078 AC_OUTPUT