# Makefile for rsync. This is processed by configure to produce the final
# Makefile

prefix=/usr/local
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
mandir=${prefix}/man

LIBS=-lpopt 
CC=gcc
CFLAGS=-O -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64
LDFLAGS= 

INSTALLCMD=/usr/bin/install -c

srcdir=.

SHELL=/bin/sh


.SUFFIXES:
.SUFFIXES: .c .o

LIBOBJ=lib/fnmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o
ZLIBOBJ=zlib/deflate.o zlib/infblock.o zlib/infcodes.o zlib/inffast.o \
	zlib/inflate.o zlib/inftrees.o zlib/infutil.o zlib/trees.o \
	zlib/zutil.o zlib/adler32.o 
OBJS1=rsync.o generator.o receiver.o cleanup.o sender.o exclude.o util.o main.o checksum.o match.o syscall.o log.o backup.o
OBJS2=options.o flist.o io.o compat.o hlink.o token.o uidlist.o socket.o fileio.o
DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
popt_OBJS=popt/findme.o  popt/popt.o  popt/poptconfig.o \
	popt/popthelp.o popt/poptparse.o
OBJS=$(OBJS1) $(OBJS2) $(DAEMON_OBJ) $(LIBOBJ) $(ZLIBOBJ) 

# note that the -I. is needed to handle config.h when using VPATH
.c.o:
#
	$(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
#

all: rsync

man: rsync.1 rsyncd.conf.5

install: all
	-mkdir -p ${bindir}
	${INSTALLCMD} -m 755 rsync ${bindir}
	-mkdir -p ${mandir}/man1
	-mkdir -p ${mandir}/man5
	${INSTALLCMD} -m 644 $(srcdir)/rsync.1 ${mandir}/man1
	${INSTALLCMD} -m 644 $(srcdir)/rsyncd.conf.5 ${mandir}/man5

install-strip:
	$(MAKE) INSTALLCMD='$(INSTALLCMD) -s' install

rsync: $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o rsync $(OBJS) $(LIBS)

Makefile: Makefile.in configure config.status
	echo "WARNING: You need to run ./config.status --recheck"

# don't actually run autoconf, just issue a warning
configure: configure.in
	echo "WARNING: you need to rerun autoconf"

rsync.1: rsync.yo
	yodl2man -o rsync.1 rsync.yo

rsyncd.conf.5: rsyncd.conf.yo
	yodl2man -o rsyncd.conf.5 rsyncd.conf.yo

proto:
	cat *.c lib/compat.c | awk -f mkproto.awk > proto.h

clean:
	rm -f *~ $(OBJS) rsync 

distclean: clean
	rm -f config.h config.cache config.status Makefile


# this target is really just for my use. It only works on a limited
# range of machines and is used to produce a list of potentially
# dead (ie. unused) functions in the code. (tridge)
finddead:
	nm *.o */*.o |grep 'U ' | awk '{print $$2}' | sort -u > nmused.txt
	nm *.o */*.o |grep 'T ' | awk '{print $$3}' | sort -u > nmfns.txt
	comm -13 nmused.txt nmfns.txt 
