linux: optionaly allow building x64 targets with sysroot
This commit is contained in:
parent
60f40a6704
commit
e27e3d641c
5 changed files with 48 additions and 14 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,6 +6,7 @@
|
||||||
/external_binaries/
|
/external_binaries/
|
||||||
/out/
|
/out/
|
||||||
/vendor/brightray/vendor/download/
|
/vendor/brightray/vendor/download/
|
||||||
|
/vendor/debian_wheezy_amd64-sysroot/
|
||||||
/vendor/debian_wheezy_arm-sysroot/
|
/vendor/debian_wheezy_arm-sysroot/
|
||||||
/vendor/debian_wheezy_i386-sysroot/
|
/vendor/debian_wheezy_i386-sysroot/
|
||||||
/vendor/python_26/
|
/vendor/python_26/
|
||||||
|
|
|
@ -43,8 +43,8 @@ def main():
|
||||||
args.libcc_source_path, args.libcc_shared_library_path,
|
args.libcc_source_path, args.libcc_shared_library_path,
|
||||||
args.libcc_static_library_path)
|
args.libcc_static_library_path)
|
||||||
|
|
||||||
if args.target_arch in ['arm', 'ia32'] and PLATFORM == 'linux':
|
if PLATFORM == 'linux':
|
||||||
download_sysroot(args.target_arch)
|
download_sysroot(args.target_arch, args.sysroot_url, args.sysroot_sha1sum)
|
||||||
|
|
||||||
create_chrome_version_h()
|
create_chrome_version_h()
|
||||||
touch_config_gypi()
|
touch_config_gypi()
|
||||||
|
@ -79,6 +79,10 @@ def parse_args():
|
||||||
help='The shared library path of libchromiumcontent.')
|
help='The shared library path of libchromiumcontent.')
|
||||||
parser.add_argument('--libcc_static_library_path', required=False,
|
parser.add_argument('--libcc_static_library_path', required=False,
|
||||||
help='The static library path of libchromiumcontent.')
|
help='The static library path of libchromiumcontent.')
|
||||||
|
parser.add_argument('--sysroot_url', required=False,
|
||||||
|
help='The URL to download sysroot image.')
|
||||||
|
parser.add_argument('--sysroot_sha1sum', required=False,
|
||||||
|
help='SHA1 hash of the sysroot image tarball.')
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
@ -163,11 +167,22 @@ def update_clang():
|
||||||
execute_stdout([os.path.join(SOURCE_ROOT, 'script', 'update-clang.sh')])
|
execute_stdout([os.path.join(SOURCE_ROOT, 'script', 'update-clang.sh')])
|
||||||
|
|
||||||
|
|
||||||
def download_sysroot(target_arch):
|
def download_sysroot(target_arch, url, sha1sum):
|
||||||
if target_arch == 'ia32':
|
if url or target_arch in ['ia32', 'arm']:
|
||||||
target_arch = 'i386'
|
os.environ['USE_SYSROOT'] = '1'
|
||||||
execute_stdout([os.path.join(SOURCE_ROOT, 'script', 'install-sysroot.py'),
|
sysroot_script = os.path.join(SOURCE_ROOT, 'script', 'install-sysroot.py')
|
||||||
'--arch', target_arch])
|
if target_arch == 'ia32':
|
||||||
|
target_arch = 'i386'
|
||||||
|
if target_arch == 'x64':
|
||||||
|
target_arch = 'amd64'
|
||||||
|
args = [
|
||||||
|
'--arch', target_arch
|
||||||
|
]
|
||||||
|
if url:
|
||||||
|
args += ['--url', url]
|
||||||
|
if sha1sum:
|
||||||
|
args += ['--revision', sha1sum]
|
||||||
|
execute_stdout([sysroot_script] + args)
|
||||||
|
|
||||||
|
|
||||||
def create_chrome_version_h():
|
def create_chrome_version_h():
|
||||||
|
|
|
@ -134,7 +134,11 @@ def main():
|
||||||
print 'Unknown architecture: %s' % target_arch
|
print 'Unknown architecture: %s' % target_arch
|
||||||
assert(False)
|
assert(False)
|
||||||
|
|
||||||
url = '%s/%s/%s/%s' % (URL_PREFIX, URL_PATH, revision, tarball_filename)
|
if options.url:
|
||||||
|
url = options.url
|
||||||
|
tarball_sha1sum = options.revision
|
||||||
|
else:
|
||||||
|
url = '%s/%s/%s/%s' % (URL_PREFIX, URL_PATH, revision, tarball_filename)
|
||||||
|
|
||||||
stamp = os.path.join(sysroot, '.stamp')
|
stamp = os.path.join(sysroot, '.stamp')
|
||||||
if os.path.exists(stamp):
|
if os.path.exists(stamp):
|
||||||
|
@ -153,11 +157,12 @@ def main():
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
subprocess.check_call(['curl', '--fail', '-L', url, '-o', tarball])
|
subprocess.check_call(['curl', '--fail', '-L', url, '-o', tarball])
|
||||||
sha1sum = GetSha1(tarball)
|
if tarball_sha1sum:
|
||||||
if sha1sum != tarball_sha1sum:
|
sha1sum = GetSha1(tarball)
|
||||||
print 'Tarball sha1sum is wrong.'
|
if sha1sum != tarball_sha1sum:
|
||||||
print 'Expected %s, actual: %s' % (tarball_sha1sum, sha1sum)
|
print 'Tarball sha1sum is wrong.'
|
||||||
return 1
|
print 'Expected %s, actual: %s' % (tarball_sha1sum, sha1sum)
|
||||||
|
return 1
|
||||||
subprocess.check_call(['tar', 'xf', tarball, '-C', sysroot])
|
subprocess.check_call(['tar', 'xf', tarball, '-C', sysroot])
|
||||||
os.remove(tarball)
|
os.remove(tarball)
|
||||||
|
|
||||||
|
@ -173,5 +178,9 @@ if __name__ == '__main__':
|
||||||
'Linux builds')
|
'Linux builds')
|
||||||
parser.add_option('--arch', type='choice', choices=valid_archs,
|
parser.add_option('--arch', type='choice', choices=valid_archs,
|
||||||
help='Sysroot architecture: %s' % ', '.join(valid_archs))
|
help='Sysroot architecture: %s' % ', '.join(valid_archs))
|
||||||
|
parser.add_option('--url', default=None,
|
||||||
|
help='The URL to download sysroot image.')
|
||||||
|
parser.add_option('--revision', default=None,
|
||||||
|
help='SHA1 hash of the sysroot image tarball.')
|
||||||
options, _ = parser.parse_args()
|
options, _ = parser.parse_args()
|
||||||
sys.exit(main())
|
sys.exit(main())
|
||||||
|
|
|
@ -60,12 +60,18 @@ def run_gyp(target_arch, component):
|
||||||
mas_build = 1
|
mas_build = 1
|
||||||
else:
|
else:
|
||||||
mas_build = 0
|
mas_build = 0
|
||||||
|
# Whether to use sysroot image.
|
||||||
|
if os.environ.has_key('USE_SYSROOT'):
|
||||||
|
use_sysroot = 1
|
||||||
|
else:
|
||||||
|
use_sysroot = 0
|
||||||
defines = [
|
defines = [
|
||||||
'-Dlibchromiumcontent_component={0}'.format(component),
|
'-Dlibchromiumcontent_component={0}'.format(component),
|
||||||
'-Dtarget_arch={0}'.format(target_arch),
|
'-Dtarget_arch={0}'.format(target_arch),
|
||||||
'-Dhost_arch={0}'.format(get_host_arch()),
|
'-Dhost_arch={0}'.format(get_host_arch()),
|
||||||
'-Dlibrary=static_library',
|
'-Dlibrary=static_library',
|
||||||
'-Dmas_build={0}'.format(mas_build),
|
'-Dmas_build={0}'.format(mas_build),
|
||||||
|
'-Duse_sysroot={0}'.format(use_sysroot)
|
||||||
]
|
]
|
||||||
return subprocess.call([python, gyp, '-f', 'ninja', '--depth', '.',
|
return subprocess.call([python, gyp, '-f', 'ninja', '--depth', '.',
|
||||||
'atom.gyp', '-Icommon.gypi'] + defines, env=env)
|
'atom.gyp', '-Icommon.gypi'] + defines, env=env)
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
}],
|
}],
|
||||||
|
|
||||||
# Setup sysroot environment.
|
# Setup sysroot environment.
|
||||||
['OS=="linux" and target_arch in ["arm", "ia32"]', {
|
['OS=="linux" and target_arch in ["arm", "ia32", "x64"] and use_sysroot', {
|
||||||
'variables': {
|
'variables': {
|
||||||
'conditions': [
|
'conditions': [
|
||||||
['target_arch=="arm"', {
|
['target_arch=="arm"', {
|
||||||
|
@ -124,6 +124,9 @@
|
||||||
['target_arch=="ia32"', {
|
['target_arch=="ia32"', {
|
||||||
'sysroot': '<(source_root)/vendor/debian_wheezy_i386-sysroot',
|
'sysroot': '<(source_root)/vendor/debian_wheezy_i386-sysroot',
|
||||||
}],
|
}],
|
||||||
|
['target_arch=="x64"', {
|
||||||
|
'sysroot': '<(source_root)/vendor/debian_wheezy_amd64-sysroot',
|
||||||
|
}],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
'target_defaults': {
|
'target_defaults': {
|
||||||
|
|
Loading…
Add table
Reference in a new issue