From 67026718c1d3d980f5cbe4a6caa137ce169768f9 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 27 Nov 2016 15:16:53 +0900 Subject: [PATCH] Add BUILD.md --- BUILD.md | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++ CHANGELOG.md | 2 +- README.md | 5 +++ src/README.md | 50 +----------------------- 4 files changed, 113 insertions(+), 50 deletions(-) create mode 100644 BUILD.md diff --git a/BUILD.md b/BUILD.md new file mode 100644 index 0000000..ca97e09 --- /dev/null +++ b/BUILD.md @@ -0,0 +1,106 @@ +Building fzf +============ + +Build instructions +------------------ + +### Prerequisites + +- `go` executable in $PATH + +### Using Makefile + +Makefile will set up and use its own `$GOPATH` under the project root. + +```sh +# Source files are located in src directory +cd src + +# Build fzf binary for your platform in src/fzf +make + +# Build fzf binary and copy it to bin directory +make install + +# Build 32-bit and 64-bit executables and tarballs +make release + +# Build executables and tarballs for Linux using Docker +make linux +``` + +### Using `go get` + +Alternatively, you can build fzf directly with `go get` command without +cloning the repository. + +```sh +go get -u github.com/junegunn/fzf/src/fzf +``` + +Build options +------------- + +### With ncurses 6 + +The official binaries of fzf are built with ncurses 5 because it's widely +supported by different platforms. However ncurses 5 is old and has a number of +limitations. + +1. Does not support more than 256 color pairs (See [357][357]) +2. Does not support italics +3. Does not support 24-bit color + +[357]: https://github.com/junegunn/fzf/issues/357 + +But you can manually build fzf with ncurses 6 to overcome some of these +limitations. ncurses 6 supports up to 32767 color pairs (1), and supports +italics (2). To build fzf with ncurses 6, you have to install it first. On +macOS, you can use Homebrew to install it. + +```sh +brew install homebrew/dupes/ncurses +LDFLAGS="-L/usr/local/opt/ncurses/lib" make install +``` + +### With tcell + +[tcell][tcell] is a portable alternative to ncurses and we currently use it to +build Windows binaries. tcell has many benefits but most importantly, it +supports 24-bit colors. To build fzf with tcell: + +```sh +TAGS=tcell make install +``` + +However, note that tcell has its own issues. + +- Poor rendering performance compared to ncurses +- Does not support bracketed-paste mode +- Does not support italics unlike ncurses 6 +- Some wide characters are not correctly displayed + +Third-party libraries used +-------------------------- + +- [ncurses][ncurses] +- [mattn/go-runewidth](https://github.com/mattn/go-runewidth) + - Licensed under [MIT](http://mattn.mit-license.org) +- [mattn/go-shellwords](https://github.com/mattn/go-shellwords) + - Licensed under [MIT](http://mattn.mit-license.org) +- [mattn/go-isatty](https://github.com/mattn/go-isatty) + - Licensed under [MIT](http://mattn.mit-license.org) +- [tcell](https://github.com/gdamore/tcell) + - Licensed under [Apache License 2.0](https://github.com/gdamore/tcell/blob/master/LICENSE) + +License +------- + +[MIT](LICENSE) + +[install]: https://github.com/junegunn/fzf#installation +[go]: https://golang.org/ +[gil]: http://en.wikipedia.org/wiki/Global_Interpreter_Lock +[ncurses]: https://www.gnu.org/software/ncurses/ +[req]: http://golang.org/doc/install +[tcell]: https://github.com/gdamore/tcell diff --git a/CHANGELOG.md b/CHANGELOG.md index 33a67a2..a37b74c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ CHANGELOG - Supports italics - *tcell* - 24-bit color support - - See https://github.com/junegunn/fzf/blob/master/src/README.md#build + - See https://github.com/junegunn/fzf/blob/master/BUILD.md 0.15.8 ------ diff --git a/README.md b/README.md index 9051f67..4535a48 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,11 @@ flawlessly. [wsl]: https://blogs.msdn.microsoft.com/wsl/ +Building fzf +------------ + +See [BUILD.md](BUILD.md). + Usage ----- diff --git a/src/README.md b/src/README.md index 9f7a558..2d065a9 100644 --- a/src/README.md +++ b/src/README.md @@ -50,55 +50,7 @@ starts much faster though the difference may not be noticeable. Build ----- -```sh -# Build fzf executables and tarballs -make release - -# Install the executable to ../bin directory -make install - -# Build executables and tarballs for Linux using Docker -make linux -``` - -### With ncurses 6 - -The official binaries of fzf are built with ncurses 5 because it's widely -supported by different platforms. However ncurses 5 is old and has a number of -limitations. - -1. Does not support more than 256 color pairs (See [357][357]) -2. Does not support italics -3. Does not support 24-bit color - -[357]: https://github.com/junegunn/fzf/issues/357 - -But you can manually build fzf with ncurses 6 to overcome some of these -limitations. ncurses 6 supports up to 32767 color pairs (1), and supports -italics (2). To build fzf with ncurses 6, you have to install it first. On -macOS, you can use Homebrew to install it. - -```sh -brew install homebrew/dupes/ncurses -LDFLAGS="-L/usr/local/opt/ncurses/lib" make install -``` - -### With tcell - -[tcell][tcell] is a portable alternative to ncurses and we currently use it to -build Windows binaries. tcell has many benefits but most importantly, it -supports 24-bit colors. To build fzf with tcell: - -```sh -TAGS=tcell make install -``` - -However, note that tcell has its own issues. - -- Poor rendering performance compared to ncurses -- Does not support bracketed-paste mode -- Does not support italics unlike ncurses 6 -- Some wide characters are not correctly displayed +See [BUILD.md](../BUILD.md) Test ----