Text Blame History Raw

Copyright (c) 2016 The WebM project authors. All Rights Reserved.

Use of this source code is governed by a BSD-style license

that can be found in the LICENSE file in the root of the source

tree. An additional intellectual property rights grant can be found

in the file PATENTS. All contributing project authors may

be found in the AUTHORS file in the root of the source tree.

List of tools to build.

TOOLS-yes += tiny_ssim.c tiny_ssim.SRCS += vpx/vpx_integer.h y4minput.c y4minput.h \ vpx/vpx_codec.h vpx/src/vpx_image.c tiny_ssim.SRCS += vpx_mem/vpx_mem.c vpx_mem/vpx_mem.h tiny_ssim.SRCS += vpx_dsp/ssim.h vpx_scale/yv12config.h tiny_ssim.SRCS += vpx_ports/mem.h vpx_ports/mem.h tiny_ssim.SRCS += vpx_mem/include/vpx_mem_intrnl.h tiny_ssim.GUID = 3afa9b05-940b-4d68-b5aa-55157d8ed7b4 tiny_ssim.DESCRIPTION = Generate SSIM/PSNR from raw .yuv files

End of specified files. The rest of the build rules should happen

automagically from here.

Expand list of selected tools to build (as specified above)

TOOLS = $(addprefix tools/,$(call enabled,TOOLS)) ALL_SRCS = $(foreach ex,$(TOOLS),$($(notdir $(ex:.c=)).SRCS)) CFLAGS += -I../include

ifneq ($(CONFIG_CODEC_SRCS), yes) CFLAGS += -I../include/vpx endif

Expand all tools sources into a variable containing all sources

for that tools (not just them main one specified in TOOLS)

and add this file to the list (for MSVS workspace generation)

$(foreach ex,$(TOOLS),$(eval $(notdir $(ex:.c=)).SRCS += $(ex) tools.mk))

Create build/install dependencies for all tools. The common case

is handled here. The MSVS case is handled below.

NOT_MSVS = $(if $(CONFIG_MSVS),,yes) DIST-BINS-$(NOT_MSVS) += $(addprefix bin/,$(TOOLS:.c=$(EXE_SFX))) DIST-SRCS-yes += $(ALL_SRCS) OBJS-$(NOT_MSVS) += $(call objs,$(ALL_SRCS)) BINS-$(NOT_MSVS) += $(addprefix $(BUILD_PFX),$(TOOLS:.c=$(EXE_SFX)))

Instantiate linker template for all tools.

$(foreach bin,$(BINS-yes),\ $(eval $(bin):)\ $(eval $(call linker_template,$(bin),\ $(call objs,$($(notdir $(bin:$(EXE_SFX)=)).SRCS)) -lm)))

The following pairs define a mapping of locations in the distribution

tree to locations in the source/build trees.

INSTALL_MAPS += src/%.c %.c INSTALL_MAPS += src/% $(SRC_PATH_BARE)/% INSTALL_MAPS += bin/% % INSTALL_MAPS += % %

Build Visual Studio Projects. We use a template here to instantiate

explicit rules rather than using an implicit rule because we want to

leverage make's VPATH searching rather than specifying the paths on

each file in TOOLS. This has the unfortunate side effect that

touching the source files trigger a rebuild of the project files

even though there is no real dependency there (the dependency is on

the makefiles). We may want to revisit this.

define vcproj_template $(1): $($(1:.$(VCPROJ_SFX)=).SRCS) vpx.$(VCPROJ_SFX) $(if $(quiet),@echo " [vcproj] $$@") $(qexec)$$(GEN_VCPROJ)\ --exe\ --target=$$(TOOLCHAIN)\ --name=$$(@:.$(VCPROJ_SFX)=)\ --ver=$$(CONFIG_VS_VERSION)\ --proj-guid=$$($$(@:.$(VCPROJ_SFX)=).GUID)\ --src-path-bare="$(SRC_PATH_BARE)" \ $$(if $$(CONFIG_STATIC_MSVCRT),--static-crt) \ --out=$$@ $$(INTERNAL_CFLAGS) $$(CFLAGS) \ $$(INTERNAL_LDFLAGS) $$(LDFLAGS) $$^ endef TOOLS_BASENAME := $(notdir $(TOOLS)) PROJECTS-$(CONFIG_MSVS) += $(TOOLS_BASENAME:.c=.$(VCPROJ_SFX)) INSTALL-BINS-$(CONFIG_MSVS) += $(foreach p,$(VS_PLATFORMS),\ $(addprefix bin/$(p)/,$(TOOLS_BASENAME:.c=.exe))) $(foreach proj,$(call enabled,PROJECTS),\ $(eval $(call vcproj_template,$(proj))))

Documentation Rules

%.dox: %.c @echo " [DOXY] $@" @mkdir -p $(dir $@) @echo "/!\page tools_$(@F:.dox=) $(@F:.dox=)" > $@ @echo " \includelineno $(<F)" >> $@ @echo "/" >> $@

tools.dox: tools.mk @echo " [DOXY] $@" @echo "/!\page tools Tools" > $@ @echo " This SDK includes a number of tools/utilities."\ "The following tools are included: ">>$@ @$(foreach ex,$(sort $(notdir $(TOOLS:.c=))),\ echo " - \subpage tools_$(ex) $($(ex).DESCRIPTION)" >> $@;) @echo "/" >> $@

CLEAN-OBJS += tools.doxy tools.dox $(TOOLS:.c=.dox) DOCS-yes += tools.doxy tools.dox tools.doxy: tools.dox $(TOOLS:.c=.dox) @echo "INPUT += $^" > $@