From 410bb697ade71cb10d7f1932cc3712d24d4f34cb Mon Sep 17 00:00:00 2001 From: Brian Burns Date: Thu, 31 Dec 2015 19:00:16 +0200 Subject: [PATCH] Add nt/INSTALL.W64 build instructions * nt/INSTALL.W64: New file. * nt/INSTALL: Point to INSTALL.W64 for 64-bit build instructions. --- nt/INSTALL | 3 + nt/INSTALL.W64 | 224 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) create mode 100644 nt/INSTALL.W64 diff --git a/nt/INSTALL b/nt/INSTALL index e1d9e0633c7..1be6d99c02e 100644 --- a/nt/INSTALL +++ b/nt/INSTALL @@ -12,6 +12,9 @@ build will run on Windows 9X and newer systems). Do not use this recipe with Cygwin. For building on Cygwin, use the normal installation instructions, ../INSTALL. + For building Emacs using the MinGW64/MSYS2 toolchain, see the + instructions in the file INSTALL.W64 in this directory. + * For the brave (a.k.a. "impatient"): For those who have a working MSYS/MinGW development environment and diff --git a/nt/INSTALL.W64 b/nt/INSTALL.W64 new file mode 100644 index 00000000000..95fbfe014d3 --- /dev/null +++ b/nt/INSTALL.W64 @@ -0,0 +1,224 @@ + Building and Installing Emacs on 64-bit MS-Windows + using MSYS2 and MinGW-w64 + + Copyright (c) 2015 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-.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 \ + mingw-w64-x86_64-libxml2 \ + mingw-w64-x86_64-gnutls + +The packages include the base developer tools (autoconf, automake, grep, make, +etc.), the compiler toolchain (gcc, gdb, etc.), several image libraries, an +XML library, and the GnuTLS (transport layer security) library. Only the +first three packages are required (base-devel, toolchain, xpm-nox); the rest +are optional. + +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 .