summaryrefslogtreecommitdiff
path: root/toolchains
diff options
context:
space:
mode:
authorJoseph Wen <josephwen@google.com>2011-06-27 18:50:49 -0700
committerJoseph Wen <josephwen@google.com>2011-06-28 14:17:25 -0700
commit05be040fdd9fa9d23259d6b6a4aaf4f2aca9c9f2 (patch)
treef0a30a5cafa8bd5133fe5e93ab30c5dec3172442 /toolchains
parentd93540db02e07fd4d169e8e79de2a1fc8f952064 (diff)
downloadgdk-05be040fdd9fa9d23259d6b6a4aaf4f2aca9c9f2.tar.gz
Upload GDK
Change-Id: I2413c15f933ef78e734757946ae9bdaf93b91aae
Diffstat (limited to 'toolchains')
-rw-r--r--toolchains/arm-eabi-4.4.0/config.mk19
-rw-r--r--toolchains/arm-eabi-4.4.0/setup.mk122
-rw-r--r--toolchains/llvm/config.mk1
-rw-r--r--toolchains/llvm/setup.mk33
4 files changed, 175 insertions, 0 deletions
diff --git a/toolchains/arm-eabi-4.4.0/config.mk b/toolchains/arm-eabi-4.4.0/config.mk
new file mode 100644
index 0000000..43a28fa
--- /dev/null
+++ b/toolchains/arm-eabi-4.4.0/config.mk
@@ -0,0 +1,19 @@
+# Copyright (C) 2009 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-eabi-4.4.0 toolchain for the Android NDK
+# the real meat is in the setup.mk file adjacent to this one
+#
+TOOLCHAIN_ABIS := armeabi armeabi-v7a
diff --git a/toolchains/arm-eabi-4.4.0/setup.mk b/toolchains/arm-eabi-4.4.0/setup.mk
new file mode 100644
index 0000000..fc187c0
--- /dev/null
+++ b/toolchains/arm-eabi-4.4.0/setup.mk
@@ -0,0 +1,122 @@
+# Copyright (C) 2009 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-eabi-4.4.0
+# 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.
+#
+
+TARGET_CFLAGS := \
+ -fpic \
+ -mthumb-interwork \
+ -ffunction-sections \
+ -funwind-tables \
+ -fstack-protector \
+ -fno-short-enums \
+ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ \
+ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \
+
+#
+# Normally, this macro should be defined by the toolchain automatically.
+# Unfortunately, this is not the case, so add it manually. Note that
+# the arm-linux-androideabi toolchain does not have this problem.
+#
+TARGET_CFLAGS += -D__ANDROID__
+
+TARGET_LDFLAGS :=
+
+TARGET_C_INCLUDES := \
+ $(SYSROOT)/usr/include
+
+# This is to avoid the dreaded warning compiler message:
+# note: the mangling of 'va_list' has changed in GCC 4.4
+#
+# The fact that the mangling changed does not affect the NDK ABI
+# very fortunately (since none of the exposed APIs used va_list
+# in their exported C++ functions). Also, GCC 4.5 has already
+# removed the warning from the compiler.
+#
+TARGET_CFLAGS += -Wno-psabi
+
+ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
+ TARGET_CFLAGS += -march=armv7-a \
+ -mfloat-abi=softfp \
+ -mfpu=vfp
+
+ TARGET_LDFLAGS += -Wl,--fix-cortex-a8
+else
+ TARGET_CFLAGS += -march=armv5te \
+ -mtune=xscale \
+ -msoft-float
+endif
+
+TARGET_CFLAGS.neon := -mfpu=neon
+
+TARGET_arm_release_CFLAGS := -O2 \
+ -fomit-frame-pointer \
+ -fstrict-aliasing \
+ -funswitch-loops \
+ -finline-limit=300
+
+TARGET_thumb_release_CFLAGS := -mthumb \
+ -Os \
+ -fomit-frame-pointer \
+ -fno-strict-aliasing \
+ -finline-limit=64
+
+# When building for debug, compile everything as arm.
+TARGET_arm_debug_CFLAGS := $(TARGET_arm_release_CFLAGS) \
+ -fno-omit-frame-pointer \
+ -fno-strict-aliasing
+
+TARGET_thumb_debug_CFLAGS := $(TARGET_thumb_release_CFLAGS) \
+ -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$(space)$(space)) \
+$(call set-src-files-text,$(__thumb_sources),thumb)
+
+TARGET_LIBGCC := $(shell $(TARGET_CC) -mthumb-interwork -print-libgcc-file-name)
diff --git a/toolchains/llvm/config.mk b/toolchains/llvm/config.mk
new file mode 100644
index 0000000..c880834
--- /dev/null
+++ b/toolchains/llvm/config.mk
@@ -0,0 +1 @@
+TOOLCHAIN_ABIS := llvm
diff --git a/toolchains/llvm/setup.mk b/toolchains/llvm/setup.mk
new file mode 100644
index 0000000..7b3b481
--- /dev/null
+++ b/toolchains/llvm/setup.mk
@@ -0,0 +1,33 @@
+TOOLCHAIN_PREFIX := $(TOOLCHAIN_PREFIX:%-=%)
+
+TARGET_CC := $(TOOLCHAIN_PREFIX)llvm-ndk-cc
+TARGET_CFLAGS :=
+
+TARGET_CXX := $(TOOLCHAIN_PREFIX)llvm-ndk-cc
+TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
+
+TARGET_LD := $(TOOLCHAIN_PREFIX)llvm-ndk-link
+TARGET_LDFLAGS :=
+
+TARGET_AR := ar
+TARGET_ARFLAGS := crs
+
+TARGET_C_INCLUDES := \
+ $(SYSROOT)/usr/include
+
+#
+# Break build/core/default-build-commands.mk rules
+#
+TARGET_NO_UNDEFINED_LDFLAGS :=
+TARGET_NO_EXECUTE_CFLAGS :=
+TARGET_NO_EXECUTE_LDFLAGS :=
+TARGET_LDLIBS :=
+cmd-strip :=
+
+define cmd-build-bitcode
+$(TARGET_LD) \
+ $(call host-path, $(PRIVATE_OBJECTS)) \
+ $(PRIVATE_LDFLAGS) \
+ $(PRIVATE_LDLIBS) \
+ -o $(call host-path, $@)
+endef