|
From: | Herbert Euler |
Subject: | RE: Two problems of building Emacs on windows |
Date: | Fri, 19 Oct 2007 20:04:46 +0800 |
> > 2. On `buildobj.lst'. > > > > Because the different building directories arrangement on Windows, > > `buildobj.lst' can't be found correctly when the executable emacs.exe > > is dumped. It is in the `etc' directory on GNU/Linux for example, but > > not there on Windows. > > Why do you need this file after Emacs is dumped? Sure I don't need it after Emacs is dumped. The problem is that I can't dump it. Let me explain it more precisely. At least in my building, the C parts of Emacs is built in $(OBJDIR)/$(ARCH), i.e. src/oo-spd/i386. Then the file DOC-X is put into $(OBJDIR)/etc, i.e. src/oo-spd/etc. The file buildobj.lst is in src/oo-spd/i386. There is only one file, DOC-X, in src/oo-spd/etc. Dumping Emacs requires buildobj.lst, and it should be in some directory named `etc'. This directory could be the top-level etc directory in the source code, or where the C parts is actually built (e.g. src/oo-spd/etc), depends on the value of `doc-directory' (please see the definition of Snarf-documentation, which does the job of reading "buildobj.lst"). Unfornately, buildobj.lst is in neither of these directories. But just copying it to src/oo-spd/etc is not sufficient. In the building process, `doc-directory' should be re-computed in time, but not use the value in nt/paths.h. The code that computes this variable is in `init_callproc' in callproc.c. As we can see, it will be re-computed only when `installation-directory' is non-nil, which is changed to a non-nil value in `init_cmdargs' in emacs.c in some cases. But there is a prerequisite on that: the building directory must contains both `lib-src' as well as `etc' in its parent directory, and the existence of `lib-src' is tested before `etc'. If `lib-src' does not exist, then `installation-directory' is nil, no matter whether `etc' exists in that directory (`init_cmdargs' in main.c). In my building, there is only src/oo-spd/etc, so in addition to copying buildobj.lst from src/oo-spd/i386 to src/oo-spd/etc, I have to create src/oo-spd/lib-src as well. Btw, is it because I did not build Emacs in a standard way so I encounter these errors? Regards, Guanpeng Xu Connect to the next generation of MSN Messenger Get it now! |
[Prev in Thread] | Current Thread | [Next in Thread] |