unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* building Emacs on Msys2/mingw32
@ 2014-09-08 15:54 Stephen Leake
  2014-09-08 20:14 ` Óscar Fuentes
  2014-09-09 13:28 ` Eli Zaretskii
  0 siblings, 2 replies; 16+ messages in thread
From: Stephen Leake @ 2014-09-08 15:54 UTC (permalink / raw)
  To: emacs-devel

I've succesfully built Emacs on Msys2/mingw32. After I got some msys2
install issues sorted out, it went quite smoothly; almost as well as a
typical install on a Linxu/gnu box!

Thanks to all who made this possible!


I have suggested changes to the Msys2 people to iron out the Msys2
install issues I had.


To address the "almost" above:

I built from the current pretest tarball,
http://alpha.gnu.org/gnu/emacs/pretest/emacs-24.3.93.tar.xz

I had to override the guessed build machine on the configure line:

    $ ./configure --build=i686-pc-mingw32 --prefix=/mingw32

config.guess returns x86_64-pc-msys; configure rejects this.

x86_64-pc-msys is the correct host identifier, but we will never
actually build an Emacs for that machine; we will always want to build
for i686-pc-mingw32 or x86_64-pc-mingw32.

It might make sense to have configure translate x86_64-pc-msys to
x86_64-pc-mingw32, and i686-pc-msys to i686-pc-mingw32.

I'm not clear what MSYS (as opposed to MSYS2) does about this.

At least, this case should now be mentioned in nt/INSTALL. Here's a
suggested patch:

--- INSTALL	2014-09-08 10:42:54.523175900 -0500
+++ INSTALL.orig	2014-06-04 23:33:18.000000000 -0500
@@ -14,10 +14,10 @@
 
 * For the brave (a.k.a. "impatient"):
 
-  For those who have a working MSYS/MSYS2/MinGW development
-  environment and are comfortable with running Posix configure
-  scripts, here are the concise instructions for configuring and
-  building the native Windows binary of Emacs with these tools:
+  For those who have a working MSYS/MinGW development environment and
+  are comfortable with running Posix configure scripts, here are the
+  concise instructions for configuring and building the native Windows
+  binary of Emacs with these tools:
 
   0. Start the MSYS Bash window.  Everything else below is done from
      that window's Bash prompt.
@@ -41,14 +41,6 @@
 
         ./configure --prefix=PREFIX ...
 
