summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2015-08-27 03:28:05 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2015-08-27 03:28:05 +0900
commit7f7741099bd30649adac92551912b97475b9c202 (patch)
treeff8767d57a5ecdce2d72b9280d31fd75fe427230
parent5a72dc6922b51977d46d92a649f5c9ce67003bcf (diff)
make linux-static (#322)
-rw-r--r--src/Dockerfile.ubuntu2
-rw-r--r--src/Makefile63
2 files changed, 44 insertions, 21 deletions
diff --git a/src/Dockerfile.ubuntu b/src/Dockerfile.ubuntu
index 4778a6d1..d9de1208 100644
--- a/src/Dockerfile.ubuntu
+++ b/src/Dockerfile.ubuntu
@@ -3,7 +3,7 @@ MAINTAINER Junegunn Choi <junegunn.c@gmail.com>
# apt-get
RUN apt-get update && apt-get -y upgrade && \
- apt-get install -y --force-yes git curl build-essential libncurses-dev
+ apt-get install -y --force-yes git curl build-essential libncurses-dev libgpm-dev
# Install Go 1.4
RUN cd / && curl \
diff --git a/src/Makefile b/src/Makefile
index 2604c3ba..33c23ab0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -5,8 +5,19 @@ endif
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
GOOS := darwin
+ LDFLAGS :=
+ifdef STATIC
+$(error Static linking not possible on OS X)
+endif
else ifeq ($(UNAME_S),Linux)
GOOS := linux
+ifdef STATIC
+ SUFFIX := -static
+ LDFLAGS := --ldflags '-extldflags "-static -ltinfo -lgpm"'
+else
+ SUFFIX :=
+ LDFLAGS :=
+endif
endif
ifneq ($(shell uname -m),x86_64)
@@ -16,21 +27,24 @@ endif
SOURCES := $(wildcard *.go */*.go)
BINDIR := ../bin
-BINARY32 := fzf-$(GOOS)_386
-BINARY64 := fzf-$(GOOS)_amd64
+BINARY32 := fzf-$(GOOS)_386$(SUFFIX)
+BINARY64 := fzf-$(GOOS)_amd64$(SUFFIX)
VERSION = $(shell fzf/$(BINARY64) --version)
-RELEASE32 = fzf-$(VERSION)-$(GOOS)_386
-RELEASE64 = fzf-$(VERSION)-$(GOOS)_amd64
+RELEASE32 = fzf-$(VERSION)-$(GOOS)_386$(SUFFIX)
+RELEASE64 = fzf-$(VERSION)-$(GOOS)_amd64$(SUFFIX)
all: release
release: build
- cd fzf && \
- cp $(BINARY32) $(RELEASE32) && tar -czf $(RELEASE32).tgz $(RELEASE32) && \
- cp $(BINARY64) $(RELEASE64) && tar -czf $(RELEASE64).tgz $(RELEASE64) && \
- rm $(RELEASE32) $(RELEASE64)
+ -cd fzf && cp $(BINARY32) $(RELEASE32) && tar -czf $(RELEASE32).tgz $(RELEASE32)
+ cd fzf && cp $(BINARY64) $(RELEASE64) && tar -czf $(RELEASE64).tgz $(RELEASE64) && \
+ rm -f $(RELEASE32) $(RELEASE64)
+ifndef STATIC
build: test fzf/$(BINARY32) fzf/$(BINARY64)
+else
+build: test fzf/$(BINARY64)
+endif
test:
go get
@@ -42,13 +56,13 @@ uninstall:
rm -f $(BINDIR)/fzf $(BINDIR)/$(BINARY64)
clean:
- cd fzf && rm -f $(BINARY32) $(BINARY64) $(RELEASE32).tgz $(RELEASE64).tgz
+ cd fzf && rm -f fzf-*
fzf/$(BINARY32): $(SOURCES)
cd fzf && GOARCH=386 CGO_ENABLED=1 go build -o $(BINARY32)
fzf/$(BINARY64): $(SOURCES)
- cd fzf && go build -o $(BINARY64)
+ cd fzf && go build $(LDFLAGS) -o $(BINARY64)
$(BINDIR)/fzf: fzf/$(BINARY64) | $(BINDIR)
cp -f fzf/$(BINARY64) $(BINDIR)
@@ -57,18 +71,27 @@ $(BINDIR)/fzf: fzf/$(BINARY64) | $(BINDIR)
$(BINDIR):
mkdir -p $@
-# Linux distribution to build fzf on
-DISTRO := arch
+docker-arch:
+ docker build -t junegunn/arch-sandbox - < Dockerfile.arch
-docker:
- docker build -t junegunn/$(DISTRO)-sandbox - < Dockerfile.$(DISTRO)
+docker-ubuntu:
+ docker build -t junegunn/arch-sandbox - < Dockerfile.ubuntu
-linux: docker
- docker run -i -t -v $(GOPATH):/go junegunn/$(DISTRO)-sandbox \
- /bin/bash -ci 'cd /go/src/github.com/junegunn/fzf/src; make'
+arch: docker-arch
+ docker run -i -t -v $(GOPATH):/go junegunn/$@-sandbox \
+ sh -c 'cd /go/src/github.com/junegunn/fzf/src; /bin/bash'
-$(DISTRO): docker
- docker run -i -t -v $(GOPATH):/go junegunn/$(DISTRO)-sandbox \
+ubuntu: docker-ubuntu
+ docker run -i -t -v $(GOPATH):/go junegunn/$@-sandbox \
sh -c 'cd /go/src/github.com/junegunn/fzf/src; /bin/bash'
-.PHONY: all build release test install uninstall clean docker linux $(DISTRO)
+linux: docker-arch
+ docker run -i -t -v $(GOPATH):/go junegunn/arch-sandbox \
+ /bin/bash -ci 'cd /go/src/github.com/junegunn/fzf/src; make'
+
+linux-static: docker-ubuntu
+ docker run -i -t -v $(GOPATH):/go junegunn/ubuntu-sandbox \
+ /bin/bash -ci 'cd /go/src/github.com/junegunn/fzf/src; make STATIC=1'
+
+.PHONY: all build release test install uninstall clean docker \
+ linux linux-static arch ubuntu docker-arch docker-ubuntu