From: Eli Zaretskii <eliz@gnu.org>
To: Hannu Koivisto <azure@iki.fi>
Cc: emacs-devel@gnu.org
Subject: Re: A few Windows build fixes
Date: Mon, 29 Aug 2011 02:15:53 -0400 [thread overview]
Message-ID: <E1Qxv8T-00007f-Ru@fencepost.gnu.org> (raw)
In-Reply-To: <83vcth40ik.fsf@kalahari.s2.org> (message from Hannu Koivisto on Mon, 29 Aug 2011 01:46:59 +0300)
> From: Hannu Koivisto <azure@iki.fi>
> Date: Mon, 29 Aug 2011 01:46:59 +0300
>
> I wanted to build the latest bzr trunk version of Emacs for Windows
> but soon realized that the makefiles and the configure process have
> lots of problems.
Only if you use Cygwin tools. With native (MinGW/GnuWin32) tools,
there are no known problems, AFAIK.
> I'm attaching four patches that fix enough of the problems that
> building and installing with a modern Cygwin
Thanks.
> +if %MAKECMD% == gmake dos2unix config.tmp config.settings
This requires users to have dos2unix installed, even if they don't use
the Cygwin tools to build Emacs. If there's another way of doing this
that doesn't require another non-standard utility (e.g., by setting
some Cygwin-specific environment variable that is ignored by
non-Cygwin programs), or else some alternative condition that will
only fire with Cygwin Make being used, please modify this to use
that. Otherwise, some other trick will be needed to avoid the extra
requirement of having dos2unix on PATH.
> --- a/nt/makefile.w32-in
> +++ b/nt/makefile.w32-in
Is there some real change here, or did you only change EOL format? If
the former, please show just the changes in content.
> Cygwin make doesn't like c:/foo/bar style paths at least in targets and
> native Windows Emacs doesn't like Cygwin style /cygdrive/c/foo/bar paths.
> Use relative paths to avoid the problem.
It's true that the Cygwin build of Make doesn't support c:/foo in
targets, but the Windows Makefiles never use such targets, except
through $(CURDIR), which should return a Cygwin style file name with
Cygwin Make. So I don't really see a problem that needs to be solved
here. Perhaps I'm missing something; please show the actual problems
you had with this part.
In any case, I'd like to find a solution for this problem that targets
Cygwin alone, if possible. Sprinkling quotes in 2 different styles
all over the Makefiles is not my idea of fun, because the quoting
issue is very fragile on Windows to begin with, especially since we
try to support at least 3 or 4 different combinations of tools.
> +CURDIR=.
This will break "make -C", won't it? Or at least make it fragile and
unreliable.
> - - mkdir "$(INSTALLDIR)"
> + - mkdir -p "$(INSTALLDIR)"
Please don't. We don't want to rely on the assumption that `mkdir' is
a GNU mkdir.exe. This command needs also to run when the shell is
cmd.exe, and its built-in `mkdir' doesn't support the -p switch (it
creates intermediate directories by default).
There are more places where you use "mkdir -p"; please find some other
solution for that particular problem, or let's leave it unsolved, as
no one has complained until now, AFAIR.
> +INSTALL_DIR_MIXED := $(INSTALL_DIR)
> +ifeq "$(shell cygpath $(INSTALL_DIR))" "$(INSTALL_DIR)"
> +INSTALL_DIR_MIXED := $(shell cygpath -m "$(INSTALL_DIR)")
> +endif
I don't understand the need for this gork. Please explain. Is the
Cygwin build supposed to use Cygwin `cp' etc., or their native
versions?
In any case, why do we need both INSTALL_DIR and INSTALL_DIR_MIXED?
If both are needed, we will need a corresponding change in nmake.defs.
Thanks again for working on this.
next prev parent reply other threads:[~2011-08-29 6:15 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-28 22:46 A few Windows build fixes Hannu Koivisto
2011-08-29 6:15 ` Eli Zaretskii [this message]
2011-08-29 8:18 ` Hannu Koivisto
2011-08-29 10:05 ` Eli Zaretskii
2011-08-29 12:03 ` Hannu Koivisto
2011-08-29 13:28 ` Eli Zaretskii
2011-08-29 15:55 ` Stefan Monnier
2011-08-29 16:11 ` Eli Zaretskii
2011-08-29 15:48 ` Stefan Monnier
2011-08-29 16:08 ` Eli Zaretskii
2011-08-29 19:48 ` Jan Djärv
2011-08-31 2:42 ` Vijay Lakshminarayanan
2011-08-31 6:11 ` Eli Zaretskii
2011-08-31 13:17 ` Stefan Monnier
2011-09-01 17:55 ` Vijay Lakshminarayanan
2011-09-02 0:14 ` Andy Moreton
2011-09-02 7:07 ` Eli Zaretskii
2011-09-02 11:43 ` Andy Moreton
2011-09-02 12:48 ` Stefan Monnier
2011-09-02 14:14 ` Eli Zaretskii
2011-09-02 14:18 ` Jason Rumney
2011-09-02 14:47 ` Stefan Monnier
2011-09-02 14:05 ` Eli Zaretskii
2011-09-02 14:48 ` Stefan Monnier
2011-09-02 15:48 ` Vijay Lakshminarayanan
2011-09-02 16:47 ` Eli Zaretskii
2011-09-06 2:49 ` Stefan Monnier
2011-09-06 4:33 ` Eli Zaretskii
2011-09-06 18:04 ` Stefan Monnier
2011-09-06 18:26 ` Eli Zaretskii
2011-09-07 3:29 ` Stefan Monnier
2011-09-07 5:17 ` Eli Zaretskii
2011-09-07 12:50 ` Stefan Monnier
2011-09-07 16:48 ` Eli Zaretskii
2011-09-08 8:33 ` Hannu Koivisto
2011-09-08 8:49 ` Eli Zaretskii
2011-09-08 9:06 ` Hannu Koivisto
2011-09-02 15:50 ` Vijay Lakshminarayanan
2011-09-02 2:48 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1Qxv8T-00007f-Ru@fencepost.gnu.org \
--to=eliz@gnu.org \
--cc=azure@iki.fi \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.