-      - If you are building with MSYS2, you must specify the build machine:
-
-        --build=i686-pc-mingw32
-
-        or
-
-        --build=x86_64-pc-mingw32
-        
      It is always preferable to use --prefix to configure Emacs for
      some specific location of its installed tree; the default
      /usr/local is not suitable for Windows (see the detailed

@@ -83,16 +75,6 @@
   If these short instructions somehow fail, read the rest of this
   file.
 
-* Installing MinGW32 and MSYS2
-
-  Follow the instructions at http://sourceforge.net/p/msys2/wiki/MSYS2%20installation/
-
-  Install the compiler, and tar:
-
-  $ pacman -S mingw-w64-i686-toolchain tar
-
-  Follow the instructions above to build emacs.
-  
 * Installing MinGW and MSYS
 
   Make sure you carefully read the following two sections in their

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-08 15:54 building Emacs on Msys2/mingw32 Stephen Leake
@ 2014-09-08 20:14 ` Óscar Fuentes
  2014-09-09  5:00   ` Stephen Leake
  2014-09-09 13:28 ` Eli Zaretskii
  1 sibling, 1 reply; 16+ messages in thread
From: Óscar Fuentes @ 2014-09-08 20:14 UTC (permalink / raw)
  To: emacs-devel; +Cc: Stephen Leake

Stephen Leake <stephen_leake@stephe-leake.org> writes:

[snip]

> I have suggested changes to the Msys2 people to iron out the Msys2
> install issues I had.
>
>
> To address the "almost" above:
>
> I built from the current pretest tarball,
> http://alpha.gnu.org/gnu/emacs/pretest/emacs-24.3.93.tar.xz
>
> I had to override the guessed build machine on the configure line:
>
>     $ ./configure --build=i686-pc-mingw32 --prefix=/mingw32

All this and the remaining removed text is unnecessary if you use
mingw32_shell.bat instead of msys2_shell.bat. There is no need to run
msys2_shell.bat at all unless you want to build MSYS2 packages (not to
be confused with MinGW-w64 packages, which doesn't depend on
msys-2.0.dll.)

BTW, the changes you proposed to MSYS2 intall/update procedure also
insists on running msys2_shell.bat. That's poor advice.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
@ 2014-09-08 21:54 Angelo Graziosi
  2014-09-08 22:53 ` Óscar Fuentes
  2014-09-09 13:42 ` Eli Zaretskii
  0 siblings, 2 replies; 16+ messages in thread
From: Angelo Graziosi @ 2014-09-08 21:54 UTC (permalink / raw)
  To: Emacs developers

Óscar Fuentes wrote:
> All this and the remaining removed text is unnecessary if you use
> mingw32_shell.bat

Hmm... This was what I thought. I build the W64 binaries of Emacs, and I 
DO use mingw64_shell.bat, where:

$ echo $PATH
/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/usr/bin/vendor_perl:/usr/bin/core_perl

$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/4.9.1/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-4.9.1/configure --prefix=/mingw64 
--with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 
--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 
--with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include 
--libexecdir=/mingw64/lib 
--with-gxx-include-dir=/mingw64/include/c++/4.9.1 --enable-bootstrap 
--with-arch=x86-64 --with-tune=generic 
--enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared 
--enable-static --enable-libatomic --enable-threads=posix 
--enable-graphite --enable-fully-dynamic-string 
--enable-libstdcxx-time=yes --disable-libstdcxx-pch 
--disable-libstdcxx-debug --enable-cloog-backend=isl 
--enable-version-specific-runtime-libs --disable-cloog-version-check 
--disable-isl-version-check --enable-lto --enable-libgomp 
--disable-multilib --enable-checking=release --disable-rpath 
--disable-win32-registry --disable-nls --disable-werror 
--disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 
--with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 
--with-cloog=/mingw64 --with-pkgversion='Rev3, Built by MSYS2 project' 
--with-bugurl=http://sourceforge.net/projects/msys2 --with-gnu-as 
--with-gnu-ld
Thread model: posix
gcc version 4.9.1 (Rev3, Built by MSYS2 project)

and I build with

$ ./autogen.sh
$ ./configure --prefix=/Emacs --with-wide-int --build=x86_64-w64-mingw32 
--without-imagemagick 'CFLAGS=-I/mingw64/include/noX -Ofast -g0 -pipe' 
LDFLAGS=-pipe

$ make -j3


If I remove the "--build=x86_64-w64-mingw32" option to configure, the 
build is configure for x86_64-pc-mingw64,

[...]
Configured for `x86_64-pc-mingw64'.

   Where should the build process find the source code?    .
   What compiler should emacs be built with?               gcc 
-std=gnu99  -I/mingw64/include/noX -Ofast -g0 -pipe
   Should Emacs use the GNU version of malloc?             no
     (The GNU allocators don't work with this system configuration.)
   Should Emacs use a relocating allocator for buffers?    no
   Should Emacs use mmap(2) for buffer allocation?         yes
   What window system should Emacs use?                    w32
   What toolkit should Emacs use?                          none
   Where do we find X Windows header files?                NONE
   Where do we find X Windows libraries?                   NONE
   Does Emacs use -lXaw3d?                                 no
   Does Emacs use -lXpm?                                   yes
   Does Emacs use -ljpeg?                                  yes
   Does Emacs use -ltiff?                                  yes
   Does Emacs use a gif library?                           yes
   Does Emacs use a png library?                           yes
   Does Emacs use -lrsvg-2?                                yes
   Does Emacs use imagemagick?                             no
   Does Emacs support sound?                               no
   Does Emacs use -lgpm?                                   no
   Does Emacs use -ldbus?                                  yes
   Does Emacs use -lgconf?                                 no
   Does Emacs use GSettings?                               no
   Does Emacs use a file notification library?             yes (w32)
   Does Emacs use access control lists?                    yes
   Does Emacs use -lselinux?                               no
   Does Emacs use -lgnutls?                                yes
   Does Emacs use -lxml2?                                  yes
   Does Emacs use -lfreetype?                              no
   Does Emacs use -lm17n-flt?                              no
   Does Emacs use -lotf?                                   no
   Does Emacs use -lxft?                                   no
   Does Emacs directly use zlib?                           yes
   Does Emacs use toolkit scroll bars?                     yes
[...]

and 'make -j3' fails at some point.. Instead, with that configure 
option, the build is configure for 'x86_64-w64-mingw32' and it is 
completed successfully...

So, may you explain how you build Emacs on MSYS2?

TIA,
  Angelo.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-08 21:54 Angelo Graziosi
@ 2014-09-08 22:53 ` Óscar Fuentes
  2014-09-09 13:42 ` Eli Zaretskii
  1 sibling, 0 replies; 16+ messages in thread
From: Óscar Fuentes @ 2014-09-08 22:53 UTC (permalink / raw)
  To: emacs-devel

Angelo Graziosi <angelo.graziosi@alice.it> writes:

> Óscar Fuentes wrote:
>> All this and the remaining removed text is unnecessary if you use
>> mingw32_shell.bat
>
> Hmm... This was what I thought. I build the W64 binaries of Emacs, and
> I DO use mingw64_shell.bat, where:
>

[snip]

> and I build with
>
> $ ./autogen.sh
> $ ./configure --prefix=/Emacs --with-wide-int
> --build=x86_64-w64-mingw32 --without-imagemagick
> 'CFLAGS=-I/mingw64/include/noX -Ofast -g0 -pipe' LDFLAGS=-pipe
>
> $ make -j3
>
>
> If I remove the "--build=x86_64-w64-mingw32" option to configure, the
> build is configure for x86_64-pc-mingw64,
>
> [...]
> Configured for `x86_64-pc-mingw64'.

[snip]

> and 'make -j3' fails at some point.. Instead, with that configure
> option, the build is configure for 'x86_64-w64-mingw32' and it is
> completed successfully...

Either the configure script does not handle the target triple
x86_64-pc-mingw64 correctly, or that target triple is incorrect (IIRC
the target triple is inferred by a script `configure' calls:
build-aux/config.guess.)

> So, may you explain how you build Emacs on MSYS2?

I don't build Emacs 64 bits on Windows, just the 32 bit build (as the OP
does). It works fine without passing any parameter to `configure'.




^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-08 20:14 ` Óscar Fuentes
@ 2014-09-09  5:00   ` Stephen Leake
  2014-09-09 10:39     ` Chris Zheng
  2014-09-09 13:48     ` Eli Zaretskii
  0 siblings, 2 replies; 16+ messages in thread
From: Stephen Leake @ 2014-09-09  5:00 UTC (permalink / raw)
  To: emacs-devel

Óscar Fuentes <ofv@wanadoo.es> writes:

> Stephen Leake <stephen_leake@stephe-leake.org> writes:
>
> [snip]
>
>> I have suggested changes to the Msys2 people to iron out the Msys2
>> install issues I had.
>>
>>
>> To address the "almost" above:
>>
>> I built from the current pretest tarball,
>> http://alpha.gnu.org/gnu/emacs/pretest/emacs-24.3.93.tar.xz
>>
>> I had to override the guessed build machine on the configure line:
>>
>>     $ ./configure --build=i686-pc-mingw32 --prefix=/mingw32
>
> All this and the remaining removed text is unnecessary if you use
> mingw32_shell.bat instead of msys2_shell.bat. 

Sigh. I was actually running mingw64_shell.bat, not msys2_shell.bat. I
just got the wrong name in the emails. Thanks for catching this.

However, Emacs configure was run under Emacs, not directly in the
mingw64 shell, which means I was trying to emulate mingw64_shell.bat
with elisp code. So I need to figure out what I got wrong in that
emulation. I don't see anything obvious in the shell/environment
variables. 

On the gripping hand, I just tested configure under mingw64_shell.bat,
and got:

configure: error: Emacs does not support `x86_64-pc-mingw64'. 

