Home | History | Annotate | Download | only in clang
      1 ## Clang configurations.
      2 
      3 # WITHOUT_CLANG covers both HOST and TARGET
      4 ifeq ($(WITHOUT_CLANG),true)
      5 WITHOUT_TARGET_CLANG := true
      6 WITHOUT_HOST_CLANG := true
      7 endif
      8 
      9 LLVM_PREBUILTS_PATH := prebuilts/clang/$(BUILD_OS)-x86/host/3.5/bin
     10 LLVM_PREBUILTS_HEADER_PATH := prebuilts/clang/$(BUILD_OS)-x86/host/3.5/lib/clang/3.5/include/
     11 
     12 CLANG := $(LLVM_PREBUILTS_PATH)/clang$(BUILD_EXECUTABLE_SUFFIX)
     13 CLANG_CXX := $(LLVM_PREBUILTS_PATH)/clang++$(BUILD_EXECUTABLE_SUFFIX)
     14 LLVM_AS := $(LLVM_PREBUILTS_PATH)/llvm-as$(BUILD_EXECUTABLE_SUFFIX)
     15 LLVM_LINK := $(LLVM_PREBUILTS_PATH)/llvm-link$(BUILD_EXECUTABLE_SUFFIX)
     16 
     17 CLANG_TBLGEN := $(BUILD_OUT_EXECUTABLES)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX)
     18 LLVM_TBLGEN := $(BUILD_OUT_EXECUTABLES)/llvm-tblgen$(BUILD_EXECUTABLE_SUFFIX)
     19 
     20 # The C/C++ compiler can be wrapped by setting the CC/CXX_WRAPPER vars.
     21 ifdef CC_WRAPPER
     22   ifneq ($(CC_WRAPPER),$(firstword $(CLANG)))
     23     CLANG := $(CC_WRAPPER) $(CLANG)
     24   endif
     25 endif
     26 ifdef CXX_WRAPPER
     27   ifneq ($(CXX_WRAPPER),$(firstword $(CLANG_CXX)))
     28     CLANG_CXX := $(CXX_WRAPPER) $(CLANG_CXX)
     29   endif
     30 endif
     31 
     32 # Clang flags for all host or target rules
     33 CLANG_CONFIG_EXTRA_ASFLAGS :=
     34 CLANG_CONFIG_EXTRA_CFLAGS :=
     35 CLANG_CONFIG_EXTRA_CPPFLAGS :=
     36 CLANG_CONFIG_EXTRA_LDFLAGS :=
     37 
     38 CLANG_CONFIG_EXTRA_CFLAGS += \
     39   -D__compiler_offsetof=__builtin_offsetof
     40 
     41 # Help catch common 32/64-bit errors.
     42 CLANG_CONFIG_EXTRA_CFLAGS += \
     43   -Werror=int-conversion
     44 
     45 CLANG_CONFIG_UNKNOWN_CFLAGS := \
     46   -funswitch-loops \
     47   -fno-tree-sra \
     48   -finline-limit=64 \
     49   -Wno-psabi \
     50   -Wno-unused-but-set-variable \
     51   -Wno-unused-but-set-parameter \
     52   -Wmaybe-uninitialized \
     53   -Wno-maybe-uninitialized \
     54   -Wno-error=maybe-uninitialized \
     55   -fno-canonical-system-headers
     56 
     57 # Clang flags for all host rules
     58 CLANG_CONFIG_HOST_EXTRA_ASFLAGS :=
     59 CLANG_CONFIG_HOST_EXTRA_CFLAGS :=
     60 CLANG_CONFIG_HOST_EXTRA_CPPFLAGS :=
     61 CLANG_CONFIG_HOST_EXTRA_LDFLAGS :=
     62 
     63 # Clang flags for all target rules
     64 CLANG_CONFIG_TARGET_EXTRA_ASFLAGS :=
     65 CLANG_CONFIG_TARGET_EXTRA_CFLAGS := -nostdlibinc
     66 CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS := -nostdlibinc
     67 CLANG_CONFIG_TARGET_EXTRA_LDFLAGS :=
     68 
     69 # HOST config
     70 clang_2nd_arch_prefix :=
     71 include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk
     72 
     73 # HOST_2ND_ARCH config
     74 ifdef HOST_2ND_ARCH
     75 clang_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX)
     76 include $(BUILD_SYSTEM)/clang/HOST_$(HOST_2ND_ARCH).mk
     77 endif
     78 
     79 # TARGET config
     80 clang_2nd_arch_prefix :=
     81 include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_ARCH).mk
     82 
     83 # TARGET_2ND_ARCH config
     84 ifdef TARGET_2ND_ARCH
     85 clang_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
     86 include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_2ND_ARCH).mk
     87 endif
     88 
     89 
     90 # Clang compiler-specific libc headers
     91 CLANG_CONFIG_EXTRA_HOST_C_INCLUDES := $(LLVM_PREBUILTS_HEADER_PATH)
     92 CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES := $(LLVM_PREBUILTS_HEADER_PATH) $(TARGET_OUT_HEADERS)/clang
     93 
     94 # Address sanitizer clang config
     95 ADDRESS_SANITIZER_RUNTIME_LIBRARY := libclang_rt.asan_$(TARGET_ARCH)_android
     96 ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -fsanitize=address -fno-omit-frame-pointer
     97 ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit
     98 ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl $(ADDRESS_SANITIZER_RUNTIME_LIBRARY)
     99 ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan
    100 
    101 # This allows us to use the superset of functionality that compiler-rt
    102 # provides to Clang (for supporting features like -ftrapv).
    103 COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler_rt-extras
    104