# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${MIDDLEWARE_SOURCE_PATH}/AppManager/build/app_manager.cmake)
set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin)

include_directories(
    ./src
    ./include
    ./tool/include
    ${UTILS_SOURCE_PATH}/Log/include
    ${UTILS_SOURCE_PATH}/StatusCode/include
    # ${UTILS_SOURCE_PATH}/KeyControl/include
    ${UTILS_SOURCE_PATH}/LedControl/include
    # ${UTILS_SOURCE_PATH}/WebServer/include
    ${HAL_SOURCE_PATH}/include
    ${MIDDLEWARE_SOURCE_PATH}/MediaManager/include
    ${TEST_SOURCE_PATH}
    ${TEST_SOURCE_PATH}/hal/tool/include
    ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include
    ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include
    ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include
)

link_directories(
    ${LIBS_OUTPUT_PATH}
    ${EXTERNAL_LIBS_OUTPUT_PATH}
    ${TEST_TOOLS_OUTPUT_PATH}
)

aux_source_directory(. SRC_FILES_MAIN)
aux_source_directory(./src SRC_FILES)
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
    aux_source_directory(./src_mock SRC_FILES)
endif()

set(TARGET_NAME MediaManagerTest)
add_executable(${TARGET_NAME} ${SRC_FILES_MAIN} ${SRC_FILES})
target_link_libraries(${TARGET_NAME} MediaManager MediaManagerTestTool HalTestTool gtest gmock pthread)
target_link_libraries(${TARGET_NAME} Hal LedControl LinuxApiMock)
if(${TEST_COVERAGE} MATCHES "true")
    target_link_libraries(${TARGET_NAME} gcov)
endif()

if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
    MediaManagerTest_code_check
    COMMAND ${CLANG_TIDY_EXE}
    -checks='${CLANG_TIDY_CHECKS}'
    --header-filter=.*
    --system-headers=false
    ${SRC_FILES}
    ${CLANG_TIDY_CONFIG}
    # --line-filter='[{\"name\":\"${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include/getest/gtest.h\"}]'
    --line-filter='[{\"name\":\"${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include/getest/*.h\"}]'
    -p ${PLATFORM_PATH}/cmake-shell
    WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager
)
add_custom_command(
    TARGET ${TARGET_NAME}
    PRE_BUILD
    COMMAND make MediaManagerTest_code_check
    WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)

file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
    MediaManagerTest_code_format
    COMMAND ${CLANG_FORMAT_EXE}
    -style=file
    -i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
    WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager
)
add_custom_command(
    TARGET ${TARGET_NAME}
    PRE_BUILD
    COMMAND make MediaManagerTest_code_check
    COMMAND make MediaManagerTest_code_format
    WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
endif()

define_file_name(${TARGET_NAME})

if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tool/CMakeLists.txt")
    add_subdirectory(tool)
endif()