1 # Copyright (C) 2008 The Android Open Source Project 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 16 LOCAL_PATH:= $(call my-dir) 17 18 # 19 # Common definitions. 20 # 21 22 src_files := \ 23 cmemory.c \ 24 cstring.c \ 25 cstr.cpp \ 26 cwchar.c \ 27 filteredbrk.cpp \ 28 icuplug.cpp \ 29 loadednormalizer2impl.cpp \ 30 locmap.c \ 31 pluralmap.cpp \ 32 propsvec.c \ 33 punycode.cpp \ 34 putil.cpp \ 35 resource.cpp \ 36 sharedobject.cpp \ 37 simplepatternformatter.cpp \ 38 uarrsort.c \ 39 ubidi.c \ 40 ubidiln.c \ 41 ubidi_props.c \ 42 ubidiwrt.c \ 43 ucase.cpp \ 44 ucasemap.cpp \ 45 ucat.c \ 46 uchar.c \ 47 ucln_cmn.cpp \ 48 ucmndata.c \ 49 ucnv2022.cpp \ 50 ucnv_bld.cpp \ 51 ucnvbocu.cpp \ 52 ucnv.c \ 53 ucnv_cb.c \ 54 ucnv_cnv.c \ 55 ucnv_ct.c \ 56 ucnvdisp.c \ 57 ucnv_err.c \ 58 ucnv_ext.cpp \ 59 ucnvhz.c \ 60 ucnv_io.cpp \ 61 ucnvisci.c \ 62 ucnvlat1.c \ 63 ucnv_lmb.c \ 64 ucnvmbcs.cpp \ 65 ucnvscsu.c \ 66 ucnv_set.c \ 67 ucnv_u16.c \ 68 ucnv_u32.c \ 69 ucnv_u7.c \ 70 ucnv_u8.c \ 71 udatamem.c \ 72 udataswp.c \ 73 uenum.c \ 74 uhash.c \ 75 uinit.cpp \ 76 uinvchar.c \ 77 ulist.c \ 78 ulistformatter.cpp \ 79 uloc.cpp \ 80 uloc_keytype.cpp \ 81 uloc_tag.c \ 82 umapfile.c \ 83 umath.c \ 84 umutex.cpp \ 85 unames.cpp \ 86 uresbund.cpp \ 87 ures_cnv.c \ 88 uresdata.cpp \ 89 usc_impl.c \ 90 uscript.c \ 91 uscript_props.cpp \ 92 ushape.cpp \ 93 ustrcase.cpp \ 94 ustr_cnv.cpp \ 95 ustrfmt.c \ 96 ustring.cpp \ 97 ustrtrns.cpp \ 98 ustr_wcs.cpp \ 99 utf_impl.c \ 100 utrace.c \ 101 utrie2_builder.cpp \ 102 utrie.cpp \ 103 utypes.c \ 104 wintz.c 105 106 src_files += \ 107 appendable.cpp \ 108 bmpset.cpp \ 109 brkeng.cpp \ 110 brkiter.cpp \ 111 bytestream.cpp \ 112 bytestriebuilder.cpp \ 113 bytestrie.cpp \ 114 bytestrieiterator.cpp \ 115 caniter.cpp \ 116 chariter.cpp \ 117 charstr.cpp \ 118 dictbe.cpp \ 119 dictionarydata.cpp \ 120 dtintrv.cpp \ 121 errorcode.cpp \ 122 filterednormalizer2.cpp \ 123 listformatter.cpp \ 124 locavailable.cpp \ 125 locbased.cpp \ 126 locdispnames.cpp \ 127 locid.cpp \ 128 loclikely.cpp \ 129 locresdata.cpp \ 130 locutil.cpp \ 131 messagepattern.cpp \ 132 normalizer2.cpp \ 133 normalizer2impl.cpp \ 134 normlzr.cpp \ 135 parsepos.cpp \ 136 patternprops.cpp \ 137 propname.cpp \ 138 rbbi.cpp \ 139 rbbidata.cpp \ 140 rbbinode.cpp \ 141 rbbirb.cpp \ 142 rbbiscan.cpp \ 143 rbbisetb.cpp \ 144 rbbistbl.cpp \ 145 rbbitblb.cpp \ 146 resbund_cnv.cpp \ 147 resbund.cpp \ 148 ruleiter.cpp \ 149 schriter.cpp \ 150 serv.cpp \ 151 servlk.cpp \ 152 servlkf.cpp \ 153 servls.cpp \ 154 servnotf.cpp \ 155 servrbf.cpp \ 156 servslkf.cpp \ 157 stringpiece.cpp \ 158 stringtriebuilder.cpp \ 159 ubrk.cpp \ 160 ucasemap_titlecase_brkiter.cpp \ 161 ucharstriebuilder.cpp \ 162 ucharstrie.cpp \ 163 ucharstrieiterator.cpp \ 164 uchriter.cpp \ 165 ucnvsel.cpp \ 166 ucol_swp.cpp \ 167 udata.cpp \ 168 uhash_us.cpp \ 169 uidna.cpp \ 170 uiter.cpp \ 171 unifiedcache.cpp \ 172 unifilt.cpp \ 173 unifunct.cpp \ 174 uniset_closure.cpp \ 175 uniset.cpp \ 176 uniset_props.cpp \ 177 unisetspan.cpp \ 178 unistr_case.cpp \ 179 unistr_case_locale.cpp \ 180 unistr_cnv.cpp \ 181 unistr.cpp \ 182 unistr_props.cpp \ 183 unistr_titlecase_brkiter.cpp \ 184 unormcmp.cpp \ 185 unorm.cpp \ 186 uobject.cpp \ 187 uprops.cpp \ 188 uset.cpp \ 189 usetiter.cpp \ 190 uset_props.cpp \ 191 usprep.cpp \ 192 ustack.cpp \ 193 ustrcase_locale.cpp \ 194 ustrenum.cpp \ 195 ustr_titlecase_brkiter.cpp \ 196 utext.cpp \ 197 util.cpp \ 198 util_props.cpp \ 199 utrie2.cpp \ 200 uts46.cpp \ 201 uvector.cpp \ 202 uvectr32.cpp \ 203 uvectr64.cpp 204 205 # This is the empty compiled-in icu data structure 206 # that we need to satisfy the linker. 207 src_files += ../stubdata/stubdata.c 208 209 c_includes := \ 210 $(LOCAL_PATH) \ 211 $(LOCAL_PATH)/../i18n 212 213 # We deliberately do not set -DICU_DATA_DIR: ICU4C is configured on Android 214 # using udata_setCommonData. 215 216 local_cflags += -D_REENTRANT 217 local_cflags += -DU_COMMON_IMPLEMENTATION 218 219 local_cflags += -O3 -fvisibility=hidden 220 221 local_cflags += -Wno-unused-parameter \ 222 -Wno-missing-field-initializers \ 223 -Wno-sign-compare \ 224 -Wno-deprecated-declarations 225 226 # 227 # Build for the target (device). 228 # 229 230 include $(CLEAR_VARS) 231 LOCAL_SRC_FILES += $(src_files) 232 LOCAL_C_INCLUDES += $(c_includes) $(optional_android_logging_includes) 233 LOCAL_CFLAGS += $(local_cflags) -DPIC -fPIC 234 LOCAL_SHARED_LIBRARIES += libdl $(optional_android_logging_libraries) 235 LOCAL_MODULE_TAGS := optional 236 LOCAL_MODULE := libicuuc 237 LOCAL_RTTI_FLAG := -frtti 238 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk 239 ifndef BRILLO 240 LOCAL_REQUIRED_MODULES += icu-data 241 endif 242 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) 243 ifneq ($(TARGET_ARCH),mips64) 244 LOCAL_CLANG := true 245 endif 246 include $(BUILD_SHARED_LIBRARY) 247 248 # 249 # Build for the host. 250 # 251 252 include $(CLEAR_VARS) 253 LOCAL_SRC_FILES += $(src_files) 254 LOCAL_C_INCLUDES += $(c_includes) $(optional_android_logging_includes) 255 LOCAL_CFLAGS += $(local_cflags) 256 LOCAL_SHARED_LIBRARIES += $(optional_android_logging_libraries) 257 LOCAL_LDLIBS += -ldl -lm -lpthread 258 LOCAL_MODULE_TAGS := optional 259 LOCAL_MODULE := libicuuc-host 260 LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk 261 LOCAL_REQUIRED_MODULES += icu-data-host 262 LOCAL_MULTILIB := both 263 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) 264 LOCAL_CLANG := true 265 include $(BUILD_HOST_SHARED_LIBRARY) 266 267 # 268 # Build as a static library against the NDK 269 # 270 271 include $(CLEAR_VARS) 272 LOCAL_SDK_VERSION := 9 273 LOCAL_NDK_STL_VARIANT := stlport_static 274 LOCAL_C_INCLUDES += $(c_includes) 275 LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH) 276 LOCAL_RTTI_FLAG := -frtti 277 LOCAL_CFLAGS += $(local_cflags) -DPIC -fPIC 278 # Using -Os over -O3 actually cuts down the final executable size by a few dozen kilobytes 279 LOCAL_CFLAGS += -Os 280 LOCAL_EXPORT_CFLAGS += -DU_STATIC_IMPLEMENTATION=1 281 LOCAL_MODULE_TAGS := optional 282 LOCAL_MODULE := libicuuc_static 283 LOCAL_SRC_FILES += $(src_files) 284 ifndef BRILLO 285 LOCAL_REQUIRED_MODULES += icu-data 286 endif 287 ifneq ($(TARGET_ARCH),mips64) 288 LOCAL_CLANG := true 289 endif 290 include $(BUILD_STATIC_LIBRARY) 291