Use prebuilt gcc for MacOSX
1. Use prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1 See https://android-review.googlesource.com/#/c/46223/ 2. Rewrite logic dealing with mac_sdk_version to support all MacOSX SDK 10.6, 10.7 and 10.8. Note that since ad2342375963c2468849c1f83a97158383db6511 emulator no longer depends on 10.6 to build. Since the lowest SDK among intersection of the "available" and the "supported" SDKs is picked, add a new variable MAC_SDK_VERSION for developer really want to overwrite it. MAC_SDK_VERSION still has to be one of the supported, though. 3. Improve mac_sdk_path detection to deal with case where Xcode *dmg is mounted only, not installed at /Applications. 4. Now we can retire BUILD_MAC_SDK_EXPERIMENTAL Change-Id: I83e463556a857d527710f766de0e19e1b576151f
This commit is contained in:
parent
2ea957a373
commit
e2e28f6d02
1 changed files with 43 additions and 26 deletions
|
@ -36,52 +36,69 @@ endif # BUILD_HOST_static
|
|||
|
||||
build_mac_version := $(shell sw_vers -productVersion)
|
||||
|
||||
ifneq ($(strip $(BUILD_MAC_SDK_EXPERIMENTAL)),)
|
||||
# SDK 10.7 and higher is not fully compatible with Android.
|
||||
mac_sdk_versions_supported := 10.7 10.8
|
||||
mac_sdk_versions_supported := 10.6 10.7 10.8
|
||||
ifneq ($(strip $(MAC_SDK_VERSION)),)
|
||||
mac_sdk_version := $(MAC_SDK_VERSION)
|
||||
ifeq ($(filter $(mac_sdk_version),$(mac_sdk_versions_supported)),)
|
||||
$(warning ****************************************************************)
|
||||
$(warning * MAC_SDK_VERSION $(MAC_SDK_VERSION) isn't one of the supported $(mac_sdk_versions_supported))
|
||||
$(warning ****************************************************************)
|
||||
$(error Stop.)
|
||||
endif
|
||||
else
|
||||
mac_sdk_versions_supported := 10.6
|
||||
endif # BUILD_MAC_SDK_EXPERIMENTAL
|
||||
mac_sdk_versions_installed := $(shell xcodebuild -showsdks |grep macosx | sort | sed -e "s/.*macosx//g")
|
||||
mac_sdk_versions_installed := $(shell xcodebuild -showsdks | grep macosx | sort | sed -e "s/.*macosx//g")
|
||||
mac_sdk_version := $(firstword $(filter $(mac_sdk_versions_installed), $(mac_sdk_versions_supported)))
|
||||
ifeq ($(mac_sdk_version),)
|
||||
mac_sdk_version := $(firstword $(mac_sdk_versions_supported))
|
||||
endif
|
||||
|
||||
mac_sdk_path := $(shell xcode-select -print-path)
|
||||
ifeq ($(findstring /Applications,$(mac_sdk_path)),)
|
||||
# Legacy Xcode
|
||||
mac_sdk_root := /Developer/SDKs/MacOSX$(mac_sdk_version).sdk
|
||||
else
|
||||
# Xcode 4.4(App Store) or higher
|
||||
# /Applications/Xcode*.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.?.sdk
|
||||
mac_sdk_root := $(mac_sdk_path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(mac_sdk_version).sdk
|
||||
endif
|
||||
|
||||
mac_sdk_path := $(shell xcode-select -print-path)
|
||||
# try /Applications/Xcode*.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.?.sdk
|
||||
# or /Volume/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.?.sdk
|
||||
mac_sdk_root := $(mac_sdk_path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$(mac_sdk_version).sdk
|
||||
ifeq ($(wildcard $(mac_sdk_root)),)
|
||||
# try legacy /Developer/SDKs/MacOSX10.?.sdk
|
||||
mac_sdk_root := /Developer/SDKs/MacOSX$(mac_sdk_version).sdk
|
||||
endif
|
||||
ifeq ($(wildcard $(mac_sdk_root)),)
|
||||
$(warning *****************************************************)
|
||||
$(warning * Can not find SDK $(mac_sdk_version) at $(mac_sdk_root))
|
||||
ifeq ($(strip $(BUILD_MAC_SDK_EXPERIMENTAL)),)
|
||||
$(warning * If you wish to build using higher version of SDK, )
|
||||
$(warning * try setting BUILD_MAC_SDK_EXPERIMENTAL=1 before )
|
||||
$(warning * rerunning this command )
|
||||
endif
|
||||
$(warning *****************************************************)
|
||||
$(error Stop.)
|
||||
endif
|
||||
|
||||
ifeq ($(mac_sdk_version),10.6)
|
||||
gcc_darwin_version := 10
|
||||
else
|
||||
gcc_darwin_version := 11
|
||||
endif
|
||||
|
||||
HOST_TOOLCHAIN_ROOT := prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1
|
||||
HOST_SDK_TOOLCHAIN_PREFIX := $(HOST_TOOLCHAIN_ROOT)/bin/i686-apple-darwin$(gcc_darwin_version)
|
||||
# Don't do anything if the toolchain is not there
|
||||
ifneq (,$(strip $(wildcard $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc)))
|
||||
HOST_CC := $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc
|
||||
HOST_CXX := $(HOST_SDK_TOOLCHAIN_PREFIX)-g++
|
||||
ifeq ($(mac_sdk_version),10.8)
|
||||
# Mac SDK 10.8 no longer has stdarg.h, etc
|
||||
host_toolchain_header := $(HOST_TOOLCHAIN_ROOT)/lib/gcc/i686-apple-darwin$(gcc_darwin_version)/4.2.1/include
|
||||
HOST_GLOBAL_CFLAGS += -isystem $(host_toolchain_header)
|
||||
endif
|
||||
else
|
||||
HOST_CC := gcc
|
||||
HOST_CXX := g++
|
||||
endif # $(HOST_SDK_TOOLCHAIN_PREFIX)-gcc exists
|
||||
HOST_AR := $(AR)
|
||||
HOST_STRIP := $(STRIP)
|
||||
HOST_STRIP_COMMAND = $(HOST_STRIP) --strip-debug $< -o $@
|
||||
|
||||
HOST_GLOBAL_CFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version)
|
||||
HOST_GLOBAL_LDFLAGS += -isysroot $(mac_sdk_root) -mmacosx-version-min=$(mac_sdk_version)
|
||||
|
||||
HOST_GLOBAL_CFLAGS += -fPIC
|
||||
HOST_NO_UNDEFINED_LDFLAGS := -Wl,-undefined,error
|
||||
|
||||
HOST_CC := gcc
|
||||
HOST_CXX := g++
|
||||
HOST_AR := $(AR)
|
||||
HOST_STRIP := $(STRIP)
|
||||
HOST_STRIP_COMMAND = $(HOST_STRIP) --strip-debug $< -o $@
|
||||
|
||||
HOST_SHLIB_SUFFIX := .dylib
|
||||
HOST_JNILIB_SUFFIX := .jnilib
|
||||
|
||||
|
|
Loading…
Reference in a new issue