From: Tim 'mithro' Ansell Date: Fri, 13 Jan 2017 13:12:02 +0000 (+1100) Subject: Fixing accidental revert in merge commit. X-Git-Tag: 24jan2021_ls180~1911^2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9c0e978556a568631975d6f417aad1cdb8b17dfc;p=litex.git Fixing accidental revert in merge commit. --- diff --git a/litex/build/tools.py b/litex/build/tools.py index f585f018..598c0ff9 100644 --- a/litex/build/tools.py +++ b/litex/build/tools.py @@ -19,6 +19,9 @@ def write_to_file(filename, contents, force_unix=False): newline = None if force_unix: newline = "\n" + if os.path.exists(filename): + if open(filename, "r", newline=newline).read() == contents: + return with open(filename, "w", newline=newline) as f: f.write(contents) diff --git a/litex/soc/integration/builder.py b/litex/soc/integration/builder.py index 2f1af0fd..d97d3715 100644 --- a/litex/soc/integration/builder.py +++ b/litex/soc/integration/builder.py @@ -3,6 +3,7 @@ import subprocess import struct import shutil +from litex.build.tools import write_to_file from litex.soc.integration import cpu_interface, soc_sdram, sdram_init @@ -66,30 +67,39 @@ class Builder: buildinc_dir = os.path.join(self.output_dir, "software", "include") generated_dir = os.path.join(buildinc_dir, "generated") os.makedirs(generated_dir, exist_ok=True) - with open(os.path.join(generated_dir, "variables.mak"), "w") as f: - def define(k, v): - f.write("{}={}\n".format(k, _makefile_escape(v))) - for k, v in cpu_interface.get_cpu_mak(cpu_type): - define(k, v) - define("SOC_DIRECTORY", soc_directory) - define("BUILDINC_DIRECTORY", buildinc_dir) - f.write("export BUILDINC_DIRECTORY\n") - for name, src_dir in self.software_packages: - define(name.upper() + "_DIRECTORY", src_dir) - - with open(os.path.join(generated_dir, "output_format.ld"), "w") as f: - f.write(cpu_interface.get_linker_output_format(cpu_type)) - with open(os.path.join(generated_dir, "regions.ld"), "w") as f: - f.write(cpu_interface.get_linker_regions(memory_regions)) - - with open(os.path.join(generated_dir, "mem.h"), "w") as f: - f.write(cpu_interface.get_mem_header(memory_regions, flash_boot_address)) - with open(os.path.join(generated_dir, "csr.h"), "w") as f: - f.write(cpu_interface.get_csr_header(csr_regions, constants)) + + variables_contents = [] + def define(k, v): + variables_contents.append("{}={}\n".format(k, _makefile_escape(v))) + for k, v in cpu_interface.get_cpu_mak(cpu_type): + define(k, v) + define("SOC_DIRECTORY", soc_directory) + variables_contents.append("export BUILDINC_DIRECTORY\n") + define("BUILDINC_DIRECTORY", buildinc_dir) + for name, src_dir in self.software_packages: + define(name.upper() + "_DIRECTORY", src_dir) + write_to_file( + os.path.join(generated_dir, "variables.mak"), + "".join(variables_contents)) + + write_to_file( + os.path.join(generated_dir, "output_format.ld"), + cpu_interface.get_linker_output_format(cpu_type)) + write_to_file( + os.path.join(generated_dir, "regions.ld"), + cpu_interface.get_linker_regions(memory_regions)) + + write_to_file( + os.path.join(generated_dir, "mem.h"), + cpu_interface.get_mem_header(memory_regions, flash_boot_address)) + write_to_file( + os.path.join(generated_dir, "csr.h"), + cpu_interface.get_csr_header(csr_regions, constants)) if sdram_phy_settings is not None: - with open(os.path.join(generated_dir, "sdram_phy.h"), "w") as f: - f.write(sdram_init.get_sdram_phy_header(sdram_phy_settings)) + write_to_file( + os.path.join(generated_dir, "sdram_phy.h"), + sdram_init.get_sdram_phy_header(sdram_phy_settings)) def _generate_csr_csv(self): memory_regions = self.soc.get_memory_regions() @@ -98,8 +108,9 @@ class Builder: csr_dir = os.path.dirname(self.csr_csv) os.makedirs(csr_dir, exist_ok=True) - with open(self.csr_csv, "w") as f: - f.write(cpu_interface.get_csr_csv(csr_regions, constants, memory_regions)) + write_to_file( + self.csr_csv, + cpu_interface.get_csr_csv(csr_regions, constants, memory_regions)) def _prepare_software(self): for name, src_dir in self.software_packages: