* nt/INSTALL.W64: * nt/INSTALL: * INSTALL: Update the installation information, in particular the fact that HarfBuzz is now preferred as the shaping library.
271 lines
8.5 KiB
Plaintext
271 lines
8.5 KiB
Plaintext
Building and Installing Emacs on 64-bit MS-Windows
|
|
using MSYS2 and MinGW-w64
|
|
|
|
Copyright (c) 2015-2020 Free Software Foundation, Inc.
|
|
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
|
|
|
|
Run c:/msys64/msys2.exe in your MSYS2 directory and you will see a BASH window
|
|
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):
|
|
|
|
pacman -S --needed base-devel \
|
|
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 \
|
|
mingw-w64-x86_64-lcms2 \
|
|
mingw-w64-x86_64-jansson \
|
|
mingw-w64-x86_64-libxml2 \
|
|
mingw-w64-x86_64-gnutls \
|
|
mingw-w64-x86_64-zlib \
|
|
mingw-w64-x86_64-harfbuzz
|
|
|
|
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, zlib for
|
|
decompressing text, and HarfBuzz for use as the shaping engine. 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.
|
|
|
|
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
|
|
|
|
The Emacs ftp site is located at https://ftp.gnu.org/gnu/emacs/ - download the
|
|
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
|
|
put the Emacs source into C:\emacs\emacs-26:
|
|
|
|
mkdir /c/emacs
|
|
cd /c/emacs
|
|
git clone git://git.sv.gnu.org/emacs.git emacs-26
|
|
|
|
(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
|
|
console and run mingw64.exe in the C:\msys64 folder, then cd back to
|
|
your Emacs source directory, e.g.:
|
|
|
|
cd /c/emacs/emacs-26
|
|
|
|
** 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,
|
|
which 'make install' will use - in this example we set it to C:\emacs\emacs-26.
|
|
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.
|
|
|
|
Note also that we need to disable D-Bus because Emacs does not yet
|
|
support them on Windows.
|
|
|
|
./configure --prefix=/c/emacs/emacs-26 --without-dbus
|
|
|
|
** 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.
|
|
|
|
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.
|
|
|
|
* 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.
|
|
|
|
* 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.
|
|
|
|
* 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
|
|
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|