# SPDX-FileCopyrightText: 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause

# !!! ICU does not use cmake before version 70 !!!

cmake_minimum_required(VERSION 3.18)
project(icu-external LANGUAGES C CXX)

include(ExternalProject)

# ICU version choose
set(ICU_VERSION_TAG "release-68-2" CACHE STRING "ICU release tag")
string(REPLACE "release-" "" ICU_VERSION_UNDERSCORE "${ICU_VERSION_TAG}")
string(REPLACE "-" "_" ICU_VERSION_UNDERSCORE "${ICU_VERSION_UNDERSCORE}")

set(ICU_URL "https://github.com/unicode-org/icu/releases/download/${ICU_VERSION_TAG}/icu4c-${ICU_VERSION_UNDERSCORE}-src.tgz")
message(STATUS "ICU download URL: ${ICU_URL}")

set(ICU_SOURCE_SUBDIR "${CMAKE_BINARY_DIR}/icu-src")
set(ICU_BUILD_SUBDIR "${CMAKE_BINARY_DIR}/icu-build")
set(ICU_BUNDLE_DIR "${CMAKE_BINARY_DIR}/icu-bundle")
set(APPDATA_INSTALL_PATH ${CMAKE_BINARY_DIR}/installroot/usr/share/${APP_TARGET_NAME})

ExternalProject_Add(icu-bundle
    URL ${ICU_URL}

    PREFIX ${CMAKE_BINARY_DIR}/icu-temp
    SOURCE_DIR ${ICU_SOURCE_SUBDIR}
    BINARY_DIR ${ICU_BUILD_SUBDIR}

    CONFIGURE_COMMAND ${ICU_SOURCE_SUBDIR}/source/runConfigureICU Linux
        --prefix=${ICU_BUNDLE_DIR}
        --with-library-bits=64
        --disable-examples
        --disable-tests
        LDFLAGS=-Wl,-rpath,/usr/share/${APP_TARGET_NAME}/lib

    BUILD_COMMAND make -C ${ICU_BUILD_SUBDIR} -j${NCPU}
    INSTALL_COMMAND make -C ${ICU_BUILD_SUBDIR} install

    LOG_DOWNLOAD 1
    LOG_CONFIGURE 1
    LOG_BUILD 1
    LOG_INSTALL 1
)

add_custom_target(icu-copy-so-files ALL
    DEPENDS icu-bundle
    COMMAND ${CMAKE_COMMAND} -E make_directory ${APPDATA_INSTALL_PATH}/lib
    COMMAND ${CMAKE_COMMAND} -E copy ${ICU_BUNDLE_DIR}/lib/*.so* ${APPDATA_INSTALL_PATH}/lib/
)
