Msys2编译Emacs
Table of Contents
Origin link: https://gist.github.com/nauhygon/f3b44f51b34e89bc54f8
1 Download & install MSYS2
Download MSYS2 (msys2-x86_64-20140704.exe) from this download page.
Install MSYS2 to, for example, C:msys2 (make sure no space in path).
2 console
Optionally prettify the MSYS2 console mintty with ~/.minttyrc to make it more pleasing to eyes. Thanks to this awesome theme!
ForegroundColour=131,148,150 BackgroundColour=0,43,54 CursorColour=192,192,192 Black=7,54,66 BoldBlack=0,43,54 Red=220,50,47 BoldRed=203,75,22 Green=133,153,0 BoldGreen=88,110,117 Yellow=181,137,0 BoldYellow=101,123,131 Blue=38,139,210 BoldBlue=131,148,150 Magenta=211,54,130 BoldMagenta=108,113,196 Cyan=42,161,152 BoldCyan=147,161,161 White=238,232,213 BoldWhite=253,246,227 BoldAsFont=yes Font=Consolas FontHeight=12 Transparency=off OpaqueWhenFocused=no ScrollbackLines=200000 FontSmoothing=full CursorType=underscore CursorBlinks=yes ScrollMod=off RightClickAction=paste ClickTargetMod=off
Remove all /c/* paths in $PATH by adding this to .bashrc and restart mintty.
This is important to avoid interference from programs installed on the same machine, especially if you have Cygwin installed.
# Remove '/c/*' from PATH if running under Msys to avoid possible
# interference from programs already installed on system. Removal
# with awk is copied from http://stackoverflow.com/a/370192.
if [ $(uname -o) == 'Msys' ]; then
export PATH=`echo ${PATH} | awk -v RS=: -v ORS=: '/c// {next} {print}' | sed 's/:*$//'`
fi
The whole .bashrc is copied here.
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
##############
### Basics ###
##############
# Don't wait for job termination notification
set -o notify
# Enables UTF-8 in Putty.
# See http://www.earth.li/~huggie/blog/tech/mobile/putty-utf-8-trick.html
echo -ne 'e%Ge[?47he%Ge[?47l'
# My pretty prompt (Yay!)
PS1='[e[32;40m]u[e[0m][e[34;40m]H[e[0m][e[40;1m]w[e[0m] '
############
### PATH ###
############
# Remove '/c/*' from PATH if running under Msys to avoid possible
# interference from programs already installed on system. Removal
# with awk is copied from http://stackoverflow.com/a/370192.
if [ $(uname -o) == 'Msys' ]; then
export PATH=`echo ${PATH} | awk -v RS=: -v ORS=: '/c// {next} {print}' | sed 's/:*$//'`
fi
###############
### Aliases ###
###############
alias less='less -r'
alias rm='rm -i'
alias whence='type -a'
alias ls='ls -F --color=auto'
alias dir='ls --color=auto --format=long -L'
alias vdir='ls --color=auto --format=long'
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias md='mkdir'
alias pico='nano'
alias cls='clear'
3 Install packages required to build Emacs.
Follow instructions on this page first.
pacman -Syu
pacman -Sy
pacman -Sy
--needed
filesystem
msys2-runtime
bash
libreadline
libiconv
libarchive
libgpgme
libcurl
pacman
ncurses
libintl
Close mintty and restart it, do this again.
pacman -Su
Then let us install all required libs for building Emacs.
#!/usr/bin/bash
pacman -S
autoconf
autogen
automake
automake-wrapper
diffutils
git
guile
libgc
libguile
libltdl
libunistring
make
mingw-w64-x86_64-binutils
mingw-w64-x86_64-bzip2
mingw-w64-x86_64-cairo
mingw-w64-x86_64-cloog
mingw-w64-x86_64-crt-git
mingw-w64-x86_64-dbus
mingw-w64-x86_64-expat
mingw-w64-x86_64-fontconfig
mingw-w64-x86_64-freetype
mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc-libs
mingw-w64-x86_64-gdk-pixbuf2
mingw-w64-x86_64-gettext
mingw-w64-x86_64-giflib
mingw-w64-x86_64-glib2
mingw-w64-x86_64-gmp
mingw-w64-x86_64-gnutls
mingw-w64-x86_64-harfbuzz
mingw-w64-x86_64-headers-git
mingw-w64-x86_64-imagemagick
mingw-w64-x86_64-isl
mingw-w64-x86_64-libcroco
mingw-w64-x86_64-libffi
mingw-w64-x86_64-libiconv
mingw-w64-x86_64-libjpeg-turbo
mingw-w64-x86_64-libpng
mingw-w64-x86_64-librsvg
mingw-w64-x86_64-libtiff
mingw-w64-x86_64-libwinpthread-git
mingw-w64-x86_64-libxml2
mingw-w64-x86_64-mpc
mingw-w64-x86_64-mpfr
mingw-w64-x86_64-pango
mingw-w64-x86_64-pixman
mingw-w64-x86_64-winpthreads
mingw-w64-x86_64-xpm-nox
mingw-w64-x86_64-xz
mingw-w64-x86_64-zlib
tar
wget
4 Get emacs source.
mkdir emacs; cd emacs git clone http://git.savannah.gnu.org/r/emacs.git emacs git config core.autocrlf false
5 Build Emacs!
Change target accordingly, the directory in which the freshly built Emacs binaries, libraries, and docs live.
target=/c/emacs
export PATH=/mingw64/bin:$PATH
mkdir build; cd build
(cd ../emacs; ./autogen.sh)
export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig
../emacs/configure
--host=x86_64-w64-mingw32
--target=x86_64-w64-mingw32
--build=x86_64-w64-mingw32
--with-gnutls
--with-imagemagick
--with-jpeg
--with-png
--with-rsvg
--with-tiff
--with-wide-int
--with-xft
--with-xml2
--with-xpm
'CFLAGS=-I/mingw64/include/noX'
prefix=$target
make
make install prefix=$target
cp /mingw64/bin/*.dll $target