# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

ifneq ($(OUTPUT),)
$(if $(shell [ -d "$(OUTPUT)" -a -x "$(OUTPUT)" ] && echo 1),, \
  $(error output directory "$(OUTPUT)" does not exist))
endif

LLVM_VERSION ?=
CLANG        ?= clang$(LLVM_VERSION)
LLVM_CONFIG  ?= llvm-config$(LLVM_VERSION)
LLVM_STRIP   ?= llvm-strip$(LLVM_VERSION)

ifneq ($(LLVM),)
  $(if $(findstring default,$(origin AR)),$(eval AR := llvm-ar$(LLVM_VERSION)))
  $(if $(findstring default,$(origin CC)),$(eval CC := clang$(LLVM_VERSION)))
  $(if $(findstring default,$(origin LD)),$(eval LD := ld.lld$(LLVM_VERSION)))
  HOSTAR ?= llvm-ar
  HOSTCC ?= clang
  HOSTLD ?= ld.lld
else
  $(if $(findstring default,$(origin AR)),$(eval AR = $(CROSS_COMPILE)$(AR)))
  $(if $(findstring default,$(origin CC)),$(eval CC = $(CROSS_COMPILE)$(CC)))
  $(if $(findstring default,$(origin LD)),$(eval LD = $(CROSS_COMPILE)$(LD)))
  HOSTAR ?= ar
  HOSTCC ?= gcc
  HOSTLD ?= ld
endif

EXTRA_WARNINGS := \
	-Wbad-function-cast \
	-Wdeclaration-after-statement \
	-Wformat-security \
	-Wformat-y2k \
	-Winit-self \
	-Wmissing-declarations \
	-Wmissing-prototypes \
	-Wold-style-definition \
	-Wpacked \
	-Wredundant-decls \
	-Wshadow \
	-Wstrict-prototypes \
	-Wswitch-default \
	-Wundef \
	-Wwrite-strings \

ifeq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
  ifneq ($(V),1)

    define def_quiet_msg
      $(eval QUIET_$(1) = @printf '  %-9s%s\n' $(1) $$@;)
    endef
    $(foreach action,CC CLANG LINK MKDIR GEN,$(call def_quiet_msg,$(action)))

    define def_quiet_msg_subdir
      $(eval QUIET_$(1) = @printf '  %-9s%s\n' $(1) $$1;)
    endef
    $(foreach action,CLEAN INSTALL UNINST,$(call def_quiet_msg_subdir,$(action)))

    define descend
      @printf '  DESCEND  %s\n' $(1); mkdir -p $(OUTPUT)$(1) && \
        $(MAKE) --no-print-directory -C $(1) $(2)
    endef

  endif
endif
