Skip to content

Commit b25d629

Browse files
committed
Merge commit 'acb0dea27efff4b35796015b96570b59fd517078'
* 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>
2 parents 6f7bd8c + acb0dea commit b25d629

File tree

4 files changed

+100
-91
lines changed

4 files changed

+100
-91
lines changed

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ FFLIBS-$(CONFIG_SWSCALE) += swscale
5656
FFLIBS := avutil
5757

5858
DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd
59-
EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/Makefile $(SRC_PATH)/doc/examples/README
6059

6160
SKIPHEADERS = compat/w32pthreads.h
6261

@@ -119,6 +118,7 @@ endef
119118
$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
120119

121120
include $(SRC_PATH)/doc/Makefile
121+
include $(SRC_PATH)/doc/examples/Makefile
122122

123123
define DOPROG
124124
OBJS-$(1) += $(1).o $(OBJS-$(1)-yes)
@@ -168,10 +168,11 @@ install-progs: install-progs-yes $(AVPROGS)
168168
$(Q)mkdir -p "$(BINDIR)"
169169
$(INSTALL) -c -m 755 $(INSTPROGS) "$(BINDIR)"
170170

171-
install-data: $(DATA_FILES) $(EXAMPLES_FILES)
171+
install-data: $(DATA_FILES) $(EXAMPLES_FILES) $(EXAMPLE_MAKEFILE)
172172
$(Q)mkdir -p "$(DATADIR)/examples"
173173
$(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)"
174174
$(INSTALL) -m 644 $(EXAMPLES_FILES) "$(DATADIR)/examples"
175+
$(INSTALL) -m 644 -T $(EXAMPLE_MAKEFILE:%=%.example) "$(DATADIR)/examples/Makefile"
175176

176177
uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data
177178

@@ -219,5 +220,4 @@ $(sort $(OBJDIRS)):
219220
# so this saves some time on slow systems.
220221
.SUFFIXES:
221222

222-
.PHONY: all all-yes alltools check *clean config install*
223-
.PHONY: testprogs uninstall*
223+
.PHONY: all all-yes alltools check *clean config install* testprogs uninstall*

doc/Makefile

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -36,42 +36,13 @@ DOCS-$(CONFIG_MANPAGES) += $(MANPAGES)
3636
DOCS-$(CONFIG_TXTPAGES) += $(TXTPAGES)
3737
DOCS = $(DOCS-yes)
3838

39-
DOC_EXAMPLES-$(CONFIG_AVIO_DIR_CMD_EXAMPLE) += avio_dir_cmd
40-
DOC_EXAMPLES-$(CONFIG_AVIO_READING_EXAMPLE) += avio_reading
41-
DOC_EXAMPLES-$(CONFIG_DECODE_AUDIO_EXAMPLE) += decode_audio
42-
DOC_EXAMPLES-$(CONFIG_DECODE_VIDEO_EXAMPLE) += decode_video
43-
DOC_EXAMPLES-$(CONFIG_DEMUXING_DECODING_EXAMPLE) += demuxing_decoding
44-
DOC_EXAMPLES-$(CONFIG_ENCODE_AUDIO_EXAMPLE) += encode_audio
45-
DOC_EXAMPLES-$(CONFIG_ENCODE_VIDEO_EXAMPLE) += encode_video
46-
DOC_EXAMPLES-$(CONFIG_EXTRACT_MVS_EXAMPLE) += extract_mvs
47-
DOC_EXAMPLES-$(CONFIG_FILTER_AUDIO_EXAMPLE) += filter_audio
48-
DOC_EXAMPLES-$(CONFIG_FILTERING_AUDIO_EXAMPLE) += filtering_audio
49-
DOC_EXAMPLES-$(CONFIG_FILTERING_VIDEO_EXAMPLE) += filtering_video
50-
DOC_EXAMPLES-$(CONFIG_HTTP_MULTICLIENT_EXAMPLE) += http_multiclient
51-
DOC_EXAMPLES-$(CONFIG_HW_DECODE_EXAMPLE) += hw_decode
52-
DOC_EXAMPLES-$(CONFIG_METADATA_EXAMPLE) += metadata
53-
DOC_EXAMPLES-$(CONFIG_MUXING_EXAMPLE) += muxing
54-
DOC_EXAMPLES-$(CONFIG_QSVDEC_EXAMPLE) += qsvdec
55-
DOC_EXAMPLES-$(CONFIG_REMUXING_EXAMPLE) += remuxing
56-
DOC_EXAMPLES-$(CONFIG_RESAMPLING_AUDIO_EXAMPLE) += resampling_audio
57-
DOC_EXAMPLES-$(CONFIG_SCALING_VIDEO_EXAMPLE) += scaling_video
58-
DOC_EXAMPLES-$(CONFIG_TRANSCODE_AAC_EXAMPLE) += transcode_aac
59-
DOC_EXAMPLES-$(CONFIG_TRANSCODING_EXAMPLE) += transcoding
60-
61-
DOC_EXAMPLES := $(DOC_EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)$(EXESUF))
62-
ALL_DOC_EXAMPLES := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)$(EXESUF))
63-
ALL_DOC_EXAMPLES_G := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)_g$(EXESUF))
64-
PROGS += $(DOC_EXAMPLES)
65-
6639
all-$(CONFIG_DOC): doc
6740

