At 2025-01-20T16:43:34-0600, G. Branden Robinson wrote:
> I'm attaching the current version of my "make-groff-fast" script,[1]
> which I run _all the time_.

Take a drink and/or claim your wager winnings.

Regards,
Branden
#!/bin/sh

set -e

: ${TAG:=HEAD}
: ${DESTDIR:=$HOME/groff-$TAG}

PROGNAME=${0##*/}
: ${CORES:=1}
COMMON_FLAGS="-Wall -Wextra -Wformat=2  \
-Wformat-overflow \
-Walloc-zero \
-Wstringop-overflow=4 \
-Wshadow=global -Wredundant-decls \
-Wunused \
-Wunused-parameter \
-fsanitize=signed-integer-overflow \
-fsanitize-undefined-trap-on-error \
-fstack-protector-strong -fno-common \
-fstack-clash-protection \
-ftrapv \
-funsigned-char \
-fvar-tracking-assignments  \
-flto=auto \
-O0 -Og \
-ggdb
-D_FORTIFY_SOURCE=2"
CFLAGS="$COMMON_FLAGS \
-Wmissing-prototypes \
-Wold-style-definition \
-Wstrict-prototypes  \
-Wold-style-declaration  \
-Wformat=2 -D_FORTIFY_SOURCE=2"
CXXFLAGS="$COMMON_FLAGS \
-fcheck-new \
-Wredundant-decls \
-std=c++98 -pedantic -pedantic-errors -Wformat=2 -D_FORTIFY_SOURCE=2"
export CFLAGS CXXFLAGS

if [ $# -gt 1 ]; then
    echo "$PROGNAME: error: expected 0 or 1 arguments, got $#" >&2
    exit 1
fi

if [ -n "$1" ]; then
    if expr "$1" - 0 >/dev/null 2>&1; then
        CORES=$1
    else
        echo "$PROGNAME: usage error: argument \"$1\" should be number of" \
            "cores" >&2
        exit 2
    fi
fi

if ! test -f ./test-groff.in; then
    echo "$PROGNAME: error: ./test-groff.in not found" >&2
    exit 3
fi

set -x

if [ -n "$IN_TREE" ]
then
    test -f Makefile && make distclean
else
    test -d ./build && (cd build && make distclean)
    test -d build && rm -r build
fi

./bootstrap

SOURCE_DIR=.

if [ $? -eq 0 ]
then
    if [ -z "$IN_TREE" ]
    then
        SOURCE_DIR=..
        mkdir build && \
        cd build
    fi
else
    exit 1
fi

test $? -eq 0 \
    && $SOURCE_DIR/configure --prefix=$DESTDIR \
    && make -j $CORES check \
    && make install install-doc \
    && (cd $DESTDIR && find . -type f | sort) >| ../payload-$TAG.new \
    && diff -u $SOURCE_DIR/payload-$TAG $SOURCE_DIR/payload-$TAG.new \
    && make uninstall

# vim:set ai et sw=4 ts=4 tw=80:

Attachment: signature.asc
Description: PGP signature

Reply via email to