#!/bin/sh # Copyright © Tavian Barnes <tavianator@tavianator.com> # SPDX-License-Identifier: 0BSD # Print a message from a makefile: # # $ make -s # $ make # [ CC ] src/main.c # $ make V=1 # cc -Isrc -Igen -D... set -eu # Get the $MAKEFLAGS from the top-level make invocation MFLAGS="${XMAKEFLAGS-${MAKEFLAGS-}}" # Check if make should be quiet (make -s) is_quiet() { # GNU make puts single-letter flags in the first word of $MAKEFLAGS, # without a leading dash case "${MFLAGS%% *}" in -*) : ;; *s*) return 0 ;; esac # BSD make puts each flag separately like -r -s -j 48 for flag in $MFLAGS; do case "$flag" in # Ignore things like --jobserver-auth --*) continue ;; # Skip variable assignments *=*) break ;; -*s*) return 0 ;; esac done return 1 } # Check if make should be loud (make V=1) is_loud() { test "$XV" } MSG="$1" shift if ! is_quiet && ! is_loud; then printf '%s\n' "$MSG" fi if [ $# -eq 0 ]; then exit fi if is_loud; then printf '%s\n' "$*" fi "$@"