changeset 109205:f6714012e3cb

Merge from mainline.
author Katsumi Yamaoka <katsumi@flagship2>
date Thu, 27 May 2010 11:59:21 +0000
parents d1f39bab57ad (current diff) 5a61e28431af (diff)
children 922942081399
files admin/notes/cpp
diffstat 27 files changed, 354 insertions(+), 902 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,13 @@
+2010-05-27  Glenn Morris  <rgm@gnu.org>
+
+	* config.bat: Do not preprocess src/Makefile.in.
+
+	* configure.in: Do not preprocess src/Makefile.in.
+	(cpp_undefs, CPP_NEED_TRADITIONAL): Remove.
+	(AC_EGREP_CPP): Test no longer needed.
+
+	* make-dist: No more Makefile.c files.
+
 2010-05-26  Glenn Morris  <rgm@gnu.org>
 
 	* configure.in (YMF_PASS_LDFLAGS): Remove.
--- a/INSTALL	Wed May 26 12:12:13 2010 +0000
+++ b/INSTALL	Thu May 27 11:59:21 2010 +0000
@@ -1,6 +1,7 @@
 GNU Emacs Installation Guide
 Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-2005, 2006, 2007, 2008, 2009, 2010  Free Software Foundation, Inc.
+  2005, 2006, 2007, 2008, 2009, 2010
+  Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
 
@@ -686,8 +687,8 @@
 
 CONFIGURATION BY HAND
 
-Instead of running the `configure' program, you have to perform the
-following steps.
+This should not be necessary and is not recommended.  Instead of
+running the `configure' program, you have to perform the following steps.
 
 1) Copy `./src/config.in' to `./src/config.h'.
 
@@ -701,22 +702,15 @@
 2) Edit `./src/config.h' to set the right options for your system.  If
 you need to override any of the definitions in the s/*.h and m/*.h
 files for your system and machine, do so by editing config.h, not by
-changing the s/*.h and m/*.h files.  Occasionally you may need to
-redefine parameters used in `./lib-src/movemail.c'.
+changing the s/*.h and m/*.h files.
 
-3) Create src/Makefile and lib-src/Makefile from the corresponding
-`Makefile.in' files.  First copy `Makefile.in' to `Makefile.c',
-then edit in appropriate substitutions for the @...@ constructs,
-and then copy the shell commands near the end of `configure'
-that run cpp to construct `Makefile'.
-
-4) Create `Makefile' files in various other directories
-from the corresponding `Makefile.in' files.  This isn't so hard,
-just a matter of substitution.
+3) Create `Makefile' files in various directories from the
+corresponding `Makefile.in' files.  This isn't so hard, just a matter
+of editing in appropriate substitutions for the @...@ constructs.
 
 The `configure' script is built from `configure.in' by the `autoconf'
-program.  You need version 2.51 or newer of `autoconf' to rebuild
-`configure'.
+program.  You need at least the version of autoconf specified in the
+AC_PREREQ(...) command to rebuild `configure' from `configure.in'.
 
 BUILDING GNU EMACS BY HAND
 
--- a/admin/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/admin/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,9 @@
+2010-05-27  Glenn Morris  <rgm@gnu.org>
+
+	* quick-install-emacs (AVOID): No more Makefile.c files.
+
+	* notes/cpp: Remove file.
+
 2010-05-15  Ken Raeburn  <raeburn@raeburn.org>
 
 	* admin.el (set-version, set-copyright): Update emacs.c instead of
--- a/admin/notes/cpp	Wed May 26 12:12:13 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-ttn 2003-04-09
-
-we use a C preprocesor not only in the normal compilation of .c files
-into object files, but also for creating src/Makefile.
-(delimited by comment "start of cpp stuff").  some cpp implementations
-insert whitespace in between tokens.
-
-during makefile creation, the preprocessor symbol NOT_C_CODE is defined.
-this should not be defined for normal .c file compilation.
-
-there has been discussion on eliminating this use of cpp and relying
-solely on autoconf processing.  rms says to leave it be.
-
-;;; arch-tag: d654291e-9fc8-41b7-ab0c-d3cde842a8e0
--- a/admin/quick-install-emacs	Wed May 26 12:12:13 2010 +0000
+++ b/admin/quick-install-emacs	Thu May 27 11:59:21 2010 +0000
@@ -1,8 +1,8 @@
 #!/bin/sh
 ### quick-install-emacs --- do a halfway-decent job of installing emacs quickly
 
-## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-##   Free Software Foundation, Inc.
+## Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+##   2010  Free Software Foundation, Inc.
 
 ## Author: Miles Bader <miles@gnu.org>
 
@@ -31,7 +31,7 @@
 PUBLIC_LIBSRC_BINARIES='b2m emacsclient etags ctags ebrowse'
 PUBLIC_LIBSRC_SCRIPTS='grep-changelog rcs-checkin'
 
-AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ Makefile.c$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile testfile test-distrib"
+AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile testfile test-distrib"
 
 # Prune old binaries lying around in the source tree
 PRUNE=no
--- a/config.bat	Wed May 26 12:12:13 2010 +0000
+++ b/config.bat	Thu May 27 11:59:21 2010 +0000
@@ -190,11 +190,10 @@
 if exist dir.h ren dir.h vmsdir.h
 
 rem   Create "makefile" from "makefile.in".
-rm -f Makefile junk.c junk2.c
-sed -e "1,/== start of cpp stuff ==/s@^##*[ 	].*$@@" <Makefile.in >junk.c
-copy junk.c + deps.mk junk2.c
-gcc -E -traditional junk2.c | sed -f ../msdos/sed1v2.inp >Makefile
-rm -f junk.c junk2.c
+rm -f Makefile makefile.tmp
+copy Makefile.in + deps.mk makefile.tmp
+sed -f ../msdos/sed1v2.inp <makefile.tmp >Makefile
+rm -f makefile.tmp
 
 if "%X11%" == "" goto src5
 mv Makefile makefile.tmp
--- a/configure	Wed May 26 12:12:13 2010 +0000
+++ b/configure	Thu May 27 11:59:21 2010 +0000
@@ -26694,15 +26694,15 @@
 
 
 test "x$LINKER" = "x" && LINKER=ld
-## FIXME? What setting of YMF_PASS_LDFLAGS should this have?
+## FIXME? What setting of EDIT_LDFLAGS should this have?
 test "$NS_IMPL_GNUSTEP" = "yes" && LINKER="\$(CC) -rdynamic"
 
 
 
 
-## FIXME? The logic here is not precisely the same as that above
-## setting YMF_PASS_LDFLAGS.  There is no check here for a pre-defined
-## LINKER.  Should we only be setting LIB_GCC if LD ~ -nostdlib?
+## FIXME? The logic here is not precisely the same as that above.
+## There is no check here for a pre-defined LINKER.
+## Should we only be setting LIB_GCC if LD ~ -nostdlib?
 LIB_GCC=
 if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
 
@@ -26848,42 +26848,7 @@
 test "${exec_prefix}" != NONE &&
   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`
 
-# Now get this: Some word that is part of the ${srcdir} directory name
-# or the ${configuration} value might, just might, happen to be an
-# identifier like `sun4' or `i386' or something, and be predefined by
-# the C preprocessor to some helpful value like 1, or maybe the empty
-# string.  Needless to say consequent macro substitutions are less
-# than conducive to the makefile finding the correct directory.
-# src/Makefile.in used to treat X11 as equivalent to HAVE_X11.
-# But nothing in Emacs defines X11, and everywhere else uses HAVE_X11,
-# so that cannot have been doing anything.
-cpp_undefs="`echo $srcdir $configuration $canonical unix mktime register X11 |
-  sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
-  -e 's/  */ -U/g' -e 's/-U[0-9][^ ]*//g'`"
-
-## Check if the C preprocessor will convert `..' to `. .'.  If so, set
-## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
-## from Makefile.c can correctly provide the arg `-traditional' to the
-## C preprocessor.
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-yes..yes
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes..yes" >/dev/null 2>&1; then
-  CPP_NEED_TRADITIONAL=no
-else
-  CPP_NEED_TRADITIONAL=yes
-fi
-rm -f conftest*
-
-
-ac_config_files="$ac_config_files Makefile lib-src/Makefile oldXMenu/Makefile doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile doc/lispref/Makefile src/Makefile.c:src/Makefile.in lwlib/Makefile lisp/Makefile leim/Makefile"
+ac_config_files="$ac_config_files 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"
 
 ac_config_commands="$ac_config_commands default"
 
@@ -27470,7 +27435,7 @@
 #
 # INIT-COMMANDS
 #
-GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"
+GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"
 
 _ACEOF
 
@@ -27488,7 +27453,7 @@
     "doc/misc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/misc/Makefile" ;;
     "doc/lispintro/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispintro/Makefile" ;;
     "doc/lispref/Makefile") CONFIG_FILES="$CONFIG_FILES doc/lispref/Makefile" ;;
-    "src/Makefile.c") CONFIG_FILES="$CONFIG_FILES src/Makefile.c:src/Makefile.in" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     "lwlib/Makefile") CONFIG_FILES="$CONFIG_FILES lwlib/Makefile" ;;
     "lisp/Makefile") CONFIG_FILES="$CONFIG_FILES lisp/Makefile" ;;
     "leim/Makefile") CONFIG_FILES="$CONFIG_FILES leim/Makefile" ;;
@@ -28154,35 +28119,9 @@
   test -d ${dir} || mkdir ${dir}
 done
 
-# Build src/Makefile from ${srcdir}/src/Makefile.c
-# This must be done after src/config.h is built, since we rely on that file.
-
 echo creating src/epaths.h
 ${MAKE-make} epaths-force
 
-# As of 2000-11-19, newest development versions of GNU cpp preprocess
-# `..' to `. .'  unless invoked with -traditional
-
-if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
-  CPPFLAGS="$CPPFLAGS -traditional"
-fi
-
-echo creating src/Makefile
-( cd src
-  rm -f junk.c junk1.c junk2.c
-  sed -e '/start of cpp stuff/q' \
-      < Makefile.c > junk1.c
-  sed -e '1,/start of cpp stuff/d'\
-      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
-      < Makefile.c > junk.c
-  $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
-      sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	]*$/d' > junk2.c
-  cat junk1.c junk2.c > Makefile.new
-  rm -f junk.c junk1.c junk2.c
-  chmod 444 Makefile.new
-  mv -f Makefile.new Makefile
-)
-
 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
   echo creating src/.gdbinit
   echo source $srcdir/src/.gdbinit > src/.gdbinit
