Files
tmux-static-build/Makefile

110 lines
2.8 KiB
Makefile

.PHONY: help
TMUX_VERSION := 3.1b
NCURSES_VERSION := 6.2
LIBEVENT_VERSION := 2.1.10-stable
UTF8PROC_VERSION := 2.4.0
BUILD_DIR = $(CURDIR)
BUILD_PREBUILT_DEP = $(BUILD_DIR)/prebuilt/dep
BUILD_PREBUILT_TMUX = $(BUILD_DIR)/prebuilt/tmux
LIBEVENT = libevent-$(LIBEVENT_VERSION)
LIBEVENT_TGZ = $(LIBEVENT).tar.gz
LIBEVENT_URL = https://github.com/libevent/libevent/releases/download/release-$(LIBEVENT_VERSION)/$(LIBEVENT_TGZ)
LIBEVENT_LIB = $(BUILD_PREBUILT_DEP)/lib/libevent.a
LIBEVENT_MAK = $(LIBEVENT)/Makefile
LIBEVENT_A = $(LIBEVENT)/.libs/libevent.a
NCURSES = ncurses-$(NCURSES_VERSION)
NCURSES_TGZ = $(NCURSES).tar.gz
NCURSES_URL = https://invisible-mirror.net/archives/ncurses/$(NCURSES_TGZ)
NCURSES_LIB = $(BUILD_PREBUILT_DEP)/lib/libncurses.a
NCURSES_MAK = $(NCURSES)/Makefile
NCURSES_A = $(NCURSES)/lib/libncurses.a
TMUX := tmux-$(TMUX_VERSION).musl-bin.tar.gz
help: ## Display this help message
@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" \
$(lastword $(MAKEFILE_LIST))
clean: ## Remove all build and dist directories
-rm -rf prebuilt $(LIBEVENT) $(NCURSES)
tmux: ## Build static tmux archive
$(MAKE) $(TMUX)
####
#### Ncurses
####
ncurses: ## Download and build the ncurses libraru
$(MAKE) $(NCURSES_LIB)
$(NCURSES_LIB): $(NCURSES_A)
$(MAKE) -C $(NCURSES) install
$(NCURSES_A): $(NCURSES_MAK)
$(MAKE) -C $(NCURSES) -j4 all
$(NCURSES_MAK): $(NCURSES)
cd $(NCURSES) \
&& ./configure \
--prefix="$(BUILD_PREBUILT_DEP)" \
--without-cxx \
--without-cxx-binding \
--with-termlib \
--enable-termcap \
--enable-ext-colors \
--enable-ext-mouse \
--enable-bsdpad \
--enable-opaque-curses \
--with-terminfo-dirs=/etc/terminfo:/usr/share/terminfo:/lib/terminfo \
--with-termpath=/etc/termcap:/usr/share/misc/termcap \
--with-fallbacks="linux,xterm,xterm-color,xterm-256color,vt100"
$(NCURSES): $(NCURSES_TGZ)
tar xzf $(NCURSES_TGZ)
$(NCURSES_TGZ):
curl -Lk $(NCURSES_URL) -o $(NCURSES_TGZ)
####
#### Libevent
####
libevent: ## Download and build libevent library
$(MAKE) $(LIBEVENT_LIB)
$(LIBEVENT_LIB): $(LIBEVENT_A)
$(MAKE) -C $(LIBEVENT) install
$(LIBEVENT_A): $(LIBEVENT_MAK)
$(MAKE) -C $(LIBEVENT) -j4 all
$(LIBEVENT_MAK): $(LIBEVENT)
cd $(LIBEVENT) \
&& ./configure \
--prefix="$(BUILD_PREBUILT_DEP)" \
--disable-openssl \
--enable-shared=no \
--enable-static=yes \
--with-pic
$(LIBEVENT): $(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 $@