|  | cmake_minimum_required(VERSION 3.14.0) | 
|  | project(f4pga-arch-defs) | 
|  | enable_testing() | 
|  |  | 
|  | include(common/cmake/util.cmake) | 
|  | include(common/cmake/file_targets.cmake) | 
|  | include(common/cmake/env.cmake) | 
|  | include(common/cmake/xml.cmake) | 
|  | include(common/cmake/timings.cmake) | 
|  | include(common/cmake/v2x.cmake) | 
|  | include(common/cmake/install.cmake) | 
|  | include(common/cmake/devices.cmake) | 
|  | include(common/cmake/tools.cmake) | 
|  | include(common/cmake/sv2v.cmake) | 
|  | include(common/cmake/litex.cmake) | 
|  |  | 
|  | # Parse lists of architectures / devices to be installed | 
|  | parse_install_lists() | 
|  |  | 
|  | find_package(PythonInterp 3 REQUIRED) | 
|  |  | 
|  | add_custom_target(test_python) | 
|  |  | 
|  | # Dummy old targets, left in for backwards compability. | 
|  | add_custom_target(all_conda) | 
|  | add_custom_target(clean_locks) | 
|  |  | 
|  | # Add dummy targets for attaching test targets too. | 
|  | add_custom_target(all_xc7_tests) | 
|  | add_custom_target(all_ice40_tests) | 
|  | add_custom_target(all_quicklogic_tests) | 
|  |  | 
|  | set(ENV_DIR ${f4pga-arch-defs_SOURCE_DIR}/env/conda/envs/f4pga_arch_def_base/ CACHE PATH "Path to environment") | 
|  | set(YOSYS_DATADIR ${ENV_DIR}/share/yosys CACHE PATH "Path to yosys data directory") | 
|  | set(OPENOCD_DATADIR ${ENV_DIR}/share/openocd CACHE PATH "Path to openocd data directory") | 
|  | set(VPR_CAPNP_SCHEMA_DIR ${ENV_DIR}/share/vtr CACHE PATH "Path to VPR schema directory") | 
|  | option(LIGHT_BUILD "Perform a light build for a quicker CI check" OFF) | 
|  |  | 
|  | setup_env() | 
|  | add_env_executable(EXE yosys REQUIRED) | 
|  | add_env_executable(EXE vpr REQUIRED) | 
|  | add_env_executable(EXE genfasm REQUIRED) | 
|  | add_env_executable(EXE node REQUIRED) | 
|  | add_env_executable(EXE npm REQUIRED) | 
|  | add_env_executable(EXE pytest REQUIRED) | 
|  | add_env_executable(EXE xmllint REQUIRED) | 
|  | add_env_executable(EXE openocd REQUIRED) | 
|  | add_env_executable(EXE yapf REQUIRED) | 
|  | add_env_executable(EXE icebox.py REQUIRED) | 
|  | add_env_executable(EXE icebox_hlc2asc REQUIRED) | 
|  | add_env_executable(EXE icebox_vlog REQUIRED) | 
|  | add_env_executable(EXE icepack REQUIRED) | 
|  | add_env_executable(EXE icetime REQUIRED) | 
|  | add_env_executable(EXE tinyfpgab REQUIRED) | 
|  | add_env_executable(EXE tinyprog REQUIRED) | 
|  | add_env_executable(EXE flake8 REQUIRED) | 
|  | add_env_executable(EXE vvp REQUIRED) | 
|  | add_env_executable(EXE iverilog REQUIRED) | 
|  | add_env_executable(EXE xcfasm REQUIRED) | 
|  | add_env_executable(EXE qlfasm REQUIRED) | 
|  | add_env_executable(EXE qlf_fasm REQUIRED) | 
|  | add_env_executable(EXE quicklogic_timings_importer REQUIRED) | 
|  | add_env_executable(EXE xc7frames2bit REQUIRED) | 
|  | add_env_executable(EXE bitread REQUIRED) | 
|  | add_env_executable(EXE prjxray-config) | 
|  |  | 
|  | get_target_property_required(PYTHON3 env PYTHON3) | 
|  |  | 
|  | include(common/cmake/image_gen.cmake) | 
|  | include(common/cmake/gen.cmake) | 
|  |  | 
|  | # Target for all check tests. | 
|  | add_custom_target(all_check_tests) | 
|  |  | 
|  | # Target for all route tests. | 
|  | add_custom_target(all_route_tests) | 
|  |  | 
|  | # Target for all merged_arch_xmls. | 
|  | add_custom_target(all_merged_arch_xmls) | 
|  |  | 
|  | # Target for all rrgraph xmls. | 
|  | add_custom_target(all_rrgraph_xmls) | 
|  |  | 
|  | # Target to lint all xml files. | 
|  | add_custom_target(all_xml_lint) | 
|  |  | 
|  | # Target to validate pbtype files using vpr | 
|  | add_custom_target(all_vpr_test_pbtype) | 
|  |  | 
|  | add_subdirectory(common) | 
|  | add_subdirectory(utils) | 
|  | add_subdirectory(vpr) | 
|  | add_subdirectory(library) | 
|  | # Disable 7-series support in CI because it consumes too much memory. | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_subdirectory(xilinx) | 
|  | endif() | 
|  | add_subdirectory(lattice/ice40) | 
|  | add_subdirectory(quicklogic) | 
|  | add_subdirectory(testarch) | 
|  | add_subdirectory(tests) | 
|  |  | 
|  | get_target_property_required(YAPF env YAPF) | 
|  | add_custom_target( | 
|  | check_python | 
|  | COMMAND ${f4pga-arch-defs_SOURCE_DIR}/common/python_health_helper.sh -c -y ${YAPF} | 
|  | ) | 
|  | add_custom_target( | 
|  | format_python | 
|  | COMMAND ${f4pga-arch-defs_SOURCE_DIR}/common/python_health_helper.sh -f -y ${YAPF} | 
|  | ) | 
|  |  | 
|  | get_target_property_required(FLAKE8 env FLAKE8) | 
|  | add_custom_target( | 
|  | lint_python | 
|  | COMMAND ${f4pga-arch-defs_SOURCE_DIR}/common/python_health_helper.sh -l -p "${FLAKE8}" | 
|  | ) | 
|  |  | 
|  |  | 
|  | add_custom_target(all_ice40_demos) | 
|  | add_dependencies(all_ice40_demos | 
|  | all_icestick_bin | 
|  | all_iceblink40-lp1k_bin | 
|  | ) | 
|  |  | 
|  | add_custom_target(all_ice40_route_tests) | 
|  | add_dependencies(all_ice40_route_tests | 
|  | all_dummy_ice40_hx1k_tq144_route | 
|  | all_dummy_ice40_lp1k_qn84_route | 
|  | all_dummy_ice40_hx1k_tq144_route | 
|  | ) | 
|  |  | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_dependencies(all_ice40_demos | 
|  | all_icevision_bin | 
|  | all_hx8k-b-evn_bin | 
|  | all_tinyfpga-bx_bin | 
|  | all_tinyfpga-b2_bin | 
|  | ) | 
|  | add_dependencies(all_ice40_route_tests | 
|  | all_dummy_ice40_up5k_sg48_route | 
|  | all_dummy_ice40_lp8k_cm81_route | 
|  | all_dummy_ice40_hx8k_ct256_route | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | add_custom_target(all_ice40) | 
|  | add_dependencies(all_ice40 | 
|  | all_ice40_demos | 
|  | all_ice40_tests | 
|  | all_ice40_route_tests | 
|  | ) | 
|  |  | 
|  | add_custom_target(all_quicklogic) | 
|  | add_dependencies(all_quicklogic | 
|  | all_quicklogic_tests | 
|  | ) | 
|  |  | 
|  | add_custom_target(all_xc7_route_tests) | 
|  |  | 
|  |  | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_dependencies(all_xc7_route_tests | 
|  | all_dummy_artix7_xc7a50t-arty-swbut_test_route | 
|  | all_dummy_artix7_xc7a50t-arty-uart_test_route | 
|  | all_dummy_artix7_xc7a50t-basys3_test_route | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | add_custom_target(all_xc7_demos) | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_dependencies(all_xc7_demos | 
|  | all_arty-swbut_bin | 
|  | all_arty-uart_bin | 
|  | all_arty-full_bin | 
|  | all_arty100t-full_bin | 
|  | all_netv2-a100t_bin | 
|  | all_basys3_bin | 
|  | all_basys3-full_bin | 
|  | all_pynqz1-full_bin | 
|  | #all_basys3-bottom_bin | 
|  | # TODO(#548) Zybo targets not currently working, so removed from all target. | 
|  | #all_zybo_bin | 
|  | all_zybo-full_bin | 
|  | all_ax7050_bin | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | add_custom_target(all_xc7_diff_fasm) | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_dependencies(all_xc7_diff_fasm | 
|  | all_artix7_diff_fasm | 
|  | all_artix7_100t_diff_fasm | 
|  | all_zynq7_diff_fasm | 
|  | all_zynq7_z020_diff_fasm | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | add_custom_target(all_xc7) | 
|  | add_dependencies(all_xc7 | 
|  | all_xc7_demos | 
|  | all_xc7_route_tests | 
|  | all_xc7_tests | 
|  | ) | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_dependencies(all_xc7 | 
|  | test_dram_packing | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | add_custom_target(all_xc7_200t) | 
|  | if (NOT LIGHT_BUILD) | 
|  | add_dependencies(all_xc7_200t | 
|  | all_nexys_video_bin | 
|  | all_nexys_video-mid_bin | 
|  | ) | 
|  | endif() | 
|  |  | 
|  | add_custom_target(all_testarch) | 
|  | add_dependencies(all_testarch | 
|  | all_dummy_testarch_10x10_dummy_route | 
|  | all_dummy_testarch_4x4_dummy_route | 
|  | ) | 
|  |  | 
|  | add_custom_target(all_demos) | 
|  | add_dependencies(all_demos | 
|  | all_ice40_demos | 
|  | all_xc7_demos | 
|  | ) | 
|  |  | 
|  | add_custom_target(all_tests) | 
|  | add_dependencies(all_tests | 
|  | all_testarch | 
|  | all_ice40_tests | 
|  | all_quicklogic_tests | 
|  | all_xc7_tests | 
|  | ) | 
|  |  | 
|  | add_custom_target(docs) | 
|  |  | 
|  | add_custom_target(print_qor | 
|  | COMMAND ${PYTHON3} ${f4pga-arch-defs_SOURCE_DIR}/utils/print_qor.py ${f4pga-arch-defs_BINARY_DIR} | 
|  | ) |