# -----------------------------------------------------------------------------
# list of sources:
# -----------------------------------------------------------------------------
set(MCDS_CONFIG_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_otgb_a1g2g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_otgb_a1g2g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_otgb_a3g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_otgb_a3g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_otgb_rc1.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_otgb_rc1.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_a1g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_a1g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_a2g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_a2g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_a3g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_a3g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_mm.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_mm.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_rc1.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_rc1.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_soc_a3g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs_soc_a3g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_config_regs.h"
)

set(MCDS_DECODER_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a1g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a1g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a2g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a2g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a3g_tc49a.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a3g_tc49a.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a3g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_a3g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_fast.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_fast.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_rc1.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_rc1.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder.h"
)

set(MCDS_DEVICE_ADDR_RANGE_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_device_addr_range_des.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_device_addr_range_des.h"
)

set(MCDS_DEVICE_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_device_cache.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_device_cache.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_device_model.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_device_model.h"
)

set(MCDS_HL_DECODER_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_packaged.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_packaged.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_axg.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_axg.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_rcx.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_rcx.h"
)

set(MCDS_OTGB_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder_a1g2g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder_a1g2g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder_a3g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder_a3g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder_rc1.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder_rc1.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_otgb_decoder.h"
)

set(MCDS_RAW_FILE_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_raw_file_reader.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_raw_file_reader.h"
)

set(MCDS_REGS_SRCS
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a1g2g_mcds.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a1g2g_mcds.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a1g2g_mm.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a1g2g_mm.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a1g2g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a3g.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_a3g.h"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_rc1.cpp"
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_regs_rc1.h"
)


# -----------------------------------------------------------------------------
# include sources in the following targets:
# -----------------------------------------------------------------------------
# lib decoder demo
if(MCDS_BUILD_DEMOS) 
    add_target_sources(mcds_lib_decoder_demo 
        "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
        ${MCDS_CONFIG_SRCS}        
        ${MCDS_DECODER_SRCS}
        ${MCDS_DEVICE_ADDR_RANGE_SRCS}
        ${MCDS_DEVICE_SRCS}
        ${MCDS_HL_DECODER_SRCS}
        ${MCDS_OTGB_SRCS}
        ${MCDS_RAW_FILE_SRCS}
        ${MCDS_REGS_SRCS}) 
endif()

# -----------------------------------------------------------------------------
# lib demo
if(MCDS_BUILD_DEMOS)
    add_target_sources(mcds_lib_demo "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp")
endif()

# -----------------------------------------------------------------------------
# lib demo ambrosys
if(MCDS_BUILD_DEMOS)
    target_sources(mcds_ambrosys_demo
        PRIVATE
            "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
    )

    target_include_directories(mcds_ambrosys_demo
        PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}"    
    )
endif()

# -----------------------------------------------------------------------------
# trace viewer
if(MCDS_BUILD_MTV)
    add_target_sources(mcds_trace_viewer 
        "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
        ${MCDS_CONFIG_SRCS}        
        ${MCDS_DECODER_SRCS}
        ${MCDS_DEVICE_ADDR_RANGE_SRCS}
        ${MCDS_DEVICE_SRCS}
        ${MCDS_HL_DECODER_SRCS}
        ${MCDS_OTGB_SRCS}
        ${MCDS_RAW_FILE_SRCS}
        ${MCDS_REGS_SRCS})
endif()

# -----------------------------------------------------------------------------
# configurator dll
add_target_sources(mcds_configurator 
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
    ${MCDS_CONFIG_SRCS}
    ${MCDS_DEVICE_ADDR_RANGE_SRCS}
    ${MCDS_REGS_SRCS}) 

# -----------------------------------------------------------------------------
# decoder dll
add_target_sources(mcds_decoder 
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
    ${MCDS_CONFIG_SRCS}        
    ${MCDS_DECODER_SRCS}
    ${MCDS_DEVICE_ADDR_RANGE_SRCS}
    ${MCDS_DEVICE_SRCS}
    ${MCDS_HL_DECODER_SRCS}
    ${MCDS_OTGB_SRCS}
    ${MCDS_RAW_FILE_SRCS}
    ${MCDS_REGS_SRCS}) 

# -----------------------------------------------------------------------------
# recorder dll
add_target_sources(mcds_recorder "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp")

# -----------------------------------------------------------------------------
if (MCDS_BUILD_TEST)
    # -------------------------------------------------------------------------
    # lib a3g test
    if (MSVC)
        add_target_sources(mcds_lib_a3g_test
            "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
            "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_fast.cpp"
            "${CMAKE_CURRENT_SOURCE_DIR}/mcds_decoder_fast.h")
    endif()

    # -------------------------------------------------------------------------
    # hl decoder test
    add_target_sources(mcds_hl_decoder_test
        "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp"
        ${MCDS_CONFIG_SRCS}        
        ${MCDS_DECODER_SRCS}
        ${MCDS_DEVICE_ADDR_RANGE_SRCS}
        ${MCDS_DEVICE_SRCS}
        ${MCDS_HL_DECODER_SRCS}
        ${MCDS_OTGB_SRCS}
        ${MCDS_RAW_FILE_SRCS}
        ${MCDS_REGS_SRCS})
    
    # -------------------------------------------------------------------------
    # lib test
    add_target_sources(mcds_lib_test "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp")

    # -------------------------------------------------------------------------
    # lib test
    add_target_sources(mcds_binary_decode_test "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp")

    # -------------------------------------------------------------------------
    # json loader test
    add_target_sources(mcds_json_loader "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp")

    # -------------------------------------------------------------------------
    # mcds lib simple test
    add_target_sources(mcds_lib_simple_test "${CMAKE_CURRENT_SOURCE_DIR}/mcds_control.cpp")
endif()