emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS Emacs cygwin build problem.


From: Steven Wu
Subject: CVS Emacs cygwin build problem.
Date: Thu, 18 May 2006 23:47:37 -0700

If building CVS Emacs on cygwin platform, a problem may occur, and the message looks like:

===
make[1]: Entering directory `/cygdrive/c/dev/emacs-src/emacs/lisp'
/cygdrive/c/dev/emacs-src/emacs/lisp/../update-subdirs /cygdrive/c/ dev/emacs-src/emacs/lisp; \ for file in calc calendar emacs-lisp emulation eshell gnus international language mail mh-e net obsolete play progmodes term textmodes toolbar url; do \
/cygdrive/c/dev/emacs-src/emacs/lisp/../update-subdirs $file; \
done;
Directories: calc calendar emacs-lisp emulation eshell gnus international language mail mh-e net obsolete play progmodes
term textmodes toolbar url
"./../bin/emacs.exe" -batch --no-init-file --no-site-file --multibyte -l autoload \
--eval '(setq find-file-hook nil \
find-file-suppress-same-file-warnings t \
generated-autoload-file \
"/cygdrive/c/dev/emacs-src/emacs/lisp/loaddefs.el")' \
-f batch-update-autoloads /cygdrive/c/dev/emacs-src/emacs/lisp calc calendar emacs-lisp emulation eshell gnus in ternational language mail mh-e net obsolete play progmodes term textmodes toolbar url
Cannot open load file: encoded-kb
Signal 127
make[1]: *** [autoloads] Error 255
make[1]: Leaving directory `/cygdrive/c/dev/emacs-src/emacs/lisp'
===

This only happens to cygwin, but not MinGW or Visual Studio build. The problem is that the default make mode for make 3.80, which comes with the std cygwin distribution, is Unix mode. Hence, the paths of directories and files known to make are in Unix form. During the compilation of c code, there is no problem because cygwin gcc understand cygwin path. However when bootstrapping the elisp files, things are different.

In the emacs/lisp/makefile.w32-in, line 30

lisp = $(CURDIR)

here lisp is set to the current directory. For nmake, or minGW make, this $(CURDIR) is window path. For cygwin, this is cygwin unix-like path. Because Emacs isn't compiled with cygwin libraries, Emacs doesn't understand cygwin path, and hence it cannot load the encoded-kb.

The fix for this is to change lisp=$(shell cygpath -m $(CURDIR)). Condition like the cygwin test can be added to guard this.

Similar changes is also needed for leim directory.

steve





reply via email to

[Prev in Thread] Current Thread [Next in Thread]