Commit e7dbe3de authored by Paweł Szostek's avatar Paweł Szostek

move dep solving to global file list building

parent 191d81d5
...@@ -65,7 +65,6 @@ class GenerateISEProject(Action): ...@@ -65,7 +65,6 @@ class GenerateISEProject(Action):
def _handle_ise_project(self, update=False): def _handle_ise_project(self, update=False):
top_mod = self.modules_pool.get_top_module() top_mod = self.modules_pool.get_top_module()
fileset = self.modules_pool.build_global_file_list() fileset = self.modules_pool.build_global_file_list()
dep_solver.solve(fileset)
flist = dep_solver.make_dependency_sorted_list(fileset) flist = dep_solver.make_dependency_sorted_list(fileset)
prj = ISEProject(ise=self.env["ise_version"], prj = ISEProject(ise=self.env["ise_version"],
......
...@@ -47,7 +47,6 @@ class GenerateQuartusProject(Action): ...@@ -47,7 +47,6 @@ class GenerateQuartusProject(Action):
top_mod = self.modules_pool.get_top_module() top_mod = self.modules_pool.get_top_module()
fileset = self.modules_pool.build_global_file_list() fileset = self.modules_pool.build_global_file_list()
non_dependable = fileset.inversed_filter(DependableFile) non_dependable = fileset.inversed_filter(DependableFile)
fileset = dep_solver.solve(fileset)
fileset.add(non_dependable) fileset.add(non_dependable)
prj = QuartusProject(top_mod.syn_project) prj = QuartusProject(top_mod.syn_project)
...@@ -66,7 +65,6 @@ class GenerateQuartusProject(Action): ...@@ -66,7 +65,6 @@ class GenerateQuartusProject(Action):
top_mod = self.modules_pool.get_top_module() top_mod = self.modules_pool.get_top_module()
fileset = self.modules_pool.build_global_file_list() fileset = self.modules_pool.build_global_file_list()
non_dependable = fileset.inversed_filter(DependableFile) non_dependable = fileset.inversed_filter(DependableFile)
fileset = dep_solver.solve(fileset)
fileset.add(non_dependable) fileset.add(non_dependable)
prj = QuartusProject(top_mod.syn_project) prj = QuartusProject(top_mod.syn_project)
prj.read() prj.read()
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
from __future__ import print_function from __future__ import print_function
from action import Action from action import Action
import logging import logging
import new_dep_solver as dep_solver
import sys import sys
import global_mod import global_mod
...@@ -59,7 +58,6 @@ class GenerateSimulationMakefile(Action): ...@@ -59,7 +58,6 @@ class GenerateSimulationMakefile(Action):
pool = self.modules_pool pool = self.modules_pool
top_module = pool.get_top_module() top_module = pool.get_top_module()
fset = pool.build_global_file_list() fset = pool.build_global_file_list()
dep_solver.solve(fset)
dep_files = fset.filter(DepFile) dep_files = fset.filter(DepFile)
global_mod.makefile_writer.generate_vsim_makefile(dep_files, top_module) global_mod.makefile_writer.generate_vsim_makefile(dep_files, top_module)
...@@ -74,7 +72,6 @@ class GenerateSimulationMakefile(Action): ...@@ -74,7 +72,6 @@ class GenerateSimulationMakefile(Action):
top_module = pool.get_top_module() top_module = pool.get_top_module()
fset = pool.build_global_file_list() fset = pool.build_global_file_list()
dep_solver.solve(fset)
global_mod.makefile_writer.generate_isim_makefile(fset, top_module) global_mod.makefile_writer.generate_isim_makefile(fset, top_module)
def _generate_iverilog_makefile(self): def _generate_iverilog_makefile(self):
...@@ -87,5 +84,4 @@ class GenerateSimulationMakefile(Action): ...@@ -87,5 +84,4 @@ class GenerateSimulationMakefile(Action):
tm = pool.get_top_module() tm = pool.get_top_module()
fset = pool.build_global_file_list() fset = pool.build_global_file_list()
dep_solver.solve(fset)
global_mod.makefile_writer.generate_iverilog_makefile(fset, tm, pool) global_mod.makefile_writer.generate_iverilog_makefile(fset, tm, pool)
...@@ -423,14 +423,14 @@ class Module(object): ...@@ -423,14 +423,14 @@ class Module(object):
return False return False
filepath = os.path.join(self.path, filepath) filepath = os.path.join(self.path, filepath)
if not os.path.exists(filepath): if not os.path.exists(filepath):
logging.error("Path specified in %s doesn't exist: %s" % (self.path, filepath)) logging.error("Path specified in manifest in %s doesn't exist: %s" % (self.path, filepath))
sys.exit("Exiting") sys.exit("Exiting")
filepath = path_mod.rel2abs(filepath, self.path) filepath = path_mod.rel2abs(filepath, self.path)
if os.path.isdir(filepath): if os.path.isdir(filepath):
logging.warning("Path specified in %s is a directory: %s" % (self.path, filepath)) logging.warning("Path specified in manifest %s is a directory: %s" % (self.path, filepath))
return True return True
def is_fetched_recursively(self): def is_fetched_recursively(self):
......
...@@ -37,6 +37,7 @@ class ModulePool(list): ...@@ -37,6 +37,7 @@ class ModulePool(list):
list.__init__(self, *args) list.__init__(self, *args)
self.top_module = None self.top_module = None
self.global_fetch = os.getenv("HDLMAKE_COREDIR") self.global_fetch = os.getenv("HDLMAKE_COREDIR")
self._deps_solved = False
def get_module_by_path(self, path): def get_module_by_path(self, path):
path = path_mod.rel2abs(path) path = path_mod.rel2abs(path)
...@@ -60,6 +61,7 @@ class ModulePool(list): ...@@ -60,6 +61,7 @@ class ModulePool(list):
def new_module(self, parent, url, source, fetchto, process_manifest=True): def new_module(self, parent, url, source, fetchto, process_manifest=True):
from module import Module from module import Module
self._deps_solved = False
if source != fetch.LOCAL: if source != fetch.LOCAL:
clean_url, branch, revision = path_mod.url_parse(url) clean_url, branch, revision = path_mod.url_parse(url)
else: else:
...@@ -179,6 +181,10 @@ class ModulePool(list): ...@@ -179,6 +181,10 @@ class ModulePool(list):
else: else:
logging.debug("NOT appended to fetch queue: " + str(mod.url)) logging.debug("NOT appended to fetch queue: " + str(mod.url))
def solve_dependencies(self):
dep_solver.solve(self.build_global_file_list())
self._deps_solved = True
def build_global_file_list(self): def build_global_file_list(self):
from srcfile import SourceFileSet from srcfile import SourceFileSet
ret = SourceFileSet() ret = SourceFileSet()
...@@ -190,7 +196,8 @@ class ModulePool(list): ...@@ -190,7 +196,8 @@ class ModulePool(list):
from srcfile import SourceFileSet from srcfile import SourceFileSet
files = self.build_global_file_list() files = self.build_global_file_list()
assert isinstance(files, SourceFileSet) assert isinstance(files, SourceFileSet)
dep_solver.solve(files) if not self._deps_solved:
self.solve_dependencies()
ret = [] ret = []
for file in files: for file in files:
try: try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment