+DIST_SUBDIRS =
+SUBDIRS = include portals conf scripts ldlm
+
+# ldiskfs creates headers that the ldiskfs fsfilt will need
+if MODULES
+if LDISKFS
+SUBDIRS += ldiskfs
+else
+DIST_SUBDIRS += ldiskfs
+endif
+else
+DIST_SUBDIRS += ldiskfs
+endif
+
+# directories shared by the liblustre and modules builds
+CORE_SUBDIRS = lvfs obdclass lov ptlrpc obdecho osc mdc
+if LIBLUSTRE
+SUBDIRS += $(CORE_SUBDIRS)
+else
+if MODULES
+SUBDIRS += $(CORE_SUBDIRS)
+else
+DIST_SUBDIRS += $(CORE_SUBDIRS)
+endif
+endif
+
+# directories only built in the modules build
+MODULES_SUBDIRS = mds obdfilter ost llite cobd
+MODULES_DIST_SUBDIRS =
+
+if LINUX25
+MODULES_DIST_SUBDIRS += ptlbd
+else
+MODULES_SUBDIRS += ptlbd
+endif
+
+if SNAPFS
+MODULES_SUBDIRS += snapfs
+else
+MODULES_DIST_SUBDIRS += snapfs
+endif
+
+if SMFS
+MODULES_SUBDIRS += smfs
+else
+MODULES_DIST_SUBDIRS += smfs
+endif
+
+if MODULES
+SUBDIRS += $(MODULES_SUBDIRS)
+DIST_SUBDIRS += $(MODULES_DIST_SUBDIRS)
+else
+DIST_SUBDIRS += $(MODULES_SUBDIRS) $(MODULES_DIST_SUBDIRS)
+endif
+
+if LIBLUSTRE
+SUBDIRS += liblustre
+else
+DIST_SUBDIRS += liblustre
+endif
+
+if DOC
+SUBDIRS += doc
+else
+DIST_SUBDIRS += doc
+endif
+
+if UTILS
+SUBDIRS += utils
+else
+DIST_SUBDIRS += utils
+endif
+
+if TESTS
+SUBDIRS += tests
+else
+DIST_SUBDIRS += tests
+endif
+
+DIST_SUBDIRS += $(SUBDIRS)
+
+EXTRA_DIST = BUGS FDL Rules.in kernel_patches kernel-tests/Makefile