| function(ADD_QUICKLOGIC_PLUGINS) | 
 |   set(QLFPGA_LATEST_URL https://storage.googleapis.com/symbiflow-arch-defs-install/qlfpga_symbiflow_plugins/qlf_k4n8/latest) | 
 |  | 
 |   set(QLFPGA_LATEST_REL		    latest) | 
 |   set(QLFPGA_REPACKING_RULES_REL    repacking_rules.json) | 
 |   set(QLFPGA_FASM_DB_TAR_GZ_REL	    fasm_database.tar.gz) | 
 |   set(QLFPGA_FASM_DB_REL	    fasm_database) | 
 |   set(QLFPGA_FAST_VPR_ARCH_REL	    fast/vpr_arch/UMC22nm_vpr.xml) | 
 |   set(QLFPGA_FAST_VPR_RR_GRAPH_REL  fast/vpr_rr_graph/UMC22nm_vpr.bin.gz) | 
 |   set(QLFPGA_SLOW_VPR_ARCH_REL	    slow/vpr_arch/UMC22nm_vpr.xml) | 
 |   set(QLFPGA_SLOW_VPR_RR_GRAPH_REL  slow/vpr_rr_graph/UMC22nm_vpr.bin.gz) | 
 |  | 
 |   set(QLFPGA_BASE_DIR		    third_party/qlfpga-symbiflow-plugins/qlf_k4n8) | 
 |  | 
 |   set(QLFPGA_LATEST		    ${QLFPGA_BASE_DIR}/${QLFPGA_LATEST_REL}) | 
 |   set(QLFPGA_REPACKING_RULES	    ${QLFPGA_BASE_DIR}/${QLFPGA_REPACKING_RULES_REL}) | 
 |   set(QLFPGA_FASM_DB_TAR_GZ	    ${QLFPGA_BASE_DIR}/${QLFPGA_FASM_DB_TAR_GZ_REL}) | 
 |   set(QLFPGA_FASM_DB		    ${QLFPGA_BASE_DIR}/${QLFPGA_FASM_DB_REL}) | 
 |   set(QLFPGA_FAST_VPR_ARCH	    ${QLFPGA_BASE_DIR}/${QLFPGA_FAST_VPR_ARCH_REL}) | 
 |   set(QLFPGA_FAST_VPR_RR_GRAPH	    ${QLFPGA_BASE_DIR}/${QLFPGA_FAST_VPR_RR_GRAPH_REL}) | 
 |   set(QLFPGA_SLOW_VPR_ARCH	    ${QLFPGA_BASE_DIR}/${QLFPGA_SLOW_VPR_ARCH_REL}) | 
 |   set(QLFPGA_SLOW_VPR_RR_GRAPH	    ${QLFPGA_BASE_DIR}/${QLFPGA_SLOW_VPR_RR_GRAPH_REL}) | 
 |  | 
 |   # File with pointer to the latest version of qlfpga plugins | 
 |   add_custom_command( | 
 | 	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${QLFPGA_LATEST} | 
 |     COMMAND | 
 |         ${CMAKE_COMMAND} -E make_directory | 
 |             ${QLFPGA_BASE_DIR} | 
 | 	COMMAND bash -c | 
 | 		'wget ${QLFPGA_LATEST_URL} -O ${QLFPGA_LATEST}' | 
 | 	COMMENT "Generating ${QLFPGA_LATEST}" | 
 |   ) | 
 |   add_file_target(FILE ${QLFPGA_LATEST} GENERATED) | 
 |  | 
 |   fetch_qlfpga(${QLFPGA_REPACKING_RULES}    ${QLFPGA_REPACKING_RULES_REL}) | 
 |   fetch_qlfpga(${QLFPGA_FASM_DB_TAR_GZ}	    ${QLFPGA_FASM_DB_TAR_GZ_REL}) | 
 |   fetch_qlfpga(${QLFPGA_FAST_VPR_ARCH}	    ${QLFPGA_FAST_VPR_ARCH_REL}) | 
 |   fetch_qlfpga(${QLFPGA_FAST_VPR_RR_GRAPH}  ${QLFPGA_FAST_VPR_RR_GRAPH_REL}) | 
 |   fetch_qlfpga(${QLFPGA_SLOW_VPR_ARCH}	    ${QLFPGA_SLOW_VPR_ARCH_REL}) | 
 |   fetch_qlfpga(${QLFPGA_SLOW_VPR_RR_GRAPH}  ${QLFPGA_SLOW_VPR_RR_GRAPH_REL}) | 
 |  | 
 |   get_file_target(QLFPGA_FASM_DB_TAR_GZ_TARGET ${QLFPGA_FASM_DB_TAR_GZ}) | 
 |   add_custom_command( | 
 | 	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${QLFPGA_FASM_DB} | 
 | 	COMMAND bash -c 'tar -xf ${QLFPGA_FASM_DB_TAR_GZ} -C ${QLFPGA_BASE_DIR}' | 
 |         DEPENDS ${QLFPGA_FASM_DB_TAR_GZ_TARGET} | 
 | 	COMMENT "Generating ${QLFPGA_FASM_DB}" | 
 |   ) | 
 |   add_file_target(FILE ${QLFPGA_FASM_DB} GENERATED) | 
 |  | 
 |   set(QLFPGA_PLUGINS_FILES | 
 |     ${QLFPGA_REPACKING_RULES} | 
 |     ${QLFPGA_FASM_DB} | 
 |     ${QLFPGA_FAST_VPR_ARCH} | 
 |     ${QLFPGA_FAST_VPR_RR_GRAPH} | 
 |     ${QLFPGA_SLOW_VPR_ARCH} | 
 |     ${QLFPGA_SLOW_VPR_RR_GRAPH} | 
 |   ) | 
 |  | 
 |   set(QLFPGA_PLUGINS_DEPS ) | 
 |   foreach(FILE_NAME ${QLFPGA_PLUGINS_FILES}) | 
 |     get_file_target(FILE_TARGET ${FILE_NAME}) | 
 |     list(APPEND QLFPGA_PLUGINS_DEPS ${FILE_TARGET}) | 
 |   endforeach() | 
 |  | 
 |   add_custom_target(qlfpga_plugins | 
 |     DEPENDS ${QLFPGA_PLUGINS_DEPS} | 
 |   ) | 
 | endfunction() | 
 |  | 
 | function(FETCH_QLFPGA FILE_PATH FILE_REL_PATH) | 
 |  | 
 |   get_filename_component(FILE_DIRECTORY ${FILE_PATH} DIRECTORY) | 
 |   get_file_target(QLFPGA_LATEST_TARGET ${QLFPGA_LATEST}) | 
 |  | 
 |   add_custom_command( | 
 | 	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE_PATH} | 
 |     COMMAND ${CMAKE_COMMAND} -E make_directory ${FILE_DIRECTORY} | 
 | 	COMMAND bash -c 'wget `cat ${QLFPGA_LATEST}`/${FILE_REL_PATH} -O ${FILE_PATH}' | 
 | 	DEPENDS ${QLFPGA_LATEST_TARGET} | 
 | 	COMMENT "Generating ${FILE_PATH}" | 
 |   ) | 
 |   add_file_target(FILE ${FILE_PATH} GENERATED) | 
 | endfunction() |