19b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# 29b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# Copyright (C) 2006 The Android Open Source Project 39b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# 49b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# Licensed under the Apache License, Version 2.0 (the "License"); 59b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# you may not use this file except in compliance with the License. 69b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# You may obtain a copy of the License at 79b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# 89b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# http://www.apache.org/licenses/LICENSE-2.0 99b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# 109b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# Unless required by applicable law or agreed to in writing, software 119b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# distributed under the License is distributed on an "AS IS" BASIS, 129b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# See the License for the specific language governing permissions and 149b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# limitations under the License. 159b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# 169b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 179b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# Configuration for Darwin (Mac OS X) on x86. 189b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# Included by combo/select.mk 199b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 20ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew Hsiehifneq ($(strip $(BUILD_HOST_64bit)),) 21ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew Hsieh# By default we build everything in 32-bit, because it gives us 22ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff Hamilton# more consistency between the host tools and the target. 23ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew Hsieh# BUILD_HOST_64bit=1 overrides it for tool like emulator 24ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew Hsieh# which can benefit from 64-bit host arch. 25ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew HsiehHOST_GLOBAL_CFLAGS += -m64 26ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew HsiehHOST_GLOBAL_LDFLAGS += -m64 27ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew Hsiehelse 28ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff HamiltonHOST_GLOBAL_CFLAGS += -m32 29ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff HamiltonHOST_GLOBAL_LDFLAGS += -m32 30ed6b8155056c52ac6d6a38151a97fc948b4614c3Andrew Hsiehendif # BUILD_HOST_64bit 31ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff Hamilton 32f9613a4f730b8a385971f95150582b9a543302aeAndrew Hsiehifneq ($(strip $(BUILD_HOST_static)),) 33f9613a4f730b8a385971f95150582b9a543302aeAndrew Hsieh# Statically-linked binaries are desirable for sandboxed environment 34f9613a4f730b8a385971f95150582b9a543302aeAndrew HsiehHOST_GLOBAL_LDFLAGS += -static 35f9613a4f730b8a385971f95150582b9a543302aeAndrew Hsiehendif # BUILD_HOST_static 36f9613a4f730b8a385971f95150582b9a543302aeAndrew Hsieh 3702eb37c267adff3528c9e88cdfdd59035ce934b8SangWook Hanbuild_mac_version := $(shell sw_vers -productVersion) 38691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han 39691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanifneq ($(strip $(BUILD_MAC_SDK_EXPERIMENTAL)),) 40691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han# SDK 10.7 and higher is not fully compatible with Android. 41691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_versions_supported := 10.7 10.8 42691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanelse 43691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_versions_supported := 10.6 44691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanendif # BUILD_MAC_SDK_EXPERIMENTAL 45691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_versions_installed := $(shell xcodebuild -showsdks |grep macosx | sort | sed -e "s/.*macosx//g") 46691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_version := $(firstword $(filter $(mac_sdk_versions_installed), $(mac_sdk_versions_supported))) 47691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanifeq ($(mac_sdk_version),) 48691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_version := $(firstword $(mac_sdk_versions_supported)) 49691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanendif 50691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han 51691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_path := $(shell xcode-select -print-path) 52691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanifeq ($(findstring /Applications,$(mac_sdk_path)),) 53691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han# Legacy Xcode 54abf72cf3f4cc189ec0129f855028c6a7be0c07bfYing Wangmac_sdk_root := /Developer/SDKs/MacOSX$(mac_sdk_version).sdk 55691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanelse 56691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han# Xcode 4.4(App Store) or higher 57691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han# /Applications/Xcode*.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.?.sdk 58691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanmac_sdk_root := $(mac_sdk_path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(mac_sdk_version).sdk 59691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanendif 60691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han 61abf72cf3f4cc189ec0129f855028c6a7be0c07bfYing Wangifeq ($(wildcard $(mac_sdk_root)),) 62d6683f08c9ad0a924db663621844a6527164b99fYing Wang$(warning *****************************************************) 6376a6dc3a191e8800211eb49398d37deae731094eIan Rogers$(warning * Cannot find SDK $(mac_sdk_version) at $(mac_sdk_root)) 64691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanifeq ($(strip $(BUILD_MAC_SDK_EXPERIMENTAL)),) 65691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han$(warning * If you wish to build using higher version of SDK, ) 66691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han$(warning * try setting BUILD_MAC_SDK_EXPERIMENTAL=1 before ) 67691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Han$(warning * rerunning this command ) 68691e0243ca880722f5dd86a1052fc7ffbc55f8c4SangWook Hanendif 69d6683f08c9ad0a924db663621844a6527164b99fYing Wang$(warning *****************************************************) 70d6683f08c9ad0a924db663621844a6527164b99fYing Wang$(error Stop.) 71d6683f08c9ad0a924db663621844a6527164b99fYing Wangendif 72d6683f08c9ad0a924db663621844a6527164b99fYing Wang 7310f775379d4e9a9f4a5af79484c9f1e337dfab4bYing WangHOST_GLOBAL_CFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version) -DMACOSX_DEPLOYMENT_TARGET=$(mac_sdk_version) 7410f775379d4e9a9f4a5af79484c9f1e337dfab4bYing WangHOST_GLOBAL_LDFLAGS += -isysroot $(mac_sdk_root) -Wl,-syslibroot,$(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version) 75ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff Hamilton 76468d6a584f45227a13f15c8ebb17002f80f79d93Elliott HughesHOST_GLOBAL_CFLAGS += -fPIC -funwind-tables 779b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_NO_UNDEFINED_LDFLAGS := -Wl,-undefined,error 789b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 790d07c732c79ec5d624dea2fa0198ffc2dfeafe2bAl SuttonHOST_CC := gcc 800d07c732c79ec5d624dea2fa0198ffc2dfeafe2bAl SuttonHOST_CXX := g++ 819b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_AR := $(AR) 8245ac4341515f7ff4d483cfb8e2fba8d3c2cb1f6eBruce BeareHOST_STRIP := $(STRIP) 8345ac4341515f7ff4d483cfb8e2fba8d3c2cb1f6eBruce BeareHOST_STRIP_COMMAND = $(HOST_STRIP) --strip-debug $< -o $@ 849b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 859b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_SHLIB_SUFFIX := .dylib 869b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_JNILIB_SUFFIX := .jnilib 879b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 889b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_GLOBAL_CFLAGS += \ 89130ae6adcb418d461b78d6667527137854f54592Ying Wang -include $(call select-android-config-h,darwin-x86) 905bdf305bbe529a85735200353478057b65bb462eYing Wang 9135bb6422bc4dddaf7871793d213c0f7144c02f0cAl Suttonifneq ($(filter 10.7 10.7.% 10.8 10.8.%, $(build_mac_version)),) 929ce06f11d69f5154843c234fe0624f9e70d39359Al Sutton HOST_RUN_RANLIB_AFTER_COPYING := false 939ce06f11d69f5154843c234fe0624f9e70d39359Al Suttonelse 949ce06f11d69f5154843c234fe0624f9e70d39359Al Sutton HOST_RUN_RANLIB_AFTER_COPYING := true 9580cfc37d0f0ddbb7db09b7662b84e816ab409537Al Sutton PRE_LION_DYNAMIC_LINKER_OPTIONS := -Wl,-dynamic 969ce06f11d69f5154843c234fe0624f9e70d39359Al Suttonendif 979b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_GLOBAL_ARFLAGS := cqs 989b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 999b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste QueruHOST_CUSTOM_LD_COMMAND := true 1009b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 1019b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Querudefine transform-host-o-to-shared-lib-inner 1023a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 1039b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru -dynamiclib -single_module -read_only_relocs suppress \ 1049b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(HOST_GLOBAL_LD_DIRS) \ 105ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff Hamilton $(HOST_GLOBAL_LDFLAGS) \ 1069b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(PRIVATE_ALL_OBJECTS) \ 107b2680757a07bfd16efae3c8710c69b14807f425fShih-wei Liao $(addprefix -force_load , $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 10880e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 109fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 11080e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 111fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 1129b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(PRIVATE_LDLIBS) \ 1139b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru -o $@ \ 1145dea692715dfe992432037c6005f91875a725841Ying Wang -install_name @rpath/$(notdir $@) \ 1155dea692715dfe992432037c6005f91875a725841Ying Wang -Wl,-rpath,@loader_path/../lib \ 1169b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(PRIVATE_LDFLAGS) \ 1179b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(HOST_LIBGCC) 1189b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queruendef 1199b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 1209b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Querudefine transform-host-o-to-executable-inner 1213a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 1225dea692715dfe992432037c6005f91875a725841Ying Wang -Wl,-rpath,@loader_path/../lib \ 1239b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru -o $@ \ 12480cfc37d0f0ddbb7db09b7662b84e816ab409537Al Sutton $(PRE_LION_DYNAMIC_LINKER_OPTIONS) -headerpad_max_install_names \ 1259b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(HOST_GLOBAL_LD_DIRS) \ 126ebc2869b8d324caf93ca68be08aa2be9a09c4cceJeff Hamilton $(HOST_GLOBAL_LDFLAGS) \ 12780e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 1289b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(PRIVATE_ALL_OBJECTS) \ 12980e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 130fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 13180e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 132fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 1339b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(PRIVATE_LDFLAGS) \ 1349b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(PRIVATE_LDLIBS) \ 1359b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru $(HOST_LIBGCC) 1369b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queruendef 1379b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru 1389b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queru# $(1): The file to check 1399b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Querudefine get-file-size 1409b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Querustat -f "%z" $(1) 1419b4a81237be29b0aae50d1e370b63a07ea2b88b9Jean-Baptiste Queruendef 142