def build(bld):

    toolchain = bld.env["UsedToolchain"]
    platform  = bld.env["UsedPlatform"]
    
    comp_prefix = bld.get_name_prefix(
        toolchain = toolchain,
        platform  = platform)
    
    sources = [
         "../NXHX90-JTAG/Sources/handler.c",
         "../NXHX90-JTAG/Sources/main.c",
        ]

    sources_usecaseA = [
         "../NXHX90-JTAG/Sources/netx90_app_header_useCaseA.c",
        ]
    
    sources_usecaseC = [
         "../NXHX90-JTAG/Sources/netx90_app_header_useCaseC.c",
        ]
    
    includes = [
        "../NXHX90-JTAG/Include",
        ]        
    
    
    defines = [ 
        "__NETX90",
        "_NETX_",
        ]
        
    uses = [ 
        comp_prefix + "CMSIS",
        comp_prefix + "netx_drv",
        comp_prefix + "cifXToolkit",
        comp_prefix + "cifXToolkit_OSAbstraction",
        comp_prefix + "libc_support",
        comp_prefix + "cifXApplicationDemo",
        comp_prefix + "demoECSV5_customOD",
        comp_prefix + "netx90_HostAbstractionLayer",
        ]
         
    ###############################
    # Targets for USE CASE A

    bld.program ( 
        target       = "ecs_customOD_nx90_app_usecase_a_sdram",
        name         = comp_prefix + "ecs_customOD_nx90_app_usecase_a_sdram",
        description  = "ECS V5 CustomOD Host Example using NXHX90-JTAG as Host (usecase_a, sdram)",
        displaygroup = "Targets",
        platform     = platform,
        toolchain    = toolchain,
        use          = uses,
        source       = sources + sources_usecaseA,
        includes     = includes,
        defines      = defines,
        linkerscript = "../NXHX90-JTAG/Linker/netx90_sdram.ld",
        features     = ["group_lib"],
        )
    
    bld.firmware(
        target       = "ecs_customOD_nx90_app_usecase_a_iflash.nai",
        name         = comp_prefix + "ecs_customOD_nx90_app_usecase_a_iflash",
        description  = "ECS V5 CustomOD Host Example using NXHX90-JTAG as Host (usecase_a, iflash)",
        displaygroup = "Targets",
        platform     = platform,
        toolchain    = toolchain,
        use          = uses,
        source       = sources + sources_usecaseA,
        includes     = includes,
        defines      = defines,
        stlib        = 'm c',
        linkerscript = ["../NXHX90-JTAG/Linker/netx90_app_iflash.ld"],
        features     = ["group_lib"],
        netx_type    = 'netx90_rev1',
    )
    
    ###############################
    # Targets for USE CASE C

    bld.program ( 
        target       = "ecs_customOD_nx90_app_usecase_c_sdram",
        name         = comp_prefix + "ecs_customOD_nx90_app_usecase_c_sdram",
        description  = "ECS V5 CustomOD Host Example using NXHX90-JTAG as Host (usecase_c, sdram)",
        displaygroup = "Targets",
        platform     = platform,
        toolchain    = toolchain,
        use          = uses,
        source       = sources + sources_usecaseC,
        includes     = includes,
        defines      = defines,
        linkerscript = "../NXHX90-JTAG/Linker/netx90_sdram.ld",
        features     = ["group_lib"],
        )
    
    bld.firmware(
        target       = "ecs_customOD_nx90_app_usecase_c_iflash.nai",
        name         = comp_prefix + "ecs_customOD_nx90_app_usecase_c_iflash",
        description  = "ECS V5 CustomOD Host Example using NXHX90-JTAG as Host (usecase_c, iflash)",
        displaygroup = "Targets",
        platform     = platform,
        toolchain    = toolchain,
        use          = uses,
        source       = sources + sources_usecaseC,
        includes     = includes,
        defines      = defines,
        stlib        = 'm c',
        linkerscript = ["../NXHX90-JTAG/Linker/netx90_app_iflash.ld"],
        features     = ["group_lib"],
        netx_type    = 'netx90_rev1',
    )