--- a/configure.in	Wed May 26 12:12:13 2010 +0000
+++ b/configure.in	Thu May 27 11:59:21 2010 +0000
@@ -3755,32 +3755,9 @@
 test "${exec_prefix}" != NONE &&
   exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`]
 
-# Now get this: Some word that is part of the ${srcdir} directory name
-# or the ${configuration} value might, just might, happen to be an
-# identifier like `sun4' or `i386' or something, and be predefined by
-# the C preprocessor to some helpful value like 1, or maybe the empty
-# string.  Needless to say consequent macro substitutions are less
-# than conducive to the makefile finding the correct directory.
-# src/Makefile.in used to treat X11 as equivalent to HAVE_X11.
-# But nothing in Emacs defines X11, and everywhere else uses HAVE_X11,
-# so that cannot have been doing anything.
-[cpp_undefs="`echo $srcdir $configuration $canonical unix mktime register X11 |
-  sed -e 's/[^a-zA-Z0-9_]/ /g' -e 's/^/ /' -e 's/  *$//' \
-  -e 's/  */ -U/g' -e 's/-U[0-9][^ ]*//g'`"]
-
-## Check if the C preprocessor will convert `..' to `. .'.  If so, set
-## CPP_NEED_TRADITIONAL to `yes' so that the code to generate Makefile
-## from Makefile.c can correctly provide the arg `-traditional' to the
-## C preprocessor.
-
-AC_EGREP_CPP(yes..yes,
-	[yes..yes],
-	CPP_NEED_TRADITIONAL=no,
-	CPP_NEED_TRADITIONAL=yes)
-
 AC_OUTPUT(Makefile lib-src/Makefile oldXMenu/Makefile \
 	doc/emacs/Makefile doc/misc/Makefile doc/lispintro/Makefile \
-	doc/lispref/Makefile src/Makefile.c:src/Makefile.in \
+	doc/lispref/Makefile src/Makefile \
 	lwlib/Makefile lisp/Makefile leim/Makefile, [
 
 ### Make the necessary directories, if they don't exist.
@@ -3788,41 +3765,15 @@
   test -d ${dir} || mkdir ${dir}
 done
 
-# Build src/Makefile from ${srcdir}/src/Makefile.c
-# This must be done after src/config.h is built, since we rely on that file.
-
 echo creating src/epaths.h
 ${MAKE-make} epaths-force
 
-# As of 2000-11-19, newest development versions of GNU cpp preprocess
-# `..' to `. .'  unless invoked with -traditional
-
-if test "x$GCC" = xyes && test "x$CPP_NEED_TRADITIONAL" = xyes; then
-  CPPFLAGS="$CPPFLAGS -traditional"
-fi
-
-echo creating src/Makefile
-( cd src
-  rm -f junk.c junk1.c junk2.c
-  sed -e '/start of cpp stuff/q' \
-      < Makefile.c > junk1.c
-  sed -e '1,/start of cpp stuff/d'\
-      -e 's,/\*\*/#\(.*\)$,/* \1 */,' \
-      < Makefile.c > junk.c
-  $CPP -P $cpp_undefs -I. -I$srcdir/src $CPPFLAGS junk.c | \
-      sed -e 's/^ /	/' -e '/^#/d' -e '/^[ 	]*$/d' > junk2.c
-  cat junk1.c junk2.c > Makefile.new
-  rm -f junk.c junk1.c junk2.c
-  chmod 444 Makefile.new
-  mv -f Makefile.new Makefile
-)
-
 if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
   echo creating src/.gdbinit
   echo source $srcdir/src/.gdbinit > src/.gdbinit
 fi
 
-], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPP_NEED_TRADITIONAL="$CPP_NEED_TRADITIONAL" CPPFLAGS="$CPPFLAGS" cpp_undefs="$cpp_undefs"])
+], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
 
 m4_if(dnl	Do not change this comment
    arch-tag: 156a4dd5-bddc-4d18-96ac-f37742cf6a5e
--- a/etc/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/etc/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,7 @@
+2010-05-27  Glenn Morris  <rgm@gnu.org>
+
+	* PROBLEMS: Remove old information no longer of relevance.
+
 2010-05-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* NEWS: Add sections for Emacs-23.3.
--- a/etc/MACHINES	Wed May 26 12:12:13 2010 +0000
+++ b/etc/MACHINES	Thu May 27 11:59:21 2010 +0000
@@ -198,8 +198,7 @@
 
 IBM System/390 running GNU/Linux (s390-*-linux-gnu)
 
-  As of Emacs 21.2, a 31-bit only version is supported on this
-  system.
+  As of Emacs 21.2, a 31-bit only version is supported on this system.
 
 Intel 386 (i386-*-freebsd,      i386-*-linux-gnu,
 	   i386-*-sol2.4,	i386-intsys-sysv,
@@ -247,11 +246,6 @@
   do `gmake install MAKE=gmake'.  However, more recently it is
   reported that using the system Make on NetBSD 1.3.1 works ok.
 
-  If you are using System V release 4.2, you may find that `cc -E'
-  puts spurious spaces in `src/xmakefile'.  If that happens,
-  specify CPP=/lib/cpp as an option when you run make.
-  There is no problem if you compile with GCC.
-
   Note that use of Linux with GCC 2.4 and the DLL 4.4 libraries
   requires the experimental "net 2" network patches (no relation to
   Berkeley Net 2).  There is a report that (some version of) Linux
@@ -491,10 +485,6 @@
   If you get compilation errors about wrong number of
   arguments to getpgrp, define GETPGRP_NO_ARG.
 
-  The standard C preprocessor may generate xmakefile incorrectly.  However,
-  /lib/cpp will work, so use `make CPP=/lib/cpp'.  Standard cpp
-  seems to work OK under Dell 2.2.
-
   Some versions 3 and earlier of V.4, on the Intel 386 and 860, had
   problems in the X11 libraries.  These prevent Emacs from working
   with X.  You can use Emacs with X provided your copy of X is based
--- a/etc/PROBLEMS	Wed May 26 12:12:13 2010 +0000
+++ b/etc/PROBLEMS	Thu May 27 11:59:21 2010 +0000
@@ -9,7 +9,9 @@
 This file describes various problems that have been encountered
 in compiling, installing and running GNU Emacs.  Try doing C-c C-t
 and browsing through the outline headers.  (See C-h m for help on
-Outline mode.)
+Outline mode.)  Information about systems that are no longer supported,
+and old Emacs releases, has been removed.  Consult older versions of
+this file if you are interested in that information.
 
 * Mule-UCS doesn't work in Emacs 23.
 
@@ -89,14 +91,7 @@
 file.
 
 Another possible reason for such failures is stale *.elc files
-lurking somewhere on your load-path.  The following command will
-print any duplicate Lisp files that are present in load-path:
-
-    emacs -q -batch -f list-load-path-shadows
-
-If this command prints any file names, some of these files are stale,
-and should be deleted or their directories removed from your
-load-path.
+lurking somewhere on your load-path -- see the next section.
 
 ** Emacs prints an error at startup after upgrading from an earlier version.
 
@@ -487,13 +482,7 @@
             else
             {
 
-** PSGML
-
-*** Old versions of the PSGML package use the obsolete variables
-`before-change-function' and `after-change-function', which are no
-longer used by Emacs.  Please use PSGML 1.2.3 or later.
-
-*** PSGML conflicts with sgml-mode.
+** PSGML conflicts with sgml-mode.
 
 PSGML package uses the same names of some variables (like keymap)
 as built-in sgml-mode.el because it was created as a replacement
@@ -503,38 +492,6 @@
 (from sgml-mode.el) is used for HTML file and loading of psgml.el
 (for sgml-mode or xml-mode) will cause an error.
 
-*** Versions of the PSGML package earlier than 1.0.3 (stable) or 1.1.2
-(alpha) fail to parse DTD files correctly in Emacs 20.3 and later.
-Here is a patch for psgml-parse.el from PSGML 1.0.1 and, probably,
-earlier versions.
-
---- psgml-parse.el	1998/08/21 19:18:18	1.1
-+++ psgml-parse.el	1998/08/21 19:20:00
-@@ -2383,7 +2383,7 @@ (defun sgml-push-to-entity (entity &opti
-       (setq sgml-buffer-parse-state nil))
-     (cond
-      ((stringp entity)			; a file name
--      (save-excursion (insert-file-contents entity))
-+      (insert-file-contents entity)
-       (setq default-directory (file-name-directory entity)))
-      ((consp (sgml-entity-text entity)) ; external id?
-       (let* ((extid (sgml-entity-text entity))
-
-** AUCTeX
-
-You should not be using a version older than 11.52 if you can avoid
-it.
-
-*** Emacs 21 freezes when visiting a TeX file with AUCTeX installed.
-
-Emacs 21 needs version 10 or later of AUCTeX; upgrading should solve
-these problems.
-
-*** No colors in AUCTeX with Emacs 21.
-
-Upgrade to AUC TeX version 10 or later, and make sure it is
-byte-compiled with Emacs 21.
-
 ** PCL-CVS
 
 *** Lines are not updated or new lines are added in the buffer upon commit.
@@ -642,16 +599,6 @@
 invoking `df'; (b) use `df' from the GNU Fileutils package; or
 (c) use CVS, which is Free Software, instead of ClearCase.
 
-*** Versions of the W3 package released before Emacs 21.1 don't run
-under Emacs 21.  This fixed in W3 version 4.0pre.47.
-
-*** The LDAP support rely on ldapsearch program from OpenLDAP version 2.
-
-It can fail to work with ldapsearch program from OpenLDAP version 1.
-Version 1 of OpenLDAP is now deprecated.  If you are still using it,
-please upgrade to version 2.  As a temporary workaround, remove
-argument "-x" from the variable `ldap-ldapsearch-args'.
-
 *** ps-print commands fail to find prologue files ps-prin*.ps.
 
 This can happen if you use an old version of X-Symbol package: it
@@ -929,12 +876,6 @@
 mule-unicode-e000-ffff:-gnu-unifont-*-iso10646-1,\
 mule-unicode-0100-24ff:-gnu-unifont-*-iso10646-1
 
-*** Athena/Lucid toolkit limitations
-
-The Athena/Lucid toolkit cannot display UTF-8 strings in the menu, so
-if you have UTF-8 buffer names, the buffer menu won't display the
-names properly.  The GTK+ toolkit works properly.
-
 ** The UTF-8/16/7 coding systems don't encode CJK (Far Eastern) characters.
 
 Emacs directly supports the Unicode BMP whose code points are in the
@@ -1387,15 +1328,6 @@
 your .emacs file.  Another cause is a bad value of EMACSLOADPATH in
 the environment.
 
-*** Emacs fails to get default settings from X Windows server.
-
-The X library in X11R4 has a bug; it interchanges the 2nd and 3rd
-arguments to XGetDefaults.  Define the macro XBACKWARDS in config.h to
-tell Emacs to compensate for this.
-
-I don't believe there is any way Emacs can determine for itself
-whether this problem is present on a given system.
-
 *** X Windows doesn't work if DISPLAY uses a hostname.
 
 People have reported kernel bugs in certain systems that cause Emacs
@@ -1407,12 +1339,6 @@
 However, that has the disadvantage of turning off interrupts, so that
 you are unable to quit out of a Lisp program by typing C-g.
 
-The easy way to do this is to put
-
-  (setq x-sigio-bug t)
-
-in your site-init.el file.
-
 *** Prevent double pastes in X
 
 The problem:  a region, such as a command, is pasted twice when you copy
@@ -2373,18 +2299,6 @@
 for your C compiler (CPP="/opt/SUNWspro/bin/cc -E" in the above
 example).
 
-*** `configure' fails with ``"junk.c", line 660: invalid input token: 8.elc''
-
-The final stage of the Emacs configure process uses the C preprocessor
-to generate the Makefiles.  Errors of this form can occur if the C
-preprocessor inserts extra whitespace into its output.  The solution
-is to find the switches that stop your preprocessor from inserting extra
-whitespace, add them to CPPFLAGS, and re-run configure.  For example,
-this error can occur on Solaris 10 when using the Sun Studio compiler
-``Sun C 5.8'' with its preprocessor CPP="/opt/SUNWspro/bin/cc -E".
-The relevant switch in this case is "-Xs" (``compile assuming
-(pre-ANSI) K & R C style code'').
-
 ** Compilation
 
 *** Building Emacs over NFS fails with ``Text file busy''.
@@ -2427,46 +2341,6 @@
 
 The solution is to remove this line from `etc/fstab'.
 
-*** Building Emacs with GCC 2.9x fails in the `src' directory.
-
-This may happen if you use a development version of GNU `cpp' from one
-of the GCC snapshots between Oct 2000 and Feb 2001, or from a released
-version of GCC newer than 2.95.2 which was prepared around those
-dates; similar problems were reported with some snapshots of GCC 3.1
-around Sep 30 2001.  The preprocessor in those versions is
-incompatible with a traditional Unix cpp (e.g., it expands ".." into
-". .", which breaks relative file names that reference the parent
-directory; or inserts TAB characters before lines that set Make
-variables).
-
-The solution is to make sure the preprocessor is run with the
-`-traditional' option.  The `configure' script does that automatically
-when it detects the known problems in your cpp, but you might hit some
-unknown ones.  To force the `configure' script to use `-traditional',
-run the script like this:
-
-  CPP='gcc -E -traditional' ./configure ...
-
-(replace the ellipsis "..." with any additional arguments you pass to
-the script).
-
-Note that this problem does not pertain to the MS-Windows port of
-Emacs, since it doesn't use the preprocessor to generate Makefiles.
-
-*** src/Makefile and lib-src/Makefile are truncated--most of the file missing.
-*** Compiling wakeup, in lib-src, says it can't make wakeup.c.
-
-This can happen if configure uses GNU sed version 2.03.  That version
-had a bug.  GNU sed version 2.05 works properly.To solve the
-problem, install the current version of GNU Sed, then rerun Emacs's
-configure script.
-
-*** Compiling lib-src says there is no rule to make test-distrib.c.
-
-This results from a bug in a VERY old version of GNU Sed.  To solve
-the problem, install the current version of GNU Sed, then rerun
-Emacs's configure script.
-
 *** Building a 32-bit executable on a 64-bit GNU/Linux architecture.
 
 First ensure that the necessary 32-bit system libraries and include
@@ -2597,31 +2471,6 @@
 Since the .o object files already exist, this will not recompile Emacs
 with GCC, but just restart by trying again to link temacs.
 
-*** AIX 1.3 ptf 0013: Link failure.
-
-There is a real duplicate definition of the function `_slibc_free' in
-the library /lib/libc_s.a (just do nm on it to verify).  The
-workaround/fix is:
-
-    cd /lib
-    ar xv libc_s.a NLtmtime.o
-    ar dv libc_s.a NLtmtime.o
-
-*** AIX 4.1.2: Linker error messages such as
-  ld: 0711-212 SEVERE ERROR: Symbol .__quous, found in the global symbol table
-        of archive /usr/lib/libIM.a, was not defined in archive member shr.o.
-
-This is a problem in libIM.a.  You can work around it by executing
-these shell commands in the src subdirectory of the directory where
-you build Emacs:
-
-    cp /usr/lib/libIM.a .
-    chmod 664 libIM.a
-    ranlib libIM.a
-
-Then change -lIM to ./libIM.a in the command to link temacs (in
-Makefile).
-
 *** Sun with acc: Link failure when using acc on a Sun.
 
 To use acc, you need additional options just before the libraries, such as
@@ -2910,108 +2759,19 @@
 not initialized are not supposed to be pure.  On these systems you
 may need to add "#define static" to the m- or the s- file.
 
-* Emacs 19 problems
-
-** Error messages `Wrong number of arguments: #<subr where-is-internal>, 5'.
-
-This typically results from having the powerkey library loaded.
-Powerkey was designed for Emacs 19.22.  It is obsolete now because
-Emacs 19 now has this feature built in; and powerkey also calls
-where-is-internal in an obsolete way.
-
-So the fix is to arrange not to load powerkey.
-
 * Runtime problems on legacy systems
 
 This section covers bugs reported on very old hardware or software.
 If you are using hardware and an operating system shipped after 2000,
 it is unlikely you will see any of these.
 
-** Ancient operating systems
-
-AIX 4.2 was end-of-lifed on Dec 31st, 1999.
-
-*** AIX: You get this compiler error message:
-
-    Processing include file ./XMenuInt.h
-        1501-106: (S) Include file X11/Xlib.h not found.
-
-This means your system was installed with only the X11 runtime i.d
-libraries.  You have to find your sipo (bootable tape) and install
-X11Dev... with smit.
-
-(This report must be ancient.  Bootable tapes are long dead.)
-
-*** AIX 3.2.4: Releasing Ctrl/Act key has no effect, if Shift is down.
-
-Due to a feature of AIX, pressing or releasing the Ctrl/Act key is
-ignored when the Shift, Alt or AltGr keys are held down.  This can
-lead to the keyboard being "control-locked"--ordinary letters are
-treated as control characters.
-
-You can get out of this "control-locked" state by pressing and
-releasing Ctrl/Act while not pressing or holding any other keys.
-
-*** AIX 3.2.5: You get this message when running Emacs:
-
-    Could not load program emacs
-    Symbol smtcheckinit in csh is undefined
-    Error was: Exec format error
-
-or this one:
-
-    Could not load program .emacs
-    Symbol _system_con in csh is undefined
-    Symbol _fp_trapsta in csh is undefined
-    Error was: Exec format error
-
-These can happen when you try to run on AIX 3.2.5 a program that was
-compiled with 3.2.4.  The fix is to recompile.
-
-*** AIX 4.2: Emacs gets a segmentation fault at startup.
-
-If you are using IBM's xlc compiler, compile emacs.c
-without optimization; that should avoid the problem.
-
-*** ISC Unix
-
-**** ISC: display-time causes kernel problems on ISC systems.
-
-Under Interactive Unix versions 3.0.1 and 4.0 (and probably other
-versions), display-time causes the loss of large numbers of STREVENT
-cells.  Eventually the kernel's supply of these cells is exhausted.
-This makes emacs and the whole system run slow, and can make other
-processes die, in particular pcnfsd.
-
-Other emacs functions that communicate with remote processes may have
-the same problem.  Display-time seems to be far the worst.
-
-The only known fix: Don't run display-time.
-
-**** Sunos 5.3: Subprocesses remain, hanging but not zombies.
+*** Sunos 5.3: Subprocesses remain, hanging but not zombies.
 
 A bug in Sunos 5.3 causes Emacs subprocesses to remain after Emacs
 exits.  Sun patch # 101415-02 is part of the fix for this, but it only
 applies to ptys, and doesn't fix the problem with subprocesses
 communicating through pipes.
 
-*** Irix
-
-*** Irix 6.2: No visible display on mips-sgi-irix6.2 when compiling with GCC 2.8.1.
-
-This problem went away after installing the latest IRIX patches
-as of 8 Dec 1998.
-
-The same problem has been reported on Irix 6.3.
-
-*** Irix 6.3: substituting environment variables in file names
-in the minibuffer gives peculiar error messages such as
-
-   Substituting nonexistent environment variable ""
-
-This is not an Emacs bug; it is caused by something in SGI patch
-003082 August 11, 1998.
-
 *** OPENSTEP
 
 **** OPENSTEP 4.2: Compiling syntax.c with gcc 2.7.2.1 fails.
@@ -3052,81 +2812,6 @@
 This can happen if you configure Emacs without specifying the precise
 version of Solaris that you are using.
 
-**** Solaris 2.3 and 2.4: Unpredictable segmentation faults.
-
-A user reported that this happened in 19.29 when it was compiled with
-the Sun compiler, but not when he recompiled with GCC 2.7.0.
-
-We do not know whether something in Emacs is partly to blame for this.
-
-**** Solaris 2.4: Emacs dumps core on startup.
-
-Bill Sebok says that the cause of this is Solaris 2.4 vendor patch
-102303-05, which extends the Solaris linker to deal with the Solaris
-Common Desktop Environment's linking needs.  You can fix the problem
-by removing this patch and installing patch 102049-02 instead.
-However, that linker version won't work with CDE.
-
-Solaris 2.5 comes with a linker that has this bug.  It is reported that if
-you install all the latest patches (as of June 1996), the bug is fixed.
-We suspect the crucial patch is one of these, but we don't know
-for certain.
-
-        103093-03: [README] SunOS 5.5: kernel patch (2140557 bytes)
-        102832-01: [README] OpenWindows 3.5: Xview Jumbo Patch (4181613 bytes)
-        103242-04: [README] SunOS 5.5: linker patch (595363 bytes)
-
-(One user reports that the bug was fixed by those patches together
-with patches 102980-04, 103279-01, 103300-02, and 103468-01.)
-
-If you can determine which patch does fix the bug, please tell
-bug-gnu-emacs@gnu.org.
-
-Meanwhile, the GNU linker links Emacs properly on both Solaris 2.4 and
-Solaris 2.5.
-
-**** Solaris 2.4: Dired hangs and C-g does not work.  Or Emacs hangs
-forever waiting for termination of a subprocess that is a zombie.
-
-casper@fwi.uva.nl says the problem is in X11R6.  Rebuild libX11.so
-after changing the file xc/config/cf/sunLib.tmpl.  Change the lines
-
-    #if ThreadedX
-    #define SharedX11Reqs -lthread
-    #endif
-
-to:
-
-    #if OSMinorVersion < 4
-    #if ThreadedX
-    #define SharedX11Reqs -lthread
-    #endif
-    #endif
-
-Be sure also to edit x/config/cf/sun.cf so that OSMinorVersion is 4
-(as it should be for Solaris 2.4).  The file has three definitions for
-OSMinorVersion: the first is for x86, the second for SPARC under
-Solaris, and the third for SunOS 4.  Make sure to update the
-definition for your type of machine and system.
-
-Then do `make Everything' in the top directory of X11R6, to rebuild
-the makefiles and rebuild X.  The X built this way work only on
-Solaris 2.4, not on 2.3.
-
-For multithreaded X to work it is necessary to install patch
-101925-02 to fix problems in header files [2.4].  You need
-to reinstall gcc or re-run just-fixinc after installing that
-patch.
-
-However, Frank Rust <frust@iti.cs.tu-bs.de> used a simpler solution:
-he changed
-    #define ThreadedX          YES
-to
-    #define ThreadedX          NO
-in sun.cf and did `make World' to rebuild X11R6.  Removing all
-`-DXTHREAD*' flags and `-lthread' entries from lib/X11/Makefile and
-typing 'make install' in that directory also seemed to work.
-
 **** Solaris 2.x: GCC complains "64 bit integer types not supported".
 
 This suggests that GCC is not installed correctly.  Most likely you
@@ -3177,18 +2862,11 @@
 
 *** HP/UX versions before 11.0
 
-HP/UX 9 was end-of-lifed in December 1998.
 HP/UX 10 was end-of-lifed in May 1999.
 
-**** HP/UX 9: Emacs crashes with SIGBUS or SIGSEGV after you delete a frame.
-
-We think this is due to a bug in the X libraries provided by HP.  With
-the alternative X libraries in /usr/contrib/mitX11R5/lib, the problem
-does not happen.
-
 *** HP/UX 10: Large file support is disabled.
 
-See the comments in src/s/hpux10.h.
+See the comments in src/s/hpux10-20.h.
 
 *** HP/UX: Emacs is slow using X11R5.
 
@@ -3199,16 +2877,7 @@
 those libraries installed.  To get good performance, you need to
 install them and rebuild Emacs.
 
-*** Ultrix and Digital Unix
-
-**** Ultrix 4.2: `make install' fails on install-doc with `Error 141'.
-
-This happens on Ultrix 4.2 due to failure of a pipeline of tar
-commands.  We don't know why they fail, but the bug seems not to be in
-Emacs.  The workaround is to run the shell command in install-doc by
-hand.
-
-**** Digital Unix 4.0: Garbled display on non-X terminals when Emacs runs.
+*** Digital Unix 4.0: Garbled display on non-X terminals when Emacs runs.
 
 So far it appears that running `tset' triggers this problem (when TERM
 is vt100, at least).  If you do not run `tset', then Emacs displays
@@ -3216,21 +2885,6 @@
 `tset' actually causes the problem, we may be able to implement a fix
 in Emacs.
 
-**** Ultrix: `expand-file-name' fails to work on any but the machine you dumped Emacs on.
-
-On Ultrix, if you use any of the functions which look up information
-in the passwd database before dumping Emacs (say, by using
-expand-file-name in site-init.el), then those functions will not work
-in the dumped Emacs on any host but the one Emacs was dumped on.
-
-The solution?  Don't use expand-file-name in site-init.el, or in
-anything it loads.  Yuck - some solution.
-
-I'm not sure why this happens; if you can find out exactly what is
-going on, and perhaps find a fix or a workaround, please let us know.
-Perhaps the YP functions cache some information, the cache is included
-in the dumped Emacs, and is then inaccurate on any other host.
-
 *** SVr4
 
 **** SVr4: On some variants of SVR4, Emacs does not work at all with X.
@@ -3253,102 +2907,8 @@
 This makes Emacs use memory less efficiently, but seems to work around
 the kernel bug.
 
-*** Irix 5 and earlier
-
-Exactly when Irix-5 end-of-lifed is obscure.  But since Irix 6.0
-shipped in 1994, it has been some years.
-
-**** Irix 5.2: unexelfsgi.c can't find cmplrs/stsupport.h.
-
-The file cmplrs/stsupport.h was included in the wrong file set in the
-Irix 5.2 distribution.  You can find it in the optional fileset
-compiler_dev, or copy it from some other Irix 5.2 system.  A kludgy
-workaround is to change unexelfsgi.c to include sym.h instead of
-syms.h.
-
-**** Irix 5.3: "out of virtual swap space".
-
-This message occurs when the system runs out of swap space due to too
-many large programs running.  The solution is either to provide more
-swap space or to reduce the number of large programs being run.  You
-can check the current status of the swap space by executing the
-command `swap -l'.
-
-You can increase swap space by changing the file /etc/fstab.  Adding a
-line like this:
-
-/usr/swap/swap.more     swap    swap    pri=3 0 0
-
-where /usr/swap/swap.more is a file previously created (for instance
-by using /etc/mkfile), will increase the swap space by the size of
-that file.  Execute `swap -m' or reboot the machine to activate the
-new swap area.  See the manpages for `swap' and `fstab' for further
-information.
-
-The objectserver daemon can use up lots of memory because it can be
-swamped with NIS information.  It collects information about all users
-on the network that can log on to the host.
-
-If you want to disable the objectserver completely, you can execute
-the command `chkconfig objectserver off' and reboot.  That may disable
-some of the window system functionality, such as responding CDROM
-icons.
-
-You can also remove NIS support from the objectserver.  The SGI `admin'
-FAQ has a detailed description on how to do that; see question 35
-("Why isn't the objectserver working?").  The admin FAQ can be found at
-ftp://viz.tamu.edu/pub/sgi/faq/.
-
-**** Irix 5.3: Emacs crashes in utmpname.
-
-This problem is fixed in Patch 3175 for Irix 5.3.
-It is also fixed in Irix versions 6.2 and up.
-
-**** Irix 6.0: Make tries (and fails) to build a program named unexelfsgi.
-
-A compiler bug inserts spaces into the string "unexelfsgi . o"
-in src/Makefile.  Edit src/Makefile, after configure is run,
-find that string, and take out the spaces.
-
-Compiler fixes in Irix 6.0.1 should eliminate this problem.
-
 *** SCO Unix and UnixWare
 
-**** SCO 3.2v4: Unusable default font.
-
-The Open Desktop environment comes with default X resource settings
-that tell Emacs to use a variable-width font.  Emacs cannot use such
-fonts, so it does not work.
-
-This is caused by the file /usr/lib/X11/app-defaults/ScoTerm, which is
-the application-specific resource file for the `scoterm' terminal
-emulator program.  It contains several extremely general X resources
-that affect other programs besides `scoterm'.  In particular, these
-resources affect Emacs also:
-
-        *Font: -*-helvetica-medium-r-*--12-*-p-*
-        *Background:			scoBackground
-        *Foreground:			scoForeground
-
-The best solution is to create an application-specific resource file for
-Emacs, /usr/lib/X11/sco/startup/Emacs, with the following contents:
-
-        Emacs*Font:	-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
-        Emacs*Background:	white
-        Emacs*Foreground:	black
-
-(These settings mimic the Emacs defaults, but you can change them to
-suit your needs.)  This resource file is only read when the X server
-starts up, so you should restart it by logging out of the Open Desktop
-environment or by running `scologin stop; scologin start` from the shell
-as root.  Alternatively, you can put these settings in the
-/usr/lib/X11/app-defaults/Emacs resource file and simply restart Emacs,
-but then they will not affect remote invocations of Emacs that use the
-Open Desktop display.
-
-These resource files are not normally shared across a network of SCO
-machines; you must create the file on each machine individually.
-
 **** SCO 4.2.0: Regular expressions matching bugs on SCO systems.
 
 On SCO, there are problems in regexp matching when Emacs is compiled
@@ -3380,20 +2940,6 @@
 (He recommends you not change the stack limit, though.)
 These changes take effect when you reboot.
 
-*** Linux 1.x
-
-**** Linux 1.0-1.04: Typing C-c C-c in Shell mode kills your X server.
-
-This happens with Linux kernel 1.0 thru 1.04, approximately.  The workaround is
-to define SIGNALS_VIA_CHARACTERS in config.h and recompile Emacs.
-Newer Linux kernel versions don't have this problem.
-
-**** Linux 1.3: Output from subprocess (such as man or diff) is randomly
-truncated on GNU/Linux systems.
-
-This is due to a kernel bug which seems to be fixed in Linux version
-1.3.75.
-
 ** Windows 3.1, 95, 98, and ME
 
 *** MS-Windows NT/95: Problems running Perl under Emacs
@@ -3667,37 +3213,6 @@
 
 made the problem go away.
 
-** Sunos 4.1.1: there are errors compiling sysdep.c.
-
-If you get errors such as
-
-    "sysdep.c", line 2017: undefined structure or union
-    "sysdep.c", line 2017: undefined structure or union
-    "sysdep.c", line 2019: nodename undefined
-
-This can result from defining LD_LIBRARY_PATH.  It is very tricky
-to use that environment variable with Emacs.  The Emacs configure
-script links many test programs with the system libraries; you must
-make sure that the libraries available to configure are the same
-ones available when you build Emacs.
-
-** SunOS 4.1.1: You get this error message from GNU ld:
-
-    /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment
-
-The problem is in the Sun shared C library, not in GNU ld.
-
-The solution is to install Patch-ID# 100267-03 from Sun.
-
-** Sunos 4.1: Undefined symbols when linking using --with-x-toolkit.
-
-If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace,
-_iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after
--lXaw in the command that links temacs.
-
-This problem seems to arise only when the international language
-extensions to X11R5 are installed.
-
 ** SunOS: Emacs gets error message from linker on Sun.
 
 If the error message says that a symbol such as `f68881_used' or
--- a/lib-src/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/lib-src/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,7 @@
+2010-05-27  Glenn Morris  <rgm@gnu.org>
+
+	* Makefile.in (distclean): No more Makefile.c.
+
 2010-05-22  Jan Djärv  <jan.h.d@swipnet.se>
 
 	* Makefile.in (STAMP_INST_SCRIPTS, STAMP_SCRIPS): New (Bug #6246).
--- a/lib-src/Makefile.in	Wed May 26 12:12:13 2010 +0000
+++ b/lib-src/Makefile.in	Thu May 27 11:59:21 2010 +0000
@@ -283,7 +283,7 @@
 
 distclean: clean
 	-rm -f TAGS
-	-rm -f Makefile Makefile.c blessmail
+	-rm -f Makefile blessmail
 
 maintainer-clean: distclean
 	true
--- a/lisp/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,26 @@
+2010-05-27  Kenichi Handa  <handa@m17n.org>
+
+	* language/hebrew.el (hebrew-shape-gstring): Check if a glyph
+	element of GSTRING is nil.
+
+2010-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/smie.el (smie-forward-token-function)
+	(smie-backward-token-function): New vars.
+	(smie-backward-sexp, smie-forward-sexp)
+	(smie-indent-hanging-p, smie-indent-calculate): Use them.
+	(smie-default-backward-token): Rename from smie-backward-token and
+	skip comments.
+	(smie-default-forward-token): Rename from smie-forward-token and
+	skip comments.
+	(smie-next-sexp): Handle nil results from next-token.
+	(smie-indent-calculate): Add a new case for special `fixindent' comments.
+
+2010-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/ada-xref.el (ada-gnat-parse-gpr):
+	* emulation/edt.el (edt-load-keys): Avoid (expand-file-name ".").
+
 2010-05-26  Glenn Morris  <rgm@gnu.org>
 
 	* emulation/edt.el (edt-load-keys): Use locate-library.
@@ -6,8 +29,8 @@
 
 	* log-edit.el (log-edit-strip-single-file-name): Default to nil.
 	(log-edit-changelog-entries): Doc fix.
-	(log-edit-changelog-insert-entries): Args changed.  Rename
-	relative filenames in ChangeLog entries.  Delete tabs.
+	(log-edit-changelog-insert-entries): Args changed.
+	Rename relative filenames in ChangeLog entries.  Delete tabs.
 	(log-edit-insert-changelog-entries): Reorganize return value of
 	`log-edit-changelog-entries' to pass filenames to
 	log-edit-changelog-insert-entries.
--- a/lisp/emacs-lisp/smie.el	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/emacs-lisp/smie.el	Thu May 27 11:59:21 2010 +0000
@@ -294,18 +294,30 @@
 Each element is of the form (TOKEN LEFT-LEVEL RIGHT-LEVEL).
 Parsing is done using an operator precedence parser.")
 
+(defvar smie-forward-token-function 'smie-default-forward-token
+  "Function to scan forward for the next token.
+Called with no argument should return a token and move to its end.
+If no token is found, return nil or the empty string.
+It can return nil when bumping into a parenthesis, which lets SMIE
+use syntax-tables to handle them in efficient C code.")
+
+(defvar smie-backward-token-function 'smie-default-backward-token
+  "Function to scan backward the previous token.
+Same calling convention as `smie-forward-token-function' except
+it should move backward to the beginning of the previous token.")
+
 (defalias 'smie-op-left 'car)
 (defalias 'smie-op-right 'cadr)
 
-(defun smie-backward-token ()
-  ;; FIXME: This may be an OK default but probably needs a hook.
+(defun smie-default-backward-token ()
+  (forward-comment (- (point)))
   (buffer-substring (point)
                     (progn (if (zerop (skip-syntax-backward "."))
                                (skip-syntax-backward "w_'"))
                            (point))))
 
-(defun smie-forward-token ()
-  ;; FIXME: This may be an OK default but probably needs a hook.
+(defun smie-default-forward-token ()
+  (forward-comment (point-max))
   (buffer-substring (point)
                     (progn (if (zerop (skip-syntax-forward "."))
                                (skip-syntax-forward "w_'"))
@@ -352,7 +364,7 @@
 
             (cond
              ((null toklevels)
-              (when (equal token "")
+              (when (zerop (length token))
                   (condition-case err
                       (progn (goto-char pos) (funcall next-sexp 1) nil)
                   (scan-error (throw 'return (list t (caddr err)))))
@@ -409,7 +421,7 @@
   (nil POS TOKEN): we skipped over a paren-like pair.
   nil: we skipped over an identifier, matched parentheses, ..."
     (smie-next-sexp
-     (lambda () (forward-comment (- (point-max))) (smie-backward-token))
+     (indirect-function smie-backward-token-function)
      (indirect-function 'backward-sexp)
      (indirect-function 'smie-op-left)
      (indirect-function 'smie-op-right)
@@ -427,7 +439,7 @@
   (nil POS TOKEN): we skipped over a paren-like pair.
   nil: we skipped over an identifier, matched parentheses, ..."
     (smie-next-sexp
-     (lambda () (forward-comment (point-max)) (smie-forward-token))
+     (indirect-function smie-forward-token-function)
      (indirect-function 'forward-sexp)
      (indirect-function 'smie-op-right)
      (indirect-function 'smie-op-left)
@@ -486,10 +498,14 @@
 A nil offset defaults to `smie-indent-basic'.")
 
 (defun smie-indent-hanging-p ()
-  ;; A Hanging keyword is one that's at the end of a line except it's not at
+  ;; A hanging keyword is one that's at the end of a line except it's not at
   ;; the beginning of a line.
-  (and (save-excursion (smie-forward-token)
-                       (skip-chars-forward " \t") (eolp))
+  (and (save-excursion
+         (when (zerop (length (funcall smie-forward-token-function)))
+           ;; Could be an open-paren.
+           (forward-char 1))
+         (skip-chars-forward " \t")
+         (eolp))
        (save-excursion (skip-chars-backward " \t") (not (bolp)))))
 
 (defun smie-bolp ()
@@ -518,9 +534,18 @@
    (and virtual
         (if (eq virtual :hanging) (not (smie-indent-hanging-p)) (smie-bolp))
         (current-column))
+   ;; Obey the `fixindent' special comment.
+   (when (save-excursion
+           (comment-normalize-vars)
+           (re-search-forward (concat comment-start-skip
+                                      "fixindent"
+                                      comment-end-skip)
+                              ;; 1+ to account for the \n comment termination.
+                              (1+ (line-end-position)) t))
+     (current-column))
    ;; Start the file at column 0.
    (save-excursion
-     (forward-comment (- (point-max)))
+     (forward-comment (- (point)))
      (if (bobp) 0))
    ;; Align close paren with opening paren.
    (save-excursion
@@ -537,7 +562,7 @@
    ;; (e.g. "of" with "case", or "in" with "let").
    (save-excursion
      (let* ((pos (point))
-            (token (smie-forward-token))
+            (token (funcall smie-forward-token-function))
             (toklevels (cdr (assoc token smie-op-levels))))
        (when (car toklevels)
          (let ((res (smie-backward-sexp 'halfsexp)) tmp)
@@ -555,8 +580,7 @@
                ;; So as to align with the earliest appropriate place.
                (smie-indent-calculate :bolp))
               ((equal token (save-excursion
-                              (forward-comment (- (point-max)))
-                              (smie-backward-token)))
+                              (funcall smie-backward-token-function)))
                ;; in cases such as "fn x => fn y => fn z =>",
                ;; jump back to the very first fn.
                ;; FIXME: should we only do that for special tokens like "=>"?
@@ -574,7 +598,8 @@
           (forward-comment (point-max))
           (skip-chars-forward " \t\r\n")
           (smie-indent-calculate nil)))
-   ;; Indentation inside a comment.
+   ;; indentation inside a comment.
+   ;; FIXME: Hey, this is not generic!!
    (and (looking-at "\\*") (nth 4 (syntax-ppss))
         (let ((ppss (syntax-ppss)))
           (save-excursion
@@ -586,8 +611,7 @@
                   (current-column))))))
    ;; Indentation right after a special keyword.
    (save-excursion
-     (let* ((tok (progn (forward-comment (- (point-max)))
-                        (smie-backward-token)))
+     (let* ((tok (funcall smie-backward-token-function))
             (tokinfo (assoc tok smie-indent-rules))
             (toklevel (assoc tok smie-op-levels)))
        (when (or tokinfo (and toklevel (null (cadr toklevel))))
@@ -613,8 +637,7 @@
          ;; Figure out if the atom we just skipped is an argument rather
          ;; than a function.
          (setq arg (or (null (car (smie-backward-sexp)))
-                       (member (progn (forward-comment (- (point-max)))
-                                      (smie-backward-token))
+                       (member (funcall smie-backward-token-function)
                                (cdr (assoc 'list-intro smie-indent-rules))))))
        (cond
         ((and arg positions)
@@ -637,11 +660,12 @@
             (current-column)))
         ((and (null arg) (null positions))
          ;; We're the function itself.  Not sure what to do here yet.
+         ;; FIXME: This should not be possible, because it should mean
+         ;; we're right after some special token.
          (if virtual (current-column)
            (save-excursion
              (let* ((pos (point))
-                    (tok (progn (forward-comment (- (point-max)))
-                                (smie-backward-token)))
+                    (tok (funcall smie-backward-token-function))
                     (toklevels (cdr (assoc tok smie-op-levels))))
                (cond
                 ((numberp (car toklevels))
@@ -669,7 +693,7 @@
                 ;; For other cases.... hmm... we'll see when we get there.
                 )))))
         ((null positions)
-         (smie-backward-token)
+         (funcall smie-backward-token-function)
          (+ (smie-indent-offset 'args) (smie-indent-calculate :bolp)))
         ((car (smie-backward-sexp))
          ;; No arg stands on its own line, but the function does:
--- a/lisp/emulation/edt.el	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/emulation/edt.el	Thu May 27 11:59:21 2010 +0000
@@ -2072,7 +2072,7 @@
      use it!  Perhaps it's lying around here someplace. \n     ")
          (let ((path (locate-library
                       "edt-mapper"
-                      nil (append (list (expand-file-name ".")) load-path))))
+                      nil (append (list default-directory) load-path))))
            (if path
                (progn
                  (insert (format
@@ -2563,12 +2563,12 @@
 ;;; DEFAULT EDT KEYPAD HELP
 ;;;
 
-;;;
-;;; Upper case commands in the keypad diagram below indicate that the
-;;; emulation should look and feel very much like EDT.  Lower case
-;;; commands are enhancements and/or additions to the EDT keypad
-;;; commands or are native Emacs commands.
-;;;
+;;
+;; Upper case commands in the keypad diagram below indicate that the
+;; emulation should look and feel very much like EDT.  Lower case
+;; commands are enhancements and/or additions to the EDT keypad
+;; commands or are native Emacs commands.
+;;
 
 (defun edt-keypad-help ()
   "DEFAULT EDT Keypad Active.
@@ -2677,7 +2677,7 @@
 
 ;;;
 ;;; EDT emulation screen width commands.
-;;;
+;;
 ;; Some terminals require modification of terminal attributes when
 ;; changing the number of columns displayed, hence the fboundp tests
 ;; below.  These functions are defined in the corresponding terminal
--- a/lisp/language/hebrew.el	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/language/hebrew.el	Thu May 27 11:59:21 2010 +0000
@@ -92,6 +92,9 @@
 	(nchars (lgstring-char-len gstring))
 	(nglyphs (lgstring-glyph-len gstring))
 	(base-width (lglyph-width (lgstring-glyph gstring 0))))
+    (while (and (> nglyphs 1)
+		(not (lgstring-glyph gstring (1- nglyphs))))
+      (setq nglyphs (1- nglyphs)))
     (while (> nglyphs 1)
       (setq nglyphs (1- nglyphs))
       (let* ((glyph (lgstring-glyph gstring nglyphs))
--- a/lisp/org/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/org/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,7 @@
+2010-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* org.el (org-file-complete-link): Avoid (expand-file-name ".").
+
 2010-05-07  Chong Yidong  <cyd@stupidchicken.com>
 
 	* Version 23.2 released.
--- a/lisp/org/org.el	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/org/org.el	Thu May 27 11:59:21 2010 +0000
@@ -8316,7 +8316,7 @@
     (setq file (read-file-name "File: "))
     (let ((pwd (file-name-as-directory (expand-file-name ".")))
 	  (pwd1 (file-name-as-directory (abbreviate-file-name
-					 (expand-file-name ".")))))
+					 default-directory))))
       (cond
        ((equal arg '(16))
 	(setq link (org-make-link
--- a/lisp/progmodes/ada-xref.el	Wed May 26 12:12:13 2010 +0000
+++ b/lisp/progmodes/ada-xref.el	Thu May 27 11:59:21 2010 +0000
@@ -381,9 +381,9 @@
 	  (forward-line 1) ; first directory in list
 	  (while (not (looking-at "^$")) ; terminate on blank line
 	    (back-to-indentation) ; skip whitespace
-	    (if (looking-at "<Current_Directory>")
-		(add-to-list 'src-dir  (expand-file-name "."))
-	      (add-to-list 'src-dir
+	    (add-to-list 'src-dir
+                         (if (looking-at "<Current_Directory>")
+                             default-directory
 			   (expand-file-name
 			    (buffer-substring-no-properties
 			     (point) (line-end-position)))))
@@ -395,9 +395,9 @@
 	  (forward-line 1)
 	  (while (not (looking-at "^$"))
 	    (back-to-indentation)
-	    (if (looking-at "<Current_Directory>")
-		(add-to-list 'obj-dir (expand-file-name "."))
-	      (add-to-list 'obj-dir
+	    (add-to-list 'obj-dir
+                         (if (looking-at "<Current_Directory>")
+                             default-directory
 			   (expand-file-name
 			    (buffer-substring-no-properties
 			     (point) (line-end-position)))))
--- a/make-dist	Wed May 26 12:12:13 2010 +0000
+++ b/make-dist	Thu May 27 11:59:21 2010 +0000
@@ -461,7 +461,7 @@
  ln makefile.w32-in ../${tempdir}/src
  ln .gdbinit .dbxinit ../${tempdir}/src
  cd ../${tempdir}/src
- rm -f config.h epaths.h Makefile Makefile.c
+ rm -f config.h epaths.h Makefile
  rm -f =* TAGS)
 
 echo "Making links to \`src/bitmaps'"
@@ -499,7 +499,6 @@
    fi
  done
  cd ../${tempdir}/lib-src
- rm -f Makefile.c
  rm -f getopt.h
  rm -f =* TAGS)
 
--- a/src/ChangeLog	Wed May 26 12:12:13 2010 +0000
+++ b/src/ChangeLog	Thu May 27 11:59:21 2010 +0000
@@ -1,3 +1,10 @@
+2010-05-27  Glenn Morris  <rgm@gnu.org>
+
+	* Makefile.in, autodeps.mk, deps.mk, ns.mk:
+	Convert comments to Makefile format.
+
+	* Makefile.in (bootstrap-clean): No more Makefile.c.
+
 2010-05-26  Glenn Morris  <rgm@gnu.org>
 
 	* Makefile.in (YMF_PASS_LDFLAGS): Remove.
--- a/src/Makefile.in	Wed May 26 12:12:13 2010 +0000
+++ b/src/Makefile.in	Thu May 27 11:59:21 2010 +0000
@@ -23,13 +23,6 @@
 # script may need modifying in sync with changes made here.  Try to
 # avoid shell-ism because the DOS build has to use the DOS shell.
 
-# Don't try to replace the cpp processing using autoconf facilities,
-# says rms.
-# Replacing a particular part of the conditionals to work via autoconf
-# is OK.
-# Some of the conditionals might be dead now.  Finding them and
-# deleting them would be fine.
-
 SHELL = /bin/sh
 
 # Here are the things that we expect ../configure to edit.
@@ -47,7 +40,7 @@
 # BSD doesn't have it as a default.
 @SET_MAKE@
 # Don't use LIBS.  configure puts stuff in it that either shouldn't be
-# linked with Emacs or is duplicated by the cpp stuff below.
+# linked with Emacs or is duplicated by the other stuff below.
 # LIBS = @LIBS@
 LIBOBJS = @LIBOBJS@
 
@@ -298,24 +291,26 @@
 ## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'.
 MKDEPDIR=@MKDEPDIR@
 
-# ========================== start of cpp stuff =======================
-/* From here on, comments must be done in C syntax.  */
-
-/* DO NOT use -R.  There is a special hack described in lastfile.c
-   which is used instead.  Some initialized data areas are modified
-   at initial startup, then labeled as part of the text area when
-   Emacs is dumped for the first time, and never changed again.  */
-
-/* -Demacs is needed to make some files produce the correct version
-   for use in Emacs.
-
-   -DHAVE_CONFIG_H is needed for some other files to take advantage of
-   the information in ``config.h''.  */
-
-/* C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
-   since it may have -I options that should override those.  */
-/* MYCPPFLAGS only referenced in etc/DEBUG.  */
-ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} ${C_SWITCH_MACHINE} ${C_SWITCH_SYSTEM} ${C_SWITCH_X_SITE} ${C_SWITCH_X_SYSTEM} ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} ${GCONF_CFLAGS} ${CFLAGS} ${FREETYPE_CFLAGS} ${FONTCONFIG_CFLAGS} ${LIBOTF_CFLAGS} ${M17N_FLT_CFLAGS} ${DEPFLAGS}
+## DO NOT use -R.  There is a special hack described in lastfile.c
+## which is used instead.  Some initialized data areas are modified
+## at initial startup, then labeled as part of the text area when
+## Emacs is dumped for the first time, and never changed again.
+##
+## -Demacs is needed to make some files produce the correct version
+## for use in Emacs.
+##
+## -DHAVE_CONFIG_H is needed for some other files to take advantage of
+## the information in `config.h'.
+##
+## C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM
+## since it may have -I options that should override those.
+##
+## FIXME? MYCPPFLAGS only referenced in etc/DEBUG.
+ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} \
+  ${C_SWITCH_MACHINE} ${C_SWITCH_SYSTEM} ${C_SWITCH_X_SITE} \
+  ${C_SWITCH_X_SYSTEM} ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${DBUS_CFLAGS} \
+  ${GCONF_CFLAGS} ${CFLAGS} ${FREETYPE_CFLAGS} ${FONTCONFIG_CFLAGS} \
+  ${LIBOTF_CFLAGS} ${M17N_FLT_CFLAGS} ${DEPFLAGS}
 ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
 
 .SUFFIXES: .m
@@ -327,8 +322,8 @@
 	$(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $<
 
 
-/* lastfile must follow all files whose initialized data areas should
-   be dumped as pure by dump-emacs.  */
+## lastfile must follow all files whose initialized data areas should
+## be dumped as pure by dump-emacs.
 obj=    dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \
 	charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \
 	cm.o term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \
@@ -344,8 +339,8 @@
 	doprnt.o strftime.o intervals.o textprop.o composite.o md5.o \
 	$(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ)
 
-/* Object files used on some machine or other.
-   These go in the DOC file on all machines in case they are needed.  */
+## Object files used on some machine or other.
+## These go in the DOC file on all machines in case they are needed.
 SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
   xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
   fontset.o dbusbind.o \
@@ -353,39 +348,38 @@
   w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
   w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_OBJ)
 
-/* gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty.  */
+## gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty.
 GMALLOC_OBJ=@GMALLOC_OBJ@
 
-/* vm-limit.o if !SYSTEM_MALLOC, else empty.  */
+## vm-limit.o if !SYSTEM_MALLOC, else empty.
 VMLIMIT_OBJ=@VMLIMIT_OBJ@
 
-/* ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty.  */
+## ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty.
 RALLOC_OBJ=@RALLOC_OBJ@
 
-/* Empty on Cygwin, lastfile.o elsewhere.  */
+## Empty on Cygwin, lastfile.o elsewhere.
 PRE_ALLOC_OBJ=@PRE_ALLOC_OBJ@
-/* lastfile.o on Cygwin, empty elsewhere.  */
+## lastfile.o on Cygwin, empty elsewhere.
 POST_ALLOC_OBJ=@POST_ALLOC_OBJ@
 
-/* List of object files that make-docfile should not be told about.  */
+## List of object files that make-docfile should not be told about.
 otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
   $(POST_ALLOC_OBJ) $(VMLIMIT_OBJ) $(WIDGET_OBJ) $(LIBOBJS)
 
-/* This is the platform-specific list of Lisp files loaded into the
-   dumped Emacs.  It is arranged like this because it is easier to generate
-   it semi-mechanically from loadup.el this way.
-
-   Note that this list should not include lisp files which might not
-   be present, like site-load.el and site-init.el; this makefile
-   expects them all to be either present or buildable.
-
-   Files which are loaded unconditionally (i.e., on all platforms) should
-   also be in shortlisp.  Files which are loaded conditionally (i.e., only
-   on some platforms) should instead be in SOME_MACHINE_LISP.  */
-
-/* Place loaddefs.el first, so it gets generated first, since it is on
-   the critical path (relevant in parallel compilations).  */
-
+## This is the platform-specific list of Lisp files loaded into the
+## dumped Emacs.  It is arranged like this because it is easier to generate
+## it semi-mechanically from loadup.el this way.
+##
+## Note that this list should not include lisp files which might not
+## be present, like site-load.el and site-init.el; this makefile
+## expects them all to be either present or buildable.
+##
+## Files which are loaded unconditionally (i.e., on all platforms) should
+## also be in shortlisp.  Files which are loaded conditionally (i.e., only
+## on some platforms) should instead be in SOME_MACHINE_LISP.
+##
+## Place loaddefs.el first, so it gets generated first, since it is on
+## the critical path (relevant in parallel compilations).
 lisp= \
 	${lispsource}loaddefs.el \
 	${lispsource}abbrev.elc \
@@ -475,11 +469,11 @@
 	${lispsource}window.elc \
 	${lispsource}version.el
 
-/* List of relative names for those files from $lisp that are loaded
-   unconditionally (i.e. on all platforms).  Files from $lisp that
-   are only loaded on some platforms should instead be placed in
-   SOME_MACHINE_LISP.  The only reason this variable exists is to prevent
-   the make-docfile command-line getting too long for some systems.  */
+## List of relative names for those files from $lisp that are loaded
+## unconditionally (i.e. on all platforms).  Files from $lisp that
+## are only loaded on some platforms should instead be placed in
+## SOME_MACHINE_LISP.  The only reason this variable exists is to prevent
+## the make-docfile command-line getting too long for some systems.
 shortlisp= \
 	../lisp/loaddefs.el \
 	../lisp/abbrev.elc \
@@ -563,8 +557,8 @@
 	../lisp/window.elc \
 	../lisp/version.el
 
-/* Like $shortlisp, but includes only those files from $lisp that are loaded
-   conditionally (i.e., only on some platforms).  */
+## Like $shortlisp, but includes only those files from $lisp that are loaded
+## conditionally (i.e., only on some platforms).
 SOME_MACHINE_LISP = ../lisp/mouse.elc \
   ../lisp/select.elc ../lisp/scroll-bar.elc \
   ../lisp/ls-lisp.elc ../lisp/dos-fns.elc \
@@ -583,11 +577,10 @@
   ../lisp/term/ns-win.elc ../lisp/term/w32-win.elc \
   ../lisp/emacs-lisp/easymenu.elc
 
-/* Construct full set of libraries to be linked.
-   Note that SunOS needs -lm to come before -lc; otherwise, you get
-   duplicated symbols.  If the standard libraries were compiled
-   with GCC, we might need LIB_GCC again after them.  */
-
+## Construct full set of libraries to be linked.
+## Note that SunOS needs -lm to come before -lc; otherwise, you get
+## duplicated symbols.  If the standard libraries were compiled
+## with GCC, we might need LIB_GCC again after them.
 LIBES = $(LOADLIBES) $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
    $(RSVG_LIBS) $(DBUS_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
    $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
@@ -596,9 +589,9 @@
 
 all: emacs${EXEEXT} $(OTHER_FILES)
 
-/* Does anyone ever pay attention to the load-path-shadows output here?  */
-/* The dumped Emacs is as functional and more efficient than
-   bootstrap-emacs, so we replace the latter with the former.  */
+## Does anyone ever pay attention to the load-path-shadows output here?
+## The dumped Emacs is as functional and more efficient than
+## bootstrap-emacs, so we replace the latter with the former.
 emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
 	if test "${CANNOT_DUMP}" = "yes"; then \
 	  ln -f temacs${EXEEXT} emacs${EXEEXT}; \
@@ -610,19 +603,19 @@
 	  ./emacs -q -batch -f list-load-path-shadows || true; \
 	fi
 
-/* We run make-docfile twice because the command line may get too long
-   on some systems.  */
-/* ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
-   or may not be included in ${obj}, but they are always included in
-   ${SOME_MACHINE_OBJECTS}.  Since a file is processed when it is mentioned
-   for the first time, this prevents any variation between configurations
-   in the contents of the DOC file.
-   Likewise for ${SOME_MACHINE_LISP}.  */
-/* Most of this Makefile refers to Lisp files via ${lispsource}, so
-   we also use ${lisp} rather than ${shortlisp} for the dependency since
-   the Makefile uses string equality to decide when we talk about identical
-   files.  Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
-   only in order to reduce the command line length.  --Stef  */
+## We run make-docfile twice because the command line may get too long
+## on some systems.
+## ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
+## or may not be included in ${obj}, but they are always included in
+## ${SOME_MACHINE_OBJECTS}.  Since a file is processed when it is mentioned
+## for the first time, this prevents any variation between configurations
+## in the contents of the DOC file.
+## Likewise for ${SOME_MACHINE_LISP}.
+## Most of this Makefile refers to Lisp files via ${lispsource}, so
+## we also use ${lisp} rather than ${shortlisp} for the dependency since
+## the Makefile uses string equality to decide when we talk about identical
+## files.  Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
+## only in order to reduce the command line length.  --Stef
 ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
 	-rm -f ${etc}DOC
 	${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
@@ -635,11 +628,11 @@
 	echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
 
 
-/* We cannot define variables for PRE_EDIT and POST_EDIT.
-   If !ORDINARY_LINK && !LINKER && GCC, they add a
-   \`./prefix-args -Xlinker ... \` wrapper, otherwise they are empty.
-   One alternative to this approach would be to always call prefix-args, 
-   and have it DTRT in all cases, by testing the above defines.  */
+## We cannot define variables for PRE_EDIT and POST_EDIT.
+## If !ORDINARY_LINK && !LINKER && GCC, they add a
+## `./prefix-args -Xlinker ... ` wrapper, otherwise they are empty.
+## One alternative to this approach would be to always call prefix-args, 
+## and have it DTRT in all cases, by testing the above defines.
 temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj} prefix-args${EXEEXT}
 	$(LD) @PRE_EDIT_LDFLAGS@ ${TEMACS_LDFLAGS} @POST_EDIT_LDFLAGS@ \
 	  ${TEMACS_LDFLAGS2} \
@@ -649,27 +642,27 @@
 	$(CC) $(LDFLAGS) prefix-args.o -o prefix-args
 
 
-/* The following oldxmenu-related rules are only (possibly) used if
-   HAVE_X11 && !USE_GTK, but there is no harm in always defining them
-   (provided we take a little care that OLDXMENU is never empty).  */
+## The following oldxmenu-related rules are only (possibly) used if
+## HAVE_X11 && !USE_GTK, but there is no harm in always defining them
+## (provided we take a little care that OLDXMENU is never empty).
 really-lwlib:
 	cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
     CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
-	@true  /* make -t should not create really-lwlib.  */
+	@true  # make -t should not create really-lwlib.
 .PHONY: really-lwlib
 
 really-oldXMenu:
 	cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
     CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
-	@true  /* make -t should not create really-oldXMenu.  */
+	@true  # make -t should not create really-oldXMenu.
 .PHONY: really-oldXMenu
 
-/* We don''t really need this when OLDXMENU_DEPS is empty, but as
-   things stand we need something to satisfy the temacs dependency.  */
+## We do not really need this when OLDXMENU_DEPS is empty, but as
+## things stand we need something to satisfy the temacs dependency.
 stamp-oldxmenu: ${OLDXMENU_DEPS}
 	touch stamp-oldxmenu
 
-/* Supply an ordering for parallel make.  */
+## Supply an ordering for parallel make.
 ../src/$(OLDXMENU): ${OLDXMENU}
 
 $(OLDXMENU): $(OLDXMENU_TARGET)
@@ -690,7 +683,7 @@
 doc.o: buildobj.h
 
 
-/* If HAVE_NS, some ns-specific rules (for OTHER_FILES) are inserted here.  */
+## If HAVE_NS, some ns-specific rules (for OTHER_FILES) are inserted here.
 @ns_frag@
 
 
@@ -704,18 +697,18 @@
 	-rm -rf ${DEPDIR}
 	test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir}
 
-/* bootstrap-clean is used to clean up just before a bootstrap.
-   It should remove all files generated during a compilation/bootstrap,
-   but not things like config.status or TAGS.  */
+## bootstrap-clean is used to clean up just before a bootstrap.
+## It should remove all files generated during a compilation/bootstrap,
+## but not things like config.status or TAGS.
 bootstrap-clean: clean
-	rm -f epaths.h config.h Makefile.c config.stamp stamp-oldxmenu ../etc/DOC-*
+	rm -f epaths.h config.h config.stamp stamp-oldxmenu ../etc/DOC-*
 	if test -f ./.gdbinit; then \
 	  mv ./.gdbinit ./.gdbinit.save; \
 	  if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
 	  else mv ./.gdbinit.save ./.gdbinit; fi; \
 	fi
-/**/# This is used in making a distribution.
-/**/# Do not use it on development directories!
+## This is used in making a distribution.
+## Do not use it on development directories!
 distclean: bootstrap-clean
 	rm -f Makefile
 maintainer-clean: distclean
@@ -727,8 +720,8 @@
 extraclean: distclean
 	-rm -f *~ \#* m/?*~ s/?*~
 
-/* Arrange to make a tags table TAGS-LISP for ../lisp,
-   plus TAGS for the C files, which includes ../lisp/TAGS by reference.  */
+## Arrange to make a tags table TAGS-LISP for ../lisp,
+## plus TAGS for the C files, which includes ../lisp/TAGS by reference.
 
 ctagsfiles1 = [xyzXYZ]*.[hcm]
 ctagsfiles2 = [a-wA-W]*.[hcm]
@@ -748,49 +741,49 @@
 .PHONY: tags
 
 
-/* Bootstrapping.  */
-/* Bootstrapping right is difficult because of the circular dependencies.
-   Furthermore, we have to deal with the fact that many compilation targets
-   such as loaddefs.el or *.elc can typically be produced by any old
-   Emacs executable, so we would like to avoid rebuilding them whenever
-   we build a new Emacs executable.
-   To solve the circularity, we use 2 different Emacs executables,
-   "emacs" is the main target and "bootstrap-emacs" is the one used
-   to build the *.elc and loaddefs.el files.
-   To solve the freshness issue, we used to use a third file "witness-emacs"
-   which was used to witness the fact that there is a bootstrap-emacs
-   executable, and then have dependencies on witness-emacs rather than
-   bootstrap-emacs, but that lead to problems in parallel builds (because
-   witness-emacs needed to be free from dependencies (to avoid rebuilding
-   it), so it was compiled in parallel, leading typically to having 2
-   processes dumping bootstrap-emacs at the same time).
-   So instead, we replace the witness-emacs dependencies by conditional
-   bootstrap-dependencies (via ${BOOTSTRAPEMACS}).  Of course, since we do
-   not want to rely on GNU Make features, we have to rely on an external
-   script to do the conditional part of the dependency
-   (i.e. see the ${SUBDIR} rule ../Makefile.in).  */
+### Bootstrapping.
+
+## Bootstrapping right is difficult because of the circular dependencies.
+## Furthermore, we have to deal with the fact that many compilation targets
+## such as loaddefs.el or *.elc can typically be produced by any old
+## Emacs executable, so we would like to avoid rebuilding them whenever
+## we build a new Emacs executable.
+## To solve the circularity, we use 2 different Emacs executables,
+## "emacs" is the main target and "bootstrap-emacs" is the one used
+## to build the *.elc and loaddefs.el files.
+## To solve the freshness issue, we used to use a third file "witness-emacs"
+## which was used to witness the fact that there is a bootstrap-emacs
+## executable, and then have dependencies on witness-emacs rather than
+## bootstrap-emacs, but that lead to problems in parallel builds (because
+## witness-emacs needed to be free from dependencies (to avoid rebuilding
+## it), so it was compiled in parallel, leading typically to having 2
+## processes dumping bootstrap-emacs at the same time).
+## So instead, we replace the witness-emacs dependencies by conditional
+## bootstrap-dependencies (via ${BOOTSTRAPEMACS}).  Of course, since we do
+## not want to rely on GNU Make features, we have to rely on an external
+## script to do the conditional part of the dependency
+## (i.e. see the ${SUBDIR} rule ../Makefile.in).
 
 .SUFFIXES: .elc .el
 
-/* These suffix rules do not allow additional dependencies, sadly, so
-   instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
-   separately below.
-   With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)"  */
+## These suffix rules do not allow additional dependencies, sadly, so
+## instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it
+## separately below.
+## With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)"
 .el.elc:
 	@cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
 	                     THEFILE=$< EMACS=${bootstrap_exe}
 
-/* Since the .el.elc rule cannot specify an extra dependency, we do it here.  */
+## Since the .el.elc rule cannot specify an extra dependency, we do it here.
 ${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
 
-/* VCSWITNESS points to the file that holds info about the current checkout.
-   We use it as a heuristic to decide when to rebuild loaddefs.el.  */
+## VCSWITNESS points to the file that holds info about the current checkout.
+## We use it as a heuristic to decide when to rebuild loaddefs.el.
 ${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS)
 	cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
 
-/* Dump an Emacs executable named bootstrap-emacs containing the
-   files from loadup.el in source form.  */
-
+## Dump an Emacs executable named bootstrap-emacs containing the
+## files from loadup.el in source form.
 bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
 	cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
 	if test "${CANNOT_DUMP}" = "yes"; then \
@@ -802,5 +795,8 @@
 	@: Compile some files earlier to speed up further compilation.
 	cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
 
-/* Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.  */
+## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
 @deps_frag@
+
+
+### Makefile.in ends here
--- a/src/README	Wed May 26 12:12:13 2010 +0000
+++ b/src/README	Thu May 27 11:59:21 2010 +0000
@@ -1,5 +1,5 @@
-Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-  Free Software Foundation, Inc.
+Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+  2010  Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
 
@@ -10,12 +10,10 @@
 See the files ../README and then ../INSTALL for installation instructions.
 
 Under GNU and Unix systems, the file `Makefile.in' is used as a
-template by the script `../configure' to produce `Makefile.c'.  The
-same script then uses `cpp' to produce the machine-dependent
-`Makefile' from `Makefile.c'; `Makefile' is the file which actually
-controls the compilation of Emacs.  Most of this should work
-transparently to the user; you should only need to run `../configure',
-and then type `make'.
+template by the script `../configure' to produce `Makefile'.  This
+is the file which actually controls the compilation of Emacs.
+All of this should work transparently to the user; you should only
+need to run `../configure', and then type `make'.
 
 
 This file is part of GNU Emacs.
--- a/src/autodeps.mk	Wed May 26 12:12:13 2010 +0000
+++ b/src/autodeps.mk	Thu May 27 11:59:21 2010 +0000
@@ -1,6 +1,6 @@
-/* autodeps.mk --- src/Makefile fragment for GNU Emacs
+### autodeps.mk --- src/Makefile fragment for GNU Emacs
 
-This is inserted in src/Makefile if AUTO_DEPEND=yes.  */
+## This is inserted in src/Makefile if AUTO_DEPEND=yes.
 
 ALLOBJS=$(START_FILES) ${obj} ${otherobj} prefix-args.o
 -include $(ALLOBJS:%.o=${DEPDIR}/%.d)
--- a/src/deps.mk	Wed May 26 12:12:13 2010 +0000
+++ b/src/deps.mk	Thu May 27 11:59:21 2010 +0000
@@ -1,41 +1,41 @@
-/* deps.mk --- src/Makefile fragment for GNU Emacs
-
-Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
-  2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-  Free Software Foundation, Inc.
-
-This file is part of GNU Emacs.
+### deps.mk --- src/Makefile fragment for GNU Emacs
 
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+## Copyright (C) 1985, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001, 2002,
+##   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+##   Free Software Foundation, Inc.
 
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+## This file is part of GNU Emacs.
 
-You should have received a copy of the GNU General Public License
-along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-Commentary:
-
-This file is inserted in src/Makefile if AUTO_DEPEND=no.
-It defines static dependencies between the various source files.
+## GNU Emacs is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+## 
+## GNU Emacs is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+## 
+## You should have received a copy of the GNU General Public License
+## along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
-FIXME some of these dependencies are platform-specific.
-Eg callproc.c only depends on w32.h for WINDOWSNT builds.
-One way to fix this would be to replace w32.h (etc) by $(W32_H),
-a variable set by configure.  Does not seem worth the trouble.
-Since the w32 build does not even use this file, you might ask
-why these dependencies are here at all...
+## Commentary:
+## 
+## This file is inserted in src/Makefile if AUTO_DEPEND=no.
+## It defines static dependencies between the various source files.
 
-nsgui.h: In fact, every .o file depends directly or indirectly on
-dispextern.h and hence nsgui.h under NS.  But the ones that actually
-use stuff there are more limited.
+## FIXME some of these dependencies are platform-specific.
+## Eg callproc.c only depends on w32.h for WINDOWSNT builds.
+## One way to fix this would be to replace w32.h (etc) by $(W32_H),
+## a variable set by configure.  Does not seem worth the trouble.
+## Since the w32 build does not even use this file, you might ask
+## why these dependencies are here at all...
 
-Code:  */
+## nsgui.h: In fact, every .o file depends directly or indirectly on
+## dispextern.h and hence nsgui.h under NS.  But the ones that actually
+## use stuff there are more limited.
+
+### Code:
 
 atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
  $(config_h)
@@ -245,7 +245,7 @@
    dispextern.h keyboard.h systime.h coding.h composite.h blockinput.h \
    atimer.h termopts.h
 
-/* The files of Lisp proper.  */
+## The files of Lisp proper.
 alloc.o: alloc.c process.h frame.h window.h buffer.h  puresize.h syssignal.h \
    keyboard.h blockinput.h atimer.h systime.h character.h lisp.h $(config_h) \
    $(INTERVALS_H) termhooks.h
@@ -267,7 +267,7 @@
    charset.h lisp.h $(config_h) $(INTERVALS_H) termhooks.h coding.h msdos.h \
    systime.h frame.h blockinput.h atimer.h
 
-/* Text properties support.  */
+## Text properties support.
 composite.o: composite.c buffer.h character.h coding.h font.h ccl.h \
    frame.h termhooks.h $(INTERVALS_H) window.h lisp.h $(config_h)
 intervals.o: intervals.c buffer.h $(INTERVALS_H) keyboard.h puresize.h \
@@ -276,4 +276,4 @@
    lisp.h $(config_h)
 
 
-/* deps.mk ends here  */
+### deps.mk ends here
--- a/src/ns.mk	Wed May 26 12:12:13 2010 +0000
+++ b/src/ns.mk	Thu May 27 11:59:21 2010 +0000
@@ -1,29 +1,29 @@
-/* autodeps.mk --- src/Makefile fragment for GNU Emacs
-
-Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
+### autodeps.mk --- src/Makefile fragment for GNU Emacs
 
-This file is part of GNU Emacs.
+## Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
 
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+## This file is part of GNU Emacs.
 
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+## GNU Emacs is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+## 
+## GNU Emacs is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+## 
+## You should have received a copy of the GNU General Public License
+## along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
-Commentary:
+### Commentary:
 
-This is inserted in src/Makefile if HAVE_NS. 
+## This is inserted in src/Makefile if HAVE_NS. 
 
-The only reason this is in a separate file is because $ns_appdir,
-which appears as a target, is empty on non-NS builds.  Some makes
-do not like empty targets, even if they are never used.  */
+## The only reason this is in a separate file is because $ns_appdir,
+## which appears as a target, is empty on non-NS builds.  Some makes
+## do not like empty targets, even if they are never used.
 
 ${ns_appdir}: ${ns_appsrc}
 	rm -fr ${ns_appdir}
@@ -36,4 +36,4 @@
 
 ns-app: ${ns_appdir} ${ns_appbindir}Emacs
 
-/* ns.mk ends here  */
+### ns.mk ends here