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)

uninstall-doc-libs:
	(cd doc && make uninstall-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)

uninstall: uninstall-progs-recursive uninstall-shlibs-libs-recursive uninstall-doc-libs

install-libs: install-libs-recursive

uninstall-libs: uninstall-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 uninstall-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 uninstall-libs-recursive install-shlibs-libs-recursive uninstall-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) -r /tmp/dest
	make DESTDIR=/tmp/dest install
	cd ..
	cp -r $(srcdir)/README $(srcdir)/install-utils /tmp/dest
	$(RM) -r /tmp/dest/install-utils/CVS /tmp/dest/install-utils/ChangeLog
	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