6841
doc: documentation
6942

7043
apidoc: doc/doxy/html
7144
documentation: $(DOCS)
7245

73-
examples: $(DOC_EXAMPLES)
74-
7546
TEXIDEP = perl $(SRC_PATH)/doc/texidep.pl $(SRC_PATH) $< $@ >$(@:%=%.d)
7647

7748
doc/%.txt: TAG = TXT
@@ -124,10 +95,8 @@ doc/%.3: doc/%.pod $(GENTEXI)
12495
$(M)pod2man --section=3 --center=" " --release=" " --date=" " $< > $@
12596

12697
$(DOCS) doc/doxy/html: | doc/
127-
$(DOC_EXAMPLES:%$(EXESUF)=%.o): | doc/examples
128-
OBJDIRS += doc/examples
12998

130-
DOXY_INPUT = $(INSTHEADERS) $(DOC_EXAMPLES:%$(EXESUF)=%.c)
99+
DOXY_INPUT = $(INSTHEADERS)
131100
DOXY_INPUT_DEPS = $(addprefix $(SRC_PATH)/, $(DOXY_INPUT)) ffbuild/config.mak
132101

133102
doc/doxy/html: TAG = DOXY
@@ -174,11 +143,7 @@ clean:: docclean
174143
distclean:: docclean
175144
$(RM) doc/config.texi
176145