Which is fine; we need i686.

So I tried mingw32_shell.bat; that works.

Just to be clear, the default prefix is still /usr/local. But /usr
exists in msys2/mingw32; it is at c:/msys64/usr. So /usr/local is a
reasonable place to install emacs. Except that will mix 32 bit and 64
bit targets; /usr/local/x86_64 and /usr/local/i686 would be better. So I
suggest we keep the advice to specify --prefix.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09  5:00   ` Stephen Leake
@ 2014-09-09 10:39     ` Chris Zheng
  2014-09-09 13:58       ` Stephen Leake
  2014-09-09 13:48     ` Eli Zaretskii
  1 sibling, 1 reply; 16+ messages in thread
From: Chris Zheng @ 2014-09-09 10:39 UTC (permalink / raw)
  To: stephen_leake; +Cc: emacs-devel

From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: building Emacs on Msys2/mingw32
Date: Tue, 09 Sep 2014 00:00:29 -0500

Hi Stephen,
> Sigh. I was actually running mingw64_shell.bat, not msys2_shell.bat. I
> just got the wrong name in the emails. Thanks for catching this.
> 
> However, Emacs configure was run under Emacs, not directly in the
> mingw64 shell, which means I was trying to emulate mingw64_shell.bat
> with elisp code. So I need to figure out what I got wrong in that
> emulation. I don't see anything obvious in the shell/environment
> variables. 
Sorry, I can't follow the hole discussion.  But if you want to run
./configure under Emacs, say, the in shell-mode, you can add
  export MSYSTEM=MINGW64
