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 26 TOOLCHAIN_VERSION := 4.9 27 28 ifneq ($(filter %bcarmeabi-v7a,$(TARGET_ARCH_ABI)),) 29 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 30 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 31 TARGET_ARCH_ABI := armeabi-v7a 32 TARGET_ARM_MODE := arm 33 TARGET_LDFLAGS += -Wl,-link-native-binary 34 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 35 36 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/arm-linux-androideabi-$(TOOLCHAIN_VERSION)) 37 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/arm-linux-androideabi-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 38 39 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 40 41 else 42 ifneq ($(filter %bcarmeabi-v7a-hard,$(TARGET_ARCH_ABI)),) 43 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 44 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 45 TARGET_ARCH_ABI := armeabi-v7a-hard 46 TARGET_ARM_MODE := arm 47 TARGET_LDFLAGS += -Wl,-link-native-binary 48 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 49 50 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/arm-linux-androideabi-$(TOOLCHAIN_VERSION)) 51 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/arm-linux-androideabi-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 52 53 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 54 55 else 56 ifneq ($(filter %bcarmeabi,$(TARGET_ARCH_ABI)),) 57 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 58 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 59 TARGET_ARCH_ABI := armeabi 60 TARGET_ARM_MODE := arm 61 TARGET_LDFLAGS += -Wl,-link-native-binary 62 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 63 64 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/arm-linux-androideabi-$(TOOLCHAIN_VERSION)) 65 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/arm-linux-androideabi-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 66 67 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 68 69 else 70 ifneq ($(filter %bcx86,$(TARGET_ARCH_ABI)),) 71 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86 72 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86/gdbserver/gdbserver 73 TARGET_ARCH_ABI := x86 74 TARGET_LDFLAGS += -Wl,-link-native-binary 75 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 76 77 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/x86-$(TOOLCHAIN_VERSION)) 78 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/i686-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 79 80 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 81 82 else 83 ifneq ($(filter %bcmips,$(TARGET_ARCH_ABI)),) 84 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips 85 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips/gdbserver/gdbserver 86 TARGET_ARCH_ABI := mips 87 TARGET_LDFLAGS += -Wl,-link-native-binary 88 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 89 90 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/mipsel-linux-android-$(TOOLCHAIN_VERSION)) 91 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/mipsel-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 92 93 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 94 95 else 96 ifneq ($(filter %bcarm64-v8a,$(TARGET_ARCH_ABI)),) 97 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm64 98 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm64/gdbserver/gdbserver 99 TARGET_ARCH_ABI := arm64-v8a 100 TARGET_LDFLAGS += -Wl,-link-native-binary 101 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 102 103 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/aarch64-linux-android-$(TOOLCHAIN_VERSION)) 104 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/aarch64-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 105 UNKNOWN_ABI_64 := true 106 107 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 108 109 else 110 ifneq ($(filter %bcx86_64,$(TARGET_ARCH_ABI)),) 111 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86_64 112 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86_64/gdbserver/gdbserver 113 TARGET_ARCH_ABI := x86_64 114 TARGET_LDFLAGS += -Wl,-link-native-binary 115 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 116 117 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/x86_64-$(TOOLCHAIN_VERSION)) 118 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/x86_64-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 119 UNKNOWN_ABI_64 := true 120 121 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 122 123 else 124 ifneq ($(filter %bcmips64,$(TARGET_ARCH_ABI)),) 125 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips64 126 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips64/gdbserver/gdbserver 127 TARGET_ARCH_ABI := mips64 128 TARGET_LDFLAGS += -Wl,-link-native-binary 129 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 130 131 TARGET_PREBUILT_ROOT = $(call host-prebuilt-tag,$(NDK_ROOT)/toolchains/mips64el-linux-android-$(TOOLCHAIN_VERSION)) 132 cmd-strip = $(TARGET_PREBUILT_ROOT)/bin/mips64el-linux-android-strip$(HOST_EXEEXT) --strip-unneeded $(call host-path,$1) 133 UNKNOWN_ABI_64 := true 134 135 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 136 137 else 138 ifneq ($(filter %armeabi-v7a,$(TARGET_ARCH_ABI)),) 139 140 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 141 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 142 TARGET_ARCH_ABI := armeabi-v7a 143 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 144 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a/libportable.a $(TARGET_LDLIBS) 145 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a/libportable.wrap 146 include $(NDK_ROOT)/toolchains/arm-linux-androideabi-clang3.5/setup.mk 147 148 else 149 ifneq ($(filter %armeabi-v7a-hard,$(TARGET_ARCH_ABI)),) 150 151 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 152 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 153 TARGET_ARCH_ABI := armeabi-v7a-hard 154 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 155 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a-hard/libportable.a $(TARGET_LDLIBS) 156 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/armeabi-v7a-hard/libportable.wrap 157 include $(NDK_ROOT)/toolchains/arm-linux-androideabi-clang3.5/setup.mk 158 159 else 160 ifneq ($(filter %armeabi,$(TARGET_ARCH_ABI)),) 161 162 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm 163 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm/gdbserver/gdbserver 164 TARGET_ARCH_ABI := armeabi 165 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 166 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/armeabi/libportable.a $(TARGET_LDLIBS) 167 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/armeabi/libportable.wrap 168 include $(NDK_ROOT)/toolchains/arm-linux-androideabi-clang3.5/setup.mk 169 170 else 171 ifneq ($(filter %x86,$(TARGET_ARCH_ABI)),) 172 173 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86 174 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86/gdbserver/gdbserver 175 TARGET_ARCH_ABI := x86 176 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 177 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/x86/libportable.a $(TARGET_LDLIBS) 178 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/x86/libportable.wrap 179 include $(NDK_ROOT)/toolchains/x86-clang3.5/setup.mk 180 181 else 182 ifneq ($(filter %mips,$(TARGET_ARCH_ABI)),) 183 184 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips 185 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips/gdbserver/gdbserver 186 TARGET_ARCH_ABI := mips 187 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 188 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/mips/libportable.a $(TARGET_LDLIBS) 189 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/mips/libportable.wrap 190 include $(NDK_ROOT)/toolchains/mipsel-linux-android-clang3.5/setup.mk 191 192 else 193 ifneq ($(filter %arm64-v8a,$(TARGET_ARCH_ABI)),) 194 195 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm64 196 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-arm64/gdbserver/gdbserver 197 TARGET_ARCH_ABI := arm64-v8a 198 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 199 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/arm64-v8a/libportable.a $(TARGET_LDLIBS) 200 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/arm64-v8a/libportable.wrap 201 include $(NDK_ROOT)/toolchains/aarch64-linux-android-clang3.5/setup.mk 202 203 else 204 ifneq ($(filter %x86_64,$(TARGET_ARCH_ABI)),) 205 206 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-x86_64 207 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-x86_64/gdbserver/gdbserver 208 TARGET_ARCH_ABI := x86_64 209 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 210 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/x86_64/libportable.a $(TARGET_LDLIBS) 211 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/x86_64/libportable.wrap 212 include $(NDK_ROOT)/toolchains/x86_64-clang3.5/setup.mk 213 214 else 215 ifneq ($(filter %mips64,$(TARGET_ARCH_ABI)),) 216 217 SYSROOT_LINK := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-mips64 218 TARGET_GDBSERVER := $(NDK_ROOT)/prebuilt/android-mips64/gdbserver/gdbserver 219 TARGET_ARCH_ABI := mips64 220 NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI) 221 TARGET_LDLIBS := $(NDK_ROOT)/sources/android/libportable/libs/mips64/libportable.a $(TARGET_LDLIBS) 222 TARGET_LDFLAGS += -Wl,@$(NDK_ROOT)/sources/android/libportable/libs/mips64/libportable.wrap 223 include $(NDK_ROOT)/toolchains/mips64el-linux-android-clang3.5/setup.mk 224 225 else 226 227 # if unknown ABI ends with 64 suffix then use le64 228 ifneq ($(filter %64,$(APP_ABI)),) 229 UNKNOWN_ABI_64 := true 230 NDK_APP_DST_DIR := $(NDK_APP_LIBS_OUT)/$(TARGET_ARCH_ABI)64 231 endif 232 233 TARGET_OBJ_EXTENSION := .bc 234 TARGET_LIB_EXTENSION := .a 235 TARGET_SONAME_EXTENSION := .bc 236 237 include $(NDK_ROOT)/toolchains/llvm-3.5/setup-common.mk 238 239 endif 240 endif 241 endif 242 endif 243 endif 244 endif 245 endif 246 endif 247 endif 248 endif 249 endif 250 endif 251 endif 252 endif 253 endif 254 endif 255