Support parallel build trees (VPATH builds)

Build products from an out of tree build should be written
relative to the build directory.  Sources should be referred
to by their locations in the source directory.

This is accomplished by adding the 'src' and 'obj' variables
for the module Makefile.am, using relative paths to reference
source files, and by setting VPATH when source files are not
co-located with the Makefile.  This enables the following:

  $ mkdir build
  $ cd build
  $ ../configure
  $ make -s

This change also has the advantage of resolving the following
warning which is generated by modern versions of automake.

  Makefile.am:00: warning: source file 'xxx' is in a subdirectory,
  Makefile.am:00: but option 'subdir-objects' is disabled

Signed-off-by: Turbo Fredriksson <turbo@bayour.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue zfsonlinux/zfs#1082
This commit is contained in:
Turbo Fredriksson 2014-06-11 03:57:48 +02:00 committed by Brian Behlendorf
parent 77ab5dd33a
commit 37d7cd94f3
6 changed files with 50 additions and 44 deletions

View File

@ -1,9 +1,9 @@
ACLOCAL_AMFLAGS = -I config
include $(top_srcdir)/config/rpm.am
include $(top_srcdir)/config/deb.am
include $(top_srcdir)/config/tgz.am
include config/rpm.am
include config/deb.am
include config/tgz.am
SUBDIRS = include rpm
if CONFIG_USER
@ -40,11 +40,11 @@ dist-hook:
$(distdir)/META
ctags:
$(RM) $(top_srcdir)/tags
$(RM) tags
find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags
etags:
$(RM) $(top_srcdir)/TAGS
$(RM) TAGS
find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a
tags: ctags etags

View File

@ -51,7 +51,7 @@ rpm-local:
mkdir -p $(rpmbuild)/SPECS && \
cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \
mkdir -p $(rpmbuild)/SOURCES && \
cp scripts/kmodtool $(rpmbuild)/SOURCES && \
cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \
cp $(distdir).tar.gz $(rpmbuild)/SOURCES)
srpm-common: dist

View File

@ -1,27 +1,30 @@
# Makefile.in for spl kernel module
src = @abs_top_srcdir@/module/spl
obj = @abs_builddir@
MODULE := spl
EXTRA_CFLAGS = $(SPL_MODULE_CFLAGS) @KERNELCPPFLAGS@
# Solaris porting layer module
obj-$(CONFIG_SPL) := $(MODULE).o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-proc.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-kmem.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-kmem-cache.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-vmem.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-thread.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-taskq.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-rwlock.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-vnode.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-err.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-kobj.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-generic.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-atomic.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-mutex.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-kstat.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-condvar.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-xdr.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-cred.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-tsd.o
$(MODULE)-objs += @top_srcdir@/module/spl/spl-zlib.o
$(MODULE)-objs += spl-proc.o
$(MODULE)-objs += spl-kmem.o
$(MODULE)-objs += spl-kmem-cache.o
$(MODULE)-objs += spl-vmem.o
$(MODULE)-objs += spl-thread.o
$(MODULE)-objs += spl-taskq.o
$(MODULE)-objs += spl-rwlock.o
$(MODULE)-objs += spl-vnode.o
$(MODULE)-objs += spl-err.o
$(MODULE)-objs += spl-kobj.o
$(MODULE)-objs += spl-generic.o
$(MODULE)-objs += spl-atomic.o
$(MODULE)-objs += spl-mutex.o
$(MODULE)-objs += spl-kstat.o
$(MODULE)-objs += spl-condvar.o
$(MODULE)-objs += spl-xdr.o
$(MODULE)-objs += spl-cred.o
$(MODULE)-objs += spl-tsd.o
$(MODULE)-objs += spl-zlib.o

View File

@ -1,25 +1,28 @@
# Makefile.in for splat kernel module
src = @abs_top_srcdir@/module/splat
obj = @abs_builddir@
MODULE := splat
EXTRA_CFLAGS = $(SPL_MODULE_CFLAGS) @KERNELCPPFLAGS@
# Solaris Porting LAyer Tests
obj-$(CONFIG_SPL) := $(MODULE).o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-ctl.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-kmem.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-taskq.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-random.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-mutex.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-condvar.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-thread.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-rwlock.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-time.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-vnode.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-kobj.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-atomic.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-list.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-generic.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-cred.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-zlib.o
$(MODULE)-objs += @top_srcdir@/module/splat/splat-linux.o
$(MODULE)-objs += splat-ctl.o
$(MODULE)-objs += splat-kmem.o
$(MODULE)-objs += splat-taskq.o
$(MODULE)-objs += splat-random.o
$(MODULE)-objs += splat-mutex.o
$(MODULE)-objs += splat-condvar.o
$(MODULE)-objs += splat-thread.o
$(MODULE)-objs += splat-rwlock.o
$(MODULE)-objs += splat-time.o
$(MODULE)-objs += splat-vnode.o
$(MODULE)-objs += splat-kobj.o
$(MODULE)-objs += splat-atomic.o
$(MODULE)-objs += splat-list.o
$(MODULE)-objs += splat-generic.o
$(MODULE)-objs += splat-cred.o
$(MODULE)-objs += splat-zlib.o
$(MODULE)-objs += splat-linux.o

View File

@ -1,4 +1,4 @@
EXTRA_DIST = check.sh dkms.mkconf dkms.postbuild kmodtool
check:
$(top_srcdir)/scripts/check.sh
scripts/check.sh