btrfs-progs: fix build of standalone utilities after clean
authorDavid Sterba <dsterba@suse.com>
Tue, 22 Mar 2016 17:29:24 +0000 (18:29 +0100)
committerDavid Sterba <dsterba@suse.com>
Wed, 30 Mar 2016 14:25:53 +0000 (16:25 +0200)
$ make clean
$ make btrfs-debug-tree

will fail because the dependency from $(btrfs_debug_tree_objects) is
missing. The variable standalone_deps magically collects all the deps
and will build them in advance. The simple fix to use the existing
substitution based on $@ does not work for pattern rules, as Noah found
out.

Reported-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Makefile.in

index c553c5f..cda90ef 100644 (file)
@@ -129,6 +129,9 @@ btrfs_fragments_libs = -lgd -lpng -ljpeg -lfreetype
 btrfs_debug_tree_objects = cmds-inspect-dump-tree.o
 btrfs_show_super_objects = cmds-inspect-dump-super.o
 
+# collect values of the variables above
+standalone_deps = $(foreach dep,$(patsubst %,%_objects,$(subst -,_,$(filter btrfs-%, $(progs)))),$($(dep)))
+
 SUBDIRS =
 BUILDDIRS = $(patsubst %,build-%,$(SUBDIRS))
 INSTALLDIRS = $(patsubst %,install-%,$(SUBDIRS))
@@ -251,14 +254,14 @@ $(lib_links):
 # For static variants, use an extra $(subst) to get rid of the ".static"
 # from the target name before translating to list of libs
 
-btrfs-%.static: $(static_objects) btrfs-%.static.o $(static_libbtrfs_objects)
+btrfs-%.static: $(static_objects) btrfs-%.static.o $(static_libbtrfs_objects) $(patsubst %.o,%.static.o,$(standalone_deps))
        @echo "    [LD]     $@"
        $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $@.o $(static_objects) \
                $(patsubst %.o, %.static.o, $($(subst -,_,$(subst .static,,$@)-objects))) \
                $(static_libbtrfs_objects) $(STATIC_LDFLAGS) \
                $($(subst -,_,$(subst .static,,$@)-libs)) $(STATIC_LIBS)
 
-btrfs-%: $(objects) $(libs_static) btrfs-%.o
+btrfs-%: $(objects) $(libs_static) btrfs-%.o $(standalone_deps)
        @echo "    [LD]     $@"
        $(Q)$(CC) $(CFLAGS) -o $@ $(objects) $@.o \
                $($(subst -,_,$@-objects)) \