Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: tools/build.py

Issue 2117593002: Fuchsia: Initial check-in. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/vm_sources.gypi ('k') | tools/fuchsia_link.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/build.py
diff --git a/tools/build.py b/tools/build.py
index 518a0152b73b03513b972c95f08f126d79292d3d..1f9eb8b2546a4d61d4f2449fc140560366638063 100755
--- a/tools/build.py
+++ b/tools/build.py
@@ -60,7 +60,7 @@ def BuildOptions():
default=utils.GuessArchitecture())
result.add_option("--os",
help='Target OSs (comma-separated).',
- metavar='[all,host,android]',
+ metavar='[all,host,android,fuchsia]',
default='host')
result.add_option("-t", "--toolchain",
help='Cross-compiler toolchain path',
@@ -109,11 +109,11 @@ def ProcessOptions(options, args):
return False
options.os = [ProcessOsOption(os_name) for os_name in options.os]
for os_name in options.os:
- if not os_name in ['android', 'freebsd', 'linux', 'macos', 'win32']:
+ if not os_name in ['android', 'freebsd', 'fuchsia', 'linux', 'macos', 'win32']:
print "Unknown os %s" % os_name
return False
if os_name != HOST_OS:
- if os_name != 'android':
+ if os_name != 'android' and os_name != 'fuchsia':
print "Unsupported target os %s" % os_name
return False
if not HOST_OS in ['linux']:
@@ -148,6 +148,13 @@ def GetToolchainPrefix(target_os, arch, options):
if arch == 'x64':
return os.path.join(android_toolchain, 'x86_64-linux-android')
+ if target_os == 'fuchsia':
+ fuchsia_toolchain = GetFuchsiaToolchainDir(HOST_OS, arch)
+ if arch == 'arm64':
+ return os.path.join(fuchsia_toolchain, 'aarch64-elf')
+ if arch == 'x64':
+ return os.path.join(fuchsia_toolchain, 'x86_64-elf')
+
# If no cross compiler is specified, only try to figure one out on Linux.
if not HOST_OS in ['linux']:
raise Exception('Unless --toolchain is used cross-building is only '
@@ -175,6 +182,8 @@ def SetTools(arch, target_os, options):
linker = ""
if target_os == 'android':
linker = os.path.join(DART_ROOT, 'tools', 'android_link.py')
+ elif target_os == 'fuchsia':
+ linker = os.path.join(DART_ROOT, 'tools', 'fuchsia_link.py')
elif toolchainprefix:
linker = toolchainprefix + "-g++"
@@ -226,6 +235,28 @@ def GetAndroidToolchainDir(host_os, target_arch):
return android_toolchain
+def GetFuchsiaToolchainDir(host_os, target_arch):
+ global THIRD_PARTY_ROOT
+ if host_os not in ['linux']:
+ raise Exception('Unsupported host os %s' % host_os)
+ if target_arch not in ['x64', 'arm64',]:
+ raise Exception('Unsupported target architecture %s' % target_arch)
+
+ # Set up path to the Android NDK.
+ CheckDirExists(THIRD_PARTY_ROOT, 'third party tools')
+ fuchsia_tools = os.path.join(THIRD_PARTY_ROOT, 'fuchsia_tools')
+ CheckDirExists(fuchsia_tools, 'Fuchsia tools')
+
+ toolchain_arch = 'x86_64-elf-5.3.0-Linux-x86_64'
+ if target_arch == 'arm64':
+ toolchain_arch = 'aarch64-elf-5.3.0-Linux-x86_64'
+ fuchsia_toolchain = os.path.join(
+ fuchsia_tools, 'toolchains', toolchain_arch, 'bin')
+ CheckDirExists(fuchsia_toolchain, 'Fuchsia toolchain')
+
+ return fuchsia_toolchain
+
+
def Execute(args):
process = subprocess.Popen(args)
process.wait()
« no previous file with comments | « runtime/vm/vm_sources.gypi ('k') | tools/fuchsia_link.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698