|  | function(DEFINE_XC_TOOLCHAIN_TARGET) | 
|  | set(options) | 
|  | set(oneValueArgs ARCH CONV_SCRIPT SYNTH_SCRIPT UTILS_SCRIPT ROUTE_CHAN_WIDTH) | 
|  | set(multiValueArgs VPR_ARCH_ARGS) | 
|  |  | 
|  | cmake_parse_arguments( | 
|  | DEFINE_XC_TOOLCHAIN_TARGET | 
|  | "${options}" | 
|  | "${oneValueArgs}" | 
|  | "${multiValueArgs}" | 
|  | "${ARGN}" | 
|  | ) | 
|  |  | 
|  | set(ARCH ${DEFINE_XC_TOOLCHAIN_TARGET_ARCH}) | 
|  |  | 
|  | # Check if the architecture is to be installed | 
|  | check_arch_install(${ARCH} DO_INSTALL) | 
|  | if(NOT DO_INSTALL) | 
|  | return() | 
|  | endif() | 
|  |  | 
|  | get_target_property_required(VPR env VPR) | 
|  | get_target_property_required(GENFASM env GENFASM) | 
|  | get_target_property_required(FAMILY ${ARCH} FAMILY) | 
|  | get_target_property_required(DOC_PRJ ${ARCH} DOC_PRJ) | 
|  | get_target_property_required(DOC_PRJ_DB ${ARCH} DOC_PRJ_DB) | 
|  |  | 
|  | # install prjxray techmap | 
|  | install(DIRECTORY ${f4pga-arch-defs_SOURCE_DIR}/xilinx/${FAMILY}/techmap | 
|  | DESTINATION share/f4pga/techmaps/${FAMILY}_vpr) | 
|  |  | 
|  | endfunction() | 
|  |  | 
|  | function(DEFINE_XC_PINMAP_CSV_INSTALL_TARGET) | 
|  | set(options) | 
|  | set(oneValueArgs PART DEVICE_TYPE BOARD DEVICE PACKAGE) | 
|  | set(multiValueArgs) | 
|  |  | 
|  | cmake_parse_arguments( | 
|  | DEFINE_XC_PINMAP_CSV_INSTALL_TARGET | 
|  | "${options}" | 
|  | "${oneValueArgs}" | 
|  | "${multiValueArgs}" | 
|  | "${ARGN}" | 
|  | ) | 
|  |  | 
|  | set(DEVICE ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_DEVICE}) | 
|  |  | 
|  | # Check if the device is to be installed | 
|  | check_device_install(${DEVICE} DO_INSTALL) | 
|  | if(NOT DO_INSTALL) | 
|  | return() | 
|  | endif() | 
|  |  | 
|  | set(PART ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_PART}) | 
|  | set(BOARD ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_BOARD}) | 
|  | set(DEVICE_TYPE ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_DEVICE_TYPE}) | 
|  | set(PACKAGE ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_PACKAGE}) | 
|  |  | 
|  | get_target_property(USE_ROI ${DEVICE_TYPE} USE_ROI) | 
|  | if(USE_ROI OR USE_ROI STREQUAL "USE_ROI-NOTFOUND") | 
|  | message(STATUS "Skipping pinmap installation for ${DEVICE}-${PACKAGE} part: ${PART}") | 
|  | return() | 
|  | endif() | 
|  |  | 
|  | get_target_property(LIMIT_GRAPH_TO_DEVICE ${DEVICE_TYPE} LIMIT_GRAPH_TO_DEVICE) | 
|  | if(LIMIT_GRAPH_TO_DEVICE OR LIMIT_GRAPH_TO_DEVICE STREQUAL "LIMIT_GRAPH_TO_DEVICE-NOTFOUND") | 
|  | message(STATUS "Graph limited to a sub-area of the device. Skipping files installation for ${DEVICE}-${PACKAGE} type: ${DEVICE_TYPE}") | 
|  | return() | 
|  | endif() | 
|  |  | 
|  | get_target_property_required(PINMAP ${BOARD} PINMAP) | 
|  | get_file_location(PINMAP_FILE ${PINMAP}) | 
|  | get_filename_component(PINMAP_FILE_NAME ${PINMAP_FILE} NAME) | 
|  | append_file_dependency(DEPS ${PINMAP}) | 
|  | add_custom_target( | 
|  | "PINMAP_INSTALL_${BOARD}_${DEVICE}_${PACKAGE}_${PINMAP_FILE_NAME}" | 
|  | ALL | 
|  | DEPENDS ${DEPS} | 
|  | ) | 
|  | install(FILES ${PINMAP_FILE} | 
|  | DESTINATION "share/f4pga/arch/${DEVICE}_${PACKAGE}/${PART}" | 
|  | RENAME "pinmap.csv") | 
|  | endfunction() |