# -----------------------------------------------------------------------------
# Relevant source files and their virtual folders for IDE (source groups)
# -----------------------------------------------------------------------------
set(NO_GROUP_SRCS 
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_test_main.cpp"              
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_test.cpp"              
    "${CMAKE_CURRENT_SOURCE_DIR}/mcds_hl_decoder_test.h"   
    "${CMAKE_SOURCE_DIR}/src/mcds_lib/mcds_lib_decoder_utils.h"
    "${CMAKE_SOURCE_DIR}/src/mcds_lib_impl/mcds_lib_configurator.cpp"  
    "${CMAKE_SOURCE_DIR}/src/mcds_lib_impl/mcds_lib_decoder.cpp"
)

target_sources(mcds_hl_decoder_test
    PRIVATE ${NO_GROUP_SRCS}
)


# -----------------------------------------------------------------------------
# Find relevant dependencies
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
# includes, and libraries
# -----------------------------------------------------------------------------
target_include_directories(mcds_hl_decoder_test
    PRIVATE 
        "${CMAKE_CURRENT_SOURCE_DIR}"
        "${CMAKE_SOURCE_DIR}/src/mcds_lib"   
        "${CMAKE_SOURCE_DIR}/src/mcds_lib_impl"    
        ${elf_disasm_INCLUDE_DIRS}
        "${CMAKE_BINARY_DIR}"
)

target_link_libraries(mcds_hl_decoder_test elf_disasm::elf_disasm_tc nlohmann_json::nlohmann_json nlohmann_json_schema_validator)

# -----------------------------------------------------------------------------
# Dependencies
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
# Compile definitions
# -----------------------------------------------------------------------------
if (MSVC)
    target_compile_definitions(mcds_hl_decoder_test PRIVATE
        "$<$<CONFIG:Debug>:"
            "_DEBUG"
        ">"
        "$<$<CONFIG:Release>:"
            "NDEBUG"
        ">"
        "_CRT_SECURE_NO_WARNINGS"
        "_WIN32"
    )
elseif (UNIX)
    target_compile_definitions(mcds_hl_decoder_test PRIVATE
        "UNIX"
    )
endif()

# -----------------------------------------------------------------------------
# Compile and link options
# -----------------------------------------------------------------------------
if (MSVC)
    target_compile_options(mcds_hl_decoder_test PRIVATE
        "$<$<CONFIG:Debug>:"
            "/MDd"
            "/Od"
        ">"
        "$<$<CONFIG:Release>:"
            "/MD"
            "/O2"
        ">"
        /JMC
        /analyze
        /Zi
        /W3
        /MP
        /nologo
    )

    target_link_options(mcds_hl_decoder_test PRIVATE
        /INCREMENTAL
        /SUBSYSTEM:CONSOLE
    )
elseif (UNIX)
    target_compile_options(mcds_hl_decoder_test PRIVATE
        -Wall;
    )
endif()

# -----------------------------------------------------------------------------
# Install
# -----------------------------------------------------------------------------
install(TARGETS mcds_hl_decoder_test DESTINATION bin COMPONENT applications)