mirror of
https://code.blicky.net/yorhel/ncdu.git
synced 2026-01-13 01:08:41 -09:00
Still not a fan of roff, but even less a fan of build system stuff and a dependency on a tool that is getting less ubiquitous over time. I've removed the "hard links" section from the man page for now. Such a section might be useful, but much of it was outdated.
95 lines
3.1 KiB
Makefile
95 lines
3.1 KiB
Makefile
# SPDX-FileCopyrightText: 2021-2023 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.
|
|
|
|
ZIG ?= zig
|
|
|
|
PREFIX ?= /usr/local
|
|
BINDIR ?= ${PREFIX}/bin
|
|
MANDIR ?= ${PREFIX}/share/man/man1
|
|
ZIG_FLAGS ?= -Doptimize=ReleaseFast
|
|
|
|
NCDU_VERSION=$(shell grep 'program_version = "' src/main.zig | sed -e 's/^.*"\(.\+\)".*$$/\1/')
|
|
|
|
.PHONY: build
|
|
build: release
|
|
|
|
release:
|
|
$(ZIG) build ${ZIG_FLAGS}
|
|
|
|
debug:
|
|
$(ZIG) build
|
|
|
|
clean:
|
|
rm -rf zig-cache zig-out
|
|
|
|
install: install-bin install-doc
|
|
|
|
install-bin: release
|
|
mkdir -p ${BINDIR}
|
|
install -m0755 zig-out/bin/ncdu ${BINDIR}/
|
|
|
|
install-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:
|
|
rm -f ncdu-${NCDU_VERSION}.tar.gz
|
|
mkdir ncdu-${NCDU_VERSION}
|
|
for f in `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-%.tar.gz:
|
|
mkdir -p static-$*/nc static-$*/inst/pkg
|
|
cd static-$*/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=$*\
|
|
CC="${ZIG} cc --target=$*"\
|
|
LD="${ZIG} cc --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-$* && PKG_CONFIG_LIBDIR="`pwd`/inst/pkg" zig build -Dtarget=$*
|
|
@# --build-file ../build.zig --search-prefix inst/ --cache-dir zig -Drelease-fast=true
|
|
@# Alternative approach, bypassing zig-build
|
|
cd static-$* && ${ZIG} build-exe -target $*\
|
|
-Iinst/include -Iinst/include/ncursesw -lc inst/lib/libncursesw.a\
|
|
--cache-dir zig-cache -static -fstrip -O ReleaseFast ../src/main.zig
|
|
cd static-$* && mv main ncdu && tar -czf ../static-$*.tar.gz ncdu
|
|
rm -rf static-$*
|
|
|
|
static-linux-x86_64: static-x86_64-linux-musl.tar.gz
|
|
mv $< ncdu-${NCDU_VERSION}-linux-x86_64.tar.gz
|
|
|
|
static-linux-x86: static-x86-linux-musl.tar.gz
|
|
mv $< ncdu-${NCDU_VERSION}-linux-x86.tar.gz
|
|
|
|
static-linux-aarch64: static-aarch64-linux-musl.tar.gz
|
|
mv $< ncdu-${NCDU_VERSION}-linux-aarch64.tar.gz
|
|
|
|
static-linux-arm: static-arm-linux-musleabi.tar.gz
|
|
mv $< ncdu-${NCDU_VERSION}-linux-arm.tar.gz
|
|
|
|
static:\
|
|
static-linux-x86_64 \
|
|
static-linux-x86 \
|
|
static-linux-aarch64 \
|
|
static-linux-arm
|