summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am12
-rw-r--r--appliance/Makefile.am2
-rw-r--r--capitests/Makefile.am9
-rw-r--r--daemon/Makefile.am26
-rw-r--r--examples/Makefile.am2
-rw-r--r--fish/Makefile.am21
-rw-r--r--fuse/Makefile.am2
-rw-r--r--haskell/Makefile.am12
-rw-r--r--images/Makefile.am2
-rw-r--r--inspector/Makefile.am2
-rw-r--r--java/Makefile.am10
-rw-r--r--ocaml/Makefile.am13
-rw-r--r--perl/Makefile.am13
-rw-r--r--python/Makefile.am11
-rw-r--r--regressions/Makefile.am2
-rw-r--r--ruby/Makefile.am11
-rw-r--r--src/Makefile.am35
-rw-r--r--subdir-rules.mk29
-rw-r--r--test-tool/Makefile.am2
-rw-r--r--tools/Makefile.am2
20 files changed, 171 insertions, 47 deletions
diff --git a/Makefile.am b/Makefile.am
index 87efb2dc..9332a10d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = gnulib/lib hivex src daemon appliance fish po examples images \
@@ -54,9 +56,15 @@ if HAVE_HASKELL
SUBDIRS += haskell
endif
+generator_built = \
+ guestfs-structs.pod \
+ guestfs-actions.pod \
+ guestfish-actions.pod
+
EXTRA_DIST = \
- guestfs.pod guestfs-actions.pod guestfs-structs.pod \
- guestfish.pod guestfish-actions.pod \
+ $(generator_built) \
+ guestfs.pod \
+ guestfish.pod \
html/pod.css \
HACKING TODO \
libguestfs.pc libguestfs.pc.in \
diff --git a/appliance/Makefile.am b/appliance/Makefile.am
index b9bf9533..bf1183da 100644
--- a/appliance/Makefile.am
+++ b/appliance/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
EXTRA_DIST = \
libguestfs-supermin-helper \
kmod.whitelist.in \
diff --git a/capitests/Makefile.am b/capitests/Makefile.am
index 3b80c0e2..74bfab0c 100644
--- a/capitests/Makefile.am
+++ b/capitests/Makefile.am
@@ -15,8 +15,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-EXTRA_DIST = \
- tests.c
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = tests.c
+
+BUILT_SOURCES = $(generator_built)
+
+EXTRA_DIST = $(BUILT_SOURCES)
# Tests. These are auto-generated from the test descriptions
# in the generator.
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index d049da6d..1716c2f5 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -19,6 +19,25 @@ ACLOCAL_AMFLAGS = -I m4
SUBDIRS = lib tests .
+libsrcdir = $(top_builddir)/../src
+
+generator_built = \
+ actions.h \
+ stubs.c \
+ names.c
+
+.PHONY: force
+
+$(generator_built): force
+ $(MAKE) -C $(libsrcdir) stamp-generator
+
+BUILT_SOURCES = $(generator_built)
+
+EXTRA_DIST = $(BUILT_SOURCES)
+
+$(libsrcdir)/guestfs_protocol.o: force
+ $(MAKE) -C $(libsrcdir) guestfs_protocol.o
+
noinst_PROGRAMS = guestfsd
guestfsd_SOURCES = \
actions.h \
@@ -83,11 +102,8 @@ guestfsd_SOURCES = \
wc.c \
xattr.c \
zero.c \
- zerofree.c \
- $(top_builddir)/../src/guestfs_protocol.h \
- $(top_builddir)/../src/guestfs_protocol.c
+ zerofree.c
+guestfsd_LDADD = $(libsrcdir)/guestfs_protocol.o lib/libgnu.a
AM_CPPFLAGS = -I$(srcdir)/lib -Ilib
guestfsd_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
-
-LDADD = lib/libgnu.a
diff --git a/examples/Makefile.am b/examples/Makefile.am
index adbb9343..04bbe5e4 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1,5 +1,7 @@
# libguestfs examples
+include $(top_srcdir)/subdir-rules.mk
+
noinst_PROGRAMS = hello to-xml
hello_SOURCES = hello.c
diff --git a/fish/Makefile.am b/fish/Makefile.am
index c8ba3ea4..795952a9 100644
--- a/fish/Makefile.am
+++ b/fish/Makefile.am
@@ -15,17 +15,26 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
bin_PROGRAMS = guestfish
+generator_built = \
+ cmds.c \
+ completion.c
+
+BUILT_SOURCES = \
+ $(generator_built) \
+ rc_protocol.h \
+ rc_protocol.c
+
EXTRA_DIST = \
+ $(BUILT_SOURCES) \
rc_protocol.x
-CLEANFILES = rc_protocol.c rc_protocol.h
-
guestfish_SOURCES = \
+ $(generator_built) \
alloc.c \
- cmds.c \
- completion.c \
destpaths.c \
echo.c \
edit.c \
@@ -44,10 +53,6 @@ guestfish_SOURCES = \
librc_protocol_la_SOURCES = rc_protocol.c
librc_protocol_la_CFLAGS = -Wall -Wno-unused
-BUILT_SOURCES = \
- rc_protocol.c \
- rc_protocol.h
-
guestfish_CFLAGS = \
-I$(top_srcdir)/src -I$(top_builddir)/src \
-I$(top_srcdir)/fish -I$(top_builddir)/fish \
diff --git a/fuse/Makefile.am b/fuse/Makefile.am
index d582c651..5ffdb95b 100644
--- a/fuse/Makefile.am
+++ b/fuse/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
EXTRA_DIST = guestmount.pod test-fuse.sh
if HAVE_FUSE
diff --git a/haskell/Makefile.am b/haskell/Makefile.am
index dcaf18a5..1836a147 100644
--- a/haskell/Makefile.am
+++ b/haskell/Makefile.am
@@ -15,7 +15,15 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-EXTRA_DIST = *.hs run-bindtests
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
+ Guestfs.hs \
+ Bindtests.hs
+
+# $(generator_built) isn't redundant below as the wildcard rule won't match, and
+# therefore won't generate, the files if they haven't been created yet
+EXTRA_DIST = $(generator_built) *.hs run-bindtests
CLEANFILES = *~
@@ -32,6 +40,8 @@ check_DATA = Bindtests
GHCFLAGS = -I$(top_builddir)/src -L$(top_builddir)/src/.libs
+all: Bindtests Guestfs005Load Guestfs010Launch Guestfs050LVCreate
+
Bindtests: Bindtests.hs Guestfs.hs
$(GHC) $(GHCFLAGS) -main-is $(shell basename $@) --make -o $@ $< -lguestfs
diff --git a/images/Makefile.am b/images/Makefile.am
index ff6bc5d5..c30d8c4c 100644
--- a/images/Makefile.am
+++ b/images/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
# Old RHEL 5 autoconf doesn't have builddir.
builddir ?= $(top_builddir)/images
diff --git a/inspector/Makefile.am b/inspector/Makefile.am
index 058e5655..08787258 100644
--- a/inspector/Makefile.am
+++ b/inspector/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
EXTRA_DIST = \
run-inspector-locally \
virt-inspector \
diff --git a/java/Makefile.am b/java/Makefile.am
index 6ddf8b48..abd11ee0 100644
--- a/java/Makefile.am
+++ b/java/Makefile.am
@@ -15,9 +15,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
# Old RHEL 5 autoconf doesn't have builddir.
builddir ?= $(top_builddir)/java
+# XXX: Need to fix generator.ml dependencies
+#
+# Files generated by generator.ml:
+# Makefile.inc
+# All files listed in Makefile.inc
+# com_redhat_et_libguestfs_GuestFS.c
+# Bindtests.java
+
java_prefix = com/redhat/et/libguestfs
# Pull in automatically generated built sources
diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am
index bb7407af..5b51497f 100644
--- a/ocaml/Makefile.am
+++ b/ocaml/Makefile.am
@@ -15,12 +15,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
+ guestfs.mli \
+ guestfs.ml \
+ guestfs_c_actions.c \
+ bindtests.ml
+
EXTRA_DIST = \
- guestfs.mli guestfs.ml \
- guestfs_c.c guestfs_c.h guestfs_c_actions.c \
+ $(generator_built) \
+ guestfs_c.c guestfs_c.h \
guestfs_inspector.mli guestfs_inspector.ml \
.depend META.in \
- bindtests.ml \
run-bindtests \
t/*.ml
diff --git a/perl/Makefile.am b/perl/Makefile.am
index 4b7ed993..b7662443 100644
--- a/perl/Makefile.am
+++ b/perl/Makefile.am
@@ -15,17 +15,22 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
+ Guestfs.xs \
+ lib/Sys/Guestfs.pm \
+ bindtests.pl
+
EXTRA_DIST = \
+ $(generator_built) \
Makefile.PL.in \
- Guestfs.xs \
examples/README \
examples/LICENSE \
examples/*.pl \
- lib/Sys/Guestfs.pm \
lib/Sys/Guestfs/Lib.pm \
run-bindtests \
run-perl-tests \
- bindtests.pl \
t/*.t \
typemap
@@ -42,7 +47,7 @@ TESTS_ENVIRONMENT = \
INSTALLDIRS = site
-all: Makefile-pl
+all: Makefile-pl $(generator_built)
$(MAKE) -f Makefile-pl
Makefile-pl: Makefile.PL
diff --git a/python/Makefile.am b/python/Makefile.am
index da52cfa3..519bda7c 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -18,10 +18,15 @@
# Old RHEL 5 autoconf doesn't have builddir.
builddir ?= $(top_builddir)/python
-EXTRA_DIST = \
- guestfs.py \
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
guestfs-py.c \
- bindtests.py \
+ guestfs.py \
+ bindtests.py
+
+EXTRA_DIST = \
+ $(generator_built) \
run-bindtests \
run-python-tests \
t/*.py
diff --git a/regressions/Makefile.am b/regressions/Makefile.am
index 058b60dc..7ceb0cee 100644
--- a/regressions/Makefile.am
+++ b/regressions/Makefile.am
@@ -21,6 +21,8 @@
#
# See also capitests/
+include $(top_srcdir)/subdir-rules.mk
+
TESTS = \
rhbz503169c10.sh \
rhbz503169c13.sh \
diff --git a/ruby/Makefile.am b/ruby/Makefile.am
index 7ea01074..82d130dd 100644
--- a/ruby/Makefile.am
+++ b/ruby/Makefile.am
@@ -15,14 +15,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
+ ext/guestfs/_guestfs.c \
+ bindtests.rb
+
EXTRA_DIST = \
+ $(generator_built) \
Rakefile.in \
- ext/guestfs/_guestfs.c \
ext/guestfs/extconf.rb \
lib/guestfs.rb \
run-bindtests \
run-ruby-tests \
- bindtests.rb \
tests/tc_*.rb
CLEANFILES = \
@@ -43,7 +48,7 @@ TESTS_ENVIRONMENT = \
LD_LIBRARY_PATH=$(top_builddir)/src/.libs \
LIBGUESTFS_PATH=$(top_builddir)/appliance
-all:
+all: $(generator_built)
rake build
endif
diff --git a/src/Makefile.am b/src/Makefile.am
index 2774ffcd..f3abe35b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,12 +15,28 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-EXTRA_DIST = \
+include $(top_srcdir)/subdir-rules.mk
+
+generator_built = \
guestfs_protocol.x \
+ guestfs-structs.h \
+ guestfs-actions.h \
+ guestfs-internal-actions.h \
+ guestfs-actions.c \
+ guestfs-bindtests.c
+
+$(generator_built): stamp-generator
+
+BUILT_SOURCES = \
+ $(generator_built) \
+ guestfs_protocol.c \
+ guestfs_protocol.h
+
+EXTRA_DIST = \
+ $(BUILT_SOURCES) \
MAX_PROC_NR \
stamp-generator \
- generator.ml \
- guestfs-internal-actions.h
+ generator.ml
# Rerun the generator if it has changed.
# Git removes empty directories, so in cases where the
@@ -34,21 +50,10 @@ stamp-generator: generator.ml
mkdir -p $(top_srcdir)/java/com/redhat/et/libguestfs
cd $(top_srcdir) && ocaml -warn-error A src/generator.ml
-$(BUILT_SOURCES): stamp-generator
-
include_HEADERS = guestfs.h guestfs-actions.h guestfs-structs.h
lib_LTLIBRARIES = libguestfs.la
-BUILT_SOURCES = \
- guestfs_protocol.x \
- guestfs_protocol.c \
- guestfs_protocol.h \
- guestfs-structs.h \
- guestfs-actions.h \
- guestfs-actions.c \
- guestfs-bindtests.c
-
# This convenience library is solely to avoid compiler warnings
# in its generated sources.
libprotocol_la_SOURCES = \
@@ -57,8 +62,6 @@ libprotocol_la_SOURCES = \
libprotocol_la_CFLAGS =
-CLEANFILES = guestfs_protocol.c guestfs_protocol.h
-
# From the libtool info file, with comments:
#
# | 1. Start with version information of `0:0:0' for each libtool library.
diff --git a/subdir-rules.mk b/subdir-rules.mk
new file mode 100644
index 00000000..fd8bfef4
--- /dev/null
+++ b/subdir-rules.mk
@@ -0,0 +1,29 @@
+# libguestfs
+# Copyright (C) 2009 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Define a force dependency which will always be rebuilt
+.PHONY: force
+
+# Rebuild rules for common dependencies
+$(top_builddir)/src/libguestfs.la: force
+ $(MAKE) -C $(top_builddir)/src libguestfs.la
+
+# Automatically build targets defined in generator_built
+# generator_built is defined in individual Makefiles
+$(generator_built): $(top_builddir)/src/stamp-generator
+$(top_builddir)/src/stamp-generator: force
+ $(MAKE) -C $(top_builddir)/src stamp-generator
diff --git a/test-tool/Makefile.am b/test-tool/Makefile.am
index 510a42fc..d58f1377 100644
--- a/test-tool/Makefile.am
+++ b/test-tool/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
EXTRA_DIST = libguestfs-test-tool.pod
CLEANFILES =
diff --git a/tools/Makefile.am b/tools/Makefile.am
index f48edaea..3055ab74 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -15,6 +15,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+include $(top_srcdir)/subdir-rules.mk
+
tools = cat df edit ls rescue tar win-reg
EXTRA_DIST = \