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()