From f6684147c11a352615329feb1d89d00d8d1fa65c Mon Sep 17 00:00:00 2001 From: Benjamin Walsh Date: Tue, 7 Jun 2016 15:58:43 -0400 Subject: [PATCH] build: make sysgen take optional command line arguments Cleaner than positional parameters, easier to add new arguments. Change-Id: I30e85f7b2643775c1006564d18da115599688e88 Signed-off-by: Benjamin Walsh --- Kbuild | 10 +++++++--- scripts/sysgen | 28 ++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/Kbuild b/Kbuild index cb7d2a3c6bf..7d0bdb2bcae 100644 --- a/Kbuild +++ b/Kbuild @@ -31,12 +31,16 @@ misc/generated/sysgen/prj.mdef: $(MDEF_FILE_PATH) \ include/config/auto.conf FORCE $(call filechk,prj.mdef) +sysgen_cmd=$(strip \ + $(PYTHON) $(srctree)/scripts/sysgen \ + -i $(CURDIR)/misc/generated/sysgen/prj.mdef \ + -o $(CURDIR)/misc/generated/sysgen/ \ +) + misc/generated/sysgen/kernel_main.c: misc/generated/sysgen/prj.mdef \ kernel/microkernel/include/micro_private_types.h \ kernel/microkernel/include/kernel_main.h - $(Q)$(PYTHON) $(srctree)/scripts/sysgen \ - $(CURDIR)/misc/generated/sysgen/prj.mdef \ - $(CURDIR)/misc/generated/sysgen/ + $(Q)$(sysgen_cmd) define filechk_configs.c (echo "/* file is auto-generated, do not modify ! */"; \ diff --git a/scripts/sysgen b/scripts/sysgen index a31adbcb5a3..74ffe54a21b 100755 --- a/scripts/sysgen +++ b/scripts/sysgen @@ -31,6 +31,7 @@ import os import sys import subprocess +import argparse # global variables describing system @@ -76,15 +77,30 @@ copyright = \ " */\n" output_dir = "" +input_mdef_file = "" - -def get_output_dir(): +def get_cmdline_args(): """ Handle optional output directory argument """ + global input_mdef_file global output_dir - if len(sys.argv) > 2: - output_dir = sys.argv[2] + output_dir_help='output directory for kernel_main.*, sysgen.h, etc' + input_mdef_file_help='input MDEF file' + + parser = argparse.ArgumentParser() + + parser.add_argument('-i', '--input-mdef-file', action='store', + required=True, help=input_mdef_file_help) + parser.add_argument('-o', '--output-dir', action='store', + help=output_dir_help) + + args = parser.parse_args() + + input_mdef_file = args.input_mdef_file + + if (args.output_dir != None): + output_dir = args.output_dir def write_file(filename, contents): """ Create file using specified name and contents """ @@ -123,7 +139,7 @@ def mdef_parse(): global heap_pos_in_pool_list # read file contents in a single shot - with open(sys.argv[1], 'r') as infile: + with open(input_mdef_file, 'r') as infile: data = infile.read() # create list of the lines, breaking at line boundaries @@ -1001,8 +1017,8 @@ def sysgen_h_generate(): # +get_cmdline_args() mdef_parse() -get_output_dir() kernel_main_c_generate() kernel_main_h_generate() micro_private_types_h_generate()