diff --git a/Makefile b/Makefile
index 3c7987ab1eab4cc178813d3d8cc70627cbf4d92c..5b8532a2f5c1ad316f4701d60e1a2cd9c1969dca 100644
--- a/Makefile
+++ b/Makefile
@@ -130,6 +130,8 @@ endef
 
 $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
 
+include $(SRC_PATH)/doc/Makefile
+
 define DOPROG
 OBJS-$(1) += $(1).o $(EXEOBJS) $(OBJS-$(1)-yes)
 $(1)$(EXESUF): $$(OBJS-$(1))
@@ -203,7 +205,6 @@ config:
 
 check: all alltools checkheaders examples testprogs fate
 
-include $(SRC_PATH)/doc/Makefile
 include $(SRC_PATH)/tests/Makefile
 
 $(sort $(OBJDIRS)):
diff --git a/configure b/configure
index c85d64bb3d3199757eb930e4e4226272bfc3871b..ed1c500778a1cbdfc089eb37c8b4d91968efac90 100755
--- a/configure
+++ b/configure
@@ -1041,6 +1041,10 @@ COMPONENT_LIST="
     protocols
 "
 
+EXAMPLE_LIST="
+    output_example
+"
+
 EXTERNAL_LIBRARY_LIST="
     avisynth
     bzlib
@@ -1102,6 +1106,7 @@ PROGRAM_LIST="
 
 CONFIG_LIST="
     $COMPONENT_LIST
+    $EXAMPLE_LIST
     $EXTERNAL_LIBRARY_LIST
     $HWACCEL_LIST
     $LIBRARY_LIST
@@ -1944,6 +1949,9 @@ ocv_filter_deps="libopencv"
 scale_filter_deps="swscale"
 yadif_filter_deps="gpl"
 
+# examples
+output_example_deps="avcodec avformat avutil swscale"
+
 # libraries
 avcodec_deps="avutil"
 avdevice_deps="avutil avcodec avformat"
@@ -2002,7 +2010,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
diff --git a/doc/Makefile b/doc/Makefile
index 3ab09402cfd70a6d73142b1782bdcb56aec95d0d..58fef0b7986bb63bc1f94adb16e16fdcbb9e6459 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -15,11 +15,20 @@ DOCS-$(CONFIG_PERL)                             += $(MANPAGES) $(PODPAGES)
 DOCS-$(CONFIG_TEXI2HTML)                        += $(HTMLPAGES)
 DOCS = $(DOCS-yes)
 
+DOC_EXAMPLES-$(CONFIG_OUTPUT_EXAMPLE)           += output
+ALL_DOC_EXAMPLES = output
+
+DOC_EXAMPLES     := $(DOC_EXAMPLES-yes:%=doc/examples/%$(EXESUF))
+ALL_DOC_EXAMPLES := $(ALL_DOC_EXAMPLES:%=doc/examples/%$(EXESUF))
+PROGS            += $(DOC_EXAMPLES)
+
 all: $(DOCS)
 
 apidoc: doc/doxy/html
 documentation: $(DOCS)
 
+examples: $(DOC_EXAMPLES)
+
 TEXIDEP = awk '/^@include/ { printf "$@: $(@D)/%s\n", $$2 }' <$< >$(@:%=%.d)
 
 GENTEXI  = format codec
@@ -44,6 +53,8 @@ doc/%.1: doc/%.pod $(GENTEXI)
 	$(M)pod2man --section=1 --center=" " --release=" " $< > $@
 
 $(DOCS) doc/doxy/html: | doc/
+$(DOC_EXAMPLES:%=%.o): | doc/examples
+OBJDIRS += doc/examples
 
 doc/doxy/html: $(SRC_PATH)/doc/Doxyfile $(INSTHEADERS)
 	$(M)$(SRC_PATH)/doc/doxy-wrapper.sh $(SRC_PATH) $^
@@ -68,7 +79,9 @@ uninstall-man:
 	$(RM) $(addprefix "$(MANDIR)/man1/",$(ALLMANPAGES))
 
 clean::
-	$(RM) doc/*.html doc/*.pod doc/*.1 $(CLEANSUFFIXES:%=doc/%) doc/avoptions_*.texi
+	$(RM) $(ALL_DOC_EXAMPLES)
+	$(RM) $(CLEANSUFFIXES:%=doc/%) $(CLEANSUFFIXES:%=doc/examples/%)
+	$(RM) doc/*.html doc/*.pod doc/*.1 doc/avoptions_*.texi
 	$(RM) -r doc/doxy/html
 
 -include $(wildcard $(DOCS:%=%.d))
diff --git a/libavformat/output-example.c b/doc/examples/output.c
similarity index 99%
rename from libavformat/output-example.c
rename to doc/examples/output.c
index eb8cb7d8e32818337061f3c37be8894f022d7772..2cd11f2ddc31f6234e05933cad577d0621830395 100644
--- a/libavformat/output-example.c
+++ b/doc/examples/output.c
@@ -24,7 +24,7 @@
  * @file
  * libavformat API example.
  *
- * @example libavformat/output-example.c
+ * @example doc/examples/output.c
  * Output a media file in any supported libavformat format.
  * The default codecs are used.
  */
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 71350719fb0ad8633da1f445409105c35636ad70..c66b4c6833b00f1b73a640eefd3639155d33ce8a 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -392,7 +392,6 @@ SKIPHEADERS-$(CONFIG_FFRTMPCRYPT_PROTOCOL) += rtmpdh.h
 SKIPHEADERS-$(CONFIG_NETWORK)            += network.h rtsp.h
 
 EXAMPLES  = metadata                                                    \
-            output                                                      \
 
 TESTPROGS = seek                                                        \
             srtp                                                        \
@@ -404,6 +403,3 @@ TOOLS     = aviocat                                                     \
             ismindex                                                    \
             pktdumper                                                   \
             probetest                                                   \
-
-$(SUBDIR)output-example$(EXESUF): ELIBS = $(patsubst %,$(LD_LIB),swscale avutil)
-$(SUBDIR)output-example$(EXESUF): $(call PATH_LIBNAME,swscale)