unplugged-kernel/drivers/gpu/mediatek/gpu_rgx/m1.15ED5990020/build/linux/commands.mk

556 lines
20 KiB
Makefile
Raw Normal View History

########################################################################### ###
#@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
#@License Dual MIT/GPLv2
#
# The contents of this file are subject to the MIT license as set out below.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# Alternatively, the contents of this file may be used under the terms of
# the GNU General Public License Version 2 ("GPL") in which case the provisions
# of GPL are applicable instead of those above.
#
# If you wish to allow use of your version of this file only under the terms of
# GPL, and not to allow others to use your version of this file under the terms
# of the MIT license, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by GPL as set
# out in the file called "GPL-COPYING" included in this distribution. If you do
# not delete the provisions above, a recipient may use your version of this file
# under the terms of either the MIT license or GPL.
#
# This License is also included in this distribution in the file called
# "MIT-COPYING".
#
# EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
# PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
# PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### ###########################################################################
# from-one-* recipes make a thing from one source file, so they use $<. Others
# use $(MODULE_something) instead of $^
# We expect that MODULE_*FLAGS contains all the flags we need, including the
# flags for all modules (like $(ALL_CFLAGS) and $(ALL_HOST_CFLAGS)), and
# excluding flags for include search dirs or for linking libraries. The
# exceptions are ALL_EXE_LDFLAGS and ALL_LIB_LDFLAGS, since they depend on the
# type of thing being linked, so they appear in the commands below
define host-o-from-one-c
$(if $(V),,@echo " HOST_CC " $(call relative-to-top,$<))
$(MODULE_CC) -MD -MP -MF $(patsubst %.o,%.d,$@) -c $(MODULE_CFLAGS) \
$(MODULE_INCLUDE_FLAGS) -include $(CONFIG_H) $< -o $@
endef
define target-o-from-one-c
$(if $(V),,@echo " CC " $(call relative-to-top,$<))
$(MODULE_CC) -MD -MP -MF $(patsubst %.o,%.d,$@) -c $(MODULE_CFLAGS) \
$(MODULE_INCLUDE_FLAGS) -include $(CONFIG_H) $< -o $@
endef
define host-o-from-one-cxx
$(if $(V),,@echo " HOST_CXX" $(call relative-to-top,$<))
$(MODULE_CXX) -MD -MP -MF $(patsubst %.o,%.d,$@) -c $(MODULE_CXXFLAGS) \
$(MODULE_INCLUDE_FLAGS) -include $(CONFIG_H) $< -o $@
endef
define target-o-from-one-cxx
$(if $(V),,@echo " CXX " $(call relative-to-top,$<))
$(MODULE_CXX) -MD -MP -MF $(patsubst %.o,%.d,$@) -c $(MODULE_CXXFLAGS) \
$(MODULE_INCLUDE_FLAGS) -include $(CONFIG_H) $< -o $@
endef
define host-executable-from-o
$(if $(V),,@echo " HOST_LD " $(call relative-to-top,$@))
$(MODULE_CC) $(MODULE_LDFLAGS) \
-o $@ $(sort $(MODULE_ALL_OBJECTS)) $(MODULE_LIBRARY_DIR_FLAGS) \
$(MODULE_LIBRARY_FLAGS)
endef
define host-executable-cxx-from-o
$(if $(V),,@echo " HOST_LD " $(call relative-to-top,$@))
$(MODULE_CXX) $(MODULE_LDFLAGS) \
-o $@ $(sort $(MODULE_ALL_OBJECTS)) $(MODULE_LIBRARY_DIR_FLAGS) \
$(MODULE_LIBRARY_FLAGS)
endef
define target-executable-from-o
$(if $(V),,@echo " LD " $(call relative-to-top,$@))
$(MODULE_CC) \
$(MODULE_TARGET_VARIANT_TYPE) $(MODULE_LDFLAGS) -o $@ \
$(MODULE_EXE_CRTBEGIN) $(MODULE_ALL_OBJECTS) $(MODULE_EXE_CRTEND) \
$(MODULE_LIBRARY_DIR_FLAGS) $(MODULE_LIBRARY_FLAGS) \
$(MODULE_EXE_LDFLAGS)
endef
define target-executable-cxx-from-o
$(if $(V),,@echo " LD " $(call relative-to-top,$@))
$(MODULE_CXX) \
$(MODULE_TARGET_VARIANT_TYPE) $(MODULE_LDFLAGS) -o $@ \
$(MODULE_EXE_CRTBEGIN) $(MODULE_ALL_OBJECTS) $(MODULE_EXE_CRTEND) \
$(MODULE_LIBRARY_DIR_FLAGS) $(MODULE_LIBRARY_FLAGS) \
$(MODULE_EXE_LDFLAGS)
endef
define target-shared-library-from-o
$(if $(V),,@echo " LD " $(call relative-to-top,$@))
$(MODULE_CC) -shared -Wl,-Bsymbolic \
$(MODULE_TARGET_VARIANT_TYPE) $(MODULE_LDFLAGS) -o $@ \
$(MODULE_LIB_CRTBEGIN) $(MODULE_ALL_OBJECTS) $(MODULE_LIB_CRTEND) \
$(MODULE_LIBRARY_DIR_FLAGS) $(MODULE_LIBRARY_FLAGS) \
$(MODULE_LIB_LDFLAGS)
endef
# Helper to convert a binary file into a C header. Can optionally
# null-terminate the binary before conversion.
#
# (1): Character array identifier
# (2): If non-empty, treat as a string and null terminate.
# The character array will also be 'signed'.
define target-generate-header-from-binary
$(if $(V),,@echo " OD " $(call relative-to-top,$@))
$(ECHO) "static const $(if $(2),,unsigned )char $(1)[] = {" >$@
$(OD) $< -A n -t x1 -v | tr -d '\n' | \
sed -r -e 's@^ @0x@' $(if $(2),-e 's@$$@ 00@',) -e 's@ @, 0x@g' \
-e 's@(([^[:blank:]]+[[:blank:]]+){8})@\1\n@g' >> $@
$(ECHO) "};" >> $@
endef
# Helper to convert an image file into a C header. The size of the
# image should be specified (but it is not checked).
#
# (1): Structure identifier
# (2): Width in pixels
# (3): Height in pixels
define target-generate-image-header-from-binary
$(if $(V),,@echo " OD " $(call relative-to-top,$@))
$(ECHO) "static const struct $(1)\
{\n\tunsigned int width;\n\tunsigned int height;\n\tunsigned int byteLength;\n\tunsigned char data[$(shell stat -c %s $<)];\n}\
$(1) = {\n\t$(2), $(3), sizeof($(1)), {" >$@
$(OD) $< -A n -t x1 -v | tr -d '\n' | \
sed -r -e 's@^ @0x@' -e 's@ @, 0x@g' \
-e 's/(([^[:blank:]]+[[:blank:]]+){8})/\1\n/g' >>$@
$(ECHO) "}\n};" >>$@
endef
define host-shared-library-from-o
$(if $(V),,@echo " HOST_LD " $(call relative-to-top,$@))
$(MODULE_CC) -shared -Wl,-Bsymbolic \
$(MODULE_LDFLAGS) -o $@ \
$(sort $(MODULE_ALL_OBJECTS)) \
$(MODULE_LIBRARY_DIR_FLAGS) $(MODULE_LIBRARY_FLAGS)
endef
# If there were any C++ source files in a shared library, we use one of
# these recipes, which run the C++ compiler to link the final library
define target-shared-library-cxx-from-o
$(if $(V),,@echo " LD " $(call relative-to-top,$@))
$(MODULE_CXX) -shared -Wl,-Bsymbolic \
$(MODULE_TARGET_VARIANT_TYPE) $(MODULE_LDFLAGS) -o $@ \
$(MODULE_LIB_CRTBEGIN) $(MODULE_ALL_OBJECTS) $(MODULE_LIB_CRTEND) \
$(MODULE_LIBRARY_DIR_FLAGS) $(MODULE_LIBRARY_FLAGS) \
$(MODULE_LIB_LDFLAGS)
endef
define host-shared-library-cxx-from-o
$(if $(V),,@echo " HOST_LD " $(call relative-to-top,$@))
$(MODULE_CXX) -shared -Wl,-Bsymbolic \
$(MODULE_LDFLAGS) -o $@ \
$(sort $(MODULE_ALL_OBJECTS)) \
$(MODULE_LIBRARY_DIR_FLAGS) $(MODULE_LIBRARY_FLAGS)
endef
define host-copy-debug-information
$(MODULE_OBJCOPY) --only-keep-debug $@ $(basename $@).dbg
endef
define host-strip-debug-information
$(MODULE_STRIP) --strip-unneeded $@
endef
define host-add-debuglink
$(if $(V),,@echo " DBGLINK " $(call relative-to-top,$(basename $@).dbg))
$(MODULE_OBJCOPY) --add-gnu-debuglink=$(basename $@).dbg $@
endef
define target-copy-debug-information
$(MODULE_OBJCOPY) --only-keep-debug $@ $(basename $@).dbg
endef
define target-strip-debug-information
$(MODULE_STRIP) --strip-unneeded $@
endef
define target-add-debuglink
$(if $(V),,@echo " DBGLINK " $(call relative-to-top,$(basename $@).dbg))
$(MODULE_OBJCOPY) --add-gnu-debuglink=$(basename $@).dbg $@
endef
define target-compress-debug-information
$(MODULE_OBJCOPY) --compress-debug-sections $@ $@.compressed_debug
$(MV) $@.compressed_debug $@
endef
define host-static-library-from-o
$(if $(V),,@echo " HOST_AR " $(call relative-to-top,$@))
$(RM) $@
$(MODULE_AR) crD $@ $(sort $(MODULE_ALL_OBJECTS))
endef
define target-static-library-from-o
$(if $(V),,@echo " AR " $(call relative-to-top,$@))
$(RM) $@
$(MODULE_AR) crD $@ $(sort $(MODULE_ALL_OBJECTS))
endef
define tab-c-from-y
$(if $(V),,@echo " BISON " $(call relative-to-top,$<))
$(BISON) $(MODULE_BISON_FLAGS) -o $@ -d $<
endef
define l-c-from-l
$(if $(V),,@echo " FLEX " $(call relative-to-top,$<))
$(FLEX) $(MODULE_FLEX_FLAGS) -o$@ $<
endef
define l-cc-from-l
$(if $(V),,@echo " FLEXXX " $(call relative-to-top,$<))
$(FLEXXX) $(MODULE_FLEXXX_FLAGS) -o$@ $<
endef
define clean-dirs
$(if $(V),,@echo " RM " $(call relative-to-top,$(MODULE_DIRS_TO_REMOVE)))
$(RM) -rf $(MODULE_DIRS_TO_REMOVE)
endef
define make-directory
$(MKDIR) -p $@
endef
ifeq ($(DISABLE_CHECK_EXPORTS),)
define check-exports
endef
else
define check-exports
endef
endif
# Check a source file with the program specified in $(CHECK).
# If $(CHECK) is empty, don't do anything.
ifeq ($(CHECK),)
check-src :=
else
# If CHECK is a relative path to something in the DDK then replace it with
# an absolute path. This is necessary for the kbuild target, which uses the
# Linux kernel build system, so that it can find the program specified in
# $(CHECK).
ifneq ($(wildcard $(TOP)/$(CHECK)),)
override CHECK := $(TOP)/$(CHECK)
endif
define check-src-1
$(if $(V),,@echo " CHECK " $(call relative-to-top,$<))
$(if $(IGNORE_CHECK_ERRORS),-,)$(CHECK) $(MODULE_INCLUDE_FLAGS) \
$(if $(CHECK_NO_CONFIG_H),,-include $(CONFIG_H)) \
$(filter -D%,$(MODULE_CFLAGS)) \
$(CHECKFLAGS) $<
endef
# If CHECK_ONLY is set, only check files matching a Make pattern.
# e.g. CHECK_ONLY=opengles1/%.c
define check-src
$(if $(and $(if $(CHECK_ONLY),$(filter $(CHECK_ONLY),$<),true), \
$(if $(CHECK_EXCLUDE),$(filter-out $(CHECK_EXCLUDE),$<),true)),$(check-src-1),@:)
endef
endif
# Programs used in recipes
AR ?= ar
AR_SECONDARY ?= $(AR)
BISON ?= bison
CC ?= gcc
CC_SECONDARY ?= $(CC)
CROSS_COMPILE_SECONDARY ?= $(CROSS_COMPILE)
CXX ?= g++
CXX_SECONDARY ?= $(CXX)
GLSLC ?= glslc
HOST_AR ?= ar
HOST_AS ?= as
HOST_CC ?= gcc
HOST_CXX ?= g++
HOST_LD ?= ld
HOST_NM ?= nm
HOST_OBJCOPY ?= objcopy
HOST_OBJDUMP ?= objdump
HOST_RANLIB ?= ranlib
HOST_READELF ?= readelf
HOST_STRIP ?= strip
INDENT ?= indent
JAR ?= jar
JAVA ?= java
JAVAC ?= javac
M4 ?= m4
NM ?= nm
NM_SECONDARY ?= $(NM)
OBJCOPY ?= objcopy
OBJCOPY_SECONDARY ?= $(OBJCOPY)
PKG_CONFIG ?= pkg-config
PYTHON3 ?= python3
RANLIB ?= ranlib
RANLIB_SECONDARY ?= $(RANLIB)
STRIP ?= strip
STRIP_SECONDARY ?= $(STRIP)
ZIP ?= zip
ifneq ($(shell which python3),)
PYTHON ?= python3
else
PYTHON ?= python2
$(warning ******************************************************)
$(warning WARNING: Python 3 not found so falling back to Python)
$(warning 2, which is deprecated. See here for Python 2 end of)
$(warning life information:)
$(warning https://www.python.org/dev/peps/pep-0373/#id4)
$(warning ******************************************************)
endif
ifneq ($(SUPPORT_BUILD_LWS),)
WAYLAND_SCANNER := `$(PKG_CONFIG) --variable=wayland_scanner wayland-scanner`
else
WAYLAND_SCANNER ?= wayland-scanner
endif
# Define CHMOD and CC_CHECK first so we can use cc-is-clang
#
override CHMOD := $(if $(V),,@)chmod
override CC_CHECK := $(if $(V),,@)$(MAKE_TOP)/tools/cc-check.sh
ifeq ($(USE_CCACHE),1)
CCACHE ?= ccache
ifeq ($(cc-is-clang),true)
# Compiling with ccache and clang together can cause false errors
# without this environment variable.
export CCACHE_CPP2=1
endif
endif
ifeq ($(USE_DISTCC),1)
DISTCC ?= distcc
endif
# Toolchain triples for cross environments
#
CROSS_TRIPLE := $(patsubst %-,%,$(notdir $(CROSS_COMPILE)))
CROSS_TRIPLE_SECONDARY := $(patsubst %-,%,$(notdir $(CROSS_COMPILE_SECONDARY)))
# If clang is detected, the compiler name is invariant but CROSS_COMPILE
# is reflected in the use of -target. For GCC this is always encoded into
# the binary. If CROSS_COMPILE is not set we can skip this.
#
# If we're doing a build with multiple target architectures, we might need
# two separate compilers to build binaries for each architecture. In this
# case, CROSS_COMPILE and CROSS_COMPILE_SECONDARY are the cross compiler
# prefix for the two compilers - $(CC) and $(CC_SECONDARY).
#
# Set the secondary compiler first before we overwrite $(CC).
#
ifneq ($(CROSS_COMPILE_SECONDARY),)
ifeq ($(cc-is-clang),true)
__clang_target := $(CROSS_TRIPLE_SECONDARY)
ifeq ($(__clang_target),mips64el-linux-android)
__clang_target := mipsel-linux-android
endif
__gcc_bindir := $(dir $(shell which $(CROSS_COMPILE_SECONDARY)gcc))
ifeq ($(wildcard $(__gcc_bindir)),)
__gcc_bindir := $(dir $(CROSS_COMPILE_SECONDARY)gcc)
endif
override CC_SECONDARY := \
$(CC_SECONDARY) \
-target $(__clang_target) \
-B$(__gcc_bindir) \
-B$(__gcc_bindir)/../$(CROSS_TRIPLE_SECONDARY)/bin \
--gcc-toolchain=$(__gcc_bindir)/..
override CXX_SECONDARY := \
$(CXX_SECONDARY) \
-target $(__clang_target) \
-B$(__gcc_bindir) \
-B$(__gcc_bindir)/../$(CROSS_TRIPLE_SECONDARY)/bin \
--gcc-toolchain=$(__gcc_bindir)/..
else
ifeq ($(origin CC_SECONDARY),file)
override CC_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(CC_SECONDARY)
endif
ifeq ($(origin CXX_SECONDARY),file)
override CXX_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(CXX_SECONDARY)
endif
endif
ifeq ($(origin AR_SECONDARY),file)
override AR_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(AR_SECONDARY)
endif
ifeq ($(origin NM_SECONDARY),file)
override NM_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(NM_SECONDARY)
endif
ifeq ($(origin OBJCOPY_SECONDARY),file)
override OBJCOPY_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(OBJCOPY_SECONDARY)
endif
ifeq ($(origin RANLIB_SECONDARY),file)
override RANLIB_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(RANLIB_SECONDARY)
endif
ifeq ($(origin STRIP_SECONDARY),file)
override STRIP_SECONDARY := $(CROSS_COMPILE_SECONDARY)$(STRIP_SECONDARY)
endif
endif
# Vanilla versions of glibc >= 2.16 print a warning if _FORTIFY_SOURCE is
# defined but compiler optimisations are disabled. In this case, make sure it's
# not being defined as part of CC/CXX, as is the case for at least Yocto Poky
# 3.0.
ifeq ($(filter $(OPTIM),-O -O0),$(OPTIM))
override CC_SECONDARY := $(filter-out -D_FORTIFY_SOURCE%,$(CC_SECONDARY))
override CXX_SECONDARY := $(filter-out -D_FORTIFY_SOURCE%,$(CXX_SECONDARY))
else ifeq ($(BUILD),debug)
override CC_SECONDARY := $(filter-out -D_FORTIFY_SOURCE%,$(CC_SECONDARY))
override CXX_SECONDARY := $(filter-out -D_FORTIFY_SOURCE%,$(CXX_SECONDARY))
endif
# Apply compiler wrappers and V=1 handling
override AR_SECONDARY := $(if $(V),,@)$(AR_SECONDARY)
override CC_SECONDARY := $(if $(V),,@)$(strip $(CCACHE)$(DISTCC) $(CC_SECONDARY))
override CXX_SECONDARY := $(if $(V),,@)$(strip $(CCACHE)$(DISTCC) $(CXX_SECONDARY))
override NM_SECONDARY := $(if $(V),,@)$(NM_SECONDARY)
override OBJCOPY_SECONDARY := $(if $(V),,@)$(OBJCOPY_SECONDARY)
override RANLIB_SECONDARY := $(if $(V),,@)$(RANLIB_SECONDARY)
ifneq ($(CROSS_COMPILE),)
ifeq ($(cc-is-clang),true)
__gcc_bindir := $(dir $(shell which $(CROSS_COMPILE)gcc))
ifeq ($(wildcard $(__gcc_bindir)),)
__gcc_bindir := $(dir $(CROSS_COMPILE)gcc)
endif
override CC := \
$(CC) \
-target $(CROSS_TRIPLE) \
-B$(__gcc_bindir) \
-B$(__gcc_bindir)/../$(CROSS_TRIPLE)/bin \
--gcc-toolchain=$(__gcc_bindir)/..
override CXX := \
$(CXX) \
-target $(CROSS_TRIPLE) \
-B$(__gcc_bindir) \
-B$(__gcc_bindir)/../$(CROSS_TRIPLE)/bin \
--gcc-toolchain=$(__gcc_bindir)/..
else
ifeq ($(origin CC),file)
override CC := $(CROSS_COMPILE)$(CC)
endif
ifeq ($(origin CXX),file)
override CXX := $(CROSS_COMPILE)$(CXX)
endif
endif
ifeq ($(origin AR),file)
override AR := $(CROSS_COMPILE)$(AR)
endif
ifeq ($(origin NM),file)
override NM := $(CROSS_COMPILE)$(NM)
endif
ifeq ($(origin OBJCOPY),file)
override OBJCOPY := $(CROSS_COMPILE)$(OBJCOPY)
endif
ifeq ($(origin RANLIB),file)
override RANLIB := $(CROSS_COMPILE)$(RANLIB)
endif
ifeq ($(origin STRIP),file)
override STRIP := $(CROSS_COMPILE)$(STRIP)
endif
else
$(if $(CROSS_COMPILE_SECONDARY),$(warning CROSS_COMPILE_SECONDARY is set but CROSS_COMPILE is empty))
endif
# Vanilla versions of glibc >= 2.16 print a warning if _FORTIFY_SOURCE is
# defined but compiler optimisations are disabled. In this case, make sure it's
# not being defined as part of CC/CXX, as is the case for at least Yocto Poky
# 3.0.
ifeq ($(filter $(OPTIM),-O -O0),$(OPTIM))
override CC := $(filter-out -D_FORTIFY_SOURCE%,$(CC))
override CXX := $(filter-out -D_FORTIFY_SOURCE%,$(CXX))
else ifeq ($(BUILD),debug)
override CC := $(filter-out -D_FORTIFY_SOURCE%,$(CC))
override CXX := $(filter-out -D_FORTIFY_SOURCE%,$(CXX))
endif
# Apply tool wrappers and V=1 handling.
#
# This list should be kept in alphabetical order.
#
override AR := $(if $(V),,@)$(AR)
override BISON := $(if $(V),,@)$(BISON)
override BZIP2 := $(if $(V),,@)bzip2 -9
override CAT := $(if $(V),,@)cat
override CC := $(if $(V),,@)$(strip $(CCACHE)$(DISTCC) $(CC))
override CHECK := $(if $(CHECK),$(if $(V),,@)$(CHECK),)
override CP := $(if $(V),,@)cp
override CXX := $(if $(V),,@)$(strip $(CCACHE)$(DISTCC) $(CXX))
override ECHO := $(if $(V),,@)$(shell which echo) -e
override FLEX := $(if $(V),,@)flex
override FLEXXX := $(if $(V),,@)flex++
override FWINFO := $(if $(V),,@)$(HOST_OUT)/fwinfo
override GLSLC := $(if $(V),,@)$(GLSLC)
override GREP := $(if $(V),,@)grep
override HOST_AR := $(if $(V),,@)$(HOST_AR)
override HOST_AS := $(if $(V),,@)$(HOST_AS)
override HOST_CC := $(if $(V),,@)$(strip $(CCACHE) $(HOST_CC))
override HOST_CXX := $(if $(V),,@)$(strip $(CCACHE) $(HOST_CXX))
override HOST_LD := $(if $(V),,@)$(HOST_LD)
override HOST_NM := $(if $(V),,@)$(HOST_NM)
override HOST_OBJCOPY := $(if $(V),,@)$(HOST_OBJCOPY)
override HOST_OBJDUMP := $(if $(V),,@)$(HOST_OBJDUMP)
override HOST_RANLIB := $(if $(V),,@)$(HOST_RANLIB)
override HOST_READELF := $(if $(V),,@)$(HOST_READELF)
override HOST_STRIP := $(if $(V),,@)$(HOST_STRIP)
override INSTALL := $(if $(V),,@)install
override JAR := $(if $(V),,@)$(JAR)
override JAVA := $(if $(V),,@)$(JAVA)
override JAVAC := $(if $(V),,@)$(JAVAC)
override LN := $(if $(V),,@)ln -f -s
override M4 := $(if $(V),,@)$(M4)
override MKDIR := $(if $(V),,@)mkdir
override MV := $(if $(V),,@)mv
override NM := $(if $(V),,@)$(NM)
override OBJCOPY := $(if $(V),,@)$(OBJCOPY)
override OD := $(if $(V),,@)od
override PERL := $(if $(V),,@)perl
override PSC := $(if $(V),,@)$(HOST_OUT)/psc_standalone
override PYTHON := $(if $(V),,@)$(PYTHON)
override PYTHON3 := $(if $(V),,@)$(PYTHON3)
override RANLIB := $(if $(V),,@)$(RANLIB)
override RM := $(if $(V),,@)rm -f
override SED := $(if $(V),,@)sed
override SIGNFILE := $(if $(V),,@)$(KERNELDIR)/scripts/sign-file
override STRIP := $(if $(V),,@)$(STRIP)
override STRIP_SECONDARY := $(if $(V),,@)$(STRIP_SECONDARY)
override TAR := $(if $(V),,@)tar
override TEST := $(if $(V),,@)test
override TOUCH := $(if $(V),,@)touch
override UNIFLEXC := $(if $(V),,@)$(HOST_OUT)/usc
override USCASM := $(if $(V),,@)$(HOST_OUT)/uscasm
override WAYLAND_SCANNER := $(if $(V),,@)$(WAYLAND_SCANNER)
override ZIP := $(if $(V),,@)$(ZIP)
ifeq ($(SUPPORT_NEUTRINO_PLATFORM),1)
include $(MAKE_TOP)/common/neutrino/commands_neutrino.mk
endif