#
# Master Makefile for man, apropos, whatis, and makewhatis
#
# Copyright (c) 1990, 1991, John W. Eaton.
# Copyright (c) 1994-2001, Andries E. Brouwer
#
# You may distribute under the terms of the GNU General Public
# License as specified in the README file that comes with the man 1.0
# distribution.  
#
# various changes - aeb, March 1994
# use of catalogs - aeb, June 1994

CC = @CC@
BUILD_CC = @BUILD_CC@
INSTALL = @INSTALL@
EXEEXT = @EXEEXT@

pager = @pager@

DEFS = @DEFS@
CWARN = -Wall -Wstrict-prototypes -Wmissing-prototypes
CWARNNP = -Wall

.c.o:
	$(CC) -c $(CWARN) $(CFLAGS) -I. $(DEFS) $<

# LDFLAGS = -g
LDFLAGS ?= -s

LIBOBJS = @LIBOBJS@

all: man$(EXEEXT) man.conf apropos whatis makewhatis

MANOBJS = man.o manfile.o manpath.o man-config.o man-getopt.o \
	man-iconv.o to_cat.o different.o gripes.o glob.o util.o msg.o

man$(EXEEXT): $(MANOBJS) $(LIBOBJS)
	$(CC) $(LDFLAGS) -o man$(EXEEXT) $(MANOBJS) $(LIBOBJS) $(LIBS)

# CC may be a cross compiler, but BUILD_CC must compile for
# the present machine.
makemsg:
	$(BUILD_CC) -o makemsg makemsg.c

msg.c gripedefs.h: ../msgs/mess.en makemsg
	./makemsg ../msgs/mess.en gripedefs.h msg.c

# glob.c does not have prototypes
glob.o: glob.c ndir.h
	$(CC) -c $(CWARNNP) $(CFLAGS) -I. $(DEFS) glob.c

man-config.o man-getopt.o man.o manpath.o to_cat.o: defs.h
different.o man.o: different.h
man.o manfile.o: glob.h
different.o gripes.o man-config.o man-getopt.o man.o manfile.o manpath.o util.o: gripes.h gripedefs.h
different.o man-config.o man-getopt.o man.o manpath.o: man-config.h
gripes.o man-config.o man-getopt.o man.o manpath.o util.o: man.h
man-getopt.o man.o manpath.o: man-getopt.h
man.o manfile.o to_cat.o: manfile.h
man.o man-iconv.o: man-iconv.h
man.o manpath.o: manpath.h
man-config.o: paths.h
different.o man-config.o man-getopt.o man.o manpath.o util.o: util.h
man-getopt.o: version.h
msg.o: msg.c
gripes.o: ../catopen/catopen.c

man.conf:	man.conf.in ../conf_script
	../conf_script man.conf

paths.h:	paths.h.in ../conf_script
	../conf_script paths.h

version.h: ../version Makefile
	vers=`sed -e s/man-// ../version`; \
	echo "static char version[] = \"$$vers\";" > version.h

apropos: apropos.sh Makefile
	rm -f apropos
	sed -e 's,%apropos_or_whatis%,apropos,' \
	    -e 's,%version%,@version@,' \
	    -e 's,%manpathoption%,@manpathoption@,' \
		apropos.sh > apropos
	chmod +x apropos

whatis: apropos.sh Makefile
	rm -f whatis
	sed -e 's,%apropos_or_whatis%,whatis,' \
	    -e 's,%version%,@version@,' \
	    -e 's,%manpathoption%,@manpathoption@,' \
		apropos.sh > whatis
	chmod +x whatis

makewhatis: makewhatis.sh Makefile
	rm -f makewhatis
	cp makewhatis.sh makewhatis.in
	../conf_script makewhatis
	chmod +x makewhatis

MANCONFIG=$(DESTDIR)$(PREFIX)@man_config_file@

install: all apropos whatis makewhatis
	mkdir -p $(DESTDIR)$(PREFIX)@bindir@
	$(INSTALL) -c @man_install_flags@ man$(EXEEXT) $(DESTDIR)$(PREFIX)@man@
	$(INSTALL) -c -m 755 apropos $(DESTDIR)$(PREFIX)@apropos@
	$(INSTALL) -c -m 755 whatis $(DESTDIR)$(PREFIX)@whatis@
	$(INSTALL) -c -m 755 man2dvi $(DESTDIR)$(PREFIX)@man2dvi@
	mkdir -p $(DESTDIR)$(PREFIX)@sbindir@
	$(INSTALL) -c -m 754 makewhatis $(DESTDIR)$(PREFIX)@makewhatis@
	mkdir -p $(DESTDIR)$(PREFIX)@man_config_dir@
	if [ -f $(MANCONFIG) ]; then mv $(MANCONFIG) $(MANCONFIG).orig; fi
	$(INSTALL) -c -m 644 man.conf $(MANCONFIG)

clean:
	rm -f *.o *~ core man$(EXEEXT) apropos whatis makewhatis makemsg

spotless: clean
	rm -f Makefile config.status paths.h version.h man.conf
	rm -f gripedefs.h msg.c mess.*.cat
