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: $(SUBSTITUTE) $(srcdir)/include/linux/types.h.in
	-chmod +x $(SUBSTITUTE)
	$(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 \) -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)/.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
