CFLAGS = -flto -Wall -Wextra -Werror -Wl,-z,now CFLAGS_RELEASE = ${CFLAGS} -O3 -s -D_FORTIFY_SOURCE=2 CFLAGS_DEBUG = ${CFLAGS} -O0 -g -fsanitize=undefined CFLAGS_STATIC = ${CFLAGS_RELEASE} -static-pie LIBS = -lcrypt CC = cc PREFIX ?= /usr/local BINDIR = ${PREFIX}/bin MANDIR = ${PREFIX}/share/man all: rdo rdo: rdo.c ${CC} ${CFLAGS_RELEASE} rdo.c -o rdo ${LIBS} static: rdo.c ${CC} ${CFLAGS_STATIC} rdo.c -o rdo ${LIBS} debug: rdo.c ${CC} ${CFLAGS_DEBUG} rdo.c -o rdo ${LIBS} install: all mkdir -p ${DESTDIR}${BINDIR} cp rdo ${DESTDIR}${BINDIR}/rdo chmod 4755 ${DESTDIR}${BINDIR}/rdo mkdir -p ${DESTDIR}${MANDIR}/man1 cp rdo.1 ${DESTDIR}${MANDIR}/man1/rdo.1 chmod 644 ${DESTDIR}${MANDIR}/man1/rdo.1 mkdir -p ${DESTDIR}${MANDIR}/man5 cp rdo.conf.5 ${DESTDIR}${MANDIR}/man5/rdo.conf.5 chmod 644 ${DESTDIR}${MANDIR}/man5/rdo.conf.5 mkdir -p ${DESTDIR}/etc @if [ -f ${DESTDIR}/etc/rdo.conf ]; then \ echo "Skipping existing configuration file: ${DESTDIR}/etc/rdo.conf"; \ else \ cp rdo_sample.conf ${DESTDIR}/etc/rdo.conf; \ chmod 644 ${DESTDIR}/etc/rdo.conf; \ fi uninstall: rm -f ${DESTDIR}${BINDIR}/rdo rm -f ${DESTDIR}${MANDIR}/man1/rdo.1 rm -f ${DESTDIR}${MANDIR}/man5/rdo.conf.5 clean: rm rdo bench-clean: docker rmi -f rdo-benchmark bench-build: bench-clean docker buildx build -t rdo-benchmark -f benchmark/Dockerfile . bench-run: docker run --rm -t rdo-benchmark