to ~/.bashrc, this will complete what mingw64_shell.bat do for the
build.  And this is what I have done.
> On the gripping hand, I just tested configure under mingw64_shell.bat,
> and got:
> 
> configure: error: Emacs does not support `x86_64-pc-mingw64'. 
> 
> Which is fine; we need i686.
> 
> So I tried mingw32_shell.bat; that works.
> 
> Just to be clear, the default prefix is still /usr/local. But /usr
> exists in msys2/mingw32; it is at c:/msys64/usr. So /usr/local is a
> reasonable place to install emacs. Except that will mix 32 bit and 64
> bit targets; /usr/local/x86_64 and /usr/local/i686 would be better. So I
> suggest we keep the advice to specify --prefix.
I personal prefer /mingw32/local and /mingw64/local because: (1) The
/usr is for MSYS2 system, and programs in it will depend on
msys-*.dll, like Cygwin does.  But Emacs was native Windows programs
which doesn't not depend on MSYS2 dlls; (2) /mingw32 and /mingw64 are
unique and don't exist in /usr and other paths; (3) The Emacs you
builded are more likely a MinGW32 or MinGW64 program than a MSYS2
program, so it should come to /mingw32 or /mingw64.

Best wishes,
Chris.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-08 15:54 building Emacs on Msys2/mingw32 Stephen Leake
  2014-09-08 20:14 ` Óscar Fuentes
@ 2014-09-09 13:28 ` Eli Zaretskii
  2014-09-09 22:03   ` Stephen Leake
  1 sibling, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2014-09-09 13:28 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel

> From: Stephen Leake <stephen_leake@stephe-leake.org>
> Date: Mon, 08 Sep 2014 10:54:26 -0500
> 
> I had to override the guessed build machine on the configure line:
> 
>     $ ./configure --build=i686-pc-mingw32 --prefix=/mingw32
> 
> config.guess returns x86_64-pc-msys; configure rejects this.
> 
> x86_64-pc-msys is the correct host identifier

