# CROSS_COMPILE_$(sm) is derived from CROSS_COMPILE/CROSS_COMPILE32/
|
# CROSS_COMPILE64 and indicates the target that should be passed to clang. Path
|
# components are ignored, as well as any command before the compiler name (for
|
# instance "/some/path/ccache /other/path/arm-linux-gnueabihf-").
|
# We try to extract any ccache command if present.
|
clang-target := $(patsubst %-,%,$(notdir $(lastword $(CROSS_COMPILE_$(sm)))))
|
ccache-cmd := $(if $(findstring ccache,$(CROSS_COMPILE_$(sm))),$(firstword $(CROSS_COMPILE_$(sm))) ,)
|
|
CC$(sm) := $(ccache-cmd)clang --target=$(clang-target)
|
CXX$(sm) := false # Untested yet
|
# Due to the absence of clang-cpp in AOSP's prebuilt version of clang,
|
# use the equivalent command of 'clang -E'
|
CPP$(sm) := $(ccache-cmd)clang --target=$(clang-target) -E
|
LD$(sm) := $(ccache-cmd)ld.lld
|
|
AR$(sm) := $(ccache-cmd)llvm-ar
|
NM$(sm) := llvm-nm
|
OBJCOPY$(sm) := llvm-objcopy
|
OBJDUMP$(sm) := llvm-objdump
|
READELF$(sm) := llvm-readelf
|
|
nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \
|
-print-file-name=include 2> /dev/null)
|
|
comp-cflags-warns-clang := -Wno-language-extension-token \
|
-Wno-gnu-zero-variadic-macro-arguments
|
|
# Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of
|
# libgcc for clang
|
libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \
|
-rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null)
|
|
# Core ASLR relies on the executable being ready to run from its preferred load
|
# address, because some symbols are used before the MMU is enabled and the
|
# relocations are applied.
|
ldflag-apply-dynamic-relocs := --apply-dynamic-relocs
|
|
# Define these to something to discover accidental use
|
CC := false
|
CXX := false
|
CPP := false
|
LD := false
|
AR := false
|
NM := false
|
OBJCOPY := false
|
OBJDUMP := false
|
READELF := false
|
nostdinc := --bad-nostdinc-variable
|
libgcc := --bad-libgcc-variable
|