2015-12-31 17:00:16 +00:00
|
|
|
Building and Installing Emacs on 64-bit MS-Windows
|
|
|
|
using MSYS2 and MinGW-w64
|
|
|
|
|
2017-01-01 03:14:01 +00:00
|
|
|
Copyright (c) 2015-2017 Free Software Foundation, Inc.
|
2015-12-31 17:00:16 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
Then you'll need to add the following directories to your Windows PATH
|
|
|
|
environment variable:
|
|
|
|
|
|
|
|
c:\msys64\usr\bin;c:\msys64\mingw64\bin
|
|
|
|
|
|
|
|
you can do this through Control Panel / System and Security / System /
|
|
|
|
Advanced system settings / Environment Variables / Edit path.
|
|
|
|
|
|
|
|
Adding these directories to your PATH tells Emacs where to find the DLLs it
|
|
|
|
needs to run, and some optional commands like grep and find. These commands
|
|
|
|
will also be available at the Windows console.
|
|
|
|
|
|
|
|
** Download and install the necessary packages
|
|
|
|
|
|
|
|
Run msys2_shell.bat 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 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 \
|
2017-09-14 16:37:35 +00:00
|
|
|
mingw-w64-x86_64-liblcms2 \
|
2015-12-31 17:00:16 +00:00
|
|
|
mingw-w64-x86_64-libxml2 \
|
2016-09-21 15:28:30 +00:00
|
|
|
mingw-w64-x86_64-gnutls \
|
|
|
|
mingw-w64-x86_64-zlib
|
2015-12-31 17:00:16 +00:00
|
|
|
|
2017-03-17 19:23:35 +00:00
|
|
|
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
|
2016-09-21 15:28:30 +00:00
|
|
|
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.
|
2015-12-31 17:00:16 +00:00
|
|
|
|
|
|
|
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 http://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-25:
|
|
|
|
|
|
|
|
mkdir /c/emacs
|
|
|
|
cd /c/emacs
|
|
|
|
git clone git://git.sv.gnu.org/emacs.git emacs-25
|
|
|
|
|
|
|
|
(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_shell.bat in the C:\msys64 folder, then cd back to
|
|
|
|
your Emacs source directory, e.g.:
|
|
|
|
|
|
|
|
cd /c/emacs/emacs-25
|
|
|
|
|
|
|
|
** 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-25.
|
|
|
|
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 Imagemagick because Emacs does not yet
|
|
|
|
support it on Windows.
|
|
|
|
|
|
|
|
PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \
|
|
|
|
./configure --prefix=/c/emacs/emacs-25 --without-imagemagick
|
|
|
|
|
|
|
|
** 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.
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* 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 <http://www.gnu.org/licenses/>.
|