No, it isn't: it identifies an MSYS program, not a MinGW program.  It
would have been correct if you were building an MSYS Emacs for some
reason.

> It might make sense to have configure translate x86_64-pc-msys to
> x86_64-pc-mingw32, and i686-pc-msys to i686-pc-mingw32.

No, it doesn't: people should be able to build an MSYS Emacs, if they
so desire.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-08 21:54 Angelo Graziosi
  2014-09-08 22:53 ` Óscar Fuentes
@ 2014-09-09 13:42 ` Eli Zaretskii
  2014-09-09 17:53   ` Angelo Graziosi
  1 sibling, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2014-09-09 13:42 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel

> Date: Mon, 08 Sep 2014 23:54:13 +0200
> From: Angelo Graziosi <angelo.graziosi@alice.it>
> 
> If I remove the "--build=x86_64-w64-mingw32" option to configure, the 
> build is configure for x86_64-pc-mingw64,
> 
> [...]
> Configured for `x86_64-pc-mingw64'.

I see nothing wrong with that, off-hand.

> and 'make -j3' fails at some point.

Where and how does it fail?



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09  5:00   ` Stephen Leake
  2014-09-09 10:39     ` Chris Zheng
@ 2014-09-09 13:48     ` Eli Zaretskii
  1 sibling, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2014-09-09 13:48 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel

> From: Stephen Leake <stephen_leake@stephe-leake.org>
> Date: Tue, 09 Sep 2014 00:00:29 -0500
> 
> On the gripping hand, I just tested configure under mingw64_shell.bat,
> and got:
> 
> configure: error: Emacs does not support `x86_64-pc-mingw64'. 

This is already fixed on the trunk.  The release branch insists on
"-mingw32" suffix (of course, you can hack it).

> Just to be clear, the default prefix is still /usr/local. But /usr
> exists in msys2/mingw32; it is at c:/msys64/usr. So /usr/local is a
> reasonable place to install emacs. Except that will mix 32 bit and 64
> bit targets; /usr/local/x86_64 and /usr/local/i686 would be better. So I
> suggest we keep the advice to specify --prefix.

The advice to use --prefix is there for a reason.  My advice is to
stay away of the MSYS tree, so that your absolute file names always
include an explicit drive letter, as in /x/foo/bar.  Otherwise, you
risk passing just /foo/bar to MinGW programs that won't grok it.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 10:39     ` Chris Zheng
@ 2014-09-09 13:58       ` Stephen Leake
  0 siblings, 0 replies; 16+ messages in thread
From: Stephen Leake @ 2014-09-09 13:58 UTC (permalink / raw)
  To: emacs-devel

Chris Zheng <chriszheng99@gmail.com> writes:

> Sorry, I can't follow the hole discussion.  But if you want to run
> ./configure under Emacs, say, the in shell-mode, you can add
>   export MSYSTEM=MINGW64
> to ~/.bashrc, this will complete what mingw64_shell.bat do for the
> build.  And this is what I have done.

I have MSYSTEM=MINGW32 in msys bash under Emacs. config.guess returns
x86_64-pc-mingw32. Which is what you want for 64 bit builds (I think)
but just confusing otherwise.

But that is the _only_ difference betwee mingw64_shell.bat and
mingw32_shell.bat. So I don't understand the different behavior between
an Emacs msys shell and a mingw32_shell.bat shell. Sigh.

>> Just to be clear, the default prefix is still /usr/local. But /usr
>> exists in msys2/mingw32; it is at c:/msys64/usr. So /usr/local is a
>> reasonable place to install emacs. Except that will mix 32 bit and 64
>> bit targets; /usr/local/x86_64 and /usr/local/i686 would be better. So I
>> suggest we keep the advice to specify --prefix.

> I personal prefer /mingw32/local and /mingw64/local because: (1) The
> /usr is for MSYS2 system, and programs in it will depend on
> msys-*.dll, like Cygwin does.  But Emacs was native Windows programs
> which doesn't not depend on MSYS2 dlls; (2) /mingw32 and /mingw64 are
> unique and don't exist in /usr and other paths; (3) The Emacs you
> builded are more likely a MinGW32 or MinGW64 program than a MSYS2
> program, so it should come to /mingw32 or /mingw64.

Yes, that makes sense. It would help if the msys2 people would publish
recommended file system conventions with a rationale, rather than just
saying "do whatever you want". Newbies need guidance; we don't _know_
what we want!

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 13:42 ` Eli Zaretskii
@ 2014-09-09 17:53   ` Angelo Graziosi
  2014-09-09 18:11     ` Eli Zaretskii
  0 siblings, 1 reply; 16+ messages in thread
