# Very basic and very simple Makefile. Maybe it would be nice to make it
# in ac/am.... but I'm too lazy ;)
#
VERSION		= 2.10.1

CC		= gcc
OPT_FLAGS	= -Wformat -Werror=format-security -fvar-tracking-assignments -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector -O2 -g2 -Wall
CFLAGS		= $(OPT_FLAGS) -Wall -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
INSTALL		= install -p
SBINDIR		= /sbin
ETCDIR		= /etc
PROFILEDIR	= $(ETCDIR)/profile.d
ENVDIR		= $(ETCDIR)/env.d
SHRCDIR		= $(ETCDIR)/shrc.d
#########################################

BIN_FILES	= joinpasswd update-fstab postshell delpasswd
DOCS		= ChangeLog
ETC_FILES	= filesystems fstab group host.conf hosts motd \
	    netgroup passwd profile protocols resolv.conf securetty \
	    services shells suid_profile subgid subuid
PROFILE_FILES	= 00-tmp-dir.csh 00-tmp-dir.sh
ENV_FILES	= EDITOR HISTFILESIZE HOME_ETC MAILCHECK MAILPATH \
	    NNTPSERVER ORGANIZATION TMOUT VISUAL
SHRC_FILES	= 256term.csh 256term.sh

SOURCES		= joinpasswd.c update-fstab.c postshell.c delpasswd.c
CLEAN		= $(BIN_FILES) *.o core *.tar.gz *.tar.bz2 *~ *.swp

#########################################
all: $(BIN_FILES)

joinpasswd: joinpasswd.o
update-fstab: update-fstab.o
postshell: postshell.o
delpasswd: delpasswd.o

.c.o:
	$(CC) $(CPPFLAGS) $(CFLAGS) $(CDEFS) -c $< -o $@

clean:
	rm -f $(CLEAN)
	cd etc && rm -f $(CLEAN)
	cd etc/profile.d && rm -f $(CLEAN)

install: $(BIN_FILES)
	$(INSTALL) -d $(DESTDIR)/$(SBINDIR)
	$(INSTALL) -d $(DESTDIR)/$(ETCDIR)
	$(INSTALL) -d $(DESTDIR)/$(PROFILEDIR)
	$(INSTALL) -d $(DESTDIR)/$(ENVDIR)
	$(INSTALL) -d $(DESTDIR)/$(SHRCDIR)
	$(INSTALL) $(BIN_FILES) $(DESTDIR)/$(SBINDIR)
	cd etc && $(INSTALL) -m644 $(ETC_FILES) $(DESTDIR)/$(ETCDIR)
	ln -sf /proc/self/mounts $(DESTDIR)/$(ETCDIR)/mtab
	cd etc/profile.d && $(INSTALL) -m755 $(PROFILE_FILES) $(DESTDIR)/$(PROFILEDIR)
	cd etc/env.d && $(INSTALL) -m644 $(ENV_FILES) $(DESTDIR)/$(ENVDIR)
	cd etc/shrc.d && $(INSTALL) -m644 $(SHRC_FILES) $(DESTDIR)/$(SHRCDIR)

dist: changelog clean
	$(INSTALL) -d setup-$(VERSION)/etc/profile.d
	$(INSTALL) -d setup-$(VERSION)/etc/env.d
	$(INSTALL) -d setup-$(VERSION)/etc/shrc.d
	$(INSTALL) $(DOCS) $(SOURCES) Makefile setup-$(VERSION)
	for file in $(ETC_FILES); do \
		$(INSTALL) -m644 etc/$$file setup-$(VERSION)/etc; \
	done
	for file in $(PROFILE_FILES); do \
		$(INSTALL) -m755 etc/profile.d/$$file setup-$(VERSION)/etc/profile.d; \
	done
	for file in $(ENV_FILES); do \
		$(INSTALL) -m644 etc/env.d/$$file setup-$(VERSION)/etc/env.d; \
	done
	for file in $(SHRC_FILES); do \
		$(INSTALL) -m644 etc/shrc.d/$$file setup-$(VERSION)/etc/shrc.d; \
	done
	tar -cvjf setup-$(VERSION).tar.bz2 setup-$(VERSION)
	rm -rf setup-$(VERSION)

changelog:
	./changelog.sh

tag:
	cvs tag setup-$(shell echo $(VERSION) | tr . _)

distfiles: dist
	lftp -c "open dropin; mput setup-$(VERSION).tar.bz2"
