if(SIONlib_IME_NATIVE)
  set(IME_NATIVE_TESTS file___5)
endif()

set(SERIAL_TESTS
  seropn_1
  seropn_2
  mandel_1
  keyval_1
  ktab___1
  ktab___2
  kmngr__1
  seek___1
  flags__1
  2read__1
  file___1
  file___2
  file___3
  file___4
  ${IME_NATIVE_TESTS}
  swap___1
)

set(SERIAL_GENERIC_TESTS
  genapi_1
)

foreach(test IN LISTS SERIAL_TESTS SERIAL_GENERIC_TESTS)
  add_executable(test_serial_${test}
    test_${test}.c
  )
  target_include_directories(test_serial_${test}
    PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/../../src/lib
  )
  set_target_properties(test_serial_${test} PROPERTIES
    OUTPUT_NAME test_${test}
  )
  add_custom_target(copy_test_${test}_aux ALL
    COMMAND ${CMAKE_COMMAND} -E copy
      ${CMAKE_CURRENT_SOURCE_DIR}/test_${test}.run.sh
      ${CMAKE_CURRENT_BINARY_DIR}/test_${test}.run.sh
    COMMAND ${CMAKE_COMMAND} -E copy
      ${CMAKE_CURRENT_SOURCE_DIR}/test_${test}_stdout.log
      ${CMAKE_CURRENT_BINARY_DIR}/test_${test}_stdout.log
    COMMAND ${CMAKE_COMMAND} -E copy
      ${CMAKE_CURRENT_SOURCE_DIR}/test_${test}_stderr.log
      ${CMAKE_CURRENT_BINARY_DIR}/test_${test}_stderr.log
  )
  add_test(NAME test_serial_${test}
    COMMAND test_${test}.run.sh
  )
endforeach()

foreach(test IN LISTS SERIAL_TESTS)
  target_link_libraries(test_serial_${test}
    PRIVATE
    SIONlib::serial
  )
endforeach()

foreach(test IN LISTS SERIAL_GENERIC_TESTS)
  target_link_libraries(test_serial_${test}
    PRIVATE
    SIONlib::serial
    SIONlib::generic
  )
endforeach()

add_custom_command(TARGET test_serial_mandel_1 POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy
    ${CMAKE_CURRENT_SOURCE_DIR}/test_mandel_1.sion
    ${CMAKE_CURRENT_BINARY_DIR}/test_mandel_1.sion
)

add_custom_target(copy_aux_test_serial ALL
  COMMAND ${CMAKE_COMMAND} -E copy
    $<TARGET_FILE:SIONlib::dump>
    ${CMAKE_CURRENT_BINARY_DIR}/siondump
  COMMAND ${CMAKE_COMMAND} -E copy
    ${CMAKE_CURRENT_SOURCE_DIR}/test_serial.sh
    ${CMAKE_CURRENT_BINARY_DIR}/test_serial.sh
)