From: Angelo Graziosi @ 2014-09-09 17:53 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel



Il 09/09/2014 15:42, Eli Zaretskii ha scritto:
>> Date: Mon, 08 Sep 2014 23:54:13 +0200
>> From: Angelo Graziosi <angelo.graziosi@alice.it>
>>
>> If I remove the "--build=x86_64-w64-mingw32" option to configure, the
>> build is configure for x86_64-pc-mingw64,
>>
>> [...]
>> Configured for `x86_64-pc-mingw64'.
>
> I see nothing wrong with that, off-hand.
>
>> and 'make -j3' fails at some point.
>
> Where and how does it fail?
>

Ok, I have repeated the steps from scratch both in mingw32_shell.bat and 
in mingw64_shell.bat shell. As source I have used emacs-master.tar.gz 
(commit 416dd4af, Dmitry Antipov 2014-09-09 11:43:22 (GMT)) from Git mirror.

1) mingw32_shell.bat (failure)

$ ./autogen.sh
$ ./configure
[...]
Configured for `x86_64-pc-mingw32'.
[...]

$ make
[...]
if test "no" = "yes"; then \
   rm -f bootstrap-emacs.exe; \
   ln temacs.exe bootstrap-emacs.exe; \
else \
   ./temacs --batch --load loadup bootstrap || exit 1; \
   test "X" = X ||  -zex emacs.exe; \
   mv -f emacs.exe bootstrap-emacs.exe; \
fi
/bin/sh: riga 4: ./temacs: cannot execute binary file: Exec format error
Makefile:828: set di istruzioni per l'obiettivo "bootstrap-emacs.exe" 
non riuscito
make[1]: *** [bootstrap-emacs.exe] Errore 1
make[1]: uscita dalla directory "/tmp/emacs-master/src"
Makefile:379: set di istruzioni per l'obiettivo "src" non riuscito
make: *** [src] Errore 2

2) mingw64_shell.bat (success)
$ ./autogen.sh
$ ./configure --without-imagemagick
$ make

completed successfully! Maybe the failure I saw before was a consequence 
of the '-j3' option..

So, which way (x86_64-w64-mingw32 / x86_64-pc-mingw32) is the best to 
build Emacs on MSYS2?

