# Makefile for uxd, by B. Watson. WTFPL. # Requires GNU make aka gmake. BSD make won't work, sorry. ### Override these variables as needed. Don't override CFLAGS; use # MYCFLAGS instead. MYCFLAGS=-O2 -fPIC # These only affect the 'install' target (they don't get compiled # into the binary). PREFIX=/usr MANDIR=$(PREFIX)/man MAN1DIR=$(MANDIR)/man1 BINDIR=$(PREFIX)/bin DESTDIR= INSTALL_DATA=install -m0644 INSTALL_PROGRAM=install -s -m0755 GZIP=gzip -9 GZIP_MAN=yes # ### No user-serviceable parts below. VERSION=0.1.0 DEFINES=-DVERSION='"$(VERSION)"' WARNFLAGS=-std=c89 -Wall -pedantic -Wextra CFLAGS=$(DEFINES) $(WARNFLAGS) $(MYCFLAGS) .PHONY: all test man clean install g++ clang++ clang all: uxd man uxd: uxd.c getopt.c usage.c usage.c: uxd.rst mkusage.pl perl mkusage.pl uxd.rst > usage.c install: all mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR) $(INSTALL_DATA) uxd.1 $(DESTDIR)$(MAN1DIR) ifeq ($(GZIP_MAN),yes) $(GZIP) $(DESTDIR)$(MAN1DIR)/uxd.1 endif $(INSTALL_PROGRAM) uxd $(DESTDIR)$(BINDIR) test: uxd ./uxd man: uxd.1 uxd.1: uxd.rst ver.rst rst2man uxd.rst > uxd.1 ver.rst: echo '.. |version| replace:: $(VERSION)' > ver.rst clean: rm -f uxd # the rest of the targets are for portability testing. tcc: clean $(MAKE) CC=tcc pcc: clean $(MAKE) CC=pcc clang: clean $(MAKE) CC=clang g++: clean $(MAKE) CC=g++ WARNFLAGS="-Wall -Wno-write-strings -xc++" clang++: clean $(MAKE) CC=clang++ WARNFLAGS="-Wall -Wno-write-strings -xc++"