-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCMakeLists.txt
64 lines (59 loc) · 2.62 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
cmake_minimum_required(VERSION 3.22)
project(ICU4C)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeModules")
include(SetIfNotDefined)
set(ICU_VERSION_MAJOR 73)
set(ICU_VERSION_MINOR 1)
set(ICU_LIBS uc tu i18n io data)
set_if_not_defined(FLORIS_LIBRARY_TYPE STATIC)
set_if_not_defined(FLORIS_LIBRARY_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
set_if_not_defined(FLORIS_LIBRARY_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
if(ANDROID)
set_if_not_defined(FLORIS_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
else()
set_if_not_defined(FLORIS_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
endif()
if(ICU_BUILD_FROM_SOURCE)
add_subdirectory(src)
else()
add_library(icu4c INTERFACE)
if(ANDROID)
set(imported_location "${CMAKE_CURRENT_SOURCE_DIR}/prebuilt/libs/android/${CMAKE_ANDROID_ARCH_ABI}")
if(NOT EXISTS "${imported_location}")
message(FATAL_ERROR "Cannot find precompiled binaries for target android/${CMAKE_ANDROID_ARCH_ABI}")
endif()
else()
if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND MSVC)
set(target_system pc-windows-msvc)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND MINGW)
set(target_system w64-mingw32)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(target_system linux-gnu)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(target_system apple-darwin)
else()
set(target_system unsupported-os)
endif()
set(target_identifier desktop/${CMAKE_SYSTEM_PROCESSOR}-${target_system})
set(imported_location "${CMAKE_CURRENT_SOURCE_DIR}/prebuilt/libs/${target_identifier}")
if(NOT EXISTS "${imported_location}")
message(FATAL_ERROR "Cannot find precompiled binaries for target ${target_identifier}")
endif()
endif()
foreach(lib ${ICU_LIBS})
add_library(icu${lib} ${FLORIS_LIBRARY_TYPE} IMPORTED GLOBAL)
add_library(FlorisICU::${lib} ALIAS icu${lib})
add_dependencies(icu${lib} icu4c)
set_target_properties(icu${lib} PROPERTIES
IMPORTED_LOCATION "${imported_location}/libicu${lib}_floris.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/prebuilt/include"
)
endforeach()
if(ICU_ASSET_EXPORT_DIR)
set(src_asset_dir ${CMAKE_CURRENT_SOURCE_DIR}/prebuilt/assets/icu)
set(dst_asset_dir ${ICU_ASSET_EXPORT_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
${src_asset_dir}/icudt${ICU_VERSION_MAJOR}l.dat
${dst_asset_dir}/icudt${ICU_VERSION_MAJOR}l.dat)
endif()
endif()