Ciao,
  Angelo.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 17:53   ` Angelo Graziosi
@ 2014-09-09 18:11     ` Eli Zaretskii
  2014-09-09 18:15       ` Eli Zaretskii
  0 siblings, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2014-09-09 18:11 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel

> Date: Tue, 09 Sep 2014 19:53:18 +0200
> From: Angelo Graziosi <angelo.graziosi@alice.it>
> CC: emacs-devel@gnu.org
> 
> if test "no" = "yes"; then \
>    rm -f bootstrap-emacs.exe; \
>    ln temacs.exe bootstrap-emacs.exe; \
> else \
>    ./temacs --batch --load loadup bootstrap || exit 1; \
>    test "X" = X ||  -zex emacs.exe; \
>    mv -f emacs.exe bootstrap-emacs.exe; \
> fi
> /bin/sh: riga 4: ./temacs: cannot execute binary file: Exec format error
> Makefile:828: set di istruzioni per l'obiettivo "bootstrap-emacs.exe" non riuscito

?? What does "file temacs.exe" says?

> make[1]: *** [bootstrap-emacs.exe] Errore 1
> make[1]: uscita dalla directory "/tmp/emacs-master/src"
> Makefile:379: set di istruzioni per l'obiettivo "src" non riuscito
> make: *** [src] Errore 2
> 
> 2) mingw64_shell.bat (success)
> $ ./autogen.sh
> $ ./configure --without-imagemagick
> $ make
> 
> completed successfully! Maybe the failure I saw before was a consequence 
> of the '-j3' option..

Obviously, the way to answer this is to try mingw32_shell.bat without
"-j3".

> So, which way (x86_64-w64-mingw32 / x86_64-pc-mingw32) is the best to 
> build Emacs on MSYS2?

I have no idea, I use neither MSYS2 nor MinGW64.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 18:11     ` Eli Zaretskii
@ 2014-09-09 18:15       ` Eli Zaretskii
  2014-09-09 19:50         ` Fabrice Popineau
  0 siblings, 1 reply; 16+ messages in thread
From: Eli Zaretskii @ 2014-09-09 18:15 UTC (permalink / raw)
  To: angelo.graziosi; +Cc: emacs-devel

> Date: Tue, 09 Sep 2014 21:11:38 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: emacs-devel@gnu.org
> 
> > Date: Tue, 09 Sep 2014 19:53:18 +0200
> > From: Angelo Graziosi <angelo.graziosi@alice.it>
> > CC: emacs-devel@gnu.org
> > 
> > if test "no" = "yes"; then \
> >    rm -f bootstrap-emacs.exe; \
> >    ln temacs.exe bootstrap-emacs.exe; \
> > else \
> >    ./temacs --batch --load loadup bootstrap || exit 1; \
> >    test "X" = X ||  -zex emacs.exe; \
> >    mv -f emacs.exe bootstrap-emacs.exe; \
> > fi
> > /bin/sh: riga 4: ./temacs: cannot execute binary file: Exec format error
> > Makefile:828: set di istruzioni per l'obiettivo "bootstrap-emacs.exe" non riuscito

It's possible that x86_64-pc-mingw32 somehow triggers the use of the
wrong linker script.  Add the -v switch to the link command, and see
if you spot any significant differences between the two builds when
GCC links temacs.exe.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 18:15       ` Eli Zaretskii
@ 2014-09-09 19:50         ` Fabrice Popineau
  0 siblings, 0 replies; 16+ messages in thread
From: Fabrice Popineau @ 2014-09-09 19:50 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz <at> gnu.org> writes:

> 
> > Date: Tue, 09 Sep 2014 21:11:38 +0300
> > From: Eli Zaretskii <eliz <at> gnu.org>
> > Cc: emacs-devel <at> gnu.org
> > 
> > > Date: Tue, 09 Sep 2014 19:53:18 +0200
> > > From: Angelo Graziosi <angelo.graziosi <at> alice.it>
> > > CC: emacs-devel <at> gnu.org
> > > 
> > > if test "no" = "yes"; then \
> > >    rm -f bootstrap-emacs.exe; \
> > >    ln temacs.exe bootstrap-emacs.exe; \
> > > else \
> > >    ./temacs --batch --load loadup bootstrap || exit 1; \
> > >    test "X" = X ||  -zex emacs.exe; \
> > >    mv -f emacs.exe bootstrap-emacs.exe; \
> > > fi
> > > /bin/sh: riga 4: ./temacs: cannot execute binary file: Exec format 
error
> > > Makefile:828: set di istruzioni per l'obiettivo "bootstrap-
emacs.exe" non riuscito
> 
> It's possible that x86_64-pc-mingw32 somehow triggers the use of the
> wrong linker script.  Add the -v switch to the link command, and see
> if you spot any significant differences between the two builds when
> GCC links temacs.exe.
> 
> 

