-EXTRA_DIST = spl.h
-EXTRA_DIST += spl-condvar.h spl-kmem.h spl-random.h spl-thread.h
-EXTRA_DIST += spl-types.h spl-cred.h spl-kstat.h spl-rwlock.h
-EXTRA_DIST += spl-time.h spl-callb.h spl-generic.h spl-mutex.h
-EXTRA_DIST += spl-taskq.h spl-timer.h
-EXTRA_DIST += splat-ctl.h
-EXTRA_DIST += list.h
+SUBDIRS = linux spl sys
+
+COMMON_H = \
+ $(top_srcdir)/include/zfeature_common.h \
+ $(top_srcdir)/include/zfs_comutil.h \
+ $(top_srcdir)/include/zfs_deleg.h \
+ $(top_srcdir)/include/zfs_fletcher.h \
+ $(top_srcdir)/include/zfs_namecheck.h \
+ $(top_srcdir)/include/zfs_prop.h
+
+USER_H = \
+ $(top_srcdir)/include/libnvpair.h \
+ $(top_srcdir)/include/libuutil_common.h \
+ $(top_srcdir)/include/libuutil.h \
+ $(top_srcdir)/include/libuutil_impl.h \
+ $(top_srcdir)/include/libzfs.h \
+ $(top_srcdir)/include/libzfs_core.h \
+ $(top_srcdir)/include/libzfs_impl.h \
+ $(top_srcdir)/include/libzutil.h \
+ $(top_srcdir)/include/thread_pool.h
+
+EXTRA_DIST = $(COMMON_H) $(USER_H)
+
+if CONFIG_USER
+libzfsdir = $(includedir)/libzfs
+libzfs_HEADERS = $(COMMON_H) $(USER_H)
+endif
+
+if CONFIG_KERNEL
+kerneldir = @prefix@/src/zfs-$(VERSION)/include
+kernel_HEADERS = $(COMMON_H)
+endif