From b95563e45ed65ad7bc011639bdf5496ba2aec04a Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sun, 24 Nov 2013 16:55:33 +0100 Subject: [PATCH] add support for external platforms and targets --- make.py | 17 ++++++++++++++--- targets/__init__.py | 0 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 targets/__init__.py diff --git a/make.py b/make.py index 4ef7ef3ab..1103173a6 100755 --- a/make.py +++ b/make.py @@ -14,7 +14,9 @@ def _get_args(): 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("-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("-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() +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(): args = _get_args() - platform_module = importlib.import_module("mibuild.platforms." + args.platform) - target_module = importlib.import_module("targets." + args.target) + platform_module = _misoc_import("mibuild.platforms", args.external_platform, args.platform) + target_module = _misoc_import("targets", args.external_target, args.target) platform = platform_module.Platform() if args.sub_target: top_class = getattr(target_module, args.sub_target) diff --git a/targets/__init__.py b/targets/__init__.py new file mode 100644 index 000000000..e69de29bb