FWIWn I build Emacs trunk with a standard, not hacked, MSYS2/MingW64.
I update trunk regularly, but I update MSYS2/MingW64 too (with 'pacman -
Syu').
So nowadays, to build trunk, this is what I do :

$ build_alias=x86_64-w64-mingw32 make -j 8 bootstrap

(bootstrap optional).

I'm not sure that the MingW64 changes needed to the configure script can 
be found in another place than emacs trunk (aka : 24.4).

Fabrice





^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 13:28 ` Eli Zaretskii
@ 2014-09-09 22:03   ` Stephen Leake
  2014-09-10  3:22     ` Eli Zaretskii
  0 siblings, 1 reply; 16+ messages in thread
From: Stephen Leake @ 2014-09-09 22:03 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Stephen Leake <stephen_leake@stephe-leake.org>
>> Date: Mon, 08 Sep 2014 10:54:26 -0500
>> 
>> I had to override the guessed build machine on the configure line:
>> 
>>     $ ./configure --build=i686-pc-mingw32 --prefix=/mingw32
>> 
>> config.guess returns x86_64-pc-msys; configure rejects this.
>> 
>> x86_64-pc-msys is the correct host identifier
>
> No, it isn't: it identifies an MSYS program, not a MinGW program.  

Yes, and the _host_ is MSYS bash.

The _build_ (ie target) is MinGW. Which is why I used --build, not --host.

>> It might make sense to have configure translate x86_64-pc-msys to
>> x86_64-pc-mingw32, and i686-pc-msys to i686-pc-mingw32.
>
> No, it doesn't: people should be able to build an MSYS Emacs, if they
> so desire.

Good point.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: building Emacs on Msys2/mingw32
  2014-09-09 22:03   ` Stephen Leake
@ 2014-09-10  3:22     ` Eli Zaretskii
  0 siblings, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2014-09-10  3:22 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel

> From: Stephen Leake <stephen_leake@stephe-leake.org>
> Date: Tue, 09 Sep 2014 17:03:24 -0500
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Stephen Leake <stephen_leake@stephe-leake.org>
> >> Date: Mon, 08 Sep 2014 10:54:26 -0500
> >> 
> >> I had to override the guessed build machine on the configure line:
> >> 
> >>     $ ./configure --build=i686-pc-mingw32 --prefix=/mingw32
> >> 
> >> config.guess returns x86_64-pc-msys; configure rejects this.
> >> 
> >> x86_64-pc-msys is the correct host identifier
> >
> > No, it isn't: it identifies an MSYS program, not a MinGW program.  
> 
> Yes, and the _host_ is MSYS bash.
> 
> The _build_ (ie target) is MinGW. Which is why I used --build, not --host.

Since MSYS2's main purpose is to build MinGW programs, it should
produce a MinGW targeted triplet by default.  At least that's what
MSYS does.



^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2014-09-10  3:22 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-08 15:54 building Emacs on Msys2/mingw32 Stephen Leake
2014-09-08 20:14 ` Óscar Fuentes
2014-09-09  5:00   ` Stephen Leake
2014-09-09 10:39     ` Chris Zheng
2014-09-09 13:58       ` Stephen Leake
2014-09-09 13:48     ` Eli Zaretskii
2014-09-09 13:28 ` Eli Zaretskii
2014-09-09 22:03   ` Stephen Leake
2014-09-10  3:22     ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2014-09-08 21:54 Angelo Graziosi
2014-09-08 22:53 ` Óscar Fuentes
2014-09-09 13:42 ` Eli Zaretskii
2014-09-09 17:53   ` Angelo Graziosi
2014-09-09 18:11     ` Eli Zaretskii
2014-09-09 18:15       ` Eli Zaretskii
2014-09-09 19:50         ` Fabrice Popineau

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).