Add parser as an option for all the actions

parent 18002461
......@@ -292,8 +292,8 @@ def _get_parser():
parser.add_argument("--generate-project-vhd", help="generate project.vhd file with a meta package describing the project",
dest="generate_project_vhd", default=False, action="store_true")
parser.add_argument("--force", help="force hdlmake to generate the makefile, even if the specified tool is missing", default=False, action="store_true")
parser.add_argument("--allow-unknown", dest="allow_unknown",
default=False, help="allow unknown option insertions in the child Manifests", action="store_true")
parser.add_argument("--parser", dest="parser",
default=False, help="enable smart parser engine", action="store_true")
return parser
......
......@@ -28,7 +28,7 @@ class ListFiles(Action):
unfetched_modules = [m for m in self.modules_pool if not m.isfetched]
for m in unfetched_modules:
logging.warning("List incomplete, module %s has not been fetched!", m)
file_set = self.modules_pool.build_limited_file_set()
file_set = self.modules_pool.build_file_set()
file_list = dep_solver.make_dependency_sorted_list(file_set)
files_str = [f.path for f in file_list]
print(self.options.delimiter.join(files_str))
......@@ -48,9 +48,7 @@ class MergeCores(Action):
self._check_all_fetched_or_quit()
logging.info("Merging all cores into one source file per language.")
flist = pool.build_global_file_set()
# if not os.path.exists(self.options.merge_cores):
# os.makedirs(self.options.merge_cores)
flist = pool.build_file_set()
base = self.options.dest
f_out = open(base+".vhd", "w")
......
......@@ -28,7 +28,7 @@ import logging
class QsysHwTclUpdate(Action):
def run(self):
file_set = self.modules_pool.build_limited_file_set()
file_set = self.modules_pool.build_file_set()
file_list = dep_solver.make_dependency_sorted_list(file_set)
files_str = [os.path.relpath(f.path) for f in file_list]
......
......@@ -65,7 +65,7 @@ class GenerateRemoteSynthesisMakefile(Action):
self.env.check_remote_tool(tool_object)
self.env.check_general()
files = self.modules_pool.build_global_file_set()
files = self.modules_pool.build_file_set()
sff = SourceFileFactory()
files.add(sff.new(top_mod.syn_project, module=None))
......
......@@ -80,7 +80,7 @@ class GenerateSimulationMakefile(Action):
pool = self.modules_pool
top_module = pool.get_top_module()
fset = pool.build_limited_file_set()
fset = pool.build_file_set()
dep_files = fset.filter(DepFile)
#dep_solver.solve(dep_files)
......
......@@ -193,45 +193,34 @@ class ModulePool(list):
def solve_dependencies(self):
"""Set dependencies for all project files"""
if not self._deps_solved:
dep_solver.solve(self.build_file_set())
dep_solver.solve(self.build_complete_file_set())
self._deps_solved = True
def build_file_set(self):
if global_mod.options.parser == True:
return self.build_limited_file_set()
else:
return self.build_complete_file_set()
def build_complete_file_set(self):
"""Build set of all files listed in the manifests"""
from .srcfile import SourceFileSet
all_manifested_files = SourceFileSet()
for module in self:
all_manifested_files.add(module.files)
return all_manifested_files
def build_limited_file_set(self, top_entity=None):
if not top_entity:
top_entity = self.top_module.top_module
def build_limited_file_set(self):
top_entity = self.top_module.top_module
self.solve_dependencies();
files = dep_solver.make_dependency_set(self.build_file_set(),top_entity)
files = dep_solver.make_dependency_set(self.build_complete_file_set(),top_entity)
from srcfile import SourceFileSet
source_files = SourceFileSet()
source_files.add(files)
return source_files
def build_global_file_set(self):
"""Build set of all files from manifests plus all include files from sources"""
from .srcfile import SourceFileSet
files = self.build_file_set()
assert isinstance(files, SourceFileSet)
self.solve_dependencies()
ret = []
for file in files:
try:
for dep_file in file.dep_depends_on:
if dep_file not in ret:
ret.add(dep_file)
ret.add(file)
except:
pass
return files
def get_top_module(self):
return self.top_module
......
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