Msys2编译Emacs
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%G\e[?47h\e%G\e[?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