diff --git a/Makefile b/Makefile index 5bc1f1ba..6a937dba 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ MANDIR ?= ${EXPANDED_PREFIX}/share/man # Installation parameters DOCS_SUBDIR ?= meli/docs/ MANPAGES ?= meli.1 meli.conf.5 meli-themes.5 meli.7 -FEATURES ?= --features "${MELI_FEATURES}" +FEATURES != [ -z "$${MELI_FEATURES}" ] && ($(PRINTF) -- '--all-features') || ($(PRINTF) -- '--features %s' "$${MELI_FEATURES}") MANPATHS != ACCUM="";for m in `manpath 2> /dev/null | tr ':' ' '`; do if [ -d "$${m}" ]; then REAL_PATH=`cd $${m} && pwd` ACCUM="$${ACCUM}:$${REAL_PATH}";fi;done;echo $${ACCUM}'\c' | sed 's/^://' VERSION = `grep -m1 version meli/Cargo.toml | head -n1 | cut -d'"' -f 2 | head -n1` @@ -55,7 +55,7 @@ YELLOW ?= `[ -z $${NO_COLOR+x} ] && ([ -z $${TERM} ] && echo "" || tput setaf 3) .PHONY: meli meli: check-deps - @${CARGO_BIN} build ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" ${FEATURES} --release --bin meli + ${CARGO_BIN} build ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" ${FEATURES} --release --bin meli .PHONY: help help: @@ -76,24 +76,25 @@ help: @echo " - ${BOLD}distclean${ANSI_RESET} (cleans distribution build artifacts)" @echo " - ${BOLD}build-rustdoc${ANSI_RESET} (builds rustdoc documentation for all packages in \$$CARGO_TARGET_DIR)" @echo "\nENVIRONMENT variables of interest:" - @echo "* PREFIX = ${UNDERLINE}${EXPANDED_PREFIX}${ANSI_RESET}" - @echo "* MELI_FEATURES = ${UNDERLINE}\n" - @[ -z $${MELI_FEATURES+x} ] && echo "unset\c" || echo ${MELI_FEATURES}'\c' - @echo ${ANSI_RESET} - @echo "* BINDIR = ${UNDERLINE}${BINDIR}${ANSI_RESET}" - @echo "* MANDIR = ${UNDERLINE}${MANDIR}${ANSI_RESET}" - @echo "* MANPATH = ${UNDERLINE}\c" - @[ $${MANPATH+x} ] && echo $${MANPATH}'\c' || echo "unset\c" - @echo ${ANSI_RESET} + @$(PRINTF) "* MELI_FEATURES " + @[ -z $${MELI_FEATURES+x} ] && echo "unset" || echo "= ${UNDERLINE}"$${MELI_FEATURES}${ANSI_RESET} + @$(PRINTF) "* PREFIX " + @[ -z ${EXPANDED_PREFIX} ] && echo "unset" || echo "= ${UNDERLINE}"${EXPANDED_PREFIX}${ANSI_RESET} + @$(PRINTF) "* BINDIR = %s\n" "${UNDERLINE}${BINDIR}${ANSI_RESET}" + @$(PRINTF) "* MANDIR " + @[ -z ${MANDIR} ] && echo "unset" || echo "= ${UNDERLINE}"${MANDIR}${ANSI_RESET} + @$(PRINTF) "* MANPATH = " + @[ $${MANPATH+x} ] && echo ${UNDERLINE}$${MANPATH}${ANSI_RESET} || echo "unset" @echo "* (cleaned) output of manpath(1) = ${UNDERLINE}${MANPATHS}${ANSI_RESET}" - @echo "* NO_MAN ${UNDERLINE}\c" - @[ $${NO_MAN+x} ] && echo "set\c" || echo "unset\c" - @echo ${ANSI_RESET} - @echo "* NO_COLOR ${UNDERLINE}\c" - @[ $${NO_COLOR+x} ] && echo "set\c" || echo "unset\c" - @echo ${ANSI_RESET} + @$(PRINTF) "* NO_MAN " + @[ $${NO_MAN+x} ] && echo "set" || echo "unset" + @$(PRINTF) "* NO_COLOR " + @[ $${NO_COLOR+x} ] && echo "set" || echo "unset" @echo "* CARGO_BIN = ${UNDERLINE}${CARGO_BIN}${ANSI_RESET}" - @echo "* CARGO_ARGS = ${UNDERLINE}${CARGO_ARGS}${ANSI_RESET}" + @$(PRINTF) "* CARGO_ARGS " + @[ -z $${CARGO_ARGS+x} ] && echo "unset" || echo "= ${UNDERLINE}"$${CARGO_ARGS}${ANSI_RESET} + @$(PRINTF) "* AUTHOR (for deb-dist) " + @[ -z $${AUTHOR+x} ] && echo "unset" || echo "= ${UNDERLINE}"$${AUTHOR}${ANSI_RESET} @echo "* MIN_RUSTC = ${UNDERLINE}${MIN_RUSTC}${ANSI_RESET}" @echo "* VERSION = ${UNDERLINE}${VERSION}${ANSI_RESET}" @echo "* GIT_COMMIT = ${UNDERLINE}${GIT_COMMIT}${ANSI_RESET}" @@ -101,24 +102,24 @@ help: .PHONY: check check: check-tagrefs - @RUSTFLAGS='${RUSTFLAGS}' ${CARGO_BIN} check ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" ${FEATURES} --all --tests --examples --benches --bins + RUSTFLAGS='${RUSTFLAGS}' ${CARGO_BIN} check ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" ${FEATURES} --all --tests --examples --benches --bins .PHONY: fmt fmt: - @$(CARGO_BIN) +nightly fmt --all || $(CARGO_BIN) fmt --all + $(CARGO_BIN) +nightly fmt --all || $(CARGO_BIN) fmt --all @OUT=$$($(CARGO_SORT_BIN) -w 2>&1) || $(PRINTF) "WARN: %s cargo-sort failed or binary not found in PATH.\n" "$$OUT" .PHONY: lint lint: - @RUSTFLAGS='${RUSTFLAGS}' $(CARGO_BIN) clippy --no-deps --all-features --all --tests --examples --benches --bins + RUSTFLAGS='${RUSTFLAGS}' $(CARGO_BIN) clippy --no-deps ${FEATURES} --all --tests --examples --benches --bins .PHONY: test test: test-docs - @RUSTFLAGS='${RUSTFLAGS}' ${CARGO_BIN} test ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" --all --tests --examples --benches --bins + RUSTFLAGS='${RUSTFLAGS}' ${CARGO_BIN} test ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" ${FEATURES} --all --tests --examples --benches --bins .PHONY: test-docs test-docs: - @RUSTFLAGS='${RUSTFLAGS}' ${CARGO_BIN} test ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" --all --doc + RUSTFLAGS='${RUSTFLAGS}' ${CARGO_BIN} test ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" ${FEATURES} --all --doc .PHONY: test-feature-permutations test-feature-permutations: @@ -136,8 +137,8 @@ clean: .PHONY: distclean distclean: - @rm -f meli-${VERSION}.tar.gz - @rm -rf .pc # rm debian stuff + rm -f meli-${VERSION}.tar.gz + rm -rf .pc # rm debian stuff .PHONY: uninstall uninstall: @@ -167,16 +168,16 @@ install-doc: .PHONY: install-bin install-bin: meli - @mkdir -p $(DESTDIR)${BINDIR} + mkdir -p $(DESTDIR)${BINDIR} @echo " - ${BOLD}Installing binary to ${ANSI_RESET}${GREEN}${DESTDIR}${BINDIR}/meli${ANSI_RESET}" @case ":${PATH}:" in \ *:${DESTDIR}${BINDIR}:*) echo "\n";; \ *) echo "\n${RED}${BOLD}WARNING${ANSI_RESET}: ${UNDERLINE}Path ${DESTDIR}${BINDIR} is not contained in your PATH variable.${ANSI_RESET} Consider adding it if necessary.\nPATH variable: ${PATH}";; \ esac - @mkdir -p $(DESTDIR)${BINDIR} - @rm -f $(DESTDIR)${BINDIR}/meli - @cp ./${CARGO_TARGET_DIR}/release/meli $(DESTDIR)${BINDIR}/meli - @chmod 755 $(DESTDIR)${BINDIR}/meli + mkdir -p $(DESTDIR)${BINDIR} + rm -f $(DESTDIR)${BINDIR}/meli + cp ./${CARGO_TARGET_DIR}/release/meli $(DESTDIR)${BINDIR}/meli + chmod 755 $(DESTDIR)${BINDIR}/meli .PHONY: install @@ -191,18 +192,19 @@ install: meli install-bin install-doc .PHONY: dist dist: - @git archive --format=tar.gz --prefix=meli-${VERSION}/ HEAD >meli-${VERSION}.tar.gz + git archive --format=tar.gz --prefix=meli-${VERSION}/ HEAD >meli-${VERSION}.tar.gz @echo meli-${VERSION}.tar.gz +AUTHOR ?= grep -m1 authors meli/Cargo.toml | head -n1 | cut -d'"' -f 2 | head -n1 .PHONY: deb-dist deb-dist: - @author=$(grep -m1 authors meli/Cargo.toml | head -n1 | cut -d'"' -f 2 | head -n1) - @dpkg-buildpackage -b -rfakeroot -us -uc --build-by="${author}" --release-by="${author}" + @$(PRINTF) "Override AUTHOR environment variable to set package metadata.\n" + dpkg-buildpackage -b -rfakeroot -us -uc --build-by="${AUTHOR}" --release-by="${AUTHOR}" @echo ${BOLD}${GREEN}Generated${ANSI_RESET} ../meli_${VERSION}-1_`dpkg --print-architecture`.deb .PHONY: build-rustdoc build-rustdoc: - @RUSTDOCFLAGS="--crate-version ${VERSION}_${GIT_COMMIT}_${DATE}" ${CARGO_BIN} doc ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" --all-features --no-deps --workspace --document-private-items --open + RUSTDOCFLAGS="--crate-version ${VERSION}_${GIT_COMMIT}_${DATE}" ${CARGO_BIN} doc ${CARGO_ARGS} ${CARGO_COLOR}--target-dir="${CARGO_TARGET_DIR}" --all-features --no-deps --workspace --document-private-items --open .PHONY: check-tagrefs check-tagrefs: