blob: 11e7d09109d5b5813b79e948c4b1b6c77292f7aa [file] [log] [blame] [edit]
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)