
cmake_minimum_required(VERSION 3.15)
project(bsp)

# Use CMAKE_LIBRARY_PATH in link_directories
link_directories(${CMAKE_LIBRARY_PATH})
        
set(DRIVER_TARGETS axivdma;vtc;coresightps_dcc;devcfg;dmaps;emacps;gpiops;scugic;qspips;scutimer;scuwdt;sdps;ttcps;uartps;usbps;xadcps)
set(DRIVER_LOCATIONS /opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/axivdma_v6_16;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/vtc_v8_7;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/coresightps_dcc_v1_12;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/devcfg_v3_8;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/dmaps_v2_11;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/emacps_v3_22;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/gpiops_v3_14;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/scugic_v5_5;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/qspips_v3_14;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/scutimer_v2_7;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/scuwdt_v2_6;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/sdps_v4_4;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/ttcps_v3_21;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/uartps_v3_16;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/usbps_v2_9;/opt/york/cs/net/xilinx_vivado-2025.1-x86_64-1/2025.1/Vitis/data/embeddedsw/XilinxProcessorIPLib/drivers/xadcps_v2_7)

list(LENGTH DRIVER_TARGETS no_of_drivers)
set(index 0)

while(${index} LESS ${no_of_drivers})
    list(GET DRIVER_TARGETS ${index} drv)
    list(GET DRIVER_LOCATIONS ${index} drv_dir)
    set(exp_dir "${drv_dir}/examples")
    add_custom_target(
        ${drv}_example ALL
        COMMAND lopper -f -O /home/userfs/o/od641/Documents/embs-assessment/vitis_workspace/Minimal/ps7_cortexa9_0/freertos_ps7_cortexa9_0/bsp/libsrc/${drv} /home/userfs/o/od641/Documents/embs-assessment/vitis_workspace/Minimal/ps7_cortexa9_0/freertos_ps7_cortexa9_0/bsp/hw_artifacts/ps7_cortexa9_0_baremetal.dts -- bmcmake_metadata_xlnx ps7_cortexa9_0 ${exp_dir} drvcmake_metadata
        BYPRODUCTS x${drv}_exlist.yaml)
    MATH(EXPR index "${index}+1")
endwhile()
