import struct
import shutil
+from litex.build.tools import write_to_file
from litex.soc.integration import cpu_interface, soc_sdram, sdram_init
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()
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: