Skip to content

Commit

Permalink
Add clang-3.7 toolchain
Browse files Browse the repository at this point in the history
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
  • Loading branch information
dmsck committed Sep 3, 2015
1 parent 9c0b93f commit 01a6933
Show file tree
Hide file tree
Showing 24 changed files with 743 additions and 16 deletions.
4 changes: 2 additions & 2 deletions build/core/setup-toolchain.mk
Expand Up @@ -20,8 +20,8 @@
$(call assert-defined,TARGET_PLATFORM TARGET_ARCH TARGET_ARCH_ABI)
$(call assert-defined,NDK_APPS NDK_APP_STL NDK_APP_OBJC)

LLVM_VERSION_LIST := 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6
NDK_64BIT_TOOLCHAIN_LIST := clang3.6 clang3.5 clang3.4 5 4.9
LLVM_VERSION_LIST := 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.7 3.6
NDK_64BIT_TOOLCHAIN_LIST := clang3.6 clang3.7 clang3.5 clang3.4 5 4.9

# Check that we have a toolchain that supports the current ABI.
# NOTE: If NDK_TOOLCHAIN is defined, we're going to use it.
Expand Down
2 changes: 1 addition & 1 deletion build/tools/build-gnustep-libobjc2.sh
Expand Up @@ -59,7 +59,7 @@ register_var_option "--build-dir=<path>" OPTION_BUILD_DIR "Specify temporary bui
ABIS="$PREBUILT_ABIS"
register_var_option "--abis=<list>" ABIS "Specify list of target ABIs."

TOOLCHAIN_VERSION=clang3.6
TOOLCHAIN_VERSION=clang${DEFAULT_LLVM_VERSION}
register_var_option "--toolchain-version=<ver>" TOOLCHAIN_VERSION "Specify toolchain version"

register_jobs_option
Expand Down
2 changes: 1 addition & 1 deletion build/tools/dev-defaults.sh
Expand Up @@ -144,7 +144,7 @@ DEFAULT_ARCH_TOOLCHAIN_NAME_mips64=mips64el-linux-android
DEFAULT_ARCH_TOOLCHAIN_PREFIX_mips64=mips64el-linux-android

# The space-separated list of all LLVM versions we support in NDK
DEFAULT_LLVM_VERSION_LIST="3.6"
DEFAULT_LLVM_VERSION_LIST="3.6 3.7"

# The default LLVM version (first item in the list)
DEFAULT_LLVM_VERSION=$(echo "$DEFAULT_LLVM_VERSION_LIST" | tr ' ' '\n' | head -n 1)
Expand Down
@@ -1 +1 @@
{"broken-toolchain-version": "clang3.6"}
{"broken-toolchain-version": ["clang3.6", "clang3.7"]}
2 changes: 1 addition & 1 deletion tests/build/crystax-test-posix-interfaces/jni/arpa_inet.c
Expand Up @@ -41,7 +41,7 @@ void arpa_inet_check_functions()
{
uint16_t v16;
uint32_t v32;
struct in_addr inaddr;
struct in_addr inaddr = {0};

v16 = htons(0);
v16 = ntohs(0);
Expand Down
2 changes: 1 addition & 1 deletion tests/build/flto/properties.json
@@ -1 +1 @@
{"broken-toolchain-version": ["clang3.5", "clang3.6"]}
{"broken-toolchain-version": ["clang3.6", "clang3.7"]}
2 changes: 1 addition & 1 deletion tests/build/issue36131-flto-c++11/properties.json
@@ -1 +1 @@
{"broken-toolchain-version": ["clang3.5", "clang3.6"]}
{"broken-toolchain-version": ["clang3.6", "clang3.7"]}
Expand Up @@ -7,9 +7,6 @@ LOCAL_DISABLE_NO_EXECUTE := true
LOCAL_LDFLAGS += -Wl,--fatal-warnings

# Disable integrated assembler because -Wa,--execstack isn't supported
LOCAL_CFLAGS += $(strip \
$(if $(filter clang3.5,$(NDK_TOOLCHAIN_VERSION)),-no-integrated-as)\
$(if $(filter clang3.6,$(NDK_TOOLCHAIN_VERSION)),-fno-integrated-as)\
)
LOCAL_CFLAGS += $(if $(filter clang%,$(NDK_TOOLCHAIN_VERSION)),-fno-integrated-as)

include $(BUILD_EXECUTABLE)
2 changes: 1 addition & 1 deletion tests/build/mips-fp4/properties.json
@@ -1 +1 @@
{"broken-toolchain-version": ["clang3.5", "clang3.6"]}
{"broken-toolchain-version": ["clang3.6", "clang3.7"]}
@@ -1 +1 @@
{"broken-toolchain-version": ["clang3.5", "clang3.6"]}
{"broken-toolchain-version": ["clang3.6", "clang3.7"]}
@@ -1 +1 @@
{"broken-toolchain-version": ["gcc4.9", "gcc5", "clang3.6"]}
{"broken-toolchain-version": ["gcc4.9", "gcc5", "clang3.6", "clang3.7"]}
2 changes: 1 addition & 1 deletion tests/device/test-openmp/properties.json
@@ -1 +1 @@
{"broken-toolchain-version": ["clang3.5", "clang3.6"]}
{"broken-toolchain-version": ["clang3.6", "clang3.7"]}
20 changes: 20 additions & 0 deletions toolchains/aarch64-linux-android-clang3.7/config.mk
@@ -0,0 +1,20 @@
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# config file for the arm64 llvm-3.7 toolchain for the Android NDK
# the real meat is in the setup.mk file adjacent to this one
#
TOOLCHAIN_ARCH := arm64
TOOLCHAIN_ABIS := arm64-v8a
85 changes: 85 additions & 0 deletions toolchains/aarch64-linux-android-clang3.7/setup.mk
@@ -0,0 +1,85 @@
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# this file is used to prepare the NDK to build with the arm64 clang-3.7
# toolchain any number of source files
#
# its purpose is to define (or re-define) templates used to build
# various sources into target object files, libraries or executables.
#
# Note that this file may end up being parsed several times in future
# revisions of the NDK.
#

#
# Override the toolchain prefix
#

LLVM_VERSION := 3.7
LLVM_NAME := llvm-$(LLVM_VERSION)
LLVM_TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/$(LLVM_NAME)
LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(LLVM_TOOLCHAIN_ROOT))
LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/

TOOLCHAIN_VERSION := 4.9
TOOLCHAIN_NAME := aarch64-linux-android-$(TOOLCHAIN_VERSION)
TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/$(TOOLCHAIN_NAME)
TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(TOOLCHAIN_ROOT))
TOOLCHAIN_PREFIX := $(TOOLCHAIN_PREBUILT_ROOT)/bin/aarch64-linux-android-

TARGET_CC := $(LLVM_TOOLCHAIN_PREFIX)clang$(HOST_EXEEXT)
TARGET_CXX := $(LLVM_TOOLCHAIN_PREFIX)clang++$(HOST_EXEEXT)

LLVM_TRIPLE := aarch64-none-linux-android

TARGET_CFLAGS := \
-gcc-toolchain $(call host-path,$(TOOLCHAIN_PREBUILT_ROOT)) \
-target $(LLVM_TRIPLE) \
-ffunction-sections \
-funwind-tables \
-fstack-protector-strong \
-fpic \
-Wno-invalid-command-line-argument \
-Wno-unused-command-line-argument \
-no-canonical-prefixes

TARGET_C_INCLUDES := \
$(SYSROOT_INC)/usr/include

TARGET_LDFLAGS += \
-gcc-toolchain $(call host-path,$(TOOLCHAIN_PREBUILT_ROOT)) \
-target $(LLVM_TRIPLE) \
-no-canonical-prefixes

TARGET_arm64_release_CFLAGS := -O2 \
-g \
-DNDEBUG \
-fomit-frame-pointer \
-fstrict-aliasing

TARGET_arm64_debug_CFLAGS := $(TARGET_arm64_release_CFLAGS) \
-O0 \
-UNDEBUG \
-fno-omit-frame-pointer \
-fno-strict-aliasing

# This function will be called to determine the target CFLAGS used to build
# a C or Assembler source file, based on its tags.
#
TARGET-process-src-files-tags = \
$(eval __debug_sources := $(call get-src-files-with-tag,debug)) \
$(eval __release_sources := $(call get-src-files-without-tag,debug)) \
$(call set-src-files-target-cflags, $(__debug_sources), $(TARGET_arm64_debug_CFLAGS)) \
$(call set-src-files-target-cflags, $(__release_sources),$(TARGET_arm64_release_CFLAGS)) \
20 changes: 20 additions & 0 deletions toolchains/arm-linux-androideabi-clang3.7/config.mk
@@ -0,0 +1,20 @@
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# config file for the arm llvm-3.7 toolchain for the Android NDK
# the real meat is in the setup.mk file adjacent to this one
#
TOOLCHAIN_ARCH := arm
TOOLCHAIN_ABIS := armeabi armeabi-v7a armeabi-v7a-hard
161 changes: 161 additions & 0 deletions toolchains/arm-linux-androideabi-clang3.7/setup.mk
@@ -0,0 +1,161 @@
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# this file is used to prepare the NDK to build with the arm clang-3.7
# toolchain any number of source files
#
# its purpose is to define (or re-define) templates used to build
# various sources into target object files, libraries or executables.
#
# Note that this file may end up being parsed several times in future
# revisions of the NDK.
#

#
# Override the toolchain prefix
#

LLVM_VERSION := 3.7
LLVM_NAME := llvm-$(LLVM_VERSION)
LLVM_TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/$(LLVM_NAME)
LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(LLVM_TOOLCHAIN_ROOT))
LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/

TOOLCHAIN_VERSION := 4.9
TOOLCHAIN_NAME := arm-linux-androideabi-$(TOOLCHAIN_VERSION)
TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/$(TOOLCHAIN_NAME)
TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(TOOLCHAIN_ROOT))
TOOLCHAIN_PREFIX := $(TOOLCHAIN_PREBUILT_ROOT)/bin/arm-linux-androideabi-

TARGET_CC := $(LLVM_TOOLCHAIN_PREFIX)clang$(HOST_EXEEXT)
TARGET_CXX := $(LLVM_TOOLCHAIN_PREFIX)clang++$(HOST_EXEEXT)

#
# CFLAGS and LDFLAGS
#

TARGET_CFLAGS := \
-gcc-toolchain $(call host-path,$(TOOLCHAIN_PREBUILT_ROOT)) \
-fpic \
-ffunction-sections \
-funwind-tables \
-fstack-protector-strong \
-Wno-invalid-command-line-argument \
-Wno-unused-command-line-argument \
-no-canonical-prefixes

# Disable integrated-as for better compatibility
TARGET_CFLAGS += \
-fno-integrated-as

TARGET_LDFLAGS += \
-gcc-toolchain $(call host-path,$(TOOLCHAIN_PREBUILT_ROOT)) \
-no-canonical-prefixes

TARGET_C_INCLUDES := \
$(SYSROOT_INC)/usr/include

ifneq ($(filter %armeabi-v7a,$(TARGET_ARCH_ABI)),)
LLVM_TRIPLE := armv7-none-linux-androideabi

TARGET_CFLAGS += -target $(LLVM_TRIPLE) \
-march=armv7-a \
-mfloat-abi=softfp \
-mfpu=vfpv3-d16

TARGET_LDFLAGS += -target $(LLVM_TRIPLE) \
-Wl,--fix-cortex-a8
else
ifneq ($(filter %armeabi-v7a-hard,$(TARGET_ARCH_ABI)),)
LLVM_TRIPLE := armv7-none-linux-androideabi

TARGET_CFLAGS += -target $(LLVM_TRIPLE) \
-march=armv7-a \
-mfpu=vfpv3-d16 \
-mhard-float \
-D_NDK_MATH_NO_SOFTFP=1

TARGET_LDFLAGS += -target $(LLVM_TRIPLE) \
-Wl,--fix-cortex-a8 \
-Wl,--no-warn-mismatch \
-lm_hard
else
LLVM_TRIPLE := armv5te-none-linux-androideabi

TARGET_CFLAGS += -target $(LLVM_TRIPLE) \
-march=armv5te \
-mtune=xscale \
-msoft-float

TARGET_LDFLAGS += -target $(LLVM_TRIPLE)
endif
endif

TARGET_CFLAGS.neon := -mfpu=neon

TARGET_arm_release_CFLAGS := -O2 \
-g \
-DNDEBUG \
-fomit-frame-pointer \
-fstrict-aliasing

TARGET_thumb_release_CFLAGS := -mthumb \
-Os \
-g \
-DNDEBUG \
-fomit-frame-pointer \
-fno-strict-aliasing

# When building for debug, compile everything as arm.
TARGET_arm_debug_CFLAGS := $(TARGET_arm_release_CFLAGS) \
-O0 \
-UNDEBUG \
-fno-omit-frame-pointer \
-fno-strict-aliasing

TARGET_thumb_debug_CFLAGS := $(TARGET_thumb_release_CFLAGS) \
-O0 \
-UNDEBUG \
-marm \
-fno-omit-frame-pointer

# This function will be called to determine the target CFLAGS used to build
# a C or Assembler source file, based on its tags.
#
TARGET-process-src-files-tags = \
$(eval __arm_sources := $(call get-src-files-with-tag,arm)) \
$(eval __thumb_sources := $(call get-src-files-without-tag,arm)) \
$(eval __debug_sources := $(call get-src-files-with-tag,debug)) \
$(eval __release_sources := $(call get-src-files-without-tag,debug)) \
$(call set-src-files-target-cflags, \
$(call set_intersection,$(__arm_sources),$(__debug_sources)), \
$(TARGET_arm_debug_CFLAGS)) \
$(call set-src-files-target-cflags,\
$(call set_intersection,$(__arm_sources),$(__release_sources)),\
$(TARGET_arm_release_CFLAGS)) \
$(call set-src-files-target-cflags,\
$(call set_intersection,$(__arm_sources),$(__debug_sources)),\
$(TARGET_arm_debug_CFLAGS)) \
$(call set-src-files-target-cflags,\
$(call set_intersection,$(__thumb_sources),$(__release_sources)),\
$(TARGET_thumb_release_CFLAGS)) \
$(call set-src-files-target-cflags,\
$(call set_intersection,$(__thumb_sources),$(__debug_sources)),\
$(TARGET_thumb_debug_CFLAGS)) \
$(call add-src-files-target-cflags,\
$(call get-src-files-with-tag,neon),\
$(TARGET_CFLAGS.neon)) \
$(call set-src-files-text,$(__arm_sources),arm) \
$(call set-src-files-text,$(__thumb_sources),thumb)
20 changes: 20 additions & 0 deletions toolchains/mips64el-linux-android-clang3.7/config.mk
@@ -0,0 +1,20 @@
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# config file for the mips64el llvm-3.7 toolchain for the Android NDK
# the real meat is in the setup.mk file adjacent to this one
#
TOOLCHAIN_ARCH := mips64
TOOLCHAIN_ABIS := mips64

0 comments on commit 01a6933

Please sign in to comment.