changeset 58068:df00cdb75fc6

* doc.c: New variable Vbuild_files. (Fsnarf_documentation): If Vbuild_files is nil, populate it with file names from buildobh.lst. Only attach docstrings from files that are in Vbuild_files. (syms_of_doc): Defvar Vbuild_files. * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o and w32*.o. (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked. (mostlyclean): rm buildobj.lst * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs is linked.
author Jan Djärv <jan.h.d@swipnet.se>
date Tue, 09 Nov 2004 08:19:51 +0000
parents 7c1d0d70a294
children 42823717f9da
files src/ChangeLog src/Makefile.in src/doc.c src/makefile.w32-in
diffstat 4 files changed, 100 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Tue Nov 09 08:18:58 2004 +0000
+++ b/src/ChangeLog	Tue Nov 09 08:19:51 2004 +0000
@@ -1,3 +1,19 @@
+2004-11-09  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* doc.c: New variable Vbuild_files.
+	(Fsnarf_documentation): If Vbuild_files is nil, populate it with
+	file names from buildobh.lst.  Only attach docstrings from files
+	that are in Vbuild_files.
+	(syms_of_doc): Defvar Vbuild_files.
+
+	* Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o
+	and w32*.o.
+	(temacs${EXEEXT}): Generate buildobj.lst when temacs is linked.
+	(mostlyclean): rm buildobj.lst 
+
+	* makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs
+	is linked.
+
 2004-11-09  Kim F. Storm  <storm@cua.dk>
 
 	* fringe.c (update_window_fringes): Update fringe bitmaps if
--- a/src/Makefile.in	Tue Nov 09 08:18:58 2004 +0000
+++ b/src/Makefile.in	Tue Nov 09 08:19:51 2004 +0000
@@ -596,8 +596,10 @@
    These go in the DOC file on all machines
    in case they are needed there.  */
 SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \
-  xterm.o xfns.o xmenu.o xselect.o xrdb.o \
-  mac.o macterm.o macfns.o macmenu.o fontset.o
+  xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
+  mac.o macterm.o macfns.o macmenu.o fontset.o \
+  w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \
+  w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o
 
 
 #ifdef TERMINFO
@@ -944,6 +946,7 @@
 #endif
 
 temacs${EXEEXT}: MAKE_PARALLEL $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} ${otherobj} OBJECTS_MACHINE prefix-args${EXEEXT}
+	echo "${obj} ${otherobj} " OBJECTS_MACHINE > buildobj.lst
 	$(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
     -o temacs ${STARTFILES} ${obj} ${otherobj}  \
     OBJECTS_MACHINE ${LIBES}
@@ -1272,6 +1275,7 @@
 	rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
 	rm -f ../etc/DOC
 	rm -f bootstrap-emacs${EXEEXT}
+	rm -f buildobj.lst
 clean: mostlyclean
 	rm -f emacs-*${EXEEXT} emacs${EXEEXT}
 /**/# This is used in making a distribution.
--- a/src/doc.c	Tue Nov 09 08:18:58 2004 +0000
+++ b/src/doc.c	Tue Nov 09 08:19:51 2004 +0000
@@ -51,6 +51,9 @@
 
 Lisp_Object Qfunction_documentation;
 
+/* A list of files used to build this Emacs binary.  */
+static Lisp_Object Vbuild_files;
+
 extern Lisp_Object Voverriding_local_map;
 
 /* For VMS versions with limited file name syntax,
@@ -581,6 +584,7 @@
   register char *p, *end;
   Lisp_Object sym;
   char *name;
+  int skip_file = 0;
 
   CHECK_STRING (filename);
 
@@ -618,6 +622,54 @@
 #endif /* VMS4_4 */
 #endif /* VMS */
 
+  /* 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;
+      }
+
+    emacs_close (fd);
+    cp[filled] = 0;
+
+    for (beg = cp; *beg; beg = end)
+      {
+        int len;
+
+        while (*beg && isspace (*beg)) ++beg;
+
+        for (end = beg; *end && ! isspace (*end); ++end)
+          if (*end == '/') beg = end+1;  /* skip directory part  */
+
+        len = end - beg;
+        if (len > 4 && end[-4] == '.' && end[-3] == 'o')
+          len -= 2;  /* Just take .o if it ends in .obj  */
+
+        if (len > 0)
+          Vbuild_files = Fcons (make_string (beg, len), Vbuild_files);
+      }
+
+    xfree (cp);
+  }
+
   fd = emacs_open (name, O_RDONLY, 0);
   if (fd < 0)
     report_file_error ("Opening doc string file",
@@ -640,10 +692,28 @@
       if (p != end)
 	{
 	  end = (char *) index (p, '\n');
+
+          /* See if this is a file name, and if it is a file in build-files.  */
+          if (p[1] == 'S' && end - p > 4 && end[-2] == '.'
+              && (end[-1] == 'o' || end[-1] == 'c'))
+            {
+              int len = end - p - 2;
+              char *fromfile = alloca (len + 1);
+              strncpy (fromfile, &p[2], len);
+              fromfile[len] = 0;
+              if (fromfile[len-1] == 'c')
+                fromfile[len-1] = 'o';
+
+              if (EQ (Fmember (build_string (fromfile), Vbuild_files), Qnil))
+                skip_file = 1;
+              else
+                skip_file = 0;
+            }
+
 	  sym = oblookup (Vobarray, p + 2,
 			  multibyte_chars_in_text (p + 2, end - p - 2),
 			  end - p - 2);
-	  if (SYMBOLP (sym))
+	  if (! skip_file && SYMBOLP (sym))
 	    {
 	      /* Attach a docstring to a variable?  */
 	      if (p[1] == 'V')
@@ -919,6 +989,10 @@
 	       doc: /* Name of file containing documentation strings of built-in symbols.  */);
   Vdoc_file_name = Qnil;
 
+  DEFVAR_LISP ("build-files", &Vbuild_files,
+               doc: /* A list of files used to build this Emacs binary.  */);
+  Vbuild_files = Qnil;
+
   defsubr (&Sdocumentation);
   defsubr (&Sdocumentation_property);
   defsubr (&Ssnarf_documentation);
--- a/src/makefile.w32-in	Tue Nov 09 08:18:58 2004 +0000
+++ b/src/makefile.w32-in	Tue Nov 09 08:19:51 2004 +0000
@@ -168,6 +168,9 @@
 $(TEMACS):      $(TLIB0) $(TLIB1) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES)
 	$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
 	"../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 16
+	echo $(OBJ0) > $(BLD)/buildobj.lst
+	echo $(OBJ1) >> $(BLD)/buildobj.lst
+	echo $(WIN32OBJ) >> $(BLD)/buildobj.lst
 
 bootstrap: bootstrap-emacs