#
# Makefile for loadmap
#
# Targets:
#  all:		make everything (will relink loadmap)
#  install:	make and install everything (will not relink loadmap)
#  clean:	remove all the make generated files
#  dist:	make a tar.gz file in the parent directory
#

CFLAGS		=-O2 -pipe -Wall
LDFLAGS		=-N -s
YACC		=bison -d -y
LEX		=flex
COMPRESSED_MAN	=n

# Installation directories
INSTBINDIR	=/sbin
MAN5DIR		=/usr/man/man5
MAN8DIR		=/usr/man/man8

# Defaults
DEFBOOT		=/dev/root
CONFIGFILE	=/etc/boot.conf

# Version
VERSION_MAJOR	=1
VERSION_MINOR	=6
PATCHLEVEL	=2

OBJS 		= main.o lex.yy.o parse.o mapfile.o nodes.o x_alloc.o version.o

.PHONY:		all
all:		remove loadmap loadmap.8 boot.conf.5

.PHONY:		install
install:	loadmap loadmap.8 boot.conf.5
		install -o root -g bin -m 755 loadmap $(INSTBINDIR)
		install -o man -g man -m 644 loadmap.8 $(MAN8DIR)
		install -o man -g man -m 644 boot.conf.5 $(MAN5DIR)
		test "x$COMPRESSED_MAN" != "xy" || { gzip -9f $(MAN8DIR)/loadmap.8; gzip -9f $(MAN5DIR)/boot.conf.5 }

.PHONY:		uninstall
uninstall:;	$(RM) $(INSTBINDIR)/loadmap
		$(RM) $(MAN8DIR)/loadmap.8*
		$(RM) $(MAN5DIR)/boot.conf.5*

.PHONY:		clean
clean:;		$(RM) core *.o loadmap boot.conf.5 loadmap.8 version.c parse.c lex.yy.c y.tab.h

.PHONY:		dist
dist:		clean
		(cd ..; tar zcf loadmap-${VERSION_MAJOR}.${VERSION_MINOR}.${PATCHLEVEL}.tar.gz loadmap)

loadmap:	$(OBJS)
		$(CC) $(LDFLAGS) -o $@ $(OBJS)

y.tab.h:	parse.c

parse.c:	parse.y

lex.yy.c:	lex.l
		$(LEX) -i lex.l

lex.yy.o:	lex.yy.c parse.o

main.o:		main.c y.tab.h
		$(CC) $(CFLAGS) -DDEFBOOT=\"${DEFBOOT}\" -DCONFIGFILE=\"${CONFIGFILE}\" -o $@ -c main.c

nodes.o:	nodes.c y.tab.h

remove:;	$(RM) version.c

version.c:;	(echo "char *version = \"${VERSION_MAJOR}.${VERSION_MINOR}.${PATCHLEVEL}\";"; \
		 echo "char *date = __DATE__;") > version.c

loadmap.8:	loadmap.8.in Makefile
		sed -e 's,@INSTBINDIR@,${INSTBINDIR},g;s,@DEFBOOT@,${DEFBOOT},g;\
		s,@CONFIGFILE@,${CONFIGFILE},g' loadmap.8.in > $@

boot.conf.5:	boot.conf.5.in Makefile
		sed -e 's,@INSTBINDIR@,${INSTBINDIR},g;s,@DEFBOOT@,${DEFBOOT},g;\
		s,@CONFIGFILE@,${CONFIGFILE},g' boot.conf.5.in > $@

