diff --git a/Makefile b/Makefile index 03e9941..1e2d1cc 100644 --- a/Makefile +++ b/Makefile @@ -1,28 +1,71 @@ -.PHONY: help build extract +.PHONY: help -TMUX := https://github.com/tmux/tmux.git -LATEST = $(shell git ls-remote --tags $(TMUX) \ - | egrep 'refs/tags/[0-9]+(\.[0-9]+)+[a-z]*$$' \ - | tail -1 | cut -d/ -f3) +TMUX_VERSION := 3.1b +NCURSES_VERSION := 6.2 +LIBEVENT_VERSION := 2.1.10-stable +UTF8PROC_VERSION := 2.4.0 -IMAGE = tmux:$(LATEST) +BUILD_DIR = $(CURDIR) +BUILD_PREBUILT_DEP = $(BUILD_DIR)/prebuilt/dep +BUILD_PREBUILT_TMUX = $(BUILD_DIR)/prebuilt/tmux + + +LIBEVENT_URL = https://github.com/libevent/libevent/releases/download/release-$(LIBEVENT_VERSION)/libevent-$(LIBEVENT_VERSION).tar.gz +LIBEVENT_TGZ = libevent-$(LIBEVENT_VERSION).tar.gz +LIBEVENT_D = libevent-$(LIBEVENT_VERSION) + + +TMUX := tmux-$(TMUX_VERSION).musl-bin.tar.gz help: ## Display this help message - @echo "Latest: $(LATEST)" + @echo "Tmux: v$(TMUX_VERSION)" + @echo "NCurses: v$(NCURSES_VERSION)" + @echo "LibEvent: v$(LIBEVENT_VERSION)" + @echo "UTF8Proc: v$(UTF8PROC_VERSION)" + @echo "" @echo "Usage:" - @sed -nE "s/^([^:]+):\s+##\s+(.+)$$/\tmake \\1\t- \\2/p" \ + @sed -nE "s/^([^:]+):\\s+##\\s+(.+)$$/\tmake \\1\t- \\2/p" \ $(lastword $(MAKEFILE_LIST)) -build: ## Build tmux in a docker image - docker build \ - --build-arg VERSION=$(LATEST) \ - --tag $(IMAGE) \ - --rm . +clean: ## Remove all build and dist directories + -rm -rf prebuilt $(LIBEVENT_D) -extract: ## Extract the binaries from the docker image - docker run \ - -ti --rm \ - -u $(shell id -u):$(shell id -g) \ - -v $(CURDIR):/mnt/cwd \ - -w /usr/local/lib \ - $(IMAGE) tar czf /mnt/cwd/tmux_v$(LATEST).tar.gz tmux_v$(LATEST) +tmux: ## Build static tmux archive + $(MAKE) $(TMUX) + +#### +#### Libevent +#### + +#### +#### Libevent +#### +libevent: ## Download and build libevent library + $(MAKE) $(BUILD_PREBUILT_DEP)/lib/libevent.a + +$(BUILD_PREBUILT_DEP)/lib/libevent.a: $(LIBEVENT_D)/.libs/libevent.a + $(MAKE) -C $(LIBEVENT_D) install + +$(LIBEVENT_D)/.libs/libevent.a: $(LIBEVENT_D)/Makefile + $(MAKE) -C $(LIBEVENT_D) -j4 all + +$(LIBEVENT_D)/Makefile: $(LIBEVENT_D) + cd $(LIBEVENT_D) \ + && ./configure \ + --prefix="$(BUILD_PREBUILT_DEP)" \ + --disable-openssl \ + --enable-shared=no \ + --enable-static=yes \ + --with-pic + +$(LIBEVENT_D): $(LIBEVENT_TGZ) + tar xzf $< + +$(LIBEVENT_TGZ): + curl -Lk $(LIBEVENT_URL) -o $@ + +$(BUILD_PREBUILT_DEP): $(BUILD_DIR) + mkdir -pv $@ + +$(BUILD_PREBUILT_TMUX): $(BUILD_DIR) + mkdir -pv $@