Mercurial > hg > orthanc
comparison Resources/CMake/LibIcuConfiguration.cmake @ 3333:2a38e00a0638
Size of the Orthanc static binaries are reduced by compressing ICU data
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 27 Mar 2019 15:25:18 +0100 |
parents | 92d679112657 |
children | 48231cfd2693 |
comparison
equal
deleted
inserted
replaced
3332:79178122842c | 3333:2a38e00a0638 |
---|---|
8 | 8 |
9 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBICU) | 9 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBICU) |
10 include(${CMAKE_CURRENT_LIST_DIR}/../ThirdParty/icu/Version.cmake) | 10 include(${CMAKE_CURRENT_LIST_DIR}/../ThirdParty/icu/Version.cmake) |
11 DownloadPackage(${LIBICU_MD5} ${LIBICU_URL} "${LIBICU_SOURCES_DIR}") | 11 DownloadPackage(${LIBICU_MD5} ${LIBICU_URL} "${LIBICU_SOURCES_DIR}") |
12 | 12 |
13 if (MSVC AND | 13 # Use the gzip-compressed data |
14 CMAKE_SIZEOF_VOID_P EQUAL 8) | 14 DownloadFile(${LIBICU_DATA_COMPRESSED_MD5} ${LIBICU_DATA_URL}) |
15 # In Visual Studio 2015 64bit, we get the following error if using | 15 set(LIBICU_RESOURCES |
16 # the plain C version of the ICU data: "icudt58l_dat.c(1638339): | 16 LIBICU_DATA ${CMAKE_SOURCE_DIR}/ThirdPartyDownloads/${LIBICU_DATA} |
17 # fatal error C1060: compiler is out of heap space" => we use a | 17 ) |
18 # precompiled binary generated using MinGW on Linux | |
19 DownloadCompressedFile(${LIBICU_DATA_WIN64_MD5} ${LIBICU_DATA_WIN64_URL} ${LIBICU_DATA_WIN64}) | |
20 | 18 |
21 set(LIBICU_LIBRARIES | 19 set_source_files_properties( |
22 ${CMAKE_BINARY_DIR}/${LIBICU_DATA_WIN64} | 20 ${CMAKE_BINARY_DIR}/${LIBICU_DATA} |
23 ) | 21 PROPERTIES COMPILE_DEFINITIONS "char16_t=uint16_t" |
24 else() | 22 ) |
25 # Use plain C data library | |
26 DownloadCompressedFile(${LIBICU_DATA_MD5} ${LIBICU_DATA_URL} ${LIBICU_DATA}) | |
27 | 23 |
28 set_source_files_properties( | |
29 ${CMAKE_BINARY_DIR}/${LIBICU_DATA} | |
30 PROPERTIES COMPILE_DEFINITIONS "char16_t=uint16_t" | |
31 ) | |
32 | |
33 set(LIBICU_SOURCES | |
34 ${CMAKE_BINARY_DIR}/${LIBICU_DATA} | |
35 ) | |
36 endif() | |
37 | |
38 include_directories(BEFORE | 24 include_directories(BEFORE |
39 ${LIBICU_SOURCES_DIR}/source/common | 25 ${LIBICU_SOURCES_DIR}/source/common |
40 ${LIBICU_SOURCES_DIR}/source/i18n | 26 ${LIBICU_SOURCES_DIR}/source/i18n |
41 ) | 27 ) |
42 | 28 |
48 #-DU_DEF_ICUDATA_ENTRY_POINT=icudt63l_dat | 34 #-DU_DEF_ICUDATA_ENTRY_POINT=icudt63l_dat |
49 #-DU_LIB_SUFFIX_C_NAME=l | 35 #-DU_LIB_SUFFIX_C_NAME=l |
50 | 36 |
51 #-DUCONFIG_NO_SERVICE=1 | 37 #-DUCONFIG_NO_SERVICE=1 |
52 -DU_COMMON_IMPLEMENTATION | 38 -DU_COMMON_IMPLEMENTATION |
39 -DU_STATIC_IMPLEMENTATION | |
53 -DU_ENABLE_DYLOAD=0 | 40 -DU_ENABLE_DYLOAD=0 |
54 -DU_HAVE_STD_STRING=1 | 41 -DU_HAVE_STD_STRING=1 |
55 -DU_I18N_IMPLEMENTATION | 42 -DU_I18N_IMPLEMENTATION |
56 -DU_IO_IMPLEMENTATION | 43 -DU_IO_IMPLEMENTATION |
57 -DU_STATIC_IMPLEMENTATION=1 | 44 -DU_STATIC_IMPLEMENTATION=1 |
58 #-DU_CHARSET_IS_UTF8 | 45 #-DU_CHARSET_IS_UTF8 |
59 -DUNISTR_FROM_STRING_EXPLICIT= | 46 -DUNISTR_FROM_STRING_EXPLICIT= |
47 | |
48 -DORTHANC_STATIC_ICU=1 | |
49 -DORTHANC_ICU_DATA_MD5="${LIBICU_DATA_UNCOMPRESSED_MD5}" | |
60 ) | 50 ) |
61 | 51 |
62 if (CMAKE_SYSTEM_NAME STREQUAL "Windows") | 52 if (CMAKE_SYSTEM_NAME STREQUAL "Windows") |
63 set_source_files_properties( | 53 set_source_files_properties( |
64 ${LIBICU_SOURCES_DIR}/source/common/locmap.c | 54 ${LIBICU_SOURCES_DIR}/source/common/locmap.c |
81 NOT LIBICU_PATH_2) | 71 NOT LIBICU_PATH_2) |
82 message(FATAL_ERROR "Please install the libicu-dev package") | 72 message(FATAL_ERROR "Please install the libicu-dev package") |
83 else() | 73 else() |
84 link_libraries(icuuc icui18n) | 74 link_libraries(icuuc icui18n) |
85 endif() | 75 endif() |
76 | |
77 add_definitions( | |
78 -DORTHANC_STATIC_ICU=0 | |
79 ) | |
86 endif() | 80 endif() |