add_library(libSceIcu SHARED EXCLUDE_FROM_ALL Export.cpp Invariant.cpp Version.cpp Unescape.cpp)
target_include_directories(libSceIcu PRIVATE ${LIBS_INCLUDE_DIR})
configure_windows_unwind(libSceIcu)
target_sources(libSceIcu PRIVATE CString.cpp)

if(BUILD_TESTING)
    add_test_executable(guest_icu_cstring_tests ${LIBS_INCLUDE_DIR}/tests/GuestIcuCString.cpp)
    target_include_directories(guest_icu_cstring_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_icu_cstring_tests PRIVATE libSceIcu libc)
    configure_windows_unwind(guest_icu_cstring_tests)
    add_test(NAME guest_icu_cstring COMMAND guest_icu_cstring_tests)
    set_tests_properties(guest_icu_cstring PROPERTIES TIMEOUT 10)
    if(WIN32)
        set_tests_properties(guest_icu_cstring PROPERTIES ENVIRONMENT_MODIFICATION
            "PATH=path_list_prepend:$<TARGET_FILE_DIR:libSceIcu>")
    endif()
endif()

if(BUILD_TESTING)
    add_test_executable(guest_icu_version_tests ${LIBS_INCLUDE_DIR}/tests/GuestIcuVersion.cpp)
    target_include_directories(guest_icu_version_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_icu_version_tests PRIVATE libSceIcu libc)
    configure_windows_unwind(guest_icu_version_tests)
    add_test(NAME guest_icu_version COMMAND guest_icu_version_tests)
    set_tests_properties(guest_icu_version PROPERTIES TIMEOUT 10)
    if(WIN32)
        set_tests_properties(guest_icu_version PROPERTIES ENVIRONMENT_MODIFICATION
            "PATH=path_list_prepend:$<TARGET_FILE_DIR:libSceIcu>")
    endif()
endif()

if(BUILD_TESTING)
    add_test_executable(guest_icu_unescape_tests ${CMAKE_CURRENT_SOURCE_DIR}/tests/Unescape.cpp)
    target_include_directories(guest_icu_unescape_tests PRIVATE ${LIBS_INCLUDE_DIR})
    target_link_libraries(guest_icu_unescape_tests PRIVATE libSceIcu)
    configure_windows_unwind(guest_icu_unescape_tests)
    add_test(NAME guest_icu_unescape COMMAND guest_icu_unescape_tests)
    set_tests_properties(guest_icu_unescape PROPERTIES TIMEOUT 30)
    if(WIN32)
        set_tests_properties(guest_icu_unescape PROPERTIES ENVIRONMENT_MODIFICATION
            "PATH=path_list_prepend:$<TARGET_FILE_DIR:libSceIcu>")
    endif()
endif()
