Skip to content

Commit

Permalink
Support parallel build trees (VPATH builds)
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue openzfs/zfs#1082
  • Loading branch information
FransUrbo authored and behlendorf committed Jul 17, 2015
1 parent 77ab5dd commit 37d7cd9
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 44 deletions.
10 changes: 5 additions & 5 deletions Makefile.am
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion config/rpm.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion include/util/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ COMMON_H =

KERNEL_H = \
$(top_srcdir)/include/util/qsort.h \
$(top_srcdir)/include/util/sscanf.h
$(top_srcdir)/include/util/sscanf.h

USER_H =

Expand Down
41 changes: 22 additions & 19 deletions module/spl/Makefile.in
Original file line number Diff line number Diff line change
@@ -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
37 changes: 20 additions & 17 deletions module/splat/Makefile.in
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion scripts/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
EXTRA_DIST = check.sh dkms.mkconf dkms.postbuild kmodtool

check:
$(top_srcdir)/scripts/check.sh
scripts/check.sh

0 comments on commit 37d7cd9

Please sign in to comment.