53 lines
1.8 KiB
CMake
53 lines
1.8 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")
|
|
else()
|
|
message(FATAL_ERROR "Support for this OS 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()
|