---

This is what a moderately clean integration of complex examples into the
build system could look like.  The naming is clearly suboptimal, there
may be further kinks I overlooked.  Possibly some more refactoring could
be done beforehand.

 Makefile  |   11 ++++++++---
 configure |   11 ++++++++++-
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 906bd86..a8f3ac2 100644
--- a/Makefile
+++ b/Makefile
@@ -56,11 +56,15 @@ COMPILE_S = $(call COMPILE,AS)
 
 %.c %.h: TAG = GEN
 
+DOC_EXAMPLES-$(CONFIG_MP3_AAC) += doc/examples/mp3_aac
+ALL_DOC_EXAMPLES += doc/examples/mp3_aac
+
 PROGS-$(CONFIG_AVCONV)   += avconv
 PROGS-$(CONFIG_AVPLAY)   += avplay
 PROGS-$(CONFIG_AVPROBE)  += avprobe
 PROGS-$(CONFIG_AVSERVER) += avserver
 
+DOC_EXAMPLES := $(DOC_EXAMPLES-yes:%=%$(EXESUF))
 PROGS      := $(PROGS-yes:%=%$(EXESUF))
 OBJS-avconv = avconv_opt.o avconv_filter.o
 TESTTOOLS   = audiogen videogen rotozoom tiny_psnr base64
@@ -93,6 +97,7 @@ FF_EXTRALIBS := $(FFEXTRALIBS)
 FF_DEP_LIBS  := $(DEP_LIBS)
 
 all: $(PROGS)
+examples: $(DOC_EXAMPLES)
 
 $(TOOLS): %$(EXESUF): %.o $(EXEOBJS)
        $(LD) $(LDFLAGS) $(LD_O) $^ $(ELIBS)
@@ -136,9 +141,9 @@ $(1)$(EXESUF): FF_EXTRALIBS += $(LIBS-$(1))
 -include $$(OBJS-$(1):.o=.d)
 endef
 
-$(foreach P,$(PROGS-yes),$(eval $(call DOPROG,$(P))))
+$(foreach P,$(DOC_EXAMPLES-yes) $(PROGS-yes),$(eval $(call DOPROG,$(P))))
 
-$(PROGS): %$(EXESUF): %.o $(FF_DEP_LIBS)
+$(DOC_EXAMPLES) $(PROGS): %$(EXESUF): %.o $(FF_DEP_LIBS)
        $(LD) $(LDFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS)
 
 OBJDIRS += tools
@@ -186,7 +191,7 @@ uninstall-data:
        $(RM) -r "$(DATADIR)"
 
 clean::
-       $(RM) $(ALLPROGS)
+       $(RM) $(ALLPROGS) $(ALL_DOC_EXAMPLES)
        $(RM) $(CLEANSUFFIXES)
        $(RM) $(CLEANSUFFIXES:%=tools/%)
        $(RM) -rf coverage.info lcov
diff --git a/configure b/configure
index 4aa66c0..5fd2f28 100755
--- a/configure
+++ b/configure
@@ -1041,6 +1041,10 @@ COMPONENT_LIST="
     protocols
 "
 
+EXAMPLE_LIST="
+    mp3_aac
+"
+
 EXTERNAL_LIBRARY_LIST="
     avisynth
     bzlib
@@ -1102,6 +1106,7 @@ PROGRAM_LIST="
 
 CONFIG_LIST="
     $COMPONENT_LIST
+    $EXAMPLE_LIST
     $EXTERNAL_LIBRARY_LIST
     $HWACCEL_LIST
     $LIBRARY_LIST
@@ -1959,6 +1964,10 @@ avserver_deps="avformat fork !shared"
 avserver_select="ffm_muxer rtp_protocol rtsp_demuxer"
 avserver_extralibs='$ldl'
 
+# examples
+
+mp3_aac_deps="avcodec avformat avresample"
+
 doc_deps="texi2html"
 
 # default parameters
@@ -1999,7 +2008,7 @@ target_os_default=$(tolower $(uname -s))
 host_os=$target_os_default
 
 # configurable options
-enable $LIBRARY_LIST $PROGRAM_LIST
+enable $EXAMPLE_LIST $LIBRARY_LIST $PROGRAM_LIST
 
 enable asm
 enable debug
-- 
1.7.9.5

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to