1*858ea5e5SAndroid Build Coastguard Worker# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*858ea5e5SAndroid Build Coastguard Worker 3*858ea5e5SAndroid Build Coastguard Workerifneq ($(OUTPUT),) 4*858ea5e5SAndroid Build Coastguard Worker$(if $(shell [ -d "$(OUTPUT)" -a -x "$(OUTPUT)" ] && echo 1),, \ 5*858ea5e5SAndroid Build Coastguard Worker $(error output directory "$(OUTPUT)" does not exist)) 6*858ea5e5SAndroid Build Coastguard Workerendif 7*858ea5e5SAndroid Build Coastguard Worker 8*858ea5e5SAndroid Build Coastguard WorkerLLVM_VERSION ?= 9*858ea5e5SAndroid Build Coastguard WorkerCLANG ?= clang$(LLVM_VERSION) 10*858ea5e5SAndroid Build Coastguard WorkerLLVM_CONFIG ?= llvm-config$(LLVM_VERSION) 11*858ea5e5SAndroid Build Coastguard WorkerLLVM_STRIP ?= llvm-strip$(LLVM_VERSION) 12*858ea5e5SAndroid Build Coastguard Worker 13*858ea5e5SAndroid Build Coastguard Workerifneq ($(LLVM),) 14*858ea5e5SAndroid Build Coastguard Worker $(if $(findstring default,$(origin AR)),$(eval AR := llvm-ar$(LLVM_VERSION))) 15*858ea5e5SAndroid Build Coastguard Worker $(if $(findstring default,$(origin CC)),$(eval CC := clang$(LLVM_VERSION))) 16*858ea5e5SAndroid Build Coastguard Worker $(if $(findstring default,$(origin LD)),$(eval LD := ld.lld$(LLVM_VERSION))) 17*858ea5e5SAndroid Build Coastguard Worker HOSTAR ?= llvm-ar 18*858ea5e5SAndroid Build Coastguard Worker HOSTCC ?= clang 19*858ea5e5SAndroid Build Coastguard Worker HOSTLD ?= ld.lld 20*858ea5e5SAndroid Build Coastguard Workerelse 21*858ea5e5SAndroid Build Coastguard Worker $(if $(findstring default,$(origin AR)),$(eval AR = $(CROSS_COMPILE)$(AR))) 22*858ea5e5SAndroid Build Coastguard Worker $(if $(findstring default,$(origin CC)),$(eval CC = $(CROSS_COMPILE)$(CC))) 23*858ea5e5SAndroid Build Coastguard Worker $(if $(findstring default,$(origin LD)),$(eval LD = $(CROSS_COMPILE)$(LD))) 24*858ea5e5SAndroid Build Coastguard Worker HOSTAR ?= ar 25*858ea5e5SAndroid Build Coastguard Worker HOSTCC ?= gcc 26*858ea5e5SAndroid Build Coastguard Worker HOSTLD ?= ld 27*858ea5e5SAndroid Build Coastguard Workerendif 28*858ea5e5SAndroid Build Coastguard Worker 29*858ea5e5SAndroid Build Coastguard WorkerEXTRA_WARNINGS := \ 30*858ea5e5SAndroid Build Coastguard Worker -Wbad-function-cast \ 31*858ea5e5SAndroid Build Coastguard Worker -Wdeclaration-after-statement \ 32*858ea5e5SAndroid Build Coastguard Worker -Wformat-security \ 33*858ea5e5SAndroid Build Coastguard Worker -Wformat-y2k \ 34*858ea5e5SAndroid Build Coastguard Worker -Winit-self \ 35*858ea5e5SAndroid Build Coastguard Worker -Wmissing-declarations \ 36*858ea5e5SAndroid Build Coastguard Worker -Wmissing-prototypes \ 37*858ea5e5SAndroid Build Coastguard Worker -Wold-style-definition \ 38*858ea5e5SAndroid Build Coastguard Worker -Wpacked \ 39*858ea5e5SAndroid Build Coastguard Worker -Wredundant-decls \ 40*858ea5e5SAndroid Build Coastguard Worker -Wshadow \ 41*858ea5e5SAndroid Build Coastguard Worker -Wstrict-prototypes \ 42*858ea5e5SAndroid Build Coastguard Worker -Wswitch-default \ 43*858ea5e5SAndroid Build Coastguard Worker -Wundef \ 44*858ea5e5SAndroid Build Coastguard Worker -Wwrite-strings \ 45*858ea5e5SAndroid Build Coastguard Worker 46*858ea5e5SAndroid Build Coastguard Workerifeq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),) 47*858ea5e5SAndroid Build Coastguard Worker ifneq ($(V),1) 48*858ea5e5SAndroid Build Coastguard Worker 49*858ea5e5SAndroid Build Coastguard Worker define def_quiet_msg 50*858ea5e5SAndroid Build Coastguard Worker $(eval QUIET_$(1) = @printf ' %-9s%s\n' $(1) $$@;) 51*858ea5e5SAndroid Build Coastguard Worker endef 52*858ea5e5SAndroid Build Coastguard Worker $(foreach action,CC CLANG LINK MKDIR GEN,$(call def_quiet_msg,$(action))) 53*858ea5e5SAndroid Build Coastguard Worker 54*858ea5e5SAndroid Build Coastguard Worker define def_quiet_msg_subdir 55*858ea5e5SAndroid Build Coastguard Worker $(eval QUIET_$(1) = @printf ' %-9s%s\n' $(1) $$1;) 56*858ea5e5SAndroid Build Coastguard Worker endef 57*858ea5e5SAndroid Build Coastguard Worker $(foreach action,CLEAN INSTALL UNINST,$(call def_quiet_msg_subdir,$(action))) 58*858ea5e5SAndroid Build Coastguard Worker 59*858ea5e5SAndroid Build Coastguard Worker define descend 60*858ea5e5SAndroid Build Coastguard Worker @printf ' DESCEND %s\n' $(1); mkdir -p $(OUTPUT)$(1) && \ 61*858ea5e5SAndroid Build Coastguard Worker $(MAKE) --no-print-directory -C $(1) $(2) 62*858ea5e5SAndroid Build Coastguard Worker endef 63*858ea5e5SAndroid Build Coastguard Worker 64*858ea5e5SAndroid Build Coastguard Worker endif 65*858ea5e5SAndroid Build Coastguard Workerendif 66