def link_application(self, out_filename, in_filenames, link_with, library_dirs): if fsutils.is_any_newer_than( in_filenames, out_filename) or self.__are_libs_newer_than_target( link_with, out_filename): ui.debug("linking application") ui.debug(" files: " + str(in_filenames)) ui.debug(" with libs: " + str(link_with)) ui.debug(" lib dirs: " + str(library_dirs)) parameters = " ".join("-L " + lib_dir for lib_dir in library_dirs) ui.bigstep("linking", out_filename) try: shell.execute(" ".join([ configurations.compiler(), configurations.linker_flags(), "-o", out_filename, " ".join(in_filenames), self.__prepare_linker_flags(link_with), parameters ])) except Exception as e: ui.fatal("cannot link {}, reason: {!s}".format( out_filename, e)) else: ui.bigstep("up to date", out_filename)
def main(): import command_line parse_source_tree() configuration = configurations.get_selected_configuration() if configuration.name != "__default": ui.bigstep("configuration", str(configurations.get_selected_configuration())) if command_line.args.target: for target in command_line.args.target: targets.build(target) elif command_line.args.all: targets.build_all() else: ui.info("no target selected\n") ui.info(ui.BOLD + "targets:" + ui.RESET) for target in targets.targets.values(): ui.info(" " + str(target)) ui.info(ui.BOLD + "\nconfigurations:" + ui.RESET) for configuration in configurations.configurations: ui.info(" " + str(configuration)) ui.info("\nsee --help for more\n")
def build_all(): ui.bigstep("building all targets", " ".join(targets)) configuration = configurations.get_selected_configuration() for name, target in targets.items(): if target.is_visible(configuration): build(name) else: ui.bigstep("skip", name)
def build_all(): ui.bigstep("building all targets", " ".join(targets)) configuration = configurations.get_selected_configuration() for name, target in targets.items(): if target.is_visible(configuration): _build_and_track_single_target(name) else: ui.bigstep("skip", name) _clear_tracked_targets()
def build(self, toolchain): root_dir = os.getcwd() os.chdir(self.common_parameters.root_path) object_files = self.build_objects(toolchain) artefact = toolchain.static_library_filename(self.common_parameters.name) if fsutils.is_any_newer_than(object_files, artefact): toolchain.link_static_library(artefact, object_files) else: ui.bigstep("up to date", artefact) os.chdir(root_dir)
def build(self, toolchain): root_dir = os.getcwd() os.chdir(self.common_parameters.root_path) object_files = self.build_objects(toolchain) artefact = toolchain.static_library_filename( self.common_parameters.name) if fsutils.is_any_newer_than(object_files, artefact): toolchain.link_static_library(artefact, object_files) else: ui.bigstep("up to date", artefact) os.chdir(root_dir)
def main(): parse_source_tree() configuration = configurations.get_selected_configuration() if configuration.name != "__default": ui.bigstep("configuration", str(configurations.get_selected_configuration())) if not _build_some_targets_if_requested(): ui.info("no target selected\n") ui.info(ui.BOLD + "targets:" + ui.RESET) for target in targets.targets.values(): ui.info(" " + str(target)) ui.info(ui.BOLD + "\nconfigurations:" + ui.RESET) for configuration in configurations.configurations: ui.info(" " + str(configuration)) ui.info("\nsee --help for more\n")
def link_application(self, out_filename, in_filenames, link_with, library_dirs): if fsutils.is_any_newer_than(in_filenames, out_filename) or self.__are_libs_newer_than_target(link_with, out_filename): ui.debug("linking application") ui.debug(" files: " + str(in_filenames)) ui.debug(" with libs: " + str(link_with)) ui.debug(" lib dirs: " + str(library_dirs)) parameters = " ".join("-L " + lib_dir for lib_dir in library_dirs) ui.bigstep("linking", out_filename) try: shell.execute(" ".join([configurations.compiler(), configurations.linker_flags(), "-o", out_filename, " ".join(in_filenames), self.__prepare_linker_flags(link_with), parameters])) except Exception as e: ui.fatal("cannot link {}, reason: {!s}".format(out_filename, e)) else: ui.bigstep("up to date", out_filename)
def link_static_library(self, out_filename, in_filenames): ui.bigstep(configurations.archiver(), out_filename) shell.execute(configurations.archiver() + " -rcs " + out_filename + " " + " ".join(in_filenames))