TARGET_linux-mips.mk revision 13eb1eb53d0fd9aaef6d5a2bc286ea21d845254d
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Copyright (C) 2010 The Android Open Source Project 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Licensed under the Apache License, Version 2.0 (the "License"); 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# you may not use this file except in compliance with the License. 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# You may obtain a copy of the License at 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# http://www.apache.org/licenses/LICENSE-2.0 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Unless required by applicable law or agreed to in writing, software 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# distributed under the License is distributed on an "AS IS" BASIS, 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# See the License for the specific language governing permissions and 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# limitations under the License. 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Configuration for Linux on MIPS. 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Included by combo/select.mk 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# You can set TARGET_ARCH_VARIANT to use an arch version other 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# than mips32r2-fp. Each value should correspond to a file named 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# $(BUILD_COMBOS)/arch/<name>.mk which must contain 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# makefile variable definitions similar to the preprocessor 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# defines in build/core/combo/include/arch/<combo>/AndroidConfig.h. Their 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# purpose is to allow module Android.mk files to selectively compile 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# different versions of code based upon the funtionality and 2795b74f252f534ec757aab1fc08e086e02b2cfe8dSharvil Nanavati# instructions available in a given architecture version. 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# The blocks also define specific arch_variant_cflags, which 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# include defines, and compiler settings for the given architecture 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# version. 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifeq ($(strip $(TARGET_ARCH_VARIANT)),) 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_ARCH_VARIANT := mips32r2-fp 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifeq ($(strip $(TARGET_GCC_VERSION_EXP)),) 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GCC_VERSION := 4.8 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectelse 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GCC_VERSION := $(TARGET_GCC_VERSION_EXP) 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_ARCH_SPECIFIC_MAKEFILE := $(BUILD_COMBOS)/arch/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT).mk 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifeq ($(strip $(wildcard $(TARGET_ARCH_SPECIFIC_MAKEFILE))),) 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project$(error Unknown MIPS architecture variant: $(TARGET_ARCH_VARIANT)) 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectinclude $(TARGET_ARCH_SPECIFIC_MAKEFILE) 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifeq ($(strip $(TARGET_TOOLS_PREFIX)),) 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/mips/mipsel-linux-android-$(TARGET_GCC_VERSION) 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_TOOLS_PREFIX := $(TARGET_TOOLCHAIN_ROOT)/bin/mipsel-linux-android- 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CC := $(TARGET_TOOLS_PREFIX)gcc$(HOST_EXECUTABLE_SUFFIX) 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CXX := $(TARGET_TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX) 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_AR := $(TARGET_TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_OBJCOPY := $(TARGET_TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_LD := $(TARGET_TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_STRIP := $(TARGET_TOOLS_PREFIX)strip$(HOST_EXECUTABLE_SUFFIX) 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifeq ($(TARGET_BUILD_VARIANT),user) 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-all $< -o $@ 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectelse 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_STRIP_COMMAND = $(TARGET_STRIP) --strip-all $< -o $@ && \ 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(TARGET_OBJCOPY) --add-gnu-debuglink=$< $@ 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_mips_CFLAGS := -O2 \ 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -fomit-frame-pointer \ 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -fno-strict-aliasing \ 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -funswitch-loops 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Set FORCE_MIPS_DEBUGGING to "true" in your buildspec.mk 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# or in your environment to gdb debugging easier. 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Don't forget to do a clean build. 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifeq ($(FORCE_MIPS_DEBUGGING),true) 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_mips_CFLAGS += -fno-omit-frame-pointer 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectandroid_config_h := $(call select-android-config-h,linux-mips) 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GLOBAL_CFLAGS += \ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(TARGET_mips_CFLAGS) \ 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Ulinux -U__unix -U__unix__ -Umips \ 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -fpic -fPIE\ 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -ffunction-sections \ 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -fdata-sections \ 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -funwind-tables \ 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wa,--noexecstack \ 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Werror=format-security \ 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -D_FORTIFY_SOURCE=2 \ 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(arch_variant_cflags) \ 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -include $(android_config_h) \ 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -I $(dir $(android_config_h)) 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# This warning causes dalvik not to build with gcc 4.6+ and -Werror. 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# We cannot turn it off blindly since the option is not available 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# in gcc-4.4.x. 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifneq ($(filter 4.6 4.6.% 4.7 4.7.% 4.8, $(TARGET_GCC_VERSION)),) 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GLOBAL_CFLAGS += -Wno-unused-but-set-variable \ 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -fno-strict-volatile-bitfields 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# This is to avoid the dreaded warning compiler message: 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# note: the mangling of 'va_list' has changed in GCC 4.4 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# The fact that the mangling changed does not affect the NDK ABI 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# very fortunately (since none of the exposed APIs used va_list 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# in their exported C++ functions). Also, GCC 4.5 has already 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# removed the warning from the compiler. 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GLOBAL_CFLAGS += -Wno-psabi 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifneq ($(ARCH_MIPS_PAGE_SHIFT),) 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GLOBAL_CFLAGS += -DPAGE_SHIFT=$(ARCH_MIPS_PAGE_SHIFT) 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GLOBAL_LDFLAGS += \ 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-z,noexecstack \ 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-z,relro \ 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-z,now \ 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--warn-shared-textrel \ 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--fatal-warnings \ 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(arch_variant_ldflags) 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# More flags/options can be added here 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_RELEASE_CFLAGS := \ 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -DNDEBUG \ 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -g \ 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wstrict-aliasing=2 \ 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -fgcse-after-reload \ 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -frerun-cse-after-loop \ 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -frename-registers 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectlibc_root := bionic/libc 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectlibm_root := bionic/libm 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectlibstdc++_root := bionic/libstdc++ 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectlibthread_db_root := bionic/libthread_db 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project## on some hosts, the target cross-compiler is not available so do not run this command 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifneq ($(wildcard $(TARGET_CC)),) 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# We compile with the global cflags to ensure that 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# any flags which affect libgcc are correctly taken 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# into account. 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_LIBGCC := \ 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(shell $(TARGET_CC) $(TARGET_GLOBAL_CFLAGS) -print-file-name=libgcc.a) 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectLIBGCC_EH := $(shell $(TARGET_CC) $(TARGET_GLOBAL_CFLAGS) -print-file-name=libgcc_eh.a) 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifneq ($(LIBGCC_EH),libgcc_eh.a) 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_LIBGCC += $(LIBGCC_EH) 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttarget_libgcov := $(shell $(TARGET_CC) $(TARGET_GLOBAL_CFLAGS) \ 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project --print-file-name=libgcov.a) 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project# Define FDO (Feedback Directed Optimization) options. 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_FDO_CFLAGS:= 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_FDO_LIB:= 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectifneq ($(strip $(BUILD_FDO_INSTRUMENT)),) 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project # Set BUILD_FDO_INSTRUMENT=true to turn on FDO instrumentation. 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project # The profile will be generated on /data/local/tmp/profile on the device. 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_FDO_CFLAGS := -fprofile-generate=/data/local/tmp/profile -DANDROID_FDO 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_FDO_LIB := $(target_libgcov) 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectelse 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project # If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations. 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project # Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build. 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ifeq ($(strip $(TARGET_FDO_PROFILE_PATH)),) 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_ARCH)/$(TARGET_ARCH_VARIANT) 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ifeq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),) 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(warning Custom TARGET_FDO_PROFILE_PATH supplied, but directory does not exist. Turn off FDO.) 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project endif 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project endif 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project # If the FDO profile directory can't be found, then FDO is off. 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ifneq ($(strip $(wildcard $(TARGET_FDO_PROFILE_PATH))),) 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_FDO_CFLAGS := -fprofile-use=$(TARGET_FDO_PROFILE_PATH) -DANDROID_FDO 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TARGET_FDO_LIB := $(target_libgcov) 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project endif 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendif 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectKERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectKERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-$(TARGET_ARCH) 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectKERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH) 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_C_INCLUDES := \ 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(libc_root)/arch-mips/include \ 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(libc_root)/include \ 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(libstdc++_root)/include \ 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(KERNEL_HEADERS) \ 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(libm_root)/include \ 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(libm_root)/include/mips \ 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(libthread_db_root)/include 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CRTBEGIN_STATIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CRTEND_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_android.o 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CRTBEGIN_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CRTEND_SO_O := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_STRIP_MODULE:=true 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectTARGET_CUSTOM_LD_COMMAND := true 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectdefine transform-o-to-shared-lib-inner 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project$(hide) $(PRIVATE_CXX) \ 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -nostdlib -Wl,-soname,$(notdir $@) \ 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--gc-sections \ 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-shared,-Bsymbolic \ 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_SO_O)) \ 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--whole-archive \ 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--no-whole-archive \ 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_LIBGCC) \ 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_FDO_LIB) \ 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -o $@ \ 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_LDFLAGS) \ 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_LIBGCC) \ 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_SO_O)) 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendef 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectdefine transform-o-to-executable-inner 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project$(hide) $(PRIVATE_CXX) -nostdlib -Bdynamic -fPIE -pie \ 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-dynamic-linker,/system/bin/linker \ 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--gc-sections \ 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-z,nocopyreloc \ 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \ 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--whole-archive \ 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--no-whole-archive \ 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 253cccf02fadb2dd4dceb22f2d58ed5840b0ef1860eChris Manton $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 254cccf02fadb2dd4dceb22f2d58ed5840b0ef1860eChris Manton $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_LIBGCC) \ 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_FDO_LIB) \ 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -o $@ \ 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_LDFLAGS) \ 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_LIBGCC) \ 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendef 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectdefine transform-o-to-static-executable-inner 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project$(hide) $(PRIVATE_CXX) -nostdlib -Bstatic \ 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--gc-sections \ 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -o $@ \ 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \ 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_LDFLAGS) \ 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--whole-archive \ 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--no-whole-archive \ 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(filter-out %libc_nomalloc.a,$(filter-out %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES)))) \ 278cccf02fadb2dd4dceb22f2d58ed5840b0ef1860eChris Manton -Wl,--start-group \ 279cccf02fadb2dd4dceb22f2d58ed5840b0ef1860eChris Manton $(call normalize-target-libraries,$(filter %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \ 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(call normalize-target-libraries,$(filter %libc_nomalloc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \ 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_FDO_LIB) \ 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(PRIVATE_TARGET_LIBGCC) \ 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project -Wl,--end-group \ 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectendef 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project