1# Copyright (C) 2014 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# 15 16# this file is used to prepare the NDK to build with the clang-3.5 17# toolchain any number of source files 18# 19# its purpose is to define (or re-define) templates used to build 20# various sources into target object files, libraries or executables. 21# 22# Note that this file may end up being parsed several times in future 23# revisions of the NDK. 24# 25 26TOOLCHAIN_VERSION := 4.9 27 28ifneq ($(filter %bcarmeabi-v7a,$(TARGET_ARCH_ABI)),) 29SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 30TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 31TARGET_ARCH_ABI := armeabi-v7a 32TARGET_ARM_MODE := arm 33TARGET_LDFLAGS += -Wl,-link-native-binary 34NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 35 36TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/arm-linux-androideabi-$(TOOLCHAIN_VERSION)) 37cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/arm-linux-androideabi-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 38 39include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 40 41else 42ifneq ($(filter %bcarmeabi-v7a-hard,$(TARGET_ARCH_ABI)),) 43SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 44TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 45TARGET_ARCH_ABI := armeabi-v7a-hard 46TARGET_ARM_MODE := arm 47TARGET_LDFLAGS += -Wl,-link-native-binary 48NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 49 50TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/arm-linux-androideabi-$(TOOLCHAIN_VERSION)) 51cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/arm-linux-androideabi-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 52 53include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 54 55else 56ifneq ($(filter %bcarmeabi,$(TARGET_ARCH_ABI)),) 57SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 58TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 59TARGET_ARCH_ABI := armeabi 60TARGET_ARM_MODE := arm 61TARGET_LDFLAGS += -Wl,-link-native-binary 62NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 63 64TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/arm-linux-androideabi-$(TOOLCHAIN_VERSION)) 65cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/arm-linux-androideabi-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 66 67include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 68 69else 70ifneq ($(filter %bcx86,$(TARGET_ARCH_ABI)),) 71SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86 72TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86/gdbserver/gdbserver 73TARGET_ARCH_ABI := x86 74TARGET_LDFLAGS += -Wl,-link-native-binary 75NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 76 77TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/x86-$(TOOLCHAIN_VERSION)) 78cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/i686-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 79 80include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 81 82else 83ifneq ($(filter %bcmips,$(TARGET_ARCH_ABI)),) 84SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips 85TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips/gdbserver/gdbserver 86TARGET_ARCH_ABI := mips 87TARGET_LDFLAGS += -Wl,-link-native-binary 88NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 89 90TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/mipsel-linux-android-$(TOOLCHAIN_VERSION)) 91cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/mipsel-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 92 93include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 94 95else 96ifneq ($(filter %bcarm64-v8a,$(TARGET_ARCH_ABI)),) 97SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm64 98TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm64/gdbserver/gdbserver 99TARGET_ARCH_ABI := arm64-v8a 100TARGET_LDFLAGS += -Wl,-link-native-binary 101NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 102 103TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/aarch64-linux-android-$(TOOLCHAIN_VERSION)) 104cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/aarch64-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 105UNKNOWN_ABI_64 := true 106 107include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 108 109else 110ifneq ($(filter %bcx86_64,$(TARGET_ARCH_ABI)),) 111SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86_64 112TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86_64/gdbserver/gdbserver 113TARGET_ARCH_ABI := x86_64 114TARGET_LDFLAGS += -Wl,-link-native-binary 115NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 116 117TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/x86_64-$(TOOLCHAIN_VERSION)) 118cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/x86_64-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 119UNKNOWN_ABI_64 := true 120 121include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 122 123else 124ifneq ($(filter %bcmips64,$(TARGET_ARCH_ABI)),) 125SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips64 126TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips64/gdbserver/gdbserver 127TARGET_ARCH_ABI := mips64 128TARGET_LDFLAGS += -Wl,-link-native-binary 129NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 130 131TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/mips64el-linux-android-$(TOOLCHAIN_VERSION)) 132cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/mips64el-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 133UNKNOWN_ABI_64 := true 134 135include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 136 137else 138ifneq ($(filter %armeabi-v7a,$(TARGET_ARCH_ABI)),) 139 140SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 141TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 142TARGET_ARCH_ABI := armeabi-v7a 143NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 144TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a/libportable.a $(TARGET_LDLIBS) 145TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a/libportable.wrap 146include $(NDK_ROOT)/toolchains/arm-linux-androideabi-clang3.5/setup.mk 147 148else 149ifneq ($(filter %armeabi-v7a-hard,$(TARGET_ARCH_ABI)),) 150 151SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 152TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 153TARGET_ARCH_ABI := armeabi-v7a-hard 154NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 155TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a-hard/libportable.a $(TARGET_LDLIBS) 156TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a-hard/libportable.wrap 157include $(NDK_ROOT)/toolchains/arm-linux-androideabi-clang3.5/setup.mk 158 159else 160ifneq ($(filter %armeabi,$(TARGET_ARCH_ABI)),) 161 162SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 163TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 164TARGET_ARCH_ABI := armeabi 165NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 166TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/armeabi/libportable.a $(TARGET_LDLIBS) 167TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/armeabi/libportable.wrap 168include $(NDK_ROOT)/toolchains/arm-linux-androideabi-clang3.5/setup.mk 169 170else 171ifneq ($(filter %x86,$(TARGET_ARCH_ABI)),) 172 173SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86 174TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86/gdbserver/gdbserver 175TARGET_ARCH_ABI := x86 176NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 177TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/x86/libportable.a $(TARGET_LDLIBS) 178TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/x86/libportable.wrap 179include $(NDK_ROOT)/toolchains/x86-clang3.5/setup.mk 180 181else 182ifneq ($(filter %mips,$(TARGET_ARCH_ABI)),) 183 184SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips 185TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips/gdbserver/gdbserver 186TARGET_ARCH_ABI := mips 187NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 188TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/mips/libportable.a $(TARGET_LDLIBS) 189TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/mips/libportable.wrap 190include $(NDK_ROOT)/toolchains/mipsel-linux-android-clang3.5/setup.mk 191 192else 193ifneq ($(filter %arm64-v8a,$(TARGET_ARCH_ABI)),) 194 195SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm64 196TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm64/gdbserver/gdbserver 197TARGET_ARCH_ABI := arm64-v8a 198NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 199TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/arm64-v8a/libportable.a $(TARGET_LDLIBS) 200TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/arm64-v8a/libportable.wrap 201include $(NDK_ROOT)/toolchains/aarch64-linux-android-clang3.5/setup.mk 202 203else 204ifneq ($(filter %x86_64,$(TARGET_ARCH_ABI)),) 205 206SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86_64 207TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86_64/gdbserver/gdbserver 208TARGET_ARCH_ABI := x86_64 209NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 210TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/x86_64/libportable.a $(TARGET_LDLIBS) 211TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/x86_64/libportable.wrap 212include $(NDK_ROOT)/toolchains/x86_64-clang3.5/setup.mk 213 214else 215ifneq ($(filter %mips64,$(TARGET_ARCH_ABI)),) 216 217SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips64 218TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips64/gdbserver/gdbserver 219TARGET_ARCH_ABI := mips64 220NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 221TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/mips64/libportable.a $(TARGET_LDLIBS) 222TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/mips64/libportable.wrap 223include $(NDK_ROOT)/toolchains/mips64el-linux-android-clang3.5/setup.mk 224 225else 226 227# if unknown ABI ends with 64 suffix then use le64 228ifneq ($(filter %64,$(APP_ABI)),) 229UNKNOWN_ABI_64 := true 230NDK_APP_DST_DIR := $(NDK_APP_LIBS_OUT)/$(TARGET_ARCH_ABI)64 231endif 232 233TARGET_OBJ_EXTENSION := .bc 234TARGET_LIB_EXTENSION := .a 235TARGET_SONAME_EXTENSION := .bc 236 237include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 238 239endif 240endif 241endif 242endif 243endif 244endif 245endif 246endif 247endif 248endif 249endif 250endif 251endif 252endif 253endif 254endif 255