summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2013-06-11 18:15:17 -0500
committerDavid Sterba <dsterba@suse.cz>2013-09-10 01:34:50 +0200
commitdd4d4260d192434a99ca271e18f1e26d6ad6d737 (patch)
tree2abb36d5512d4a6c69c1228db7516b9bb95db98b /Makefile
parentd608d404c3b5312d086401847b9f30df4f790861 (diff)
Btrfs-progs: Add Makefile infrastructure for subdirs
Preparatory patch to move cmd & test files into their own subdirs. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile37
1 files changed, 30 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index d6acd942..25e05447 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,6 @@
+# Export all variables to sub-makes by default
+export
+
CC = gcc
LN = ln
AR = ar
@@ -50,6 +53,18 @@ btrfs_convert_libs = -lext2fs -lcom_err
btrfs_image_libs = -lpthread
btrfs_fragment_libs = -lgd -lpng -ljpeg -lfreetype
+SUBDIRS = man
+BUILDDIRS = $(patsubst %,build-%,$(SUBDIRS))
+INSTALLDIRS = $(patsubst %,install-%,$(SUBDIRS))
+CLEANDIRS = $(patsubst %,clean-%,$(SUBDIRS))
+
+.PHONY: $(SUBDIRS)
+.PHONY: $(BUILDDIRS)
+.PHONY: $(INSTALLDIRS)
+.PHONY: $(TESTDIRS)
+.PHONY: $(CLEANDIRS)
+.PHONY: all install clean
+
# Create all the static targets
static_objects = $(patsubst %.o, %.static.o, $(objects))
static_cmds_objects = $(patsubst %.o, %.static.o, $(cmds_objects))
@@ -102,7 +117,11 @@ endif
@echo " [CC] $@"
$(Q)$(CC) $(AM_CFLAGS) $(STATIC_CFLAGS) -c $< -o $@
-all: $(progs) manpages
+all: $(progs) manpages $(BUILDDIRS)
+$(SUBDIRS): $(BUILDDIRS)
+$(BUILDDIRS):
+ @echo "Making all in $(patsubst build-%,%,$@)"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $(patsubst build-%,%,$@)
#
# NOTE: For static compiles, you need to have all the required libs
@@ -195,19 +214,19 @@ send-test: $(objects) $(libs) send-test.o
manpages:
$(Q)$(MAKE) $(MAKEOPTS) -C man
-install-man:
- cd man; $(MAKE) install
-
-clean :
+clean: $(CLEANDIRS)
@echo "Cleaning"
$(Q)rm -f $(progs) cscope.out *.o *.o.d btrfs-convert btrfs-image btrfs-select-super \
btrfs-zero-log btrfstune dir-test ioctl-test quick-test send-test btrfsck \
btrfs.static mkfs.btrfs.static btrfs-calc-size \
version.h $(check_defs) \
$(libs) $(lib_links)
- $(Q)$(MAKE) $(MAKEOPTS) -C man $@
-install: $(libs) $(progs) install-man
+$(CLEANDIRS):
+ @echo "Cleaning $(patsubst clean-%,%,$@)"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $(patsubst clean-%,%,$@) clean
+
+install: $(libs) $(progs) $(INSTALLDIRS)
$(INSTALL) -m755 -d $(DESTDIR)$(bindir)
$(INSTALL) $(progs) $(DESTDIR)$(bindir)
# btrfsck is a link to btrfs in the src tree, make it so for installed file as well
@@ -218,6 +237,10 @@ install: $(libs) $(progs) install-man
$(INSTALL) -m755 -d $(DESTDIR)$(incdir)
$(INSTALL) -m644 $(headers) $(DESTDIR)$(incdir)
+$(INSTALLDIRS):
+ @echo "Making install in $(patsubst install-%,%,$@)"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $(patsubst install-%,%,$@) install
+
ifneq ($(MAKECMDGOALS),clean)
-include $(objects:.o=.o.d) $(cmd-objects:.o=.o.d) $(subst .btrfs,, $(filter-out btrfsck.o.d, $(progs:=.o.d)))
endif