* commit 'acb0dea27efff4b35796015b96570b59fd517078': build: Split logic for building examples off into a separate Makefile We already have a Makefile in doc/examples, but it's separate from the build system and meant to be installed as part of the documentation to help users compile the installed .c example files. Move it to Makefile.example to make place for the new build system Makefile. Merged-by: James Almer <jamrial@gmail.com>tags/n3.4
| @@ -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* | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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) | |||