| function(XML_LINT) |
| # ~~~ |
| # XML_LINT( |
| # NAME |
| # FILE |
| # LINT_OUTPUT |
| # SCHEMA |
| # ) |
| set(options) |
| set(oneValueArgs NAME FILE LINT_OUTPUT SCHEMA) |
| set(multiValueArgs) |
| cmake_parse_arguments( |
| XML_LINT |
| "${options}" |
| "${oneValueArgs}" |
| "${multiValueArgs}" |
| ${ARGN} |
| ) |
| |
| get_target_property_required(XMLLINT env XMLLINT) |
| |
| # For xmllint we use head to shortcircuit failure as it can take a |
| # very long time to output all of the errors |
| add_custom_command( |
| OUTPUT ${XML_LINT_LINT_OUTPUT} |
| DEPENDS ${XML_LINT_FILE} ${XML_LINT_SCHEMA} ${XMLLINT} |
| COMMAND bash -c |
| '${XMLLINT} |
| --output ${XML_LINT_LINT_OUTPUT} |
| --schema ${XML_LINT_SCHEMA} |
| ${XML_LINT_FILE} 2>&1 | head -n10 && exit "$$\{PIPESTATUS[0]\}" ' |
| ) |
| |
| get_rel_target(REL_XML_LINT_NAME lint ${XML_LINT_NAME}) |
| add_custom_target( |
| ${REL_XML_LINT_NAME} |
| DEPENDS ${XML_LINT_LINT_OUTPUT} |
| ) |
| add_dependencies(all_xml_lint ${REL_XML_LINT_NAME}) |
| |
| endfunction(XML_LINT) |
| |
| function(XML_CANONICALIZE_MERGE) |
| # ~~~ |
| # XML_CANONICALIZE_MERGE( |
| # NAME |
| # FILE |
| # OUTPUT |
| # {EXTRA_ARGUMENTS} |
| # ) |
| # |
| # This function provides targets to sort the XML file in input according to the `convert_and_merge_composable_fpga_architecture.xsl` script. |
| # It appends all the dependencies necessary to produce the desired OUTPUT (e.g. verilog to XML translation through the tools). |
| # |
| # NAME is used to give a name to the target. |
| # FILE is the input file that needs to be processed by xsl script. |
| # OUTPUT is the name of the output file |
| # EXTRA_ARGUMENTS is the extra arguments to give to xsltproc when running the xsl script. |
| |
| set(options) |
| set(oneValueArgs NAME FILE OUTPUT) |
| set(multiValueArgs EXTRA_ARGUMENTS) |
| cmake_parse_arguments( |
| XML_CANONICALIZE_MERGE |
| "${options}" |
| "${oneValueArgs}" |
| "${multiValueArgs}" |
| ${ARGN} |
| ) |
| |
| set(DEPS "") |
| append_file_dependency(DEPS ${XML_CANONICALIZE_MERGE_FILE}) |
| |
| add_custom_command( |
| OUTPUT ${XML_CANONICALIZE_MERGE_OUTPUT} |
| DEPENDS |
| ${DEPS} |
| ${PYTHON3} |
| COMMAND |
| PYTHONPATH=${f4pga-arch-defs_SOURCE_DIR}/third_party/vtr-xml-utils/:${PYTHONPATH} |
| ${PYTHON3} -m vtr_xml_utils |
| ${XML_CANONICALIZE_MERGE_FILE} |
| -o ${CMAKE_CURRENT_BINARY_DIR}/${XML_CANONICALIZE_MERGE_OUTPUT} |
| ) |
| |
| add_file_target(FILE ${XML_CANONICALIZE_MERGE_OUTPUT} GENERATED) |
| |
| get_rel_target(REL_XML_CANONICALIZE_MERGE_FILE merge ${XML_CANONICALIZE_MERGE_FILE}) |
| add_custom_target( |
| ${REL_XML_CANONICALIZE_MERGE_FILE} |
| DEPENDS ${XML_CANONICALIZE_MERGE_OUTPUT} |
| ) |
| endfunction(XML_CANONICALIZE_MERGE) |