2
0
mirror of https://github.com/boostorg/locale.git synced 2026-01-19 04:22:08 +00:00
Files
locale/tools/download_icu.cmake
2023-06-18 18:32:22 +02:00

65 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 3.2)
if(NOT ICU_VERSION)
message(FATAL_ERROR "ICU_VERSION not set")
endif()
if(NOT ICU_ROOT)
if(DEFINED ENV{ICU_ROOT})
set(ICU_ROOT $ENV{ICU_ROOT})
else()
message(FATAL_ERROR "ICU_ROOT not set")
endif()
endif()
string(REPLACE "." "-" ICU_VERSION_dash ${ICU_VERSION})
string(REPLACE "." "_" ICU_VERSION_under ${ICU_VERSION})
set(ICU_DOWNLOAD_BASE "https://github.com/unicode-org/icu/releases/download")
set(ICU_C_DOWNLOAD_BASE "${ICU_DOWNLOAD_BASE}/release-${ICU_VERSION_dash}/icu4c-${ICU_VERSION_under}")
set(ICU_URLS "")
if(WIN32)
list(APPEND ICU_URLS "${ICU_C_DOWNLOAD_BASE}-Win32-MSVC2019.zip")
list(APPEND ICU_URLS "${ICU_C_DOWNLOAD_BASE}-Win64-MSVC2019.zip")
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
if(ICU_VERSION VERSION_GREATER "71.1")
list(APPEND ICU_URLS "${ICU_C_DOWNLOAD_BASE}-Ubuntu22.04-x64.tgz")
else()
list(APPEND ICU_URLS "${ICU_C_DOWNLOAD_BASE}-Ubuntu20.04-x64.tgz")
endif()
else()
message(FATAL_ERROR "Support for this OS(${CMAKE_HOST_SYSTEM_NAME}) not implemented")
endif()
foreach(url IN LISTS ICU_URLS)
file(TO_NATIVE_PATH "${ICU_ROOT}/icu.zip" archive)
message(STATUS "Downloading ${url}")
file(DOWNLOAD "${url}" "${archive}" SHOW_PROGRESS STATUS DOWNLOAD_STATUS)
list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
list(GET DOWNLOAD_STATUS 1 ERROR_MESSAGE)
if(STATUS_CODE EQUAL 0)
message(STATUS "Download completed successfully!")
else()
message(FATAL_ERROR "Error occurred during download: ${ERROR_MESSAGE}")
endif()
message(STATUS "Extracting ${archive} to ${ICU_ROOT}")
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
file(ARCHIVE_EXTRACT INPUT "${archive}" DESTINATION "${ICU_ROOT}" VERBOSE)
else()
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xvf "${archive}"
WORKING_DIRECTORY "${ICU_ROOT}"
RESULT_VARIABLE STATUS
)
if(STATUS AND NOT STATUS EQUAL 0)
message(FATAL_ERROR "Extraction failed: ${STATUS}")
endif()
endif()
file(REMOVE "${archive}")
endforeach()
file(GLOB paths ${ICU_ROOT}/*/usr/local/*)
foreach(path IN LISTS paths)
get_filename_component(folder "${path}" NAME)
file(RENAME "${path}" "${ICU_ROOT}/${folder}")
endforeach()