177-
examplesclean:
178-
$(RM) $(ALL_DOC_EXAMPLES) $(ALL_DOC_EXAMPLES_G)
179-
$(RM) $(CLEANSUFFIXES:%=doc/examples/%)
180-
181-
docclean: examplesclean
146+
docclean::
182147
$(RM) $(CLEANSUFFIXES:%=doc/%)
183148
$(RM) $(TXTPAGES) doc/*.html doc/*.pod doc/*.1 doc/*.3 doc/avoptions_*.texi
184149
$(RM) -r doc/doxy/html

doc/examples/Makefile

Lines changed: 44 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,44 @@
1-
# use pkg-config for getting CFLAGS and LDLIBS
2-
FFMPEG_LIBS= libavdevice \
3-
libavformat \
4-
libavfilter \
5-
libavcodec \
6-
libswresample \
7-
libswscale \
8-
libavutil \
9-
10-
CFLAGS += -Wall -g
11-
CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS)
12-
LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS)
13-
14-
EXAMPLES= avio_dir_cmd \
15-
avio_reading \
16-
decode_audio \
17-
decode_video \
18-
demuxing_decoding \
19-
encode_audio \
20-
encode_video \
21-
extract_mvs \
22-
filtering_video \
23-
filtering_audio \
24-
http_multiclient \
25-
hw_decode \
26-
metadata \
27-
muxing \
28-
remuxing \
29-
resampling_audio \
30-
scaling_video \
31-
transcode_aac \
32-
transcoding \
33-
34-
OBJS=$(addsuffix .o,$(EXAMPLES))
35-
36-
# the following examples make explicit use of the math library
37-
avcodec: LDLIBS += -lm
38-
encode_audio: LDLIBS += -lm
39-
muxing: LDLIBS += -lm
40-
resampling_audio: LDLIBS += -lm
41-
42-
.phony: all clean-test clean
43-
44-
all: $(OBJS) $(EXAMPLES)
45-
46-
clean-test:
47-
$(RM) test*.pgm test.h264 test.mp2 test.sw test.mpg
48-
49-
clean: clean-test
50-
$(RM) $(EXAMPLES) $(OBJS)
1+
DOC_EXAMPLES-$(CONFIG_AVIO_DIR_CMD_EXAMPLE) += avio_dir_cmd
2+
DOC_EXAMPLES-$(CONFIG_AVIO_READING_EXAMPLE) += avio_reading
3+
DOC_EXAMPLES-$(CONFIG_DECODE_AUDIO_EXAMPLE) += decode_audio
4+
DOC_EXAMPLES-$(CONFIG_DECODE_VIDEO_EXAMPLE) += decode_video
5+
DOC_EXAMPLES-$(CONFIG_DEMUXING_DECODING_EXAMPLE) += demuxing_decoding
6+
DOC_EXAMPLES-$(CONFIG_ENCODE_AUDIO_EXAMPLE) += encode_audio
7+
DOC_EXAMPLES-$(CONFIG_ENCODE_VIDEO_EXAMPLE) += encode_video
8+
DOC_EXAMPLES-$(CONFIG_EXTRACT_MVS_EXAMPLE) += extract_mvs
9+
DOC_EXAMPLES-$(CONFIG_FILTER_AUDIO_EXAMPLE) += filter_audio
10+
DOC_EXAMPLES-$(CONFIG_FILTERING_AUDIO_EXAMPLE) += filtering_audio
11+
DOC_EXAMPLES-$(CONFIG_FILTERING_VIDEO_EXAMPLE) += filtering_video
12+
DOC_EXAMPLES-$(CONFIG_HTTP_MULTICLIENT_EXAMPLE) += http_multiclient
13+
DOC_EXAMPLES-$(CONFIG_HW_DECODE_EXAMPLE) += hw_decode
14+
DOC_EXAMPLES-$(CONFIG_METADATA_EXAMPLE) += metadata
15+
DOC_EXAMPLES-$(CONFIG_MUXING_EXAMPLE) += muxing
16+
DOC_EXAMPLES-$(CONFIG_QSVDEC_EXAMPLE) += qsvdec
17+
DOC_EXAMPLES-$(CONFIG_REMUXING_EXAMPLE) += remuxing
18+
DOC_EXAMPLES-$(CONFIG_RESAMPLING_AUDIO_EXAMPLE) += resampling_audio
19+
DOC_EXAMPLES-$(CONFIG_SCALING_VIDEO_EXAMPLE) += scaling_video
20+
DOC_EXAMPLES-$(CONFIG_TRANSCODE_AAC_EXAMPLE) += transcode_aac
21+
DOC_EXAMPLES-$(CONFIG_TRANSCODING_EXAMPLE) += transcoding
22+
23+
DOC_EXAMPLES := $(DOC_EXAMPLES-yes:%=doc/examples/%$(PROGSSUF)$(EXESUF))
24+
ALL_DOC_EXAMPLES := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)$(EXESUF))
25+
ALL_DOC_EXAMPLES_G := $(DOC_EXAMPLES) $(DOC_EXAMPLES-:%=doc/examples/%$(PROGSSUF)_g$(EXESUF))
26+
PROGS += $(DOC_EXAMPLES)
27+
28+
EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/README
29+
EXAMPLE_MAKEFILE := $(SRC_PATH)/doc/examples/Makefile
30+
31+
examples: $(DOC_EXAMPLES)
32+
33+
$(DOC_EXAMPLES:%$(EXESUF)=%.o): | doc/examples
34+
OBJDIRS += doc/examples
35+
36+
DOXY_INPUT += $(DOC_EXAMPLES:%$(EXESUF)=%.c)
37+
38+
examplesclean:
39+
$(RM) $(ALL_DOC_EXAMPLES) $(ALL_DOC_EXAMPLES_G)
40+
$(RM) $(CLEANSUFFIXES:%=doc/examples/%)
41+
42+
docclean:: examplesclean
43+
44+
.PHONY: examples

doc/examples/Makefile.example

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# use pkg-config for getting CFLAGS and LDLIBS
2+
FFMPEG_LIBS= libavdevice \
3+
libavformat \
4+
libavfilter \
5+
libavcodec \
6+
libswresample \
7+
libswscale \
8+
libavutil \
9+
10+
CFLAGS += -Wall -g
11+
CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS)
12+
LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS)
13+
14+
EXAMPLES= avio_dir_cmd \
15+
avio_reading \
16+
decode_audio \
17+
decode_video \
18+
demuxing_decoding \
19+
encode_audio \
20+
encode_video \
21+
extract_mvs \
22+
filtering_video \
23+
filtering_audio \
24+
http_multiclient \
25+
hw_decode \
26+
metadata \
27+
muxing \
28+
remuxing \
29+
resampling_audio \
30+
scaling_video \
31+
transcode_aac \
32+
transcoding \
33+
34+
OBJS=$(addsuffix .o,$(EXAMPLES))
35+
36+
# the following examples make explicit use of the math library
37+
avcodec: LDLIBS += -lm
38+
encode_audio: LDLIBS += -lm
39+
muxing: LDLIBS += -lm
40+
resampling_audio: LDLIBS += -lm
41+
42+
.phony: all clean-test clean
43+
44+
all: $(OBJS) $(EXAMPLES)
45+
46+
clean-test:
47+
$(RM) test*.pgm test.h264 test.mp2 test.sw test.mpg
48+
49+
clean: clean-test
50+
$(RM) $(EXAMPLES) $(OBJS)

0 commit comments

Comments
 (0)