5 kx # Makefile for Dillon's crond and crontab
5 kx VERSION = 4.5
5 kx
5 kx # these variables can be configured by e.g. `make SCRONTABS=/different/path`
5 kx PREFIX = /usr
5 kx CRONTAB_GROUP = root
5 kx SCRONTABS = /etc/cron.d
5 kx CRONTABS = /var/spool/cron/crontabs
5 kx CRONSTAMPS = /var/spool/cron/cronstamps
5 kx # used for syslog
5 kx LOG_IDENT = crond
5 kx # used for logging to file (syslog manages its own timestamps)
5 kx # if LC_TIME is set, it will override any compiled-in timestamp format
5 kx TIMESTAMP_FMT = %b %e %H:%M:%S
5 kx SBINDIR = $(PREFIX)/sbin
5 kx BINDIR = $(PREFIX)/bin
5 kx MANDIR = $(PREFIX)/share/man
5 kx
5 kx -include config
5 kx
5 kx
5 kx SHELL = /bin/sh
5 kx INSTALL = install -o root
5 kx INSTALL_PROGRAM = $(INSTALL) -D
5 kx INSTALL_DATA = $(INSTALL) -D -m0644 -g root
5 kx INSTALL_DIR = $(INSTALL) -d -m0755 -g root
5 kx CFLAGS ?= -O2
5 kx CFLAGS += -Wall -Wstrict-prototypes -Wno-missing-field-initializers
5 kx SRCS = main.c subs.c database.c job.c concat.c chuser.c
5 kx OBJS = main.o subs.o database.o job.o concat.o chuser.o
5 kx TABSRCS = crontab.c chuser.c
5 kx TABOBJS = crontab.o chuser.o
5 kx PROTOS = protos.h
5 kx DEFS = -DVERSION='"$(VERSION)"' \
5 kx -DSCRONTABS='"$(SCRONTABS)"' -DCRONTABS='"$(CRONTABS)"' \
5 kx -DCRONSTAMPS='"$(CRONSTAMPS)"' -DLOG_IDENT='"$(LOG_IDENT)"' \
5 kx -DTIMESTAMP_FMT='"$(TIMESTAMP_FMT)"'
5 kx
5 kx # save variables needed for `make install` in config
5 kx all: $(PROTOS) crond crontab ;
5 kx rm -f config
5 kx echo "PREFIX = $(PREFIX)" >> config
5 kx echo "SBINDIR = $(SBINDIR)" >> config
5 kx echo "BINDIR = $(BINDIR)" >> config
5 kx echo "MANDIR = $(MANDIR)" >> config
5 kx echo "CRONTAB_GROUP = $(CRONTAB_GROUP)" >> config
5 kx echo "SCRONTABS = $(SCRONTABS)" >> config
5 kx echo "CRONTABS = $(CRONTABS)" >> config
5 kx echo "CRONSTAMPS = $(CRONSTAMPS)" >> config
5 kx
5 kx protos.h: $(SRCS) $(TABSRCS)
5 kx fgrep -h Prototype $(SRCS) $(TABSRCS) > protos.h
5 kx
5 kx crond: $(OBJS)
5 kx $(CC) $(LDFLAGS) $^ $(LIBS) -o crond
5 kx
5 kx crontab: $(TABOBJS)
5 kx $(CC) $(LDFLAGS) $^ -o crontab
5 kx
5 kx %.o: %.c defs.h $(PROTOS)
5 kx $(CC) $(CFLAGS) $(CPPFLAGS) -c $(DEFS) $< -o $@
5 kx
5 kx install:
5 kx $(INSTALL_PROGRAM) -m0700 -g root crond $(DESTDIR)$(SBINDIR)/crond
5 kx $(INSTALL_PROGRAM) -m4750 -g $(CRONTAB_GROUP) crontab $(DESTDIR)$(BINDIR)/crontab
5 kx $(INSTALL_DATA) crontab.1 $(DESTDIR)$(MANDIR)/man1/crontab.1
5 kx $(INSTALL_DATA) crond.8 $(DESTDIR)$(MANDIR)/man8/crond.8
5 kx $(INSTALL_DIR) $(DESTDIR)$(SCRONTABS)
5 kx $(INSTALL_DIR) $(DESTDIR)$(CRONTABS)
5 kx $(INSTALL_DIR) $(DESTDIR)$(CRONSTAMPS)
5 kx
5 kx clean: force
5 kx rm -f *.o $(PROTOS)
5 kx rm -f crond crontab config
5 kx
5 kx force: ;
5 kx
5 kx man: force
5 kx -pandoc -t man -f markdown -s crontab.markdown -o crontab.1
5 kx -pandoc -t man -f markdown -s crond.markdown -o crond.8
5 kx
5 kx # for maintainer's use only
5 kx TARNAME = /home/abs/_dcron/dcron-$(VERSION).tar.gz
5 kx dist: clean man
5 kx bsdtar -cz --exclude repo/.git -f $(TARNAME).new -s'=^repo=dcron-$(VERSION)=' -C .. repo
5 kx mv -f $(TARNAME).new $(TARNAME)