106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Copyright (C) 2010 The Android Open Source Project 306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Licensed under the Apache License, Version 2.0 (the "License"); 506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# you may not use this file except in compliance with the License. 606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# You may obtain a copy of the License at 706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# http://www.apache.org/licenses/LICENSE-2.0 906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 1006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Unless required by applicable law or agreed to in writing, software 1106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# distributed under the License is distributed on an "AS IS" BASIS, 1206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# See the License for the specific language governing permissions and 1406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# limitations under the License. 1506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 1606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 1706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Configuration for Linux on MIPS. 1806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Included by combo/select.mk 1906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 2006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# You can set TARGET_ARCH_VARIANT to use an arch version other 2106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# than mips32r2-fp. Each value should correspond to a file named 2206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# $(BUILD_COMBOS)/arch/<name>.mk which must contain 2306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# makefile variable definitions similar to the preprocessor 245bdf305bbe529a85735200353478057b65bb462eYing Wang# defines in build/core/combo/include/arch/<combo>/AndroidConfig.h. Their 2506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# purpose is to allow module Android.mk files to selectively compile 2606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# different versions of code based upon the funtionality and 2706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# instructions available in a given architecture version. 2806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 2906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# The blocks also define specific arch_variant_cflags, which 3006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# include defines, and compiler settings for the given architecture 3106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# version. 3206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# 33369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughesifeq ($(strip $(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)),) 34369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott HughesTARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT := mips32r2-fp 3506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 3606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 374de6fa4069407607813dfdd1993114c79194d337Ben Cheng# Decouple NDK library selection with platform compiler version 384de6fa4069407607813dfdd1993114c79194d337Ben Cheng$(combo_2nd_arch_prefix)TARGET_NDK_GCC_VERSION := 4.8 394de6fa4069407607813dfdd1993114c79194d337Ben Cheng 40914f7fd938ed8b1a9abcea57325010d464cdc55eBen Chengifeq ($(strip $(TARGET_GCC_VERSION_EXP)),) 413c4fcd84515ff6edcbeae7a0ceaacb1eecae437eDuane Sand$(combo_2nd_arch_prefix)TARGET_GCC_VERSION := 4.9 42914f7fd938ed8b1a9abcea57325010d464cdc55eBen Chengelse 43369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_GCC_VERSION := $(TARGET_GCC_VERSION_EXP) 44054ffd2e7c3da585ab223518569e7436858ba5e0Ben Chengendif 45054ffd2e7c3da585ab223518569e7436858ba5e0Ben Cheng 46369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott HughesTARGET_ARCH_SPECIFIC_MAKEFILE := $(BUILD_COMBOS)/arch/$(TARGET_$(combo_2nd_arch_prefix)ARCH)/$(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT).mk 4706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamifeq ($(strip $(wildcard $(TARGET_ARCH_SPECIFIC_MAKEFILE))),) 48369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(error Unknown MIPS architecture variant: $(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT)) 4906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 5006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 5106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhaminclude $(TARGET_ARCH_SPECIFIC_MAKEFILE) 5225671e15cc1b199ca693f95864ab93a63909a526Dehao Cheninclude $(BUILD_SYSTEM)/combo/fdo.mk 5306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 5406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else 55369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughesifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)),) 563c4fcd84515ff6edcbeae7a0ceaacb1eecae437eDuane Sand$(combo_2nd_arch_prefix)TARGET_TOOLCHAIN_ROOT := prebuilts/gcc/$(HOST_PREBUILT_TAG)/mips/mips64el-linux-android-$($(combo_2nd_arch_prefix)TARGET_GCC_VERSION) 573c4fcd84515ff6edcbeae7a0ceaacb1eecae437eDuane Sand$(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX := $($(combo_2nd_arch_prefix)TARGET_TOOLCHAIN_ROOT)/bin/mips64el-linux-android- 5806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 5906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 60369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CC := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)gcc$(HOST_EXECUTABLE_SUFFIX) 61369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CXX := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX) 62369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_AR := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) 63369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_OBJCOPY := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) 64369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_LD := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) 65a6e2f9322c47ac02546aa436341fa42afd0000c5Christopher Ferris$(combo_2nd_arch_prefix)TARGET_READELF := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)readelf$(HOST_EXECUTABLE_SUFFIX) 66369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_STRIP := $($(combo_2nd_arch_prefix)TARGET_TOOLS_PREFIX)strip$(HOST_EXECUTABLE_SUFFIX) 6706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 68369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined 6906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 7006afc1c5ab9e07094832e790249586a7619d9539Raghu GandhamTARGET_mips_CFLAGS := -O2 \ 7106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -fomit-frame-pointer \ 7206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -fno-strict-aliasing \ 7306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -funswitch-loops 7406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 7506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Set FORCE_MIPS_DEBUGGING to "true" in your buildspec.mk 7606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# or in your environment to gdb debugging easier. 7706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# Don't forget to do a clean build. 7806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamifeq ($(FORCE_MIPS_DEBUGGING),true) 7906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham TARGET_mips_CFLAGS += -fno-omit-frame-pointer 8006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 8106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 82f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wangandroid_config_h := $(call select-android-config-h,linux-mips) 83f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wang 84369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += \ 8506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(TARGET_mips_CFLAGS) \ 861acd8b0552e94f46b985b0ecdc878ab61cc894d2Elliott Hughes -U__unix -U__unix__ -Umips \ 8706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -ffunction-sections \ 8806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -fdata-sections \ 8906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -funwind-tables \ 906cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wa,--noexecstack \ 9106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Werror=format-security \ 92fb45baa7e7f7909fb58460194476e8f7ffd23cdeNick Kralevich -D_FORTIFY_SOURCE=2 \ 9348f239c94faca140427afc9aa06cf356b1b6b0deAndrew Hsieh -no-canonical-prefixes \ 9448f239c94faca140427afc9aa06cf356b1b6b0deAndrew Hsieh -fno-canonical-system-headers \ 95f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wang $(arch_variant_cflags) \ 96f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wang -include $(android_config_h) \ 97f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wang -I $(dir $(android_config_h)) 9806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 9906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamifneq ($(ARCH_MIPS_PAGE_SHIFT),) 100369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += -DPAGE_SHIFT=$(ARCH_MIPS_PAGE_SHIFT) 10106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 10206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 103369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_GLOBAL_LDFLAGS += \ 1046cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,-z,noexecstack \ 1056cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,-z,relro \ 1066cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,-z,now \ 1076cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,--warn-shared-textrel \ 10813eb1eb53d0fd9aaef6d5a2bc286ea21d845254dChris Dearman -Wl,--fatal-warnings \ 10906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(arch_variant_ldflags) 11006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 111369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_GLOBAL_CPPFLAGS += -fvisibility-inlines-hidden 11206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 11306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# More flags/options can be added here 114369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_RELEASE_CFLAGS := \ 11506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -DNDEBUG \ 11606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -g \ 11706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wstrict-aliasing=2 \ 11806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -fgcse-after-reload \ 11906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -frerun-cse-after-loop \ 12006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -frename-registers 12106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 12206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamlibc_root := bionic/libc 12306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamlibm_root := bionic/libm 12406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamlibstdc++_root := bionic/libstdc++ 12506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 12606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 12706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham## on some hosts, the target cross-compiler is not available so do not run this command 128369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughesifneq ($(wildcard $($(combo_2nd_arch_prefix)TARGET_CC)),) 12906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# We compile with the global cflags to ensure that 13006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# any flags which affect libgcc are correctly taken 13106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham# into account. 132369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_LIBGCC := \ 133369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes $(shell $($(combo_2nd_arch_prefix)TARGET_CC) $($(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS) -print-file-name=libgcc.a) 1344c952d72b7aca4801e0ee4070cf54e3de57b98b5Andrew Hsieh$(combo_2nd_arch_prefix)TARGET_LIBATOMIC := \ 1354c952d72b7aca4801e0ee4070cf54e3de57b98b5Andrew Hsieh $(shell $($(combo_2nd_arch_prefix)TARGET_CC) $($(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS) -print-file-name=libatomic.a) 136369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott HughesLIBGCC_EH := $(shell $($(combo_2nd_arch_prefix)TARGET_CC) $($(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS) -print-file-name=libgcc_eh.a) 13706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamifneq ($(LIBGCC_EH),libgcc_eh.a) 138369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes $(combo_2nd_arch_prefix)TARGET_LIBGCC += $(LIBGCC_EH) 13906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 14006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendif 14106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 142dddb566eba8cd666b6f3b70067e77acb4e1656deElliott HughesKERNEL_HEADERS_COMMON := $(libc_root)/kernel/uapi 143171e940c7a565e651cf7d0f2edb84d9d92df7f39Elliott HughesKERNEL_HEADERS_ARCH := $(libc_root)/kernel/uapi/asm-mips # mips covers both mips and mips64. 144b88bdebcb95d674249353a90141fa43054b9fc90Elliott HughesKERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH) 14506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 146369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_C_INCLUDES := \ 14706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(libc_root)/arch-mips/include \ 14806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(libc_root)/include \ 14906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(libstdc++_root)/include \ 15006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(KERNEL_HEADERS) \ 15106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(libm_root)/include \ 15206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(libm_root)/include/mips \ 15306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 154369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CRTBEGIN_STATIC_O := $($(combo_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_static.o 155369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CRTBEGIN_DYNAMIC_O := $($(combo_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_dynamic.o 156369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CRTEND_O := $($(combo_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_android.o 15706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 158369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CRTBEGIN_SO_O := $($(combo_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtbegin_so.o 159369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CRTEND_SO_O := $($(combo_2nd_arch_prefix)TARGET_OUT_INTERMEDIATE_LIBRARIES)/crtend_so.o 16006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 161369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_STRIP_MODULE:=true 16206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 163369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm 16406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 165369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughes$(combo_2nd_arch_prefix)TARGET_CUSTOM_LD_COMMAND := true 16606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 167369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughesdefine $(combo_2nd_arch_prefix)transform-o-to-shared-lib-inner 16806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham$(hide) $(PRIVATE_CXX) \ 16906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -nostdlib -Wl,-soname,$(notdir $@) \ 17006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--gc-sections \ 17104cf31597021af3cd045dd9c50d94a87d0394023Dan Albert $(if $(filter true,$(PRIVATE_CLANG)),-shared,-Wl,-shared) \ 17206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 17306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_SO_O)) \ 17406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_ALL_OBJECTS) \ 17506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--whole-archive \ 17606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 17706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--no-whole-archive \ 17806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 17906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 18006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 181d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang $(if $(TARGET_BUILD_APPS),$(PRIVATE_TARGET_LIBGCC)) \ 18206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 18306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -o $@ \ 18406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 18506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_LDFLAGS) \ 1864c952d72b7aca4801e0ee4070cf54e3de57b98b5Andrew Hsieh $(PRIVATE_TARGET_LIBATOMIC) \ 187d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang $(if $(PRIVATE_LIBCXX),,$(PRIVATE_TARGET_LIBGCC)) \ 188de36cd72e8e5a154c1fedf63e1ea83af9d5288aaYing Wang $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_SO_O)) \ 189de36cd72e8e5a154c1fedf63e1ea83af9d5288aaYing Wang $(PRIVATE_LDLIBS) 19006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendef 19106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 192369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughesdefine $(combo_2nd_arch_prefix)transform-o-to-executable-inner 193908ab54fda172baa9a646259fafd8af35290f0a6Dan Albert$(hide) $(PRIVATE_CXX) -nostdlib -Bdynamic -pie \ 19406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,-dynamic-linker,/system/bin/linker \ 19506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--gc-sections \ 19606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,-z,nocopyreloc \ 19791fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 1989fb3526648a08d8d8c1e6325aeb3c6500bcd44c2Ying Wang -Wl,-rpath-link=$(PRIVATE_TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 19991fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \ 20006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_ALL_OBJECTS) \ 2016cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,--whole-archive \ 2026cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 2036cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,--no-whole-archive \ 20406afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 20506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 20606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 207d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang $(if $(TARGET_BUILD_APPS),$(PRIVATE_TARGET_LIBGCC)) \ 2088725b941b007adfdcb54e7c3aed4b1c21f4dc5adAndrew Hsieh $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 2098725b941b007adfdcb54e7c3aed4b1c21f4dc5adAndrew Hsieh -o $@ \ 21091fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 21106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_LDFLAGS) \ 2124c952d72b7aca4801e0ee4070cf54e3de57b98b5Andrew Hsieh $(PRIVATE_TARGET_LIBATOMIC) \ 213d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang $(if $(PRIVATE_LIBCXX),,$(PRIVATE_TARGET_LIBGCC)) \ 214de36cd72e8e5a154c1fedf63e1ea83af9d5288aaYing Wang $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) \ 215de36cd72e8e5a154c1fedf63e1ea83af9d5288aaYing Wang $(PRIVATE_LDLIBS) 21606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendef 21706afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham 218369b3326f3ab67f64067d3dfacfa86587d6aecd1Elliott Hughesdefine $(combo_2nd_arch_prefix)transform-o-to-static-executable-inner 21906afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham$(hide) $(PRIVATE_CXX) -nostdlib -Bstatic \ 22006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--gc-sections \ 22106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -o $@ \ 22291fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 22391fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \ 22491fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 22506afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_LDFLAGS) \ 22606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(PRIVATE_ALL_OBJECTS) \ 2276cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,--whole-archive \ 2286cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 2296cc0c334fc8add0d53121ee09993630d804e70fcChris Dearman -Wl,--no-whole-archive \ 23006afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(filter-out %libc_nomalloc.a,$(filter-out %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES)))) \ 23106afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--start-group \ 23206afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(filter %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \ 23306afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham $(call normalize-target-libraries,$(filter %libc_nomalloc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \ 2344c952d72b7aca4801e0ee4070cf54e3de57b98b5Andrew Hsieh $(PRIVATE_TARGET_LIBATOMIC) \ 235d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang $(if $(PRIVATE_LIBCXX),,$(PRIVATE_TARGET_LIBGCC)) \ 23606afc1c5ab9e07094832e790249586a7619d9539Raghu Gandham -Wl,--end-group \ 23791fd1231c3254bc9d0642e5a646b5657bdaedffaYing Wang $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) 23806afc1c5ab9e07094832e790249586a7619d9539Raghu Gandhamendef 239