match chromium's approach for locating the most appropriate macos SDK to use
By doing this, the ninja generator for gyp works great on macos, resulting in faster (I think) and much, much terser builds. BUG= Review URL: https://codereview.appspot.com/7142047 git-svn-id: http://skia.googlecode.com/svn/trunk@7684 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
6438695222
commit
522dbd2e62
@ -195,6 +195,9 @@
|
||||
|
||||
['skia_os == "mac"',
|
||||
{
|
||||
'variables': {
|
||||
'mac_sdk%': '<!(python <(DEPTH)/tools/find_mac_sdk.py 10.6)',
|
||||
},
|
||||
'defines': [
|
||||
'SK_BUILD_FOR_MAC',
|
||||
],
|
||||
@ -228,7 +231,13 @@
|
||||
},
|
||||
'xcode_settings': {
|
||||
'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO',
|
||||
'SDKROOT': '<(skia_osx_sdkroot)',
|
||||
'conditions': [
|
||||
['skia_osx_sdkroot==""', {
|
||||
'SDKROOT': 'macosx<(mac_sdk)', # -isysroot
|
||||
}, {
|
||||
'SDKROOT': '<(skia_osx_sdkroot)', # -isysroot
|
||||
}],
|
||||
],
|
||||
# trying to get this to work, but it needs clang I think...
|
||||
# 'WARNING_CFLAGS': '-Wexit-time-destructors',
|
||||
'CLANG_WARN_CXX0X_EXTENSIONS': 'NO',
|
||||
|
@ -87,7 +87,7 @@
|
||||
'skia_angle%': 0,
|
||||
'skia_directwrite%': 0,
|
||||
'skia_gpu%': 1,
|
||||
'skia_osx_sdkroot%': 'macosx',
|
||||
'skia_osx_sdkroot%': '',
|
||||
'skia_profile_enabled%': 0,
|
||||
# Note: This is currently only turned on for linux and android.
|
||||
# TODO: Turn on for Win and Mac as well.
|
||||
|
63
tools/find_mac_sdk.py
Executable file
63
tools/find_mac_sdk.py
Executable file
@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
"""Prints the lowest locally available SDK version greater than or equal to a
|
||||
given minimum sdk version to standard output.
|
||||
|
||||
Usage:
|
||||
python find_sdk.py 10.6 # Ignores SDKs < 10.6
|
||||
"""
|
||||
|
||||
def parse_version(version_str):
|
||||
"""'10.6' => [10, 6]"""
|
||||
return map(int, re.findall(r'(\d+)', version_str))
|
||||
|
||||
def find_sdk_dir():
|
||||
job = subprocess.Popen(['xcode-select', '-print-path'],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT)
|
||||
out, err = job.communicate()
|
||||
if job.returncode != 0:
|
||||
print >>sys.stderr, out
|
||||
print >>sys.stderr, err
|
||||
raise Exception(('Error %d running xcode-select, you might have to run '
|
||||
'|sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer| '
|
||||
'if you are using Xcode 4.') % job.returncode)
|
||||
# The Developer folder moved in Xcode 4.3.
|
||||
xcode43_sdk_path = os.path.join(
|
||||
out.rstrip(), 'Platforms/MacOSX.platform/Developer/SDKs')
|
||||
if os.path.isdir(xcode43_sdk_path):
|
||||
sdk_dir = xcode43_sdk_path
|
||||
else:
|
||||
sdk_dir = os.path.join(out.rstrip(), 'SDKs')
|
||||
|
||||
return sdk_dir
|
||||
|
||||
def main():
|
||||
min_sdk_version = '10.6'
|
||||
if len(sys.argv) > 0:
|
||||
min_sdk_version = sys.argv[0]
|
||||
|
||||
sdk_dir = find_sdk_dir()
|
||||
|
||||
sdks = [re.findall('^MacOSX(10\.\d+)\.sdk$', s) for s in os.listdir(sdk_dir)]
|
||||
sdks = [s[0] for s in sdks if s] # [['10.5'], ['10.6']] => ['10.5', '10.6']
|
||||
sdks = [s for s in sdks # ['10.5', '10.6'] => ['10.6']
|
||||
if parse_version(s) >= parse_version(min_sdk_version)]
|
||||
if not sdks:
|
||||
raise Exception('No %s+ SDK found' % min_sdk_version)
|
||||
best_sdk = sorted(sdks, key=parse_version)[0]
|
||||
|
||||
return best_sdk
|
||||
|
||||
if __name__ == '__main__':
|
||||
if sys.platform != 'darwin':
|
||||
raise Exception("This script only runs on Mac")
|
||||
print main()
|
Loading…
Reference in New Issue
Block a user