cmake_minimum_required(VERSION 3.10.0)

project(test_eu_canopen)
if(NOT DEFINED CMAKE_CXX_STANDARD)
    set(CMAKE_CXX_STANDARD 11)
endif()
if(NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
if(NOT DEFINED MY_ARCHIVE_OUTPUT_DIRECTORY)
    set(MY_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../lib)
    set(EXAMPLE True)
endif()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${MY_ARCHIVE_OUTPUT_DIRECTORY})
if(MSVC)
    set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
    foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
        string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG_UPPER)
        if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER})
            set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${MY_ARCHIVE_OUTPUT_DIRECTORY})
        endif()
        if(NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER})
            set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${MY_ARCHIVE_OUTPUT_DIRECTORY})
        endif()
        if(NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER})
            set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG_UPPER} ${MY_ARCHIVE_OUTPUT_DIRECTORY})
        endif()
    endforeach()
endif()


if(NOT DEFINED EXAMPLE)
    file(GLOB TEST_CPP_FILES
        ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/${MY_PRODUCT_TYPE}/*.cpp
    )
else()
    file(GLOB_RECURSE TEST_CPP_FILES
        ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
    )
endif()

foreach(TEST_CPP ${TEST_CPP_FILES})
    get_filename_component(TEST_NAME ${TEST_CPP} NAME_WE)
    add_executable(${TEST_NAME} ${TEST_CPP})
    target_include_directories(${TEST_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
    if(WIN32)
        target_link_libraries(${TEST_NAME}
            ${MY_ARCHIVE_OUTPUT_DIRECTORY}/eu_canopen.lib
            winmm
        )
    elseif(UNIX)
        target_link_libraries(${TEST_NAME}
            ${MY_ARCHIVE_OUTPUT_DIRECTORY}/libeu_canopen.so
            pthread
        )
    endif()

    if(NOT DEFINED EXAMPLE)
        add_dependencies(${TEST_NAME} eu_canopen)
    endif()

endforeach()
