diff --git a/Makefile b/Makefile index e4eb050226..43ce03130a 100644 --- a/Makefile +++ b/Makefile @@ -56,7 +56,6 @@ FFLIBS-$(CONFIG_SWSCALE) += swscale FFLIBS := avutil DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd -EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/Makefile $(SRC_PATH)/doc/examples/README SKIPHEADERS = compat/w32pthreads.h @@ -119,6 +118,7 @@ endef $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) include $(SRC_PATH)/doc/Makefile +include $(SRC_PATH)/doc/examples/Makefile define DOPROG OBJS-$(1) += $(1).o $(OBJS-$(1)-yes) @@ -168,10 +168,11 @@ install-progs: install-progs-yes $(AVPROGS) $(Q)mkdir -p "$(BINDIR)" $(INSTALL) -c -m 755 $(INSTPROGS) "$(BINDIR)" -install-data: $(DATA_FILES) $(EXAMPLES_FILES) +install-data: $(DATA_FILES) $(EXAMPLES_FILES) $(EXAMPLE_MAKEFILE) $(Q)mkdir -p "$(DATADIR)/examples" $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" $(INSTALL) -m 644 $(EXAMPLES_FILES) "$(DATADIR)/examples" + $(INSTALL) -m 644 -T $(EXAMPLE_MAKEFILE:%=%.example) "$(DATADIR)/examples/Makefile" uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data @@ -219,5 +220,4 @@ $(sort $(OBJDIRS)): # so this saves some time on slow systems. .SUFFIXES: -.PHONY: all all-yes alltools check *clean config install* -.PHONY: testprogs uninstall* +.PHONY: all all-yes alltools check *clean config install* testprogs uninstall* diff --git a/doc/Makefile b/doc/Makefile index ce6ecfaef2..bcde309878 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -36,33 +36,6 @@ DOCS-$(CONFIG_MANPAGES) += $(MANPAGES) DOCS-$(CONFIG_TXTPAGES) += $(TXTPAGES) DOCS = $(DOCS-yes) -DOC_EXAMPLES-$(CONFIG_AVIO_DIR_CMD_EXAMPLE) += avio_dir_cmd -DOC_EXAMPLES-$(CONFIG_AVIO_READING_EXAMPLE) += avio_reading -DOC_EXAMPLES-$(CONFIG_DECODE_AUDIO_EXAMPLE) += decode_audio -DOC_EXAMPLES-$(CONFIG_DECODE_VIDEO_EXAMPLE) += decode_video -DOC_EXAMPLES-$(CONFIG_DEMUXING_DECODING_EXAMPLE) += demuxing_decoding -DOC_EXAMPLES-$(CONFIG_ENCODE_AUDIO_EXAMPLE) += encode_audio -DOC_EXAMPLES-$(CONFIG_ENCODE_VIDEO_EXAMPLE) += encode_video -DOC_EXAMPLES-$(CONFIG_EXTRACT_MVS_EXAMPLE) += extract_mvs -DOC_EXAMPLES-$(CONFIG_FILTER_AUDIO_EXAMPLE) += filter_audio -DOC_EXAMPLES-$(CONFIG_FILTERING_AUDIO_EXAMPLE) += filtering_audio -DOC_EXAMPLES-$(CONFIG_FILTERING_VIDEO_EXAMPLE) += filtering_video -DOC_EXAMPLES-$(CONFIG_HTTP_MULTICLIENT_EXAMPLE) += http_multiclient -DOC_EXAMPLES-$(CONFIG_HW_DECODE_EXAMPLE) += hw_decode -DOC_EXAMPLES-$(CONFIG_METADATA_EXAMPLE) += metadata -DOC_EXAMPLES-$(CONFIG_MUXING_EXAMPLE) += muxing -DOC_EXAMPLES-$(CONFIG_QSVDEC_EXAMPLE) += qsvdec -DOC_EXAMPLES-$(CONFIG_REMUXING_EXAMPLE) += remuxing -DOC_EXAMPLES-$(CONFIG_RESAMPLING_AUDIO_EXAMPLE) += resampling_audio -DOC_EXAMPLES-$(CONFIG_SCALING_VIDEO_EXAMPLE) += scaling_video -DOC_EXAMPLES-$(CONFIG_TRANSCODE_AAC_EXAMPLE) += transcode_aac -DOC_EXAMPLES-$(CONFIG_TRANSCODING_EXAMPLE) += transcoding - -DOC_EXAMPLES := $(DOC_EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)$(EXESUF)) -ALL_DOC_EXAMPLES := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)$(EXESUF)) -ALL_DOC_EXAMPLES_G := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)_g$(EXESUF)) -PROGS += $(DOC_EXAMPLES) - all-$(CONFIG_DOC): doc doc: documentation @@ -70,8 +43,6 @@ doc: documentation apidoc: doc/doxy/html documentation: $(DOCS) -examples: $(DOC_EXAMPLES) - TEXIDEP = perl $(SRC_PATH)/doc/texidep.pl $(SRC_PATH) $< $@ >$(@:%=%.d) doc/%.txt: TAG = TXT @@ -124,10 +95,8 @@ doc/%.3: doc/%.pod $(GENTEXI) $(M)pod2man --section=3 --center=" " --release=" " --date=" " $< > $@ $(DOCS) doc/doxy/html: | doc/ -$(DOC_EXAMPLES:%$(EXESUF)=%.o): | doc/examples -OBJDIRS += doc/examples -DOXY_INPUT = $(INSTHEADERS) $(DOC_EXAMPLES:%$(EXESUF)=%.c) +DOXY_INPUT = $(INSTHEADERS) DOXY_INPUT_DEPS = $(addprefix $(SRC_PATH)/, $(DOXY_INPUT)) ffbuild/config.mak doc/doxy/html: TAG = DOXY @@ -174,11 +143,7 @@ clean:: docclean distclean:: docclean $(RM) doc/config.texi -examplesclean: - $(RM) $(ALL_DOC_EXAMPLES) $(ALL_DOC_EXAMPLES_G) - $(RM) $(CLEANSUFFIXES:%=doc/examples/%) - -docclean: examplesclean +docclean:: $(RM) $(CLEANSUFFIXES:%=doc/%) $(RM) $(TXTPAGES) doc/*.html doc/*.pod doc/*.1 doc/*.3 doc/avoptions_*.texi $(RM) -r doc/doxy/html diff --git a/doc/examples/Makefile b/doc/examples/Makefile index 6428154c51..277d4b0a18 100644 --- a/doc/examples/Makefile +++ b/doc/examples/Makefile @@ -1,50 +1,44 @@ -# use pkg-config for getting CFLAGS and LDLIBS -FFMPEG_LIBS= libavdevice \ - libavformat \ - libavfilter \ - libavcodec \ - libswresample \ - libswscale \ - libavutil \ - -CFLAGS += -Wall -g -CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS) -LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS) - -EXAMPLES= avio_dir_cmd \ - avio_reading \ - decode_audio \ - decode_video \ - demuxing_decoding \ - encode_audio \ - encode_video \ - extract_mvs \ - filtering_video \ - filtering_audio \ - http_multiclient \ - hw_decode \ - metadata \ - muxing \ - remuxing \ - resampling_audio \ - scaling_video \ - transcode_aac \ - transcoding \ - -OBJS=$(addsuffix .o,$(EXAMPLES)) - -# the following examples make explicit use of the math library -avcodec: LDLIBS += -lm -encode_audio: LDLIBS += -lm -muxing: LDLIBS += -lm -resampling_audio: LDLIBS += -lm - -.phony: all clean-test clean - -all: $(OBJS) $(EXAMPLES) - -clean-test: - $(RM) test*.pgm test.h264 test.mp2 test.sw test.mpg - -clean: clean-test - $(RM) $(EXAMPLES) $(OBJS) +DOC_EXAMPLES-$(CONFIG_AVIO_DIR_CMD_EXAMPLE) += avio_dir_cmd +DOC_EXAMPLES-$(CONFIG_AVIO_READING_EXAMPLE) += avio_reading +DOC_EXAMPLES-$(CONFIG_DECODE_AUDIO_EXAMPLE) += decode_audio +DOC_EXAMPLES-$(CONFIG_DECODE_VIDEO_EXAMPLE) += decode_video +DOC_EXAMPLES-$(CONFIG_DEMUXING_DECODING_EXAMPLE) += demuxing_decoding +DOC_EXAMPLES-$(CONFIG_ENCODE_AUDIO_EXAMPLE) += encode_audio +DOC_EXAMPLES-$(CONFIG_ENCODE_VIDEO_EXAMPLE) += encode_video +DOC_EXAMPLES-$(CONFIG_EXTRACT_MVS_EXAMPLE) += extract_mvs +DOC_EXAMPLES-$(CONFIG_FILTER_AUDIO_EXAMPLE) += filter_audio +DOC_EXAMPLES-$(CONFIG_FILTERING_AUDIO_EXAMPLE) += filtering_audio +DOC_EXAMPLES-$(CONFIG_FILTERING_VIDEO_EXAMPLE) += filtering_video +DOC_EXAMPLES-$(CONFIG_HTTP_MULTICLIENT_EXAMPLE) += http_multiclient +DOC_EXAMPLES-$(CONFIG_HW_DECODE_EXAMPLE) += hw_decode +DOC_EXAMPLES-$(CONFIG_METADATA_EXAMPLE) += metadata +DOC_EXAMPLES-$(CONFIG_MUXING_EXAMPLE) += muxing +DOC_EXAMPLES-$(CONFIG_QSVDEC_EXAMPLE) += qsvdec +DOC_EXAMPLES-$(CONFIG_REMUXING_EXAMPLE) += remuxing +DOC_EXAMPLES-$(CONFIG_RESAMPLING_AUDIO_EXAMPLE) += resampling_audio +DOC_EXAMPLES-$(CONFIG_SCALING_VIDEO_EXAMPLE) += scaling_video +DOC_EXAMPLES-$(CONFIG_TRANSCODE_AAC_EXAMPLE) += transcode_aac +DOC_EXAMPLES-$(CONFIG_TRANSCODING_EXAMPLE) += transcoding + +DOC_EXAMPLES := $(DOC_EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)$(EXESUF)) +ALL_DOC_EXAMPLES := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)$(EXESUF)) +ALL_DOC_EXAMPLES_G := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)_g$(EXESUF)) +PROGS += $(DOC_EXAMPLES) + +EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/README +EXAMPLE_MAKEFILE := $(SRC_PATH)/doc/examples/Makefile + +examples: $(DOC_EXAMPLES) + +$(DOC_EXAMPLES:%$(EXESUF)=%.o): | doc/examples +OBJDIRS += doc/examples + +DOXY_INPUT += $(DOC_EXAMPLES:%$(EXESUF)=%.c) + +examplesclean: + $(RM) $(ALL_DOC_EXAMPLES) $(ALL_DOC_EXAMPLES_G) + $(RM) $(CLEANSUFFIXES:%=doc/examples/%) + +docclean:: examplesclean + +.PHONY: examples diff --git a/doc/examples/Makefile.example b/doc/examples/Makefile.example new file mode 100644 index 0000000000..6428154c51 --- /dev/null +++ b/doc/examples/Makefile.example @@ -0,0 +1,50 @@ +# use pkg-config for getting CFLAGS and LDLIBS +FFMPEG_LIBS= libavdevice \ + libavformat \ + libavfilter \ + libavcodec \ + libswresample \ + libswscale \ + libavutil \ + +CFLAGS += -Wall -g +CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS) +LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS) + +EXAMPLES= avio_dir_cmd \ + avio_reading \ + decode_audio \ + decode_video \ + demuxing_decoding \ + encode_audio \ + encode_video \ + extract_mvs \ + filtering_video \ + filtering_audio \ + http_multiclient \ + hw_decode \ + metadata \ + muxing \ + remuxing \ + resampling_audio \ + scaling_video \ + transcode_aac \ + transcoding \ + +OBJS=$(addsuffix .o,$(EXAMPLES)) + +# the following examples make explicit use of the math library +avcodec: LDLIBS += -lm +encode_audio: LDLIBS += -lm +muxing: LDLIBS += -lm +resampling_audio: LDLIBS += -lm + +.phony: all clean-test clean + +all: $(OBJS) $(EXAMPLES) + +clean-test: + $(RM) test*.pgm test.h264 test.mp2 test.sw test.mpg + +clean: clean-test + $(RM) $(EXAMPLES) $(OBJS)