mirror of
https://code.blicky.net/yorhel/ncdu.git
synced 2026-01-13 01:08:41 -09:00
It's a bit ugly, but appears to work. I've not tested the 32bit arm version, but the others run. The static binaries are about twice as large as the ncdu 1.x counterparts.
88 lines
3 KiB
Makefile
88 lines
3 KiB
Makefile
# SPDX-FileCopyrightText: 2021 Yoran Heling <projects@yorhel.nl>
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
# Optional semi-standard Makefile with some handy tools.
|
|
# Ncdu itself can be built with just the zig build system.
|
|
|
|
PREFIX ?= /usr/local
|
|
BINDIR ?= ${PREFIX}/bin
|
|
MANDIR ?= ${PREFIX}/share/man/man1
|
|
|
|
NCDU_VERSION=$(shell grep 'program_version = "' src/main.zig | sed -e 's/^.*"\(.\+\)".*$$/\1/')
|
|
|
|
release:
|
|
zig build -Drelease-fast
|
|
|
|
debug:
|
|
zig build
|
|
|
|
clean:
|
|
rm -rf zig-cache zig-out
|
|
|
|
distclean: clean
|
|
rm -f ncdu.1
|
|
|
|
doc: ncdu.1
|
|
|
|
ncdu.1: ncdu.pod src/main.zig
|
|
pod2man --center "ncdu manual" --release "ncdu-${NCDU_VERSION}" ncdu.pod >ncdu.1
|
|
|
|
install: install-bin install-doc
|
|
|
|
install-bin: release
|
|
mkdir -p ${BINDIR}
|
|
install -m0755 zig-out/bin/ncdu ${BINDIR}/
|
|
|
|
install-doc: doc
|
|
mkdir -p ${MANDIR}
|
|
install -m0644 ncdu.1 ${MANDIR}/
|
|
|
|
uninstall: uninstall-bin uninstall-doc
|
|
|
|
# XXX: Ideally, these would also remove the directories created by 'install' if they are empty.
|
|
uninstall-bin:
|
|
rm -f ${BINDIR}/ncdu
|
|
|
|
uninstall-doc:
|
|
rm -f ${MANDIR}/ncdu.1
|
|
|
|
dist: doc
|
|
rm -f ncdu-${NCDU_VERSION}.tar.gz
|
|
mkdir ncdu-${NCDU_VERSION}
|
|
for f in ncdu.1 `git ls-files | grep -v ^\.gitignore`; do mkdir -p ncdu-${NCDU_VERSION}/`dirname $$f`; ln -s "`pwd`/$$f" ncdu-${NCDU_VERSION}/$$f; done
|
|
tar -cophzf ncdu-${NCDU_VERSION}.tar.gz --sort=name ncdu-${NCDU_VERSION}
|
|
rm -rf ncdu-${NCDU_VERSION}
|
|
|
|
|
|
# ASSUMPTION: the ncurses source tree has been extracted into ncurses/
|
|
static:
|
|
mkdir -p static-${TARGET}/nc static-${TARGET}/inst/pkg
|
|
cd static-${TARGET}/nc && ../../ncurses/configure --prefix="`pwd`/../inst"\
|
|
--with-pkg-config-libdir="`pwd`/../inst/pkg"\
|
|
--without-cxx --without-cxx-binding --without-ada --without-manpages --without-progs\
|
|
--without-tests --enable-pc-files --without-pkg-config --without-shared --without-debug\
|
|
--without-gpm --without-sysmouse --enable-widec --with-default-terminfo-dir=/usr/share/terminfo\
|
|
--with-terminfo-dirs=/usr/share/terminfo:/lib/terminfo:/usr/local/share/terminfo\
|
|
--with-fallbacks="screen linux vt100 xterm xterm-256color" --host=${TARGET}\
|
|
CC="zig cc --target=${TARGET}"\
|
|
LD="zig cc --target=${TARGET}"\
|
|
AR="zig ar" RANLIB="zig ranlib"\
|
|
CPPFLAGS=-D_GNU_SOURCE && make && make install.libs
|
|
@# zig-build - cleaner approach but doesn't work, results in a dynamically linked binary.
|
|
@#cd static-${TARGET} && PKG_CONFIG_LIBDIR="`pwd`/inst/pkg" zig build -Dtarget=${TARGET}
|
|
@# --build-file ../build.zig --search-prefix inst/ --cache-dir zig -Drelease-fast=true
|
|
@# Alternative approach, bypassing zig-build
|
|
cd static-${TARGET} && zig build-exe -target ${TARGET}\
|
|
-Iinst/include -Iinst/include/ncursesw -lc inst/lib/libncursesw.a\
|
|
--cache-dir zig-cache -static --strip -O ReleaseFast ../src/main.zig ../src/ncurses_refs.c
|
|
cd static-${TARGET} && mv main ncdu && tar -czf ../ncdu-${NCDU_VERSION}-$(shell echo ${TARGET} | sed s/-musl//).tar.gz ncdu
|
|
rm -rf static-${TARGET}
|
|
|
|
static-target-%:
|
|
$(MAKE) static TARGET=$*
|
|
|
|
static-all:\
|
|
static-target-x86_64-linux-musl \
|
|
static-target-aarch64-linux-musl \
|
|
static-target-i386-linux-musl \
|
|
static-target-arm-linux-musleabi
|