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

View File

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

View File

@ -2,7 +2,7 @@ COMMON_H =
KERNEL_H = \ KERNEL_H = \
$(top_srcdir)/include/util/qsort.h \ $(top_srcdir)/include/util/qsort.h \
$(top_srcdir)/include/util/sscanf.h $(top_srcdir)/include/util/sscanf.h
USER_H = USER_H =

View File

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

View File

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

View File

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