xref: /aosp_15_r20/external/libvpx/tools.mk (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
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