Declaring tools associated with each library in their respective
makefiles allows these tools to easily depend on the correct
prerequisites and link against the libs they need.

Signed-off-by: Mans Rullgard <[email protected]>
---
 Makefile             |   21 ++++++++-------------
 common.mak           |    6 ++++++
 libavfilter/Makefile |    2 ++
 libavformat/Makefile |    1 +
 subdir.mak           |    4 ++--
 tests/Makefile       |    3 ---
 6 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/Makefile b/Makefile
index 9f7b436..720936a 100644
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,8 @@ PROGS      := $(PROGS-yes:%=%$(EXESUF))
 OBJS        = $(PROGS-yes:%=%.o) cmdutils.o
 TESTTOOLS   = audiogen videogen rotozoom tiny_psnr base64
 HOSTPROGS  := $(TESTTOOLS:%=tests/%)
+TOOLS       = qt-faststart trasher
+TOOLS-$(CONFIG_ZLIB) += cws2fws
 
 BASENAMES   = ffmpeg ffplay ffprobe ffserver
 ALLPROGS    = $(BASENAMES:%=%$(EXESUF))
@@ -86,6 +88,11 @@ FF_DEP_LIBS  := $(DEP_LIBS)
 
 all: $(FF_DEP_LIBS) $(PROGS)
 
+$(TOOLS): %$(EXESUF): %.o
+       $(LD) $(LDFLAGS) -o $@ $< $(ELIBS)
+
+tools/cws2fws$(EXESUF): ELIBS = -lz
+
 config.h: .config
 .config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c))
        @-tput bold 2>/dev/null
@@ -94,7 +101,7 @@ config.h: .config
 
 SUBDIR_VARS := OBJS FFLIBS CLEANFILES DIRS TESTPROGS EXAMPLES SKIPHEADERS \
                ALTIVEC-OBJS MMX-OBJS NEON-OBJS X86-OBJS YASM-OBJS-FFT 
YASM-OBJS \
-               HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS ARMV6-OBJS
+               HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS ARMV6-OBJS TOOLS
 
 define RESET
 $(1) :=
@@ -116,18 +123,6 @@ ffserver$(EXESUF): FF_LDFLAGS += $(FFSERVERLDFLAGS)
 $(PROGS): %$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS)
        $(LD) $(FF_LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS)
 
-TOOLS     = cws2fws graph2dot lavfi-showfiltfmts pktdumper probetest 
qt-faststart trasher
-TOOLOBJS := $(TOOLS:%=tools/%.o)
-TOOLS    := $(TOOLS:%=tools/%$(EXESUF))
-
-alltools: $(TOOLS)
-
-tools/%$(EXESUF): tools/%.o
-       $(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
-
-$(TOOLOBJS): %.o: %.c | tools
-       $(CC) $(CPPFLAGS) $(CFLAGS) -c $(CC_O) $<
-
 OBJDIRS += tools
 
 -include $(wildcard tools/*.d)
diff --git a/common.mak b/common.mak
index bd21046..da51495 100644
--- a/common.mak
+++ b/common.mak
@@ -20,6 +20,9 @@ TESTOBJS  := $(TESTOBJS:%=$(SUBDIR)%) 
$(TESTPROGS:%=$(SUBDIR)%-test.o)
 TESTPROGS := $(TESTPROGS:%=$(SUBDIR)%-test$(EXESUF))
 HOSTOBJS  := $(HOSTPROGS:%=$(SUBDIR)%.o)
 HOSTPROGS := $(HOSTPROGS:%=$(SUBDIR)%$(HOSTEXESUF))
+TOOLS     += $(TOOLS-yes)
+TOOLOBJS  := $(TOOLS:%=tools/%.o)
+TOOLS     := $(TOOLS:%=tools/%$(EXESUF))
 
 DEP_LIBS := $(foreach 
NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
 
@@ -28,6 +31,8 @@ SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-)
 SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%)
 checkheaders: $(filter-out $(SKIPHEADERS:.h=.ho),$(ALLHEADERS:.h=.ho))
 
+alltools: $(TOOLS)
+
 $(HOSTOBJS): %.o: %.c
        $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
 
@@ -37,6 +42,7 @@ $(HOSTPROGS): %$(HOSTEXESUF): %.o
 $(OBJS):     | $(dir $(OBJS))
 $(HOSTOBJS): | $(dir $(HOSTOBJS))
 $(TESTOBJS): | $(dir $(TESTOBJS))
+$(TOOLOBJS): | tools
 
 OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOSTOBJS) $(TESTOBJS))
 
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 0201607..1a6fd9b 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -62,4 +62,6 @@ OBJS-$(CONFIG_NULLSINK_FILTER)               += 
vsink_nullsink.o
 
 DIRS = x86
 
+TOOLS = graph2dot lavfi-showfiltfmts
+
 include $(SRC_PATH)/subdir.mak
diff --git a/libavformat/Makefile b/libavformat/Makefile
index a20db26..ca337e0 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -335,6 +335,7 @@ OBJS-$(CONFIG_JACK_INDEV)                += timefilter.o
 
 EXAMPLES  = metadata output
 TESTPROGS = timefilter
+TOOLS     = pktdumper probetest
 
 include $(SRC_PATH)/subdir.mak
 
diff --git a/subdir.mak b/subdir.mak
index 3a38daf..a88955b 100644
--- a/subdir.mak
+++ b/subdir.mak
@@ -34,7 +34,7 @@ install-libs-$(CONFIG_STATIC): install-lib$(NAME)-static
 install-libs-$(CONFIG_SHARED): install-lib$(NAME)-shared
 
 define RULES
-$(SUBDIR)%$(EXESUF): $(SUBDIR)%.o
+$(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
        $$(LD) $(FFLDFLAGS) -o $$@ $$^ -l$(FULLNAME) $(FFEXTRALIBS) $$(ELIBS)
 
 $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR)
@@ -91,7 +91,7 @@ endef
 
 $(eval $(RULES))
 
-$(EXAMPLES) $(TESTPROGS): $(THIS_LIB) $(DEP_LIBS)
+$(EXAMPLES) $(TESTPROGS) $(TOOLS): $(THIS_LIB) $(DEP_LIBS)
 
 examples: $(EXAMPLES)
 testprogs: $(TESTPROGS)
diff --git a/tests/Makefile b/tests/Makefile
index 431a404..501a72f 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -31,9 +31,6 @@ tests/data/asynth1.sw tests/vsynth%/00.pgm: TAG = GEN
 tests/seek_test$(EXESUF): tests/seek_test.o $(FF_DEP_LIBS)
        $(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
 
-tools/lavfi-showfiltfmts$(EXESUF): tools/lavfi-showfiltfmts.o $(FF_DEP_LIBS)
-       $(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
-
 include $(SRC_PATH)/tests/fate.mak
 include $(SRC_PATH)/tests/fate2.mak
 
-- 
1.7.6

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to