* Makefile.in (buildobj.h): New target.
authorKen Raeburn <raeburn@raeburn.org>
Wed, 26 Aug 2009 08:28:23 +0000 (08:28 +0000)
committerKen Raeburn <raeburn@raeburn.org>
Wed, 26 Aug 2009 08:28:23 +0000 (08:28 +0000)
(doc.o): Depend on it.
(temacs${EXEEXT}): Don't generate buildobj.lst.
(mostlyclean): Delete buildobj.h, not buildobj.lst.
* makefile.w32-in ($(SRC)/buildobj.h): New target.
($(BLD)/doc.$(O)): Depend on it.
(make-buildobj-CMD, make-buildobj-SH): New targets.  (Syntax help
provided by Eli Zaretskii.)
($(TEMACS)): Don't generate buildobj.lst.
* doc.c: Include buildobj.h.
(buildobj): New static variable.
(Fsnarf_documentation): Use it, instead of opening and reading
buildobj.lst.

src/ChangeLog
src/Makefile.in
src/doc.c
src/makefile.w32-in

index cff1f7a..3377e83 100644 (file)
@@ -1,3 +1,19 @@
+2009-08-26  Ken Raeburn  <raeburn@raeburn.org>
+
+       * Makefile.in (buildobj.h): New target.
+       (doc.o): Depend on it.
+       (temacs${EXEEXT}): Don't generate buildobj.lst.
+       (mostlyclean): Delete buildobj.h, not buildobj.lst.
+       * makefile.w32-in ($(SRC)/buildobj.h): New target.
+       ($(BLD)/doc.$(O)): Depend on it.
+       (make-buildobj-CMD, make-buildobj-SH): New targets.  (Syntax help
+       provided by Eli Zaretskii.)
+       ($(TEMACS)): Don't generate buildobj.lst.
+       * doc.c: Include buildobj.h.
+       (buildobj): New static variable.
+       (Fsnarf_documentation): Use it, instead of opening and reading
+       buildobj.lst.
+
 2009-08-25  Michael Albinus  <michael.albinus@gmx.de>
 
        * dbusbind.c (Fdbus_call_method)
index 567bff9..fa2457c 100644 (file)
@@ -938,8 +938,10 @@ ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
 ${libsrc}make-docfile${EXEEXT}:
        cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
 
+buildobj.h: Makefile
+       echo "#define BUILDOBJ \"${obj} ${otherobj} " OBJECTS_MACHINE "\"" > buildobj.h
+
 temacs${EXEEXT}: $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} OBJECTS_MACHINE prefix-args${EXEEXT}
-       echo "${obj} ${otherobj} " OBJECTS_MACHINE > buildobj.lst
 #ifdef NS_IMPL_GNUSTEP
        $(CC) -rdynamic YMF_PASS_LDFLAGS ( ${TEMACS_LDFLAGS} \
        -L@GNUSTEP_SYSTEM_LIBRARIES@ -lgnustep-gui -lgnustep-base \
@@ -1064,7 +1066,8 @@ dispnew.o: dispnew.c systime.h commands.h process.h frame.h \
    disptab.h indent.h $(INTERVALS_H) \
    xterm.h blockinput.h atimer.h character.h msdos.h composite.h keyboard.h \
    syssignal.h $(config_h)
-doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h keymap.h character.h
+doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h keymap.h character.h \
+   buildobj.h
 doprnt.o: doprnt.c character.h $(config_h)
 dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
    msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.h \
@@ -1284,7 +1287,7 @@ mostlyclean:
        rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
        rm -f ../etc/DOC
        rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
-       rm -f buildobj.lst
+       rm -f buildobj.h
 clean: mostlyclean
        rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
 #ifdef HAVE_NS
index c74085e..6d5862c 100644 (file)
--- a/src/doc.c
+++ b/src/doc.c
@@ -42,6 +42,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include "keyboard.h"
 #include "character.h"
 #include "keymap.h"
+#include "buildobj.h"
 
 #ifdef HAVE_INDEX
 extern char *index P_ ((const char *, int));
@@ -552,6 +553,7 @@ store_function_docstring (fun, offset)
     }
 }
 
