blob: 5b9958a1df4d77973250d757faf01adcabbb197a [file] [log] [blame]
# This source file is part of the Swift.org open source project
#
# Copyright (c) 2014 - 2015 Apple Inc. and the Swift project authors
# Licensed under Apache License v2.0 with Runtime Library Exception
#
# See http://swift.org/LICENSE.txt for license information
# See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
#
from subprocess import call
from .config import Configuration
from .path import Path
import os
class Workspace:
projects = []
def __init__(self, projects):
self.projects = projects
def configure(self):
if Configuration.current.system_root is None:
Configuration.current.system_root = Path("./sysroots/" + Configuration.current.target.triple)
if Configuration.current.toolchain is None:
Configuration.current.toolchain = Path("./toolchains/" + Configuration.current.target.triple)
if Configuration.current.bootstrap_directory is None:
Configuration.current.bootstrap_directory = Path("./bootstrap")
for project in self.projects:
working_dir = Configuration.current.source_root.path_by_appending(project).absolute()
cmd = [Configuration.current.command[0], "--target", Configuration.current.target.triple]
if Configuration.current.system_root is not None:
cmd.append("--sysroot=" + Configuration.current.system_root.relative(working_dir))
if Configuration.current.toolchain is not None:
cmd.append("--toolchain=" + Configuration.current.toolchain.relative(working_dir))
if Configuration.current.bootstrap_directory is not None:
cmd.append("--bootstrap=" + Configuration.current.bootstrap_directory.relative(working_dir))
if Configuration.current.verbose:
cmd.append("--verbose")
print("cd " + working_dir)
print(" " + " ".join(cmd))
status = call(cmd, cwd=working_dir)
if status != 0:
exit(status) # pass the exit value along if one of the sub-configurations fails
def generate(self):
generated = ""
for project in self.projects:
generated += """
build """ + os.path.basename(project) + """: BuildProject
project = """ + project + """
"""
generated += """
build all: phony | """ + " ".join(reversed(self.projects)) + """
default all
"""
return generated