diff --git a/core/clang/HOST_x86.mk b/core/clang/HOST_x86.mk index f38f04efe..ee61e5e02 100644 --- a/core/clang/HOST_x86.mk +++ b/core/clang/HOST_x86.mk @@ -1,8 +1,13 @@ include $(BUILD_SYSTEM)/clang/x86.mk +include $(BUILD_SYSTEM)/clang/x86_common.mk ifeq ($(HOST_OS),linux) CLANG_CONFIG_x86_HOST_TRIPLE := i686-linux-gnu +CLANG_CONFIG_x86_HOST_COMBO_EXTRA_ASFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_ASFLAGS) +CLANG_CONFIG_x86_HOST_COMBO_EXTRA_CFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CFLAGS) +CLANG_CONFIG_x86_HOST_COMBO_EXTRA_CPPFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CPPFLAGS) +CLANG_CONFIG_x86_HOST_COMBO_EXTRA_LDFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_LDFLAGS) endif ifeq ($(HOST_OS),darwin) CLANG_CONFIG_x86_HOST_TRIPLE := i686-apple-darwin @@ -15,25 +20,29 @@ CLANG_CONFIG_x86_HOST_EXTRA_ASFLAGS := \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_x86_EXTRA_ASFLAGS) \ - -target $(CLANG_CONFIG_x86_HOST_TRIPLE) \ + $(CLANG_CONFIG_x86_HOST_COMBO_EXTRA_ASFLAGS) \ + -target $(CLANG_CONFIG_x86_HOST_TRIPLE) CLANG_CONFIG_x86_HOST_EXTRA_CFLAGS := \ $(CLANG_CONFIG_EXTRA_CFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CFLAGS) \ $(CLANG_CONFIG_x86_EXTRA_CFLAGS) \ + $(CLANG_CONFIG_x86_HOST_COMBO_EXTRA_CFLAGS) \ $(CLANG_CONFIG_x86_HOST_EXTRA_ASFLAGS) CLANG_CONFIG_x86_HOST_EXTRA_CPPFLAGS := \ $(CLANG_CONFIG_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_x86_EXTRA_CPPFLAGS) \ + $(CLANG_CONFIG_x86_HOST_COMBO_EXTRA_CPPFLAGS) \ + -target $(CLANG_CONFIG_x86_HOST_TRIPLE) CLANG_CONFIG_x86_HOST_EXTRA_LDFLAGS := \ $(CLANG_CONFIG_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_x86_EXTRA_LDFLAGS) \ - -target $(CLANG_CONFIG_x86_HOST_TRIPLE) \ - + $(CLANG_CONFIG_x86_HOST_COMBO_EXTRA_LDFLAGS) \ + -target $(CLANG_CONFIG_x86_HOST_TRIPLE) define convert-to-host-clang-flags $(strip \ diff --git a/core/clang/HOST_x86_64.mk b/core/clang/HOST_x86_64.mk index ea33a469e..d60e15fea 100644 --- a/core/clang/HOST_x86_64.mk +++ b/core/clang/HOST_x86_64.mk @@ -1,8 +1,13 @@ include $(BUILD_SYSTEM)/clang/x86_64.mk +include $(BUILD_SYSTEM)/clang/x86_common.mk ifeq ($(HOST_OS),linux) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-linux-gnu +CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_ASFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_ASFLAGS) +CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_CFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CFLAGS) +CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_CPPFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CPPFLAGS) +CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_LDFLAGS := $(CLANG_CONFIG_x86_LINUX_HOST_EXTRA_LDFLAGS) endif ifeq ($(HOST_OS),darwin) CLANG_CONFIG_x86_64_HOST_TRIPLE := x86_64-apple-darwin @@ -15,25 +20,29 @@ CLANG_CONFIG_x86_64_HOST_EXTRA_ASFLAGS := \ $(CLANG_CONFIG_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_ASFLAGS) \ $(CLANG_CONFIG_x86_64_EXTRA_ASFLAGS) \ - -target $(CLANG_CONFIG_x86_64_HOST_TRIPLE) \ + $(CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_ASFLAGS) \ + -target $(CLANG_CONFIG_x86_64_HOST_TRIPLE) CLANG_CONFIG_x86_64_HOST_EXTRA_CFLAGS := \ $(CLANG_CONFIG_EXTRA_CFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CFLAGS) \ $(CLANG_CONFIG_x86_64_EXTRA_CFLAGS) \ + $(CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_CFLAGS) \ $(CLANG_CONFIG_x86_64_HOST_EXTRA_ASFLAGS) CLANG_CONFIG_x86_64_HOST_EXTRA_CPPFLAGS := \ $(CLANG_CONFIG_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_CPPFLAGS) \ $(CLANG_CONFIG_x86_64_EXTRA_CPPFLAGS) \ + $(CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_CPPFLAGS) \ + -target $(CLANG_CONFIG_x86_64_HOST_TRIPLE) CLANG_CONFIG_x86_64_HOST_EXTRA_LDFLAGS := \ $(CLANG_CONFIG_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_HOST_EXTRA_LDFLAGS) \ $(CLANG_CONFIG_x86_64_EXTRA_LDFLAGS) \ - -target $(CLANG_CONFIG_x86_64_HOST_TRIPLE) \ - + $(CLANG_CONFIG_x86_64_HOST_COMBO_EXTRA_LDFLAGS) \ + -target $(CLANG_CONFIG_x86_64_HOST_TRIPLE) define convert-to-host-clang-flags $(strip \ diff --git a/core/clang/config.mk b/core/clang/config.mk index 96f860d4e..7a513c667 100644 --- a/core/clang/config.mk +++ b/core/clang/config.mk @@ -38,10 +38,10 @@ CLANG_CONFIG_UNKNOWN_CFLAGS := \ -Wno-unused-but-set-parameter # Clang flags for all host rules -CLANG_CONFIG_HOST_EXTRA_ASFLAGS := -CLANG_CONFIG_HOST_EXTRA_CFLAGS := -CLANG_CONFIG_HOST_EXTRA_CPPFLAGS := -CLANG_CONFIG_HOST_EXTRA_LDFLAGS := +CLANG_CONFIG_HOST_EXTRA_ASFLAGS := --gcc-toolchain=$(HOST_TOOLCHAIN_FOR_CLANG) +CLANG_CONFIG_HOST_EXTRA_CFLAGS := --gcc-toolchain=$(HOST_TOOLCHAIN_FOR_CLANG) +CLANG_CONFIG_HOST_EXTRA_CPPFLAGS := --gcc-toolchain=$(HOST_TOOLCHAIN_FOR_CLANG) +CLANG_CONFIG_HOST_EXTRA_LDFLAGS := --gcc-toolchain=$(HOST_TOOLCHAIN_FOR_CLANG) # Clang flags for all target rules CLANG_CONFIG_TARGET_EXTRA_ASFLAGS := @@ -50,7 +50,11 @@ CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS := -nostdlibinc CLANG_CONFIG_TARGET_EXTRA_LDFLAGS := # HOST config +ifneq ($(strip $(BUILD_HOST_64bit)),) +include $(BUILD_SYSTEM)/clang/HOST_x86_64.mk +else include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk +endif # TARGET config clang_2nd_arch_prefix := diff --git a/core/clang/x86_common.mk b/core/clang/x86_common.mk new file mode 100644 index 000000000..d75d83f0a --- /dev/null +++ b/core/clang/x86_common.mk @@ -0,0 +1,42 @@ +ifeq ($(HOST_OS),darwin) +# nothing required here yet +endif + +ifeq ($(HOST_OS),linux) + +ifneq ($(strip $(BUILD_HOST_64bit)),) +# Needs to be updated along with gcc +HOST_ARCH_DESCRIPTOR_FOR_CLANG := x86_64-linux +else +# Needs to be updated along with gcc +HOST_ARCH_DESCRIPTOR_FOR_CLANG := i686-linux +endif + +CLANG_CONFIG_x86_LINUX_HOST_EXTRA_ASFLAGS := \ + --sysroot=$(HOST_TOOLCHAIN_FOR_CLANG)/sysroot + +CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CFLAGS := + +CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CPPFLAGS := \ + --sysroot=$(HOST_TOOLCHAIN_FOR_CLANG)/sysroot \ + -isystem $(HOST_TOOLCHAIN_FOR_CLANG)/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/include/c++/4.6.x-google \ + -isystem $(HOST_TOOLCHAIN_FOR_CLANG)/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/include/c++/4.6.x-google/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG) \ + -isystem $(HOST_TOOLCHAIN_FOR_CLANG)/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/include/c++/4.6.x-google/backward \ + +CLANG_CONFIG_x86_LINUX_HOST_EXTRA_LDFLAGS := \ + --sysroot=$(HOST_TOOLCHAIN_FOR_CLANG)/sysroot \ + -B$(HOST_TOOLCHAIN_FOR_CLANG)/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/bin \ + -B$(HOST_TOOLCHAIN_FOR_CLANG)/lib/gcc/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/4.6.x-google \ + -L$(HOST_TOOLCHAIN_FOR_CLANG)/lib/gcc/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/4.6.x-google + +ifneq ($(strip $(BUILD_HOST_64bit)),) +# need to add lib64 if building 64-bit, otherwise lib +CLANG_CONFIG_x86_LINUX_HOST_EXTRA_LDFLAGS += -L$(HOST_TOOLCHAIN_FOR_CLANG)/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/lib64/ +else +CLANG_CONFIG_x86_LINUX_HOST_EXTRA_LDFLAGS += -L$(HOST_TOOLCHAIN_FOR_CLANG)/$(HOST_ARCH_DESCRIPTOR_FOR_CLANG)/lib/ +endif +endif # linux + +ifeq ($(HOST_OS),windows) +# nothing required here yet +endif \ No newline at end of file diff --git a/core/combo/HOST_darwin-x86.mk b/core/combo/HOST_darwin-x86.mk index 037dee6f9..994196a1b 100644 --- a/core/combo/HOST_darwin-x86.mk +++ b/core/combo/HOST_darwin-x86.mk @@ -156,3 +156,7 @@ endef define get-file-size stat -f "%z" $(1) endef + +# gcc location for clang; to be updated when clang is updated +# HOST_TOOLCHAIN_ROOT is a Darwin-specific define +HOST_TOOLCHAIN_FOR_CLANG := $(HOST_TOOLCHAIN_ROOT) \ No newline at end of file diff --git a/core/combo/HOST_linux-x86.mk b/core/combo/HOST_linux-x86.mk index 129acb053..3c872649d 100644 --- a/core/combo/HOST_linux-x86.mk +++ b/core/combo/HOST_linux-x86.mk @@ -41,10 +41,14 @@ ifneq ($(strip $(BUILD_HOST_64bit)),) # which can benefit from 64-bit host arch. HOST_GLOBAL_CFLAGS += -m64 -Wa,--noexecstack HOST_GLOBAL_LDFLAGS += -m64 -Wl,-z,noexecstack +# gcc location for clang; to be updated when clang is updated +HOST_TOOLCHAIN_FOR_CLANG := prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/ else # We expect SSE3 floating point math. HOST_GLOBAL_CFLAGS += -mstackrealign -msse3 -mfpmath=sse -m32 -Wa,--noexecstack HOST_GLOBAL_LDFLAGS += -m32 -Wl,-z,noexecstack +# gcc location for clang; to be updated when clang is updated +HOST_TOOLCHAIN_FOR_CLANG := prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/ endif # BUILD_HOST_64bit ifneq ($(strip $(BUILD_HOST_static)),)