1*fb1b10abSAndroid Build Coastguard Worker## 2*fb1b10abSAndroid Build Coastguard Worker## Copyright (c) 2016 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker## 4*fb1b10abSAndroid Build Coastguard Worker## Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker## that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker## tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker## in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker## be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker## 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker# List of tools to build. 12*fb1b10abSAndroid Build Coastguard WorkerTOOLS-yes += tiny_ssim.c 13*fb1b10abSAndroid Build Coastguard Workertiny_ssim.SRCS += vpx/vpx_integer.h y4minput.c y4minput.h \ 14*fb1b10abSAndroid Build Coastguard Worker vpx/vpx_codec.h vpx/src/vpx_image.c 15*fb1b10abSAndroid Build Coastguard Workertiny_ssim.SRCS += vpx_mem/vpx_mem.c vpx_mem/vpx_mem.h 16*fb1b10abSAndroid Build Coastguard Workertiny_ssim.SRCS += vpx_dsp/ssim.h vpx_scale/yv12config.h 17*fb1b10abSAndroid Build Coastguard Workertiny_ssim.SRCS += vpx_ports/mem.h vpx_ports/mem.h 18*fb1b10abSAndroid Build Coastguard Workertiny_ssim.SRCS += vpx_mem/include/vpx_mem_intrnl.h 19*fb1b10abSAndroid Build Coastguard Workertiny_ssim.GUID = 3afa9b05-940b-4d68-b5aa-55157d8ed7b4 20*fb1b10abSAndroid Build Coastguard Workertiny_ssim.DESCRIPTION = Generate SSIM/PSNR from raw .yuv files 21*fb1b10abSAndroid Build Coastguard Worker 22*fb1b10abSAndroid Build Coastguard Worker# 23*fb1b10abSAndroid Build Coastguard Worker# End of specified files. The rest of the build rules should happen 24*fb1b10abSAndroid Build Coastguard Worker# automagically from here. 25*fb1b10abSAndroid Build Coastguard Worker# 26*fb1b10abSAndroid Build Coastguard Worker 27*fb1b10abSAndroid Build Coastguard Worker 28*fb1b10abSAndroid Build Coastguard Worker# Expand list of selected tools to build (as specified above) 29*fb1b10abSAndroid Build Coastguard WorkerTOOLS = $(addprefix tools/,$(call enabled,TOOLS)) 30*fb1b10abSAndroid Build Coastguard WorkerALL_SRCS = $(foreach ex,$(TOOLS),$($(notdir $(ex:.c=)).SRCS)) 31*fb1b10abSAndroid Build Coastguard WorkerCFLAGS += -I../include 32*fb1b10abSAndroid Build Coastguard Worker 33*fb1b10abSAndroid Build Coastguard Workerifneq ($(CONFIG_CODEC_SRCS), yes) 34*fb1b10abSAndroid Build Coastguard Worker CFLAGS += -I../include/vpx 35*fb1b10abSAndroid Build Coastguard Workerendif 36*fb1b10abSAndroid Build Coastguard Worker 37*fb1b10abSAndroid Build Coastguard Worker# Expand all tools sources into a variable containing all sources 38*fb1b10abSAndroid Build Coastguard Worker# for that tools (not just them main one specified in TOOLS) 39*fb1b10abSAndroid Build Coastguard Worker# and add this file to the list (for MSVS workspace generation) 40*fb1b10abSAndroid Build Coastguard Worker$(foreach ex,$(TOOLS),$(eval $(notdir $(ex:.c=)).SRCS += $(ex) tools.mk)) 41*fb1b10abSAndroid Build Coastguard Worker 42*fb1b10abSAndroid Build Coastguard Worker 43*fb1b10abSAndroid Build Coastguard Worker# Create build/install dependencies for all tools. The common case 44*fb1b10abSAndroid Build Coastguard Worker# is handled here. The MSVS case is handled below. 45*fb1b10abSAndroid Build Coastguard WorkerNOT_MSVS = $(if $(CONFIG_MSVS),,yes) 46*fb1b10abSAndroid Build Coastguard WorkerDIST-BINS-$(NOT_MSVS) += $(addprefix bin/,$(TOOLS:.c=$(EXE_SFX))) 47*fb1b10abSAndroid Build Coastguard WorkerDIST-SRCS-yes += $(ALL_SRCS) 48*fb1b10abSAndroid Build Coastguard WorkerOBJS-$(NOT_MSVS) += $(call objs,$(ALL_SRCS)) 49*fb1b10abSAndroid Build Coastguard WorkerBINS-$(NOT_MSVS) += $(addprefix $(BUILD_PFX),$(TOOLS:.c=$(EXE_SFX))) 50*fb1b10abSAndroid Build Coastguard Worker 51*fb1b10abSAndroid Build Coastguard Worker# Instantiate linker template for all tools. 52*fb1b10abSAndroid Build Coastguard Worker$(foreach bin,$(BINS-yes),\ 53*fb1b10abSAndroid Build Coastguard Worker $(eval $(bin):)\ 54*fb1b10abSAndroid Build Coastguard Worker $(eval $(call linker_template,$(bin),\ 55*fb1b10abSAndroid Build Coastguard Worker $(call objs,$($(notdir $(bin:$(EXE_SFX)=)).SRCS)) -lm))) 56*fb1b10abSAndroid Build Coastguard Worker 57*fb1b10abSAndroid Build Coastguard Worker# The following pairs define a mapping of locations in the distribution 58*fb1b10abSAndroid Build Coastguard Worker# tree to locations in the source/build trees. 59*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += src/%.c %.c 60*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += src/% $(SRC_PATH_BARE)/% 61*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += bin/% % 62*fb1b10abSAndroid Build Coastguard WorkerINSTALL_MAPS += % % 63*fb1b10abSAndroid Build Coastguard Worker 64*fb1b10abSAndroid Build Coastguard Worker 65*fb1b10abSAndroid Build Coastguard Worker# Build Visual Studio Projects. We use a template here to instantiate 66*fb1b10abSAndroid Build Coastguard Worker# explicit rules rather than using an implicit rule because we want to 67*fb1b10abSAndroid Build Coastguard Worker# leverage make's VPATH searching rather than specifying the paths on 68*fb1b10abSAndroid Build Coastguard Worker# each file in TOOLS. This has the unfortunate side effect that 69*fb1b10abSAndroid Build Coastguard Worker# touching the source files trigger a rebuild of the project files 70*fb1b10abSAndroid Build Coastguard Worker# even though there is no real dependency there (the dependency is on 71*fb1b10abSAndroid Build Coastguard Worker# the makefiles). We may want to revisit this. 72*fb1b10abSAndroid Build Coastguard Workerdefine vcproj_template 73*fb1b10abSAndroid Build Coastguard Worker$(1): $($(1:.$(VCPROJ_SFX)=).SRCS) vpx.$(VCPROJ_SFX) 74*fb1b10abSAndroid Build Coastguard Worker $(if $(quiet),@echo " [vcproj] $$@") 75*fb1b10abSAndroid Build Coastguard Worker $(qexec)$$(GEN_VCPROJ)\ 76*fb1b10abSAndroid Build Coastguard Worker --exe\ 77*fb1b10abSAndroid Build Coastguard Worker --target=$$(TOOLCHAIN)\ 78*fb1b10abSAndroid Build Coastguard Worker --name=$$(@:.$(VCPROJ_SFX)=)\ 79*fb1b10abSAndroid Build Coastguard Worker --ver=$$(CONFIG_VS_VERSION)\ 80*fb1b10abSAndroid Build Coastguard Worker --proj-guid=$$($$(@:.$(VCPROJ_SFX)=).GUID)\ 81*fb1b10abSAndroid Build Coastguard Worker --src-path-bare="$(SRC_PATH_BARE)" \ 82*fb1b10abSAndroid Build Coastguard Worker --as=$$(AS) \ 83*fb1b10abSAndroid Build Coastguard Worker $$(if $$(CONFIG_STATIC_MSVCRT),--static-crt) \ 84*fb1b10abSAndroid Build Coastguard Worker --out=$$@ $$(INTERNAL_CFLAGS) $$(CFLAGS) \ 85*fb1b10abSAndroid Build Coastguard Worker $$(INTERNAL_LDFLAGS) $$(LDFLAGS) $$^ 86*fb1b10abSAndroid Build Coastguard Workerendef 87*fb1b10abSAndroid Build Coastguard WorkerTOOLS_BASENAME := $(notdir $(TOOLS)) 88*fb1b10abSAndroid Build Coastguard WorkerPROJECTS-$(CONFIG_MSVS) += $(TOOLS_BASENAME:.c=.$(VCPROJ_SFX)) 89*fb1b10abSAndroid Build Coastguard WorkerINSTALL-BINS-$(CONFIG_MSVS) += $(foreach p,$(VS_PLATFORMS),\ 90*fb1b10abSAndroid Build Coastguard Worker $(addprefix bin/$(p)/,$(TOOLS_BASENAME:.c=.exe))) 91*fb1b10abSAndroid Build Coastguard Worker$(foreach proj,$(call enabled,PROJECTS),\ 92*fb1b10abSAndroid Build Coastguard Worker $(eval $(call vcproj_template,$(proj)))) 93*fb1b10abSAndroid Build Coastguard Worker 94*fb1b10abSAndroid Build Coastguard Worker# 95*fb1b10abSAndroid Build Coastguard Worker# Documentation Rules 96*fb1b10abSAndroid Build Coastguard Worker# 97*fb1b10abSAndroid Build Coastguard Worker%.dox: %.c 98*fb1b10abSAndroid Build Coastguard Worker @echo " [DOXY] $@" 99*fb1b10abSAndroid Build Coastguard Worker @mkdir -p $(dir $@) 100*fb1b10abSAndroid Build Coastguard Worker @echo "/*!\page tools_$(@F:.dox=) $(@F:.dox=)" > $@ 101*fb1b10abSAndroid Build Coastguard Worker @echo " \includelineno $(<F)" >> $@ 102*fb1b10abSAndroid Build Coastguard Worker @echo "*/" >> $@ 103*fb1b10abSAndroid Build Coastguard Worker 104*fb1b10abSAndroid Build Coastguard Workertools.dox: tools.mk 105*fb1b10abSAndroid Build Coastguard Worker @echo " [DOXY] $@" 106*fb1b10abSAndroid Build Coastguard Worker @echo "/*!\page tools Tools" > $@ 107*fb1b10abSAndroid Build Coastguard Worker @echo " This SDK includes a number of tools/utilities."\ 108*fb1b10abSAndroid Build Coastguard Worker "The following tools are included: ">>$@ 109*fb1b10abSAndroid Build Coastguard Worker @$(foreach ex,$(sort $(notdir $(TOOLS:.c=))),\ 110*fb1b10abSAndroid Build Coastguard Worker echo " - \subpage tools_$(ex) $($(ex).DESCRIPTION)" >> $@;) 111*fb1b10abSAndroid Build Coastguard Worker @echo "*/" >> $@ 112*fb1b10abSAndroid Build Coastguard Worker 113*fb1b10abSAndroid Build Coastguard WorkerCLEAN-OBJS += tools.doxy tools.dox $(TOOLS:.c=.dox) 114*fb1b10abSAndroid Build Coastguard WorkerDOCS-yes += tools.doxy tools.dox 115*fb1b10abSAndroid Build Coastguard Workertools.doxy: tools.dox $(TOOLS:.c=.dox) 116*fb1b10abSAndroid Build Coastguard Worker @echo "INPUT += $^" > $@ 117