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