From a809ff8b920c3d514368c15ba6b6b415d9deb601 Mon Sep 17 00:00:00 2001 From: Ramiro Polla Date: Tue, 27 May 2025 00:13:47 +0200 Subject: [PATCH v4] fftools/resources: clean up resource manager build system - move vpath directives to main Makefile; - remove superfluous comments; - turn css minification sed command into a one-liner; - deduplicate targets depending on CONFIG_RESOURCE_COMPRESSION; - introduce common .res pattern for resource files; - remove RESOURCEOBJS noop from common.mak (it was never populated); - rename OBJS-resman to RESMAN-OBJS for consistency; - disable dependency checking for resource files, to prevent spurious rebuilds. --- Makefile | 2 ++ ffbuild/common.mak | 44 ++++++++---------------------------- fftools/Makefile | 2 +- fftools/resources/.gitignore | 9 +++----- fftools/resources/Makefile | 14 +++++------- fftools/resources/resman.c | 12 +++++----- 6 files changed, 27 insertions(+), 56 deletions(-) diff --git a/Makefile b/Makefile index 877b0071f6..ed456cf071 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,8 @@ vpath %.texi $(SRC_PATH) vpath %.cu $(SRC_PATH) vpath %.ptx $(SRC_PATH) vpath %.metal $(SRC_PATH) +vpath %.html $(SRC_PATH) +vpath %.css $(SRC_PATH) vpath %/fate_config.sh.template $(SRC_PATH) TESTTOOLS = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch diff --git a/ffbuild/common.mak b/ffbuild/common.mak index ddf48923ea..dbd99fffa2 100644 --- a/ffbuild/common.mak +++ b/ffbuild/common.mak @@ -139,45 +139,20 @@ else $(BIN2C) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) $@ $(subst .,_,$(basename $(notdir $@))) endif -# 1) Preprocess CSS to a minified version %.css.min: TAG = SED %.css.min: %.css - $(M)sed 's!/\\*.*\\*/!!g' $< \ - | tr '\n' ' ' \ - | tr -s ' ' \ - | sed 's/^ //; s/ $$//' \ - > $@ + $(M)sed 's!/\\*.*\\*/!!g' $< | tr '\n' ' ' | tr -s ' ' | sed 's/^ //; s/ $$//' > $@ -ifdef CONFIG_RESOURCE_COMPRESSION - -# 2) Gzip the minified CSS -%.css.min.gz: TAG = GZIP -%.css.min.gz: %.css.min - $(M)gzip -nc9 $< > $@ - -# 3) Convert the gzipped CSS to a .c array -%.css.c: %.css.min.gz $(BIN2CEXE) - $(BIN2C) $< $@ $(subst .,_,$(basename $(notdir $@))) - -# 4) Gzip the HTML file (no minification needed) -%.html.gz: TAG = GZIP -%.html.gz: %.html +%.res.gz: TAG = GZIP +%.res.gz: % $(M)gzip -nc9 $< > $@ -# 5) Convert the gzipped HTML to a .c array -%.html.c: %.html.gz $(BIN2CEXE) +%.res.c: %$(CONFIG_RESOURCE_COMPRESSION:yes=.res.gz) $(BIN2CEXE) $(BIN2C) $< $@ $(subst .,_,$(basename $(notdir $@))) -else # NO COMPRESSION - -# 2) Convert the minified CSS to a .c array -%.css.c: %.css.min $(BIN2CEXE) - $(BIN2C) $< $@ $(subst .,_,$(basename $(notdir $@))) - -# 3) Convert the plain HTML to a .c array -%.html.c: %.html $(BIN2CEXE) - $(BIN2C) $< $@ $(subst .,_,$(basename $(notdir $@))) -endif +# Disable dependency checking to prevent spurious rebuilds +%.res.o: CCDEP = +%.res.o: CC_DEPFLAGS = clean:: $(RM) $(BIN2CEXE) $(CLEANSUFFIXES:%=ffbuild/%) @@ -229,10 +204,9 @@ SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-) SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%) HOBJS = $(filter-out $(SKIPHEADERS:.h=.h.o),$(ALLHEADERS:.h=.h.o)) PTXOBJS = $(filter %.ptx.o,$(OBJS)) -RESOURCEOBJS = $(filter %.css.o %.html.o,$(OBJS)) $(HOBJS): CCFLAGS += $(CFLAGS_HEADERS) checkheaders: $(HOBJS) -.SECONDARY: $(HOBJS:.o=.c) $(PTXOBJS:.o=.c) $(PTXOBJS:.o=.gz) $(PTXOBJS:.o=) $(RESOURCEOBJS:.o=.c) $(RESOURCEOBJS:%.css.o=%.css.min) $(RESOURCEOBJS:%.css.o=%.css.min.gz) $(RESOURCEOBJS:%.html.o=%.html.gz) $(RESOURCEOBJS:.o=) +.SECONDARY: $(HOBJS:.o=.c) $(PTXOBJS:.o=.c) $(PTXOBJS:.o=.gz) $(PTXOBJS:.o=) alltools: $(TOOLS) @@ -252,7 +226,7 @@ $(TOOLOBJS): | tools OUTDIRS := $(OUTDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SHLIBOBJS) $(STLIBOBJS) $(TESTOBJS)) -CLEANSUFFIXES = *.d *.gcda *.gcno *.h.c *.ho *.map *.o *.objs *.pc *.ptx *.ptx.gz *.ptx.c *.ver *.version *.html.gz *.html.c *.css.gz *.css.c *$(DEFAULT_X86ASMD).asm *~ *.ilk *.pdb +CLEANSUFFIXES = *.d *.gcda *.gcno *.h.c *.ho *.map *.o *.objs *.pc *.ptx *.ptx.gz *.ptx.c *.ver *.version *.css.min *.res.gz *.res.c *$(DEFAULT_X86ASMD).asm *~ *.ilk *.pdb LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a define RULES diff --git a/fftools/Makefile b/fftools/Makefile index c1eba733da..42821a698b 100644 --- a/fftools/Makefile +++ b/fftools/Makefile @@ -35,7 +35,7 @@ OBJS-ffmpeg += \ fftools/textformat/tw_avio.o \ fftools/textformat/tw_buffer.o \ fftools/textformat/tw_stdout.o \ - $(OBJS-resman) \ + $(RESMAN-OBJS) \ OBJS-ffprobe += \ fftools/textformat/avtextformat.o \ diff --git a/fftools/resources/.gitignore b/fftools/resources/.gitignore index bda2c59a1c..19facbc590 100644 --- a/fftools/resources/.gitignore +++ b/fftools/resources/.gitignore @@ -1,6 +1,3 @@ -*.html.c -*.css.c -*.html.gz -*.css.gz -*.min -*.min.gz +*.css.min +*.res.c +*.res.gz diff --git a/fftools/resources/Makefile b/fftools/resources/Makefile index 8579a52678..4b6d63c8d2 100644 --- a/fftools/resources/Makefile +++ b/fftools/resources/Makefile @@ -1,13 +1,11 @@ clean:: $(RM) $(CLEANSUFFIXES:%=fftools/resources/%) -vpath %.html $(SRC_PATH) -vpath %.css $(SRC_PATH) +RESMAN-OBJS += \ + fftools/resources/resman.o \ + fftools/resources/graph.html.res.o \ + fftools/resources/graph.css.min.res.o \ # Uncomment to prevent deletion during build -#.PRECIOUS: %.css.c %.css.min %.css.gz %.css.min.gz %.html.gz %.html.c - -OBJS-resman += \ - fftools/resources/resman.o \ - fftools/resources/graph.html.o \ - fftools/resources/graph.css.o \ +#RESOBJS = $(filter %.res.o,$(RESMAN-OBJS)) +.SECONDARY: $(RESOBJS:.o=.gz) $(RESOBJS:.o=.c) $(RESOBJS:.res.o=) diff --git a/fftools/resources/resman.c b/fftools/resources/resman.c index bce3589169..cdacecd038 100644 --- a/fftools/resources/resman.c +++ b/fftools/resources/resman.c @@ -37,15 +37,15 @@ #include "libavutil/dict.h" #include "libavutil/common.h" -extern const unsigned char ff_graph_html_data[]; -extern const unsigned int ff_graph_html_len; +extern const unsigned char ff_graph_html_res_data[]; +extern const unsigned int ff_graph_html_res_len; -extern const unsigned char ff_graph_css_data[]; -extern const unsigned ff_graph_css_len; +extern const unsigned char ff_graph_css_min_res_data[]; +extern const unsigned ff_graph_css_min_res_len; static const FFResourceDefinition resource_definitions[] = { - [FF_RESOURCE_GRAPH_CSS] = { FF_RESOURCE_GRAPH_CSS, "graph.css", &ff_graph_css_data[0], &ff_graph_css_len }, - [FF_RESOURCE_GRAPH_HTML] = { FF_RESOURCE_GRAPH_HTML, "graph.html", &ff_graph_html_data[0], &ff_graph_html_len }, + [FF_RESOURCE_GRAPH_CSS] = { FF_RESOURCE_GRAPH_CSS, "graph.css", &ff_graph_css_min_res_data[0], &ff_graph_css_min_res_len }, + [FF_RESOURCE_GRAPH_HTML] = { FF_RESOURCE_GRAPH_HTML, "graph.html", &ff_graph_html_res_data[0], &ff_graph_html_res_len }, }; -- 2.39.5