# -----------------------------------------------------------------------------
# MCDS project
# -----------------------------------------------------------------------------
project(mcds 
    VERSION 3.3.2.0
    DESCRIPTION "Infineon trace MCDS tools and libraries"
    HOMEPAGE_URL "https://www.infineon.com/DAS"
    LANGUAGES C CXX
)

set(INPUT_JSON_FILE "${CMAKE_SOURCE_DIR}/data/configuration_schema.json")
set(OUTPUT_HEADER_FILE "${CMAKE_BINARY_DIR}/mcds_json_schema.h")

# Custom command to generate header file
add_custom_command(
    OUTPUT ${OUTPUT_HEADER_FILE}
    COMMAND ${CMAKE_COMMAND} -DINPUT_FILE=${INPUT_JSON_FILE} -DOUTPUT_FILE=${OUTPUT_HEADER_FILE} -P ${CMAKE_SOURCE_DIR}/cmake/generate_json_header.cmake
    DEPENDS ${INPUT_JSON_FILE}
    COMMENT "Generating mcds_json_schema.h from data/configuration_schema.json"
)

# -----------------------------------------------------------------------------
# Relevant targets:
# -----------------------------------------------------------------------------

# Add the generated header file as part of the build
add_custom_target(GenerateMCDSJsonSchemaHeader ALL DEPENDS ${OUTPUT_HEADER_FILE})

if(MCDS_BUILD_DEMOS)
    add_executable(mcds_lib_decoder_demo "")
    set_target_properties(mcds_lib_decoder_demo PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/mcds_lib_demo/"
    )


    add_executable(mcds_lib_demo "")
    set_target_properties(mcds_lib_decoder_demo PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/mcds_lib_demo/"
    )
endif()

add_executable(mcds_ambrosys_demo "")

if(MCDS_BUILD_MTV)
    add_executable(mcds_trace_viewer "")
endif()

add_library(mcds_configurator SHARED "")
add_library(mcds_decoder SHARED "")
add_library(mcds_recorder SHARED "")

if(MCDS_BUILD_TEST)
    add_executable(mcds_hl_decoder_test "")
    set_target_properties(mcds_hl_decoder_test PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/decoder/"
    )

    add_executable(mcds_lib_test "")
    set_target_properties(mcds_lib_test PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/mcds_lib_test/"
    )
    add_executable(mcds_binary_decode_test "")
    set_target_properties(mcds_binary_decode_test PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/mcds_binary_decode_test/"
    )
    add_executable(mcds_json_loader "")
    set_target_properties(mcds_json_loader PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/mcds_json_loader/"
    )

    add_executable(mcds_lib_simple_test "")
    set_target_properties(mcds_lib_simple_test PROPERTIES
        VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/mcds_lib_simple_test/"
    )
endif()

# generate IDE virtual folders where supported
set(REC ".*([.]cpp|[.]h)")

set(REG1 ".*/src/das/")
source_group("das" REGULAR_EXPRESSION "${REG1}${REC}")

set(REG1 ".*/src/generated/")
source_group("generated" REGULAR_EXPRESSION "${REG1}${REC}")

set(REG1 ".*/src/mcds/")
source_group("mcds" REGULAR_EXPRESSION "${REG1}${REC}")

set(REG1 ".*/src/mcds_tools/")
source_group("mcds_tools" REGULAR_EXPRESSION "${REG1}${REC}")


# -----------------------------------------------------------------------------
# Install
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
# Package Generator
# -----------------------------------------------------------------------------