+static const char buildobj[] = BUILDOBJ;
 
 DEFUN ("Snarf-documentation", Fsnarf_documentation, Ssnarf_documentation,
        1, 1, 0,
@@ -598,32 +600,9 @@ the same file name is found in the `doc-directory'.  */)
   /* Vbuild_files is nil when temacs is run, and non-nil after that.  */
   if (NILP (Vbuild_files))
   {
-    size_t cp_size = 0;
-    size_t to_read;
-    int nr_read;
-    char *cp = NULL;
-    char *beg, *end;
-
-    fd = emacs_open ("buildobj.lst", O_RDONLY, 0);
-    if (fd < 0)
-      report_file_error ("Opening file buildobj.lst", Qnil);
-
-    filled = 0;
-    for (;;)
-      {
-        cp_size += 1024;
-        to_read = cp_size - 1 - filled;
-        cp = xrealloc (cp, cp_size);
-        nr_read = emacs_read (fd, &cp[filled], to_read);
-        filled += nr_read;
-        if (nr_read < to_read)
-          break;
-      }
+    const char *beg, *end;
 
-    emacs_close (fd);
-    cp[filled] = 0;
-
-    for (beg = cp; *beg; beg = end)
+    for (beg = buildobj; *beg; beg = end)
       {
         int len;
 
@@ -639,8 +618,6 @@ the same file name is found in the `doc-directory'.  */)
         if (len > 0)
           Vbuild_files = Fcons (make_string (beg, len), Vbuild_files);
       }
-
-    xfree (cp);
   }
 
   fd = emacs_open (name, O_RDONLY, 0);
index 0569607..f3468a0 100644 (file)
@@ -178,10 +178,24 @@ $(TEMACS):      $(TLIB0) $(TLIB1) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES) \
                  ../nt/$(BLD)/addsection.exe
        $(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
        "../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 21
-       echo $(OBJ0) > $(BLD)/buildobj.lst
-       echo $(OBJ1) >> $(BLD)/buildobj.lst
-       echo $(WIN32OBJ) >> $(BLD)/buildobj.lst
-       echo $(FONTOBJ) >> $(BLD)/buildobj.lst
+
+# These omit firstfile.${O}, but there's no documentation in there
+# anyways.
+$(SRC)/buildobj.h: make-buildobj-$(SHELLTYPE)
+make-buildobj-CMD: Makefile
+       echo #define BUILDOBJ ^"\  > $(SRC)/buildobj.h
+       echo $(OBJ0)            \ >> $(SRC)/buildobj.h
+       echo $(OBJ1)            \ >> $(SRC)/buildobj.h
+       echo $(WIN32OBJ)        \ >> $(SRC)/buildobj.h
+       echo $(FONTOBJ)         \ >> $(SRC)/buildobj.h
+       echo ^"                   >> $(SRC)/buildobj.h
+make-buildobj-SH: Makefile
+       echo '#define BUILDOBJ $(DQUOTE)\\'  > $(SRC)/buildobj.h
+       echo $(OBJ0)                   '\\' >> $(SRC)/buildobj.h
+       echo $(OBJ1)                   '\\' >> $(SRC)/buildobj.h
+       echo $(WIN32OBJ)               '\\' >> $(SRC)/buildobj.h
+       echo $(FONTOBJ)                '\\' >> $(SRC)/buildobj.h
+       echo '$(DQUOTE)'                    >> $(SRC)/buildobj.h
 
 bootstrap: bootstrap-emacs
 
@@ -580,6 +594,7 @@ $(BLD)/dispnew.$(O) : \
 $(BLD)/doc.$(O) : \
        $(SRC)/doc.c \
        $(CONFIG_H) \
+       $(SRC)/buildobj.h \
        $(EMACS_ROOT)/nt/inc/unistd.h \
        $(EMACS_ROOT)/nt/inc/sys/file.h \
        $(EMACS_ROOT)/nt/inc/sys/time.h \