INSTALL.W64 8.46 KB
Newer Older
1 2 3
	  Building and Installing Emacs on 64-bit MS-Windows
		      using MSYS2 and MinGW-w64

Paul Eggert's avatar
Paul Eggert committed
4
  Copyright (c) 2015-2019 Free Software Foundation, Inc.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
  See the end of the file for license conditions.

This document describes how to compile a 64-bit GNU Emacs using MSYS2
and MinGW-w64.  For instructions for building a 32-bit Emacs using
MSYS and MinGW, see the file INSTALL in this directory.

Do not use this recipe with Cygwin. For building on Cygwin, use the normal
installation instructions in ../INSTALL.

* Requirements

The total space required is 3GB: 1.8GB for MSYS2 / MinGW-w64 and 1.2GB for
Emacs with the full repository, or less if you're using a release tarball.

* Set up the MinGW-w64 / MSYS2 build environment

MinGW-w64 provides a complete runtime for projects built with GCC for 64-bit
Windows -- it's located at http://mingw-w64.org/.

MSYS2 is a Cygwin-derived software distribution for Windows which provides
build tools for MinGW-w64 -- see http://msys2.github.io/.

** Download and install MinGW-w64 and MSYS2

You can download the x86_64 version of MSYS2 (i.e. msys2-x86_64-<date>.exe)
from

  https://sourceforge.net/projects/msys2/files/Base/x86_64

Run this file to install MSYS2 in your preferred directory, e.g. the default
C:\msys64 -- this will install MinGW-w64 also.  Note that directory names
containing spaces may cause problems.

** Download and install the necessary packages

40
Run c:/msys64/msys2.exe in your MSYS2 directory and you will see a BASH window
41 42 43 44 45
opened.

In the BASH prompt, use the following command to install the necessary
packages (you can copy and paste it into the shell with Shift + Insert):

46
  pacman -S --needed base-devel \
47 48 49 50 51 52 53
  mingw-w64-x86_64-toolchain \
  mingw-w64-x86_64-xpm-nox \
  mingw-w64-x86_64-libtiff \
  mingw-w64-x86_64-giflib \
  mingw-w64-x86_64-libpng \
  mingw-w64-x86_64-libjpeg-turbo \
  mingw-w64-x86_64-librsvg \
54
  mingw-w64-x86_64-lcms2 \
55
  mingw-w64-x86_64-jansson \
56
  mingw-w64-x86_64-libxml2 \
57 58
  mingw-w64-x86_64-gnutls \
  mingw-w64-x86_64-zlib
59

60 61 62
The packages include the base developer tools (autoconf, grep, make, etc.),
the compiler toolchain (gcc, gdb, etc.), several image libraries, an XML
library, the GnuTLS (transport layer security) library, and zlib for
63 64 65
decompressing text.  Only the first three packages are required (base-devel,
toolchain, xpm-nox); the rest are optional.  You can select only part of the
libraries if you don't need them all.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

You now have a complete build environment for Emacs.

* Install Git (optional) and disable autocrlf

If you're going to be building the development version of Emacs from the Git
repository, and you don't already have Git on your system, you can install it
in your MSYS2 environment with:

  pacman -S git

The autocrlf feature of Git may interfere with the configure file, so it is
best to disable this feature by running the command:

  git config core.autocrlf false

* Get the Emacs source code

Now you can either get an existing release version of the Emacs source code
from the GNU ftp site, or get the more current version and history from the
Git repository.

You can always find the most recent information on these sources from the GNU
Savannah Emacs site, https://savannah.gnu.org/projects/emacs.

** From the FTP site

93
The Emacs ftp site is located at https://ftp.gnu.org/gnu/emacs/ - download the
94 95 96 97 98 99 100 101 102 103
version you want to build and put the file into a location like C:\emacs\,
then uncompress it with tar.  This will put the Emacs source into a folder like
C:\emacs\emacs-24.5:

  cd /c/emacs
  tar xJf emacs-24.5.tar.xz

** From the Git repository

To download the Git repository, do something like the following -- this will
104
put the Emacs source into C:\emacs\emacs-26:
105 106 107

  mkdir /c/emacs
  cd /c/emacs
108
  git clone git://git.sv.gnu.org/emacs.git emacs-26
109 110 111 112 113 114 115 116 117

(We recommend using the command shown on Savannah Emacs project page.)

* Build Emacs

Now you're ready to build and install Emacs with autogen, configure, make,
and make install.

First we need to switch to the MinGW-w64 environment.  Exit the MSYS2 BASH
118
console and run mingw64.exe in the C:\msys64 folder, then cd back to
119 120
your Emacs source directory, e.g.:

121
  cd /c/emacs/emacs-26
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137

** Run autogen

If you are building the development sources, run autogen to generate the
configure script (note: this step is not necessary if you are using a
release source tarball, as the configure file is included):

  ./autogen.sh

** Run configure

Now you can run configure, which will build the various Makefiles -- note
that the example given here is just a simple one - for more information
on the options available please see the INSTALL file in this directory.

The '--prefix' option specifies a location for the resulting binary files,
138
which 'make install' will use - in this example we set it to C:\emacs\emacs-26.
139 140 141
If a prefix is not specified the files will be put in the standard Unix
directories located in your C:\msys64 directory, but this is not recommended.

142 143
Note also that we need to disable D-Bus because Emacs does not yet
support them on Windows.
144

145
  ./configure --prefix=/c/emacs/emacs-26 --without-dbus
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182

** Run make

This will compile Emacs and build the executables, putting them in the src
directory:

  make

To speed up the process, you can try running

  make -jN

where N is the number of cores in your system -- if your MSYS2 make supports
parallel execution it will run significantly faster.

** Run make install

Now you can run "make install", which will copy the executable and
other files to the location specified in the configure step. This will
create the bin, libexec, share, and var directories:

  make install

You can also say

  make install prefix=/c/somewhere

to install them somewhere else.

* Test Emacs

To test it out, run

  ./bin/runemacs.exe -Q

and if all went well, you will have a new 64-bit version of Emacs.

183 184 185 186 187 188 189 190
When running Emacs from outside the mingw64 shell, you will need to
add c:\msys64\mingw64\bin to your Windows PATH, or copy the needed
DLLs into Emacs' bin/ directory.  Otherwise features such as TLS which
depend on those DLLs will be missing.

You can do this through Control Panel / System and Security / System /
Advanced system settings / Environment Variables / Edit path.

191 192 193 194 195 196 197 198 199 200
* Make a shortcut

To make a shortcut to run the new Emacs, right click on the location where you
want to put it, e.g. the Desktop, select New / Shortcut, then select
runemacs.exe in the bin folder of the new Emacs, and give it a name.

You can set any command line options by right clicking on the resulting
shortcut, select Properties, then add any options to the Target command,
e.g. --debug-init.

201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
* Troubleshooting

** Missing mingw64.exe launcher

Older versions of Msys2 may lack the mingw64.exe launcher program.  If
you have them, running mingw64_shell.bat or "msys2_shell.cmd -mingw64"
should work instead.

Alternatively, install mingw64.exe with

    pacman -S msys/msys2-launcher-git

** Configure errors

*** Check that mingw64 gcc is accessible

Errors like

    configure: error: Emacs does not support 'x86_64-pc-msys' systems.

or

    checking the compiler's target... configure: error: Impossible to obtain gcc compiler target.

indicate you didn't use the mingw64 launcher, or you didn't install
gcc.  It's also possible you have something in ~/.bashrc or ~/.profile
which modifies PATH or MSYSTEM to an unexpected value, preventing gcc
from being found.  At the mingw64 bash shell, running

    gcc -v

should give output which includes the text

    Target: x86_64-w64-mingw32

*** Check your $PKG_CONFIG_PATH

For a typical MSYS2 install, running

    echo $PKG_CONFIG_PATH

at the mingw64 bash shell should give print a value starting with
'/mingw64/lib/pkgconfig'.  Incorrect values may prevent configure from
finding installed libraries.

246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
* Credits

Thanks to Chris Zheng for the original build outline as used by the
emacsbinw64 project, located at:

  https://sourceforge.net/p/emacsbinw64/wiki/Build%20guideline%20for%20MSYS2-MinGW-w64%20system/

* License

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
268
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.