# Edit this top level makefile to change basic build options.

CC=powerpc-linux-gcc



# Installation directories set by configure.  Alter these to
# your liking.

top_srcdir=.
srcdir=.

DESTDIR=

include ./Make.rules
include ./Make.modules

DIRS=
BUILD=$(BUILD_OBJS) $(BUILD_MODULES) modules/module_glue.o
FTPCOUNT=$(BUILD_FTPCOUNT_OBJS)
FTPWHO=$(BUILD_FTPWHO_OBJS)
FTPSHUT=$(BUILD_FTPSHUT_OBJS)
FTPTOP=$(BUILD_FTPTOP_OBJS)
INSTALL=/usr/bin/install -c
EXEEXT=

INSTALL_USER=root
INSTALL_GROUP=root

INSTALL_BIN=$(INSTALL) -s -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755
INSTALL_SBIN=$(INSTALL) -s -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0755
INSTALL_MAN=$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644
#

all: proftpd$(EXEEXT) ftpcount$(EXEEXT) ftpshut$(EXEEXT) ftptop$(EXEEXT) ftpwho$(EXEEXT)

force-buildstamp:
	echo \#define BUILD_STAMP \"`date`\" > include/buildstamp.h

include/buildstamp.h:
	echo \#define BUILD_STAMP \"`date`\" > include/buildstamp.h

dummy:

lib: include/buildstamp.h dummy
	cd lib ; $(MAKE) lib

src: include/buildstamp.h dummy
	cd src ; $(MAKE) src

modules: include/buildstamp.h dummy
	cd modules; $(MAKE) modules

dirs: include/buildstamp.h dummy
	@dirs="$(DIRS)"; \
	for dir in $$dirs; do \
	  if [ -d "$$dir" ]; then cd $$dir; $(MAKE); fi; \
	done

utils: include/buildstamp.h dummy
	cd utils; $(MAKE) utils

proftpd$(EXEEXT): lib src modules dirs
	$(CC) $(LDFLAGS) -o $@ $(BUILD) $(LIBS)

ftpcount$(EXEEXT): utils
	$(CC) -o $@ $(FTPCOUNT)

ftpshut$(EXEEXT): utils
	$(CC) -o $@ $(FTPSHUT)

ftptop$(EXEEXT): utils
	$(CC) $(LDFLAGS) -o $@ $(FTPTOP) $(LIBS) $(CURSES_LIBS)

ftpwho$(EXEEXT): utils
	$(CC) -o $@ $(FTPWHO)

clean:
	cd src ; $(MAKE) clean
	cd modules; $(MAKE) clean
	cd lib; $(MAKE) clean
	cd utils; $(MAKE) clean
	@dirs="$(DIRS)"; \
	for dir in $$dirs; do \
	  if [ -d "$$dir" ]; then cd $$dir; $(MAKE) clean; fi; \
	done
	rm -f include/buildstamp.h
	rm -f proftpd$(EXEEXT) ftpcount$(EXEEXT) ftpshut$(EXEEXT) \
        ftptop$(EXEEXT) ftpwho$(EXEEXT) core *~

# BSD install -d doesn't work, so ...
$(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(rundir) $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8:
	@if [ ! -d $@ ]; then \
		mkdir -p $@; \
		chown $(INSTALL_USER):$(INSTALL_GROUP) $@; \
		chmod 0755 $@; \
	fi

install-proftpd: proftpd $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir) $(DESTDIR)$(rundir) $(DESTDIR)$(sbindir)
	$(INSTALL_SBIN) proftpd $(DESTDIR)$(sbindir)/proftpd
	if [ -f $(DESTDIR)$(sbindir)/in.proftpd ] ; then \
	  rm -f $(DESTDIR)$(sbindir)/in.proftpd ; \
	fi
	ln -s proftpd $(DESTDIR)$(sbindir)/in.proftpd
	chown -h $(INSTALL_USER):$(INSTALL_GROUP) $(DESTDIR)$(sbindir)/in.proftpd

install-utils: $(DESTDIR)$(sbindir) $(DESTDIR)$(bindir)
	$(INSTALL_BIN) ftpcount $(DESTDIR)$(bindir)/ftpcount
	$(INSTALL_SBIN) ftpshut $(DESTDIR)$(sbindir)/ftpshut
	$(INSTALL_BIN) ftptop $(DESTDIR)$(bindir)/ftptop
	$(INSTALL_BIN) ftpwho $(DESTDIR)$(bindir)/ftpwho

install-conf: $(DESTDIR)$(sysconfdir)
	if [ ! -f $(DESTDIR)$(sysconfdir)/proftpd.conf ] ; then \
	  $(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 \
		$(top_srcdir)/sample-configurations/basic.conf \
	       	$(DESTDIR)$(sysconfdir)/proftpd.conf ; \
	fi

install-man: $(DESTDIR)$(mandir) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8
	$(INSTALL_MAN) $(top_srcdir)/src/proftpd.8 $(DESTDIR)$(mandir)/man8
	$(INSTALL_MAN) $(top_srcdir)/utils/ftpshut.8 $(DESTDIR)$(mandir)/man8
	$(INSTALL_MAN) $(top_srcdir)/utils/ftpwho.1 $(DESTDIR)$(mandir)/man1
	$(INSTALL_MAN) $(top_srcdir)/utils/ftpcount.1 $(DESTDIR)$(mandir)/man1
	$(INSTALL_MAN) $(top_srcdir)/src/xferlog.5 $(DESTDIR)$(mandir)/man5

install-all: install-proftpd install-utils install-conf install-man

install: install-all

${srcdir}/configure: configure.in
	cd ${srcdir} && autoconf

# autoheader might not change config.h.in, so touch a stamp file.
${srcdir}/config.h.in: stamp-h.in
${srcdir}/stamp-h.in: configure.in acconfig.h
	cd ${srcdir} && autoheader
	echo timestamp > ${srcdir}/stamp-h.in

config.h: stamp-h
stamp-h: config.h.in config.status
	./config.status

Makefile: Makefile.in Make.rules.in config.status
	./config.status

config.status: configure
	./config.status --recheck

depend:
	cd src; $(MAKE) depend; rm -f Makefile.bak Makefile.in.bak
	cd modules; $(MAKE) depend; rm -f Makefile.bak Makefile.in.bak
	cd lib; $(MAKE) depend; rm -f Makefile.bak Makefile.in.bak

distclean: clean depend
	rm -f src/Makefile modules/Makefile lib/Makefile
	rm -f config.h config.status config.cache config.log \
	      Makefile proftpd.conf development.notes
	rm -f Make.modules Make.rules Makefile
	rm -f lib/Makefile modules/Makefile src/Makefile
	rm -f include/buildstamp.h
	rm -rf `find . -name "CVS"`
	rm -rf `find . -name ".cvsignore"`
	rm -rf `find . -name "*~"`
	rm -rf `find . -name "*.bak"`

dist: distclean
	mv -f contrib/dist/rpm/proftpd.spec .

cvsclean: clean
	cd src; rm -f Makefile Makefile.bak Makefile.in.bak
	cd modules; rm -f Makefile Makefile.bak Makefile.in.bak
	cd lib; rm -f Makefile Makefile.bak Makefile.in.bak
	rm -f Make.modules Make.rules
	rm -f Make.modules.bak Make.rules.bak
	rm -f config.h config.status config.cache config.log \
	      proftpd.conf development.notes
	rm -f Makefile lib/Makefile modules/Makefile src/Makefile
	rm -f include/buildstamp.h
