diff --git a/Tools/px_process_params.py b/Tools/px_process_params.py index 0013517e22..697af39f91 100644 --- a/Tools/px_process_params.py +++ b/Tools/px_process_params.py @@ -60,9 +60,10 @@ def main(): # Parse command line arguments parser = argparse.ArgumentParser(description="Process parameter documentation.") parser.add_argument("-s", "--src-path", - default="../src", + default=["../src"], metavar="PATH", - help="path to source files to scan for parameters") + nargs='*', + help="one or more paths to source files to scan for parameters") parser.add_argument("-x", "--xml", nargs='?', const="parameters.xml", @@ -116,7 +117,6 @@ def main(): default="{}", metavar="OVERRIDES", help="a dict of overrides in the form of a json string") - parser.add_argument('--modules', default=None, action='store', help="list of compiled modules") args = parser.parse_args() @@ -132,14 +132,11 @@ def main(): parser = srcparser.SourceParser() # Scan directories, and parse the files - if (args.verbose): print("Scanning source path " + args.src_path) + if (args.verbose): print("Scanning source path " + str(args.src_path)) - if args.modules is not None: - if not scanner.ScanDir([os.path.join(args.src_path, p) for p in args.modules.split(',')], parser): - sys.exit(1) - else: - if not scanner.ScanDir([args.src_path], parser): - sys.exit(1) + if not scanner.ScanDir(args.src_path, parser): + sys.exit(1) + if not parser.Validate(): sys.exit(1) param_groups = parser.GetParamGroups() @@ -160,7 +157,9 @@ def main(): # Output to XML file if args.xml: if args.verbose: print("Creating XML file " + args.xml) - out = xmlout.XMLOutput(param_groups, args.board, os.path.join(args.src_path, args.inject_xml)) + cur_dir = os.path.dirname(os.path.realpath(__file__)) + out = xmlout.XMLOutput(param_groups, args.board, + os.path.join(cur_dir, args.inject_xml)) out.Save(args.xml) # Output to DokuWiki tables diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake index 6a2d552478..542dffb0ee 100644 --- a/cmake/common/px4_base.cmake +++ b/cmake/common/px4_base.cmake @@ -1032,11 +1032,18 @@ function(px4_generate_parameters_xml) if (NOT OVERRIDES) set(OVERRIDES "{}") endif() - px4_join(OUT module_list LIST ${MODULES} GLUE ",") + + # get full path for each module + set(module_list) + foreach(module ${MODULES}) + list(APPEND module_list ${PX4_SOURCE_DIR}/src/${module}) + endforeach() + add_custom_command(OUTPUT ${OUT} COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_process_params.py - -s ${path} --board CONFIG_ARCH_${BOARD} --xml --inject-xml - --overrides ${OVERRIDES} --modules ${module_list} + -s ${module_list} + --board CONFIG_ARCH_${BOARD} --xml --inject-xml + --overrides ${OVERRIDES} DEPENDS ${param_src_files} ${PX4_SOURCE_DIR}/Tools/px_process_params.py ${PX4_SOURCE_DIR}/Tools/px_generate_params.py )