1233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan## Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan## Use of this source code is governed by a BSD-style license 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan## that can be found in the LICENSE file in the root of the source 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan## tree. An additional intellectual property rights grant can be found 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan## in the file PATENTS. All contributing project authors may 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan## be found in the AUTHORS file in the root of the source tree. 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan 11233d2500723e5594f3e7c70896ffeeef32b9c950ywan 12233d2500723e5594f3e7c70896ffeeef32b9c950ywaninclude config.mk 13233d2500723e5594f3e7c70896ffeeef32b9c950ywanquiet?=true 14233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(target),) 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan# If a target wasn't specified, invoke for all enabled targets. 16233d2500723e5594f3e7c70896ffeeef32b9c950ywan.DEFAULT: 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan @for t in $(ALL_TARGETS); do \ 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(MAKE) --no-print-directory target=$$t $(MAKECMDGOALS) || exit $$?;\ 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 20233d2500723e5594f3e7c70896ffeeef32b9c950ywanall: .DEFAULT 21233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: .DEFAULT 22233d2500723e5594f3e7c70896ffeeef32b9c950ywaninstall:: .DEFAULT 23233d2500723e5594f3e7c70896ffeeef32b9c950ywantest:: .DEFAULT 24233d2500723e5594f3e7c70896ffeeef32b9c950ywantestdata:: .DEFAULT 25233d2500723e5594f3e7c70896ffeeef32b9c950ywan 26233d2500723e5594f3e7c70896ffeeef32b9c950ywan 27233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Note: md5sum is not installed on OS X, but openssl is. Openssl may not be 28233d2500723e5594f3e7c70896ffeeef32b9c950ywan# installed on cygwin, so we need to autodetect here. 29233d2500723e5594f3e7c70896ffeeef32b9c950ywanmd5sum := $(firstword $(wildcard \ 30233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(foreach e,md5sum openssl,\ 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(foreach p,$(subst :, ,$(PATH)),$(p)/$(e)*))\ 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan )) 33233d2500723e5594f3e7c70896ffeeef32b9c950ywanmd5sum := $(if $(filter %openssl,$(md5sum)),$(md5sum) dgst -md5,$(md5sum)) 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan 35233d2500723e5594f3e7c70896ffeeef32b9c950ywanTGT_CC:=$(word 3, $(subst -, ,$(TOOLCHAIN))) 36233d2500723e5594f3e7c70896ffeeef32b9c950ywandist: 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan @for t in $(ALL_TARGETS); do \ 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(MAKE) --no-print-directory target=$$t $(MAKECMDGOALS) || exit $$?;\ 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 40233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Run configure for the user with the current toolchain. 41233d2500723e5594f3e7c70896ffeeef32b9c950ywan @if [ -d "$(DIST_DIR)/src" ]; then \ 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan mkdir -p "$(DIST_DIR)/build"; \ 43233d2500723e5594f3e7c70896ffeeef32b9c950ywan cd "$(DIST_DIR)/build"; \ 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo "Rerunning configure $(CONFIGURE_ARGS)"; \ 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan ../src/configure $(CONFIGURE_ARGS); \ 46233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(filter vs%,$(TGT_CC)),make NO_LAUNCH_DEVENV=1;) \ 47233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 48233d2500723e5594f3e7c70896ffeeef32b9c950ywan @if [ -d "$(DIST_DIR)" ]; then \ 49233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo " [MD5SUM] $(DIST_DIR)"; \ 50233d2500723e5594f3e7c70896ffeeef32b9c950ywan cd $(DIST_DIR) && \ 51233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(md5sum) `find . -name md5sums.txt -prune -o -type f -print` \ 52233d2500723e5594f3e7c70896ffeeef32b9c950ywan | sed -e 's/MD5(\(.*\))= \([0-9a-f]\{32\}\)/\2 \1/' \ 53233d2500723e5594f3e7c70896ffeeef32b9c950ywan > md5sums.txt;\ 54233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 55233d2500723e5594f3e7c70896ffeeef32b9c950ywan 56233d2500723e5594f3e7c70896ffeeef32b9c950ywan 57233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 58233d2500723e5594f3e7c70896ffeeef32b9c950ywan 59233d2500723e5594f3e7c70896ffeeef32b9c950ywanifneq ($(target),) 60233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Normally, we want to build the filename from the target and the toolchain. 61233d2500723e5594f3e7c70896ffeeef32b9c950ywan# This disambiguates from the $(target).mk file that exists in the source tree. 62233d2500723e5594f3e7c70896ffeeef32b9c950ywan# However, the toolchain is part of the target in universal builds, so we 63233d2500723e5594f3e7c70896ffeeef32b9c950ywan# don't want to include TOOLCHAIN in that case. FAT_ARCHS is used to test 64233d2500723e5594f3e7c70896ffeeef32b9c950ywan# if we're in the universal case. 65233d2500723e5594f3e7c70896ffeeef32b9c950ywaninclude $(target)$(if $(FAT_ARCHS),,-$(TOOLCHAIN)).mk 66233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 67233d2500723e5594f3e7c70896ffeeef32b9c950ywanBUILD_ROOT?=. 68233d2500723e5594f3e7c70896ffeeef32b9c950ywanVPATH=$(SRC_PATH_BARE) 69233d2500723e5594f3e7c70896ffeeef32b9c950ywanCFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT) -I$(SRC_PATH) 70233d2500723e5594f3e7c70896ffeeef32b9c950ywanCXXFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT) -I$(SRC_PATH) 71233d2500723e5594f3e7c70896ffeeef32b9c950ywanASFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT)/ -I$(SRC_PATH)/ 72233d2500723e5594f3e7c70896ffeeef32b9c950ywanDIST_DIR?=dist 73233d2500723e5594f3e7c70896ffeeef32b9c950ywanHOSTCC?=gcc 74233d2500723e5594f3e7c70896ffeeef32b9c950ywanTGT_ISA:=$(word 1, $(subst -, ,$(TOOLCHAIN))) 75233d2500723e5594f3e7c70896ffeeef32b9c950ywanTGT_OS:=$(word 2, $(subst -, ,$(TOOLCHAIN))) 76233d2500723e5594f3e7c70896ffeeef32b9c950ywanTGT_CC:=$(word 3, $(subst -, ,$(TOOLCHAIN))) 77233d2500723e5594f3e7c70896ffeeef32b9c950ywanquiet:=$(if $(or $(verbose), $(V)),, yes) 78233d2500723e5594f3e7c70896ffeeef32b9c950ywanqexec=$(if $(quiet),@) 79233d2500723e5594f3e7c70896ffeeef32b9c950ywan 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Cancel built-in implicit rules 81233d2500723e5594f3e7c70896ffeeef32b9c950ywan%: %.o 82233d2500723e5594f3e7c70896ffeeef32b9c950ywan%.asm: 83233d2500723e5594f3e7c70896ffeeef32b9c950ywan%.a: 84233d2500723e5594f3e7c70896ffeeef32b9c950ywan%: %.cc 85233d2500723e5594f3e7c70896ffeeef32b9c950ywan 86233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 87233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Common rules" 88233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 89233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: all 90233d2500723e5594f3e7c70896ffeeef32b9c950ywanall: 91233d2500723e5594f3e7c70896ffeeef32b9c950ywan 92233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: clean 93233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: 94233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f $(OBJS-yes) $(OBJS-yes:.o=.d) $(OBJS-yes:.asm.s.o=.asm.s) 95233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f $(CLEAN-OBJS) 96233d2500723e5594f3e7c70896ffeeef32b9c950ywan 97233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: clean 98233d2500723e5594f3e7c70896ffeeef32b9c950ywandistclean: clean 99233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ -z "$(target)" ]; then \ 100233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f Makefile; \ 101233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f config.log config.mk; \ 102233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f vpx_config.[hc] vpx_config.asm; \ 103233d2500723e5594f3e7c70896ffeeef32b9c950ywan else \ 104233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f $(target)-$(TOOLCHAIN).mk; \ 105233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 106233d2500723e5594f3e7c70896ffeeef32b9c950ywan 107233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: dist 108233d2500723e5594f3e7c70896ffeeef32b9c950ywandist: 109233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: install 110233d2500723e5594f3e7c70896ffeeef32b9c950ywaninstall:: 111233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: test 112233d2500723e5594f3e7c70896ffeeef32b9c950ywantest:: 113233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PHONY: testdata 114233d2500723e5594f3e7c70896ffeeef32b9c950ywantestdata:: 115233d2500723e5594f3e7c70896ffeeef32b9c950ywan 116233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Add compiler flags for intrinsic files 117233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_mmx.c.d: CFLAGS += -mmmx 118233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_mmx.c.o: CFLAGS += -mmmx 119233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_sse2.c.d: CFLAGS += -msse2 120233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_sse2.c.o: CFLAGS += -msse2 121233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_sse3.c.d: CFLAGS += -msse3 122233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_sse3.c.o: CFLAGS += -msse3 123233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_ssse3.c.d: CFLAGS += -mssse3 124233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_ssse3.c.o: CFLAGS += -mssse3 125233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_sse4.c.d: CFLAGS += -msse4.1 126233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_sse4.c.o: CFLAGS += -msse4.1 127233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_avx.c.d: CFLAGS += -mavx 128233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_avx.c.o: CFLAGS += -mavx 129233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_avx2.c.d: CFLAGS += -mavx2 130233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%_avx2.c.o: CFLAGS += -mavx2 131233d2500723e5594f3e7c70896ffeeef32b9c950ywan 132233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.c.d: %.c 133233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [DEP] $@") 134233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)mkdir -p $(dir $@) 135233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -M $< | $(fmt_deps) > $@ 136233d2500723e5594f3e7c70896ffeeef32b9c950ywan 137233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.c.o: %.c 138233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [CC] $@") 139233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -c -o $@ $< 140233d2500723e5594f3e7c70896ffeeef32b9c950ywan 141233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.cc.d: %.cc 142233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [DEP] $@") 143233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)mkdir -p $(dir $@) 144233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -M $< | $(fmt_deps) > $@ 145233d2500723e5594f3e7c70896ffeeef32b9c950ywan 146233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.cc.o: %.cc 147233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [CXX] $@") 148233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $< 149233d2500723e5594f3e7c70896ffeeef32b9c950ywan 150233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.asm.d: %.asm 151233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [DEP] $@") 152233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)mkdir -p $(dir $@) 153233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \ 154233d2500723e5594f3e7c70896ffeeef32b9c950ywan --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@ 155233d2500723e5594f3e7c70896ffeeef32b9c950ywan 156233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.asm.o: %.asm 157233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [AS] $@") 158233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(AS) $(ASFLAGS) -o $@ $< 159233d2500723e5594f3e7c70896ffeeef32b9c950ywan 160233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.s.d: %.s 161233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [DEP] $@") 162233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)mkdir -p $(dir $@) 163233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \ 164233d2500723e5594f3e7c70896ffeeef32b9c950ywan --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@ 165233d2500723e5594f3e7c70896ffeeef32b9c950ywan 166233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.s.o: %.s 167233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [AS] $@") 168233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(AS) $(ASFLAGS) -o $@ $< 169233d2500723e5594f3e7c70896ffeeef32b9c950ywan 170233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PRECIOUS: %.c.S 171233d2500723e5594f3e7c70896ffeeef32b9c950ywan%.c.S: CFLAGS += -DINLINE_ASM 172233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.c.S: %.c 173233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [GEN] $@") 174233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(CC) -S $(CFLAGS) -o $@ $< 175233d2500723e5594f3e7c70896ffeeef32b9c950ywan 176233d2500723e5594f3e7c70896ffeeef32b9c950ywan.PRECIOUS: %.asm.s 177233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(BUILD_PFX)%.asm.s: %.asm 178233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [ASM CONVERSION] $@") 179233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)mkdir -p $(dir $@) 180233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(ASM_CONVERSION) <$< >$@ 181233d2500723e5594f3e7c70896ffeeef32b9c950ywan 182233d2500723e5594f3e7c70896ffeeef32b9c950ywan# If we're in debug mode, pretend we don't have GNU strip, to fall back to 183233d2500723e5594f3e7c70896ffeeef32b9c950ywan# the copy implementation 184233d2500723e5594f3e7c70896ffeeef32b9c950ywanHAVE_GNU_STRIP := $(if $(CONFIG_DEBUG),,$(HAVE_GNU_STRIP)) 185233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(HAVE_GNU_STRIP),yes) 186233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Older binutils strip global sybols not needed for relocation processing 187233d2500723e5594f3e7c70896ffeeef32b9c950ywan# when given --strip-unneeded. Use nm and awk to identify globals and 188233d2500723e5594f3e7c70896ffeeef32b9c950ywan# keep them. 189233d2500723e5594f3e7c70896ffeeef32b9c950ywan%.a: %_g.a 190233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [STRIP] $@ < $<") 191233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(STRIP) --strip-unneeded \ 192233d2500723e5594f3e7c70896ffeeef32b9c950ywan `$(NM) $< | grep ' [A-TV-Z] ' | awk '{print "-K"$$3'}`\ 193233d2500723e5594f3e7c70896ffeeef32b9c950ywan -o $@ $< 194233d2500723e5594f3e7c70896ffeeef32b9c950ywanelse 195233d2500723e5594f3e7c70896ffeeef32b9c950ywan%.a: %_g.a 196233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [CP] $@ < $<") 197233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)cp $< $@ 198233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 199233d2500723e5594f3e7c70896ffeeef32b9c950ywan 200233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 201233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Rule to extract assembly constants from C sources 202233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 203233d2500723e5594f3e7c70896ffeeef32b9c950ywanobj_int_extract: build/make/obj_int_extract.c 204233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [HOSTCC] $@") 205233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$(HOSTCC) -I. -I$(SRC_PATH_BARE) -o $@ $< 206233d2500723e5594f3e7c70896ffeeef32b9c950ywanCLEAN-OBJS += obj_int_extract 207233d2500723e5594f3e7c70896ffeeef32b9c950ywan 208233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 209233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Utility functions 210233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 211233d2500723e5594f3e7c70896ffeeef32b9c950ywanpairmap=$(if $(strip $(2)),\ 212233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(call $(1),$(word 1,$(2)),$(word 2,$(2)))\ 213233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(call pairmap,$(1),$(wordlist 3,$(words $(2)),$(2)))\ 214233d2500723e5594f3e7c70896ffeeef32b9c950ywan) 215233d2500723e5594f3e7c70896ffeeef32b9c950ywan 216233d2500723e5594f3e7c70896ffeeef32b9c950ywanenabled=$(filter-out $($(1)-no),$($(1)-yes)) 217233d2500723e5594f3e7c70896ffeeef32b9c950ywancond_enabled=$(if $(filter yes,$($(1))), $(call enabled,$(2))) 218233d2500723e5594f3e7c70896ffeeef32b9c950ywan 219233d2500723e5594f3e7c70896ffeeef32b9c950ywanfind_file1=$(word 1,$(wildcard $(subst //,/,$(addsuffix /$(1),$(2))))) 220233d2500723e5594f3e7c70896ffeeef32b9c950ywanfind_file=$(foreach f,$(1),$(call find_file1,$(strip $(f)),$(strip $(2))) ) 221233d2500723e5594f3e7c70896ffeeef32b9c950ywanobj_pats=.c=.c.o $(AS_SFX)=$(AS_SFX).o .cc=.cc.o 222233d2500723e5594f3e7c70896ffeeef32b9c950ywanobjs=$(addprefix $(BUILD_PFX),$(foreach p,$(obj_pats),$(filter %.o,$(1:$(p))) )) 223233d2500723e5594f3e7c70896ffeeef32b9c950ywan 224233d2500723e5594f3e7c70896ffeeef32b9c950ywaninstall_map_templates=$(eval $(call install_map_template,$(1),$(2))) 225233d2500723e5594f3e7c70896ffeeef32b9c950ywan 226233d2500723e5594f3e7c70896ffeeef32b9c950ywannot=$(subst yes,no,$(1)) 227233d2500723e5594f3e7c70896ffeeef32b9c950ywan 228233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_MSVS),yes) 229233d2500723e5594f3e7c70896ffeeef32b9c950ywanlib_file_name=$(1).lib 230233d2500723e5594f3e7c70896ffeeef32b9c950ywanelse 231233d2500723e5594f3e7c70896ffeeef32b9c950ywanlib_file_name=lib$(1).a 232233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 233233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 234233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Rule Templates 235233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 236233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine linker_template 237233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): $(filter-out -%,$(2)) 238233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): 239233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [LD] $$@") 240233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$$(LD) $$(strip $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -o $$@ $(2) $(3) $$(extralibs)) 241233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 242233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine linkerxx_template 243233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): $(filter-out -%,$(2)) 244233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): 245233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [LD] $$@") 246233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$$(CXX) $$(strip $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -o $$@ $(2) $(3) $$(extralibs)) 247233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 248233d2500723e5594f3e7c70896ffeeef32b9c950ywan# make-3.80 has a bug with expanding large input strings to the eval function, 249233d2500723e5594f3e7c70896ffeeef32b9c950ywan# which was triggered in some cases by the following component of 250233d2500723e5594f3e7c70896ffeeef32b9c950ywan# linker_template: 251233d2500723e5594f3e7c70896ffeeef32b9c950ywan# $(1): $$(call find_file, $(patsubst -l%,lib%.a,$(filter -l%,$(2))),\ 252233d2500723e5594f3e7c70896ffeeef32b9c950ywan# $$(patsubst -L%,%,$$(filter -L%,$$(LDFLAGS) $(2)))) 253233d2500723e5594f3e7c70896ffeeef32b9c950ywan# This may be useful to revisit in the future (it tries to locate libraries 254233d2500723e5594f3e7c70896ffeeef32b9c950ywan# in a search path and add them as prerequisites 255233d2500723e5594f3e7c70896ffeeef32b9c950ywan 256233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine install_map_template 257233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(DIST_DIR)/$(1): $(2) 258233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [INSTALL] $$@") 259233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)mkdir -p $$(dir $$@) 260233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)cp -p $$< $$@ 261233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 262233d2500723e5594f3e7c70896ffeeef32b9c950ywan 263233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine archive_template 264233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Not using a pattern rule here because we don't want to generate empty 265233d2500723e5594f3e7c70896ffeeef32b9c950ywan# archives when they are listed as a dependency in files not responsible 266233d2500723e5594f3e7c70896ffeeef32b9c950ywan# for creating them. 267233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): 268233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [AR] $$@") 269233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$$(AR) $$(ARFLAGS) $$@ $$? 270233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 271233d2500723e5594f3e7c70896ffeeef32b9c950ywan 272233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine so_template 273233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Not using a pattern rule here because we don't want to generate empty 274233d2500723e5594f3e7c70896ffeeef32b9c950ywan# archives when they are listed as a dependency in files not responsible 275233d2500723e5594f3e7c70896ffeeef32b9c950ywan# for creating them. 276233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 277233d2500723e5594f3e7c70896ffeeef32b9c950ywan# This needs further abstraction for dealing with non-GNU linkers. 278233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): 279233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [LD] $$@") 280233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$$(LD) -shared $$(LDFLAGS) \ 281233d2500723e5594f3e7c70896ffeeef32b9c950ywan -Wl,--no-undefined -Wl,-soname,$$(SONAME) \ 282233d2500723e5594f3e7c70896ffeeef32b9c950ywan -Wl,--version-script,$$(EXPORTS_FILE) -o $$@ \ 283233d2500723e5594f3e7c70896ffeeef32b9c950ywan $$(filter %.o,$$^) $$(extralibs) 284233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 285233d2500723e5594f3e7c70896ffeeef32b9c950ywan 286233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine dl_template 287233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Not using a pattern rule here because we don't want to generate empty 288233d2500723e5594f3e7c70896ffeeef32b9c950ywan# archives when they are listed as a dependency in files not responsible 289233d2500723e5594f3e7c70896ffeeef32b9c950ywan# for creating them. 290233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): 291233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [LD] $$@") 292233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)$$(LD) -dynamiclib $$(LDFLAGS) \ 293233d2500723e5594f3e7c70896ffeeef32b9c950ywan -exported_symbols_list $$(EXPORTS_FILE) \ 294233d2500723e5594f3e7c70896ffeeef32b9c950ywan -Wl,-headerpad_max_install_names,-compatibility_version,1.0,-current_version,$$(VERSION_MAJOR) \ 295233d2500723e5594f3e7c70896ffeeef32b9c950ywan -o $$@ \ 296233d2500723e5594f3e7c70896ffeeef32b9c950ywan $$(filter %.o,$$^) $$(extralibs) 297233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 298233d2500723e5594f3e7c70896ffeeef32b9c950ywan 299233d2500723e5594f3e7c70896ffeeef32b9c950ywan 300233d2500723e5594f3e7c70896ffeeef32b9c950ywan 301233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine lipo_lib_template 302233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): $(addsuffix /$(1),$(FAT_ARCHS)) 303233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [LIPO] $$@") 304233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)libtool -static -o $$@ $$? 305233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 306233d2500723e5594f3e7c70896ffeeef32b9c950ywan 307233d2500723e5594f3e7c70896ffeeef32b9c950ywandefine lipo_bin_template 308233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(1): $(addsuffix /$(1),$(FAT_ARCHS)) 309233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(if $(quiet),@echo " [LIPO] $$@") 310233d2500723e5594f3e7c70896ffeeef32b9c950ywan $(qexec)lipo -output $$@ -create $$? 311233d2500723e5594f3e7c70896ffeeef32b9c950ywanendef 312233d2500723e5594f3e7c70896ffeeef32b9c950ywan 313233d2500723e5594f3e7c70896ffeeef32b9c950ywan 314233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 315233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Get current configuration 316233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 317233d2500723e5594f3e7c70896ffeeef32b9c950ywanifneq ($(target),) 318233d2500723e5594f3e7c70896ffeeef32b9c950ywaninclude $(SRC_PATH_BARE)/$(target:-$(TOOLCHAIN)=).mk 319233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 320233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(filter %clean,$(MAKECMDGOALS)),) 321233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Older versions of make don't like -include directives with no arguments 322233d2500723e5594f3e7c70896ffeeef32b9c950ywan ifneq ($(filter %.d,$(OBJS-yes:.o=.d)),) 323233d2500723e5594f3e7c70896ffeeef32b9c950ywan -include $(filter %.d,$(OBJS-yes:.o=.d)) 324233d2500723e5594f3e7c70896ffeeef32b9c950ywan endif 325233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 326233d2500723e5594f3e7c70896ffeeef32b9c950ywan 327233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 328233d2500723e5594f3e7c70896ffeeef32b9c950ywan# Configuration dependent rules 329233d2500723e5594f3e7c70896ffeeef32b9c950ywan# 330233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(call pairmap,install_map_templates,$(INSTALL_MAPS)) 331233d2500723e5594f3e7c70896ffeeef32b9c950ywan 332233d2500723e5594f3e7c70896ffeeef32b9c950ywanDOCS=$(call cond_enabled,CONFIG_INSTALL_DOCS,DOCS) 333233d2500723e5594f3e7c70896ffeeef32b9c950ywan.docs: $(DOCS) 334233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 335233d2500723e5594f3e7c70896ffeeef32b9c950ywan 336233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-DOCS=$(call cond_enabled,CONFIG_INSTALL_DOCS,INSTALL-DOCS) 337233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(MAKECMDGOALS),dist) 338233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-DOCS+=$(call cond_enabled,CONFIG_INSTALL_DOCS,DIST-DOCS) 339233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 340233d2500723e5594f3e7c70896ffeeef32b9c950ywan.install-docs: .docs $(addprefix $(DIST_DIR)/,$(INSTALL-DOCS)) 341233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 342233d2500723e5594f3e7c70896ffeeef32b9c950ywan 343233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: 344233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f .docs .install-docs $(DOCS) 345233d2500723e5594f3e7c70896ffeeef32b9c950ywan 346233d2500723e5594f3e7c70896ffeeef32b9c950ywanBINS=$(call enabled,BINS) 347233d2500723e5594f3e7c70896ffeeef32b9c950ywan.bins: $(BINS) 348233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 349233d2500723e5594f3e7c70896ffeeef32b9c950ywan 350233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-BINS=$(call cond_enabled,CONFIG_INSTALL_BINS,INSTALL-BINS) 351233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(MAKECMDGOALS),dist) 352233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-BINS+=$(call cond_enabled,CONFIG_INSTALL_BINS,DIST-BINS) 353233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 354233d2500723e5594f3e7c70896ffeeef32b9c950ywan.install-bins: .bins $(addprefix $(DIST_DIR)/,$(INSTALL-BINS)) 355233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 356233d2500723e5594f3e7c70896ffeeef32b9c950ywan 357233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: 358233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f .bins .install-bins $(BINS) 359233d2500723e5594f3e7c70896ffeeef32b9c950ywan 360233d2500723e5594f3e7c70896ffeeef32b9c950ywanLIBS=$(call enabled,LIBS) 361233d2500723e5594f3e7c70896ffeeef32b9c950ywan.libs: $(LIBS) 362233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 363233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(foreach lib,$(filter %_g.a,$(LIBS)),$(eval $(call archive_template,$(lib)))) 364233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(foreach lib,$(filter %so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH),$(LIBS)),$(eval $(call so_template,$(lib)))) 365233d2500723e5594f3e7c70896ffeeef32b9c950ywan$(foreach lib,$(filter %$(VERSION_MAJOR).dylib,$(LIBS)),$(eval $(call dl_template,$(lib)))) 366233d2500723e5594f3e7c70896ffeeef32b9c950ywan 367233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-LIBS=$(call cond_enabled,CONFIG_INSTALL_LIBS,INSTALL-LIBS) 368233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(MAKECMDGOALS),dist) 369233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-LIBS+=$(call cond_enabled,CONFIG_INSTALL_LIBS,DIST-LIBS) 370233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 371233d2500723e5594f3e7c70896ffeeef32b9c950ywan.install-libs: .libs $(addprefix $(DIST_DIR)/,$(INSTALL-LIBS)) 372233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 373233d2500723e5594f3e7c70896ffeeef32b9c950ywan 374233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: 375233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f .libs .install-libs $(LIBS) 376233d2500723e5594f3e7c70896ffeeef32b9c950ywan 377233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_EXTERNAL_BUILD),yes) 378233d2500723e5594f3e7c70896ffeeef32b9c950ywanPROJECTS=$(call enabled,PROJECTS) 379233d2500723e5594f3e7c70896ffeeef32b9c950ywan.projects: $(PROJECTS) 380233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 381233d2500723e5594f3e7c70896ffeeef32b9c950ywan 382233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-PROJECTS=$(call cond_enabled,CONFIG_INSTALL_PROJECTS,INSTALL-PROJECTS) 383233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(MAKECMDGOALS),dist) 384233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-PROJECTS+=$(call cond_enabled,CONFIG_INSTALL_PROJECTS,DIST-PROJECTS) 385233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 386233d2500723e5594f3e7c70896ffeeef32b9c950ywan.install-projects: .projects $(addprefix $(DIST_DIR)/,$(INSTALL-PROJECTS)) 387233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 388233d2500723e5594f3e7c70896ffeeef32b9c950ywan 389233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: 390233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f .projects .install-projects $(PROJECTS) 391233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 392233d2500723e5594f3e7c70896ffeeef32b9c950ywan 393233d2500723e5594f3e7c70896ffeeef32b9c950ywan# If there are any source files to be distributed, then include the build 394233d2500723e5594f3e7c70896ffeeef32b9c950ywan# system too. 395233d2500723e5594f3e7c70896ffeeef32b9c950ywanifneq ($(call enabled,DIST-SRCS),) 396233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-yes += configure 397233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-yes += build/make/configure.sh 398233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-yes += build/make/gen_asm_deps.sh 399233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-yes += build/make/Makefile 400233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_def.sh 401233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_proj.sh 402233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_sln.sh 403233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_vcxproj.sh 404233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_MSVS) += build/x86-msvs/obj_int_extract.bat 405233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_MSVS) += build/arm-msvs/obj_int_extract.bat 406233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(CONFIG_RVCT) += build/make/armlink_adapter.sh 407233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Include obj_int_extract if we use offsets from *_asm_*_offsets 408233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(ARCH_ARM)$(ARCH_X86)$(ARCH_X86_64) += build/make/obj_int_extract.c 409233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(ARCH_ARM) += build/make/ads2gas.pl 410233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(ARCH_ARM) += build/make/ads2gas_apple.pl 411233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(ARCH_ARM) += build/make/ads2armasm_ms.pl 412233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-$(ARCH_ARM) += build/make/thumb.pm 413233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST-SRCS-yes += $(target:-$(TOOLCHAIN)=).mk 414233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 415233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-SRCS := $(call cond_enabled,CONFIG_INSTALL_SRCS,INSTALL-SRCS) 416233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(MAKECMDGOALS),dist) 417233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL-SRCS += $(call cond_enabled,CONFIG_INSTALL_SRCS,DIST-SRCS) 418233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 419233d2500723e5594f3e7c70896ffeeef32b9c950ywan.install-srcs: $(addprefix $(DIST_DIR)/src/,$(INSTALL-SRCS)) 420233d2500723e5594f3e7c70896ffeeef32b9c950ywan @touch $@ 421233d2500723e5594f3e7c70896ffeeef32b9c950ywan 422233d2500723e5594f3e7c70896ffeeef32b9c950ywanclean:: 423233d2500723e5594f3e7c70896ffeeef32b9c950ywan rm -f .install-srcs 424233d2500723e5594f3e7c70896ffeeef32b9c950ywan 425233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq ($(CONFIG_EXTERNAL_BUILD),yes) 426233d2500723e5594f3e7c70896ffeeef32b9c950ywan BUILD_TARGETS += .projects 427233d2500723e5594f3e7c70896ffeeef32b9c950ywan INSTALL_TARGETS += .install-projects 428233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 429233d2500723e5594f3e7c70896ffeeef32b9c950ywanBUILD_TARGETS += .docs .libs .bins 430233d2500723e5594f3e7c70896ffeeef32b9c950ywanINSTALL_TARGETS += .install-docs .install-srcs .install-libs .install-bins 431233d2500723e5594f3e7c70896ffeeef32b9c950ywanall: $(BUILD_TARGETS) 432233d2500723e5594f3e7c70896ffeeef32b9c950ywaninstall:: $(INSTALL_TARGETS) 433233d2500723e5594f3e7c70896ffeeef32b9c950ywandist: $(INSTALL_TARGETS) 434233d2500723e5594f3e7c70896ffeeef32b9c950ywantest:: 435