def _compiler_target_arch(self): """Compiler(gcc) target architecture. """ arch = BuildPlatform._get_cc_target_arch() pos = arch.find('-') if pos == -1: console.fatal('Unknown target architecture %s from gcc.' % arch) return arch[:pos]
def __init__(self, command_targets, load_targets, blade_path, working_dir, build_path, blade_root_dir, blade_options, command): """init method. """ self.__command_targets = command_targets self.__load_targets = load_targets self.__blade_path = blade_path self.__working_dir = working_dir self.__build_path = build_path self.__root_dir = blade_root_dir self.__options = blade_options self.__command = command # Source dir of current loading BUILD file self.__current_source_path = blade_root_dir # The direct targets that are used for analyzing self.__direct_targets = [] # All command targets, make sure that all targets specified with ... # are all in the list now self.__all_command_targets = [] # Given some targets specified in the command line, Blade will load # BUILD files containing these command line targets; global target # functions, i.e., cc_library, cc_binary and etc, in these BUILD # files will register targets into target_database, which then becomes # the input to dependency analyzer and SCons rules generator. It is # notable that not all targets in target_database are dependencies of # command line targets. self.__target_database = {} # targets to build after loading the build files. self.__build_targets = {} # The targets keys list after sorting by topological sorting method. # Used to generate build rules in correct order. self.__sorted_targets_keys = [] # The depended targets dict after topological sorting self.__depended_targets = {} # Indicate whether the deps list is expanded by expander or not self.__targets_expanded = False self.__build_time = time.time() self.__build_platform = BuildPlatform() self.build_environment = BuildEnvironment(self.__root_dir) self.svn_root_dirs = [] self._verify_history_path = os.path.join(build_path, '.blade_verify.json') self._verify_history = { 'header_inclusion_dependencies': {}, # path(.H) -> mtime(modification time) }
def __init__(self, command_targets, load_targets, blade_path, working_dir, build_dir, blade_root_dir, blade_options, command): """init method. Args: command_targets: List[str], target patterns are specified in command line. load_targets: List[str], target patterns should be loaded from workspace. It usually should be same as the command_targets, but in query dependents mode, all targets should be loaded. blade_path: str, the path of the `blade` python module, used to be called by builtin tools. """ self.__command_targets = command_targets self.__load_targets = load_targets self.__blade_path = blade_path self.__working_dir = working_dir self.__build_dir = build_dir self.__root_dir = blade_root_dir self.__options = blade_options self.__command = command # Source dir of current loading BUILD file self.__current_source_path = blade_root_dir # The targets which are specified in command line explicitly, not pattern expanded. self.__direct_targets = [] # All command targets, includes direct targets and expanded target patterns. self.__expanded_command_targets = [] # Given some targets specified in the command line, Blade will load # BUILD files containing these command line targets; global target # functions, i.e., cc_library, cc_binary and etc, in these BUILD # files will register targets into target_database, which then becomes # the input to dependency analyzer and rules generator. It is # notable that not all targets in target_database are dependencies of # command line targets. self.__target_database = {} # The targets to be build after loading the build files. self.__build_targets = {} # The targets keys list after sorting by topological sorting method. # Used to generate build rules in correct order. self.__sorted_targets_keys = [] # The depended targets dict after topological sorting self.__depended_targets = {} # Indicate whether the deps list is expanded by expander or not self.__targets_expanded = False self.__build_time = time.time() self.__build_platform = BuildPlatform() self.build_environment = BuildEnvironment(self.__root_dir) self.__build_jobs_num = 0 self.__test_jobs_num = 0 self.svn_root_dirs = [] self._verify_history_path = os.path.join(build_dir, '.blade_verify.json') self._verify_history = { 'header_inclusion_dependencies': {}, # path(.H) -> mtime(modification time) } self.__build_script = os.path.join(self.__build_dir, 'build.ninja')