srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
top_builddir = .
my_dir = .
INSTALL = @INSTALL@

@MCONFIG@

LIB_SUBDIRS=lib/et lib/ss lib/ext2fs lib/e2p lib/uuid
PROG_SUBDIRS=e2fsck debugfs misc resize tests/progs 
SUBDIRS=$(LIB_SUBDIRS) $(PROG_SUBDIRS) tests

SUBS= include/linux/types.h

TAR=tar

all:: $(SUBS) libs progs docs

progs: $(SUBS) all-progs-recursive
libs: $(SUBS) all-libs-recursive

docs:
	(cd doc; make libext2fs.info)

install-doc-libs:
	(cd doc; make install-doc-libs)

install: all-libs-recursive install-progs-recursive \
	install-shlibs-libs-recursive install-doc-libs
	(export MANPATH=$(DESTDIR)$(mandir); $(srcdir)/install-utils/compile_manpages)

install-libs: install-libs-recursive

TAGS clean-recursive distclean-recursive \
	    mostlyclean-recursive realclean-recursive install-recursive:
	for subdir in $(SUBDIRS); do \
	  if test -d $$subdir ; then \
	    target=`echo $@|$(SED) 's/-recursive//'`; \
	    echo making $$target in $$subdir; \
	    (cd $$subdir && $(MAKE) $$target) || exit 1; \
	  fi ; \
	done

all-progs-recursive install-progs-recursive:
	for subdir in $(PROG_SUBDIRS); do \
	  if test -d $$subdir ; then \
	    target=`echo $@|$(SED) 's/-progs-recursive//'`; \
	    echo making $$target in $$subdir; \
	    (cd $$subdir && $(MAKE) $$target) || exit 1; \
	  fi ; \
	done

all-libs-recursive install-libs-recursive install-shlibs-libs-recursive:
	for subdir in $(LIB_SUBDIRS); do \
	  if test -d $$subdir ; then \
	    target=`echo $@|$(SED) 's/-libs-recursive//'`; \
	    echo making $$target in $$subdir; \
	    (cd $$subdir && $(MAKE) $$target) || exit 1; \
	  fi ; \
	done

mostlyclean: mostlyclean-recursive mostlyclean-local

clean: clean-recursive clean-local
	$(RM) -f $(SUBS)

distclean: distclean-recursive distclean-local

realclean: realclean-recursive realclean-local

include/linux/types.h: $(DEP_SUBSTITUTE) $(srcdir)/include/linux/types.h.in
	$(SUBSTITUTE) $(srcdir)/include/linux/types.h.in \
	> include/linux/types.h

mostlyclean-local:
	$(RM) -f \#* *~ core MAKELOG 
clean-local: mostlyclean-local
distclean-local: clean-local
	$(RM) -f include/linux/types.h $(SUBSTITUTE)
	$(RM) -f config.status config.log config.cache MCONFIG Makefile
realclean-local: distclean-local
	$(RM) -f configure

check:
	(cd tests; make check)

distribution_tar_file:
	rm -rf /tmp/dest
	make DESTDIR=/tmp/dest install
	cd ..
	cp -r $(srcdir)/README $(srcdir)/install-utils /tmp/dest
	cp $(srcdir)/INSTALL.@BINARY_TYPE@ /tmp/dest/INSTALL
	(cd /tmp/dest; $(TAR) cf - . ) | gzip -9 \
		> e2fsprogs-@E2FSPROGS_VERSION@-@BINARY_TYPE@.tar.gz

SRCROOT = `echo e2fsprogs-@E2FSPROGS_VERSION@ | sed -e 's/-WIP//' \
			-e 's/pre-//' -e 's/-PLUS//'`

$(srcdir)/.exclude-file:
	a=$(SRCROOT); \
	(cd $(srcdir)/.. ; find e2fsprogs \( -name \*~ -o -name \*.orig \
		-o -name CVS -o -name \*.rej -o name Makefile.pq \) -print) \
		| sed -e "s/e2fsprogs/$$a/" > $(srcdir)/.exclude-file
	echo "$(SRCROOT)/build" >> $(srcdir)/.exclude-file
	echo "$(SRCROOT)/rpm.log" >> $(srcdir)/.exclude-file
	echo "$(SRCROOT)/resize" >> $(srcdir)/.exclude-file
	echo "$(SRCROOT)/powerquest" >> $(srcdir)/.exclude-file
	echo "$(SRCROOT)/.exclude-file" >> $(srcdir)/.exclude-file
	echo $(SRCROOT)/e2fsprogs-@E2FSPROGS_VERSION@.tar.gz \
		>> $(srcdir)/.exclude-file
	
source_tar_file: $(srcdir)/.exclude-file
	(cd $(srcdir)/..; a=$(SRCROOT); rm -f $$a ; ln -sf e2fsprogs $$a ; \
		$(TAR) -c -h -v -f - \
			-X $$a/.exclude-file $$a | \
		gzip -9 > e2fsprogs-@E2FSPROGS_VERSION@.tar.gz)
	rm -f $(srcdir)/.exclude-file
