add support for external platforms and targets

This commit is contained in:
Sebastien Bourdeauducq 2013-11-24 16:55:33 +01:00
parent bc2b4a888b
commit b95563e45e
2 changed files with 14 additions and 3 deletions

17
make.py
View File

@ -14,7 +14,9 @@ def _get_args():
parser.add_argument("-p", "--platform", default="mixxeo", help="platform to build for") parser.add_argument("-p", "--platform", default="mixxeo", help="platform to build for")
parser.add_argument("-t", "--target", default="mlabs_video", help="SoC type to build") parser.add_argument("-t", "--target", default="mlabs_video", help="SoC type to build")
parser.add_argument("-s", "--sub-target", default="", help="variant of the SoC type to build") parser.add_argument("-s", "--sub-target", default="", help="variant of the SoC type to build")
parser.add_argument("-o", "--option", default=[], nargs=2, action="append") parser.add_argument("-o", "--option", default=[], nargs=2, action="append", help="set target-specific option")
parser.add_argument("-Xp", "--external-platform", default="", help="use external platform file in the specified path")
parser.add_argument("-Xt", "--external-target", default="", help="use external target file in the specified path")
parser.add_argument("-B", "--no-bitstream", default=False, action="store_true", help="do not build bitstream file") parser.add_argument("-B", "--no-bitstream", default=False, action="store_true", help="do not build bitstream file")
parser.add_argument("-H", "--no-header", default=False, action="store_true", help="do not build C header files with CSR/IRQ/SDRAM_PHY definitions") parser.add_argument("-H", "--no-header", default=False, action="store_true", help="do not build C header files with CSR/IRQ/SDRAM_PHY definitions")
@ -25,11 +27,20 @@ def _get_args():
return parser.parse_args() return parser.parse_args()
def _misoc_import(default, external, name):
if external:
loader = importlib.find_loader(name, [external])
if loader is None:
raise ImportError("Module not found: "+name)
return loader.load_module()
else:
return importlib.import_module(default + "." + name)
def main(): def main():
args = _get_args() args = _get_args()
platform_module = importlib.import_module("mibuild.platforms." + args.platform) platform_module = _misoc_import("mibuild.platforms", args.external_platform, args.platform)
target_module = importlib.import_module("targets." + args.target) target_module = _misoc_import("targets", args.external_target, args.target)
platform = platform_module.Platform() platform = platform_module.Platform()
if args.sub_target: if args.sub_target:
top_class = getattr(target_module, args.sub_target) top_class = getattr(target_module, args.sub_target)

0
targets/__init__.py Normal file
View File