# 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