Makefile文件  |  291行  |  5.85 KB

# Copyright (C) 2008 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


LOCAL_PATH:= $(call my-dir)

#
# Common definitions.
#

src_files := \
	cmemory.c \
	cstring.c \
	cstr.cpp \
	cwchar.c \
	filteredbrk.cpp \
	icuplug.cpp \
	loadednormalizer2impl.cpp \
	locmap.c \
	pluralmap.cpp \
	propsvec.c \
	punycode.cpp \
	putil.cpp \
	resource.cpp \
	sharedobject.cpp \
	simplepatternformatter.cpp \
	uarrsort.c \
	ubidi.c \
	ubidiln.c \
	ubidi_props.c \
	ubidiwrt.c \
	ucase.cpp \
	ucasemap.cpp \
	ucat.c \
	uchar.c \
	ucln_cmn.cpp \
	ucmndata.c \
	ucnv2022.cpp \
	ucnv_bld.cpp \
	ucnvbocu.cpp \
	ucnv.c \
	ucnv_cb.c \
	ucnv_cnv.c \
	ucnv_ct.c \
	ucnvdisp.c \
	ucnv_err.c \
	ucnv_ext.cpp \
	ucnvhz.c \
	ucnv_io.cpp \
	ucnvisci.c \
	ucnvlat1.c \
	ucnv_lmb.c \
	ucnvmbcs.cpp \
	ucnvscsu.c \
	ucnv_set.c \
	ucnv_u16.c \
	ucnv_u32.c \
	ucnv_u7.c \
	ucnv_u8.c \
	udatamem.c \
	udataswp.c \
	uenum.c \
	uhash.c \
	uinit.cpp \
	uinvchar.c \
	ulist.c \
	ulistformatter.cpp \
	uloc.cpp \
	uloc_keytype.cpp \
	uloc_tag.c \
	umapfile.c \
	umath.c \
	umutex.cpp \
	unames.cpp \
	uresbund.cpp \
	ures_cnv.c \
	uresdata.cpp \
	usc_impl.c \
	uscript.c \
	uscript_props.cpp \
	ushape.cpp \
	ustrcase.cpp \
	ustr_cnv.cpp \
	ustrfmt.c \
	ustring.cpp \
	ustrtrns.cpp \
	ustr_wcs.cpp \
	utf_impl.c \
	utrace.c \
	utrie2_builder.cpp \
	utrie.cpp \
	utypes.c \
	wintz.c

src_files += \
	appendable.cpp \
	bmpset.cpp \
	brkeng.cpp \
	brkiter.cpp \
	bytestream.cpp \
	bytestriebuilder.cpp \
	bytestrie.cpp \
	bytestrieiterator.cpp \
	caniter.cpp \
	chariter.cpp \
	charstr.cpp \
	dictbe.cpp \
	dictionarydata.cpp \
	dtintrv.cpp \
	errorcode.cpp \
	filterednormalizer2.cpp \
	listformatter.cpp \
	locavailable.cpp \
	locbased.cpp \
	locdispnames.cpp \
	locid.cpp \
	loclikely.cpp \
	locresdata.cpp \
	locutil.cpp \
	messagepattern.cpp \
	normalizer2.cpp \
	normalizer2impl.cpp \
	normlzr.cpp \
	parsepos.cpp \
	patternprops.cpp \
	propname.cpp \
	rbbi.cpp \
	rbbidata.cpp \
	rbbinode.cpp \
	rbbirb.cpp \
	rbbiscan.cpp \
	rbbisetb.cpp \
	rbbistbl.cpp \
	rbbitblb.cpp \
	resbund_cnv.cpp \
	resbund.cpp \
	ruleiter.cpp \
	schriter.cpp \
	serv.cpp \
	servlk.cpp \
	servlkf.cpp \
	servls.cpp \
	servnotf.cpp \
	servrbf.cpp \
	servslkf.cpp \
	stringpiece.cpp \
	stringtriebuilder.cpp \
	ubrk.cpp \
	ucasemap_titlecase_brkiter.cpp \
	ucharstriebuilder.cpp \
	ucharstrie.cpp \
	ucharstrieiterator.cpp \
	uchriter.cpp \
	ucnvsel.cpp \
	ucol_swp.cpp \
	udata.cpp \
	uhash_us.cpp \
	uidna.cpp \
	uiter.cpp \
	unifiedcache.cpp \
	unifilt.cpp \
	unifunct.cpp \
	uniset_closure.cpp \
	uniset.cpp \
	uniset_props.cpp \
	unisetspan.cpp \
	unistr_case.cpp \
	unistr_case_locale.cpp \
	unistr_cnv.cpp \
	unistr.cpp \
	unistr_props.cpp \
	unistr_titlecase_brkiter.cpp \
	unormcmp.cpp \
	unorm.cpp \
	uobject.cpp \
	uprops.cpp \
	uset.cpp \
	usetiter.cpp \
	uset_props.cpp \
	usprep.cpp \
	ustack.cpp \
	ustrcase_locale.cpp \
	ustrenum.cpp \
	ustr_titlecase_brkiter.cpp \
	utext.cpp \
	util.cpp \
	util_props.cpp \
	utrie2.cpp \
	uts46.cpp \
	uvector.cpp \
	uvectr32.cpp \
	uvectr64.cpp

# This is the empty compiled-in icu data structure
# that we need to satisfy the linker.
src_files += ../stubdata/stubdata.c

c_includes := \
	$(LOCAL_PATH) \
	$(LOCAL_PATH)/../i18n

# We deliberately do not set -DICU_DATA_DIR: ICU4C is configured on Android
# using udata_setCommonData.

local_cflags += -D_REENTRANT
local_cflags += -DU_COMMON_IMPLEMENTATION

local_cflags += -O3 -fvisibility=hidden

local_cflags += -Wno-unused-parameter \
                -Wno-missing-field-initializers \
                -Wno-sign-compare \
                -Wno-deprecated-declarations

#
# Build for the target (device).
#

include $(CLEAR_VARS)
LOCAL_SRC_FILES += $(src_files)
LOCAL_C_INCLUDES += $(c_includes) $(optional_android_logging_includes)
LOCAL_CFLAGS += $(local_cflags) -DPIC -fPIC
LOCAL_SHARED_LIBRARIES += libdl $(optional_android_logging_libraries)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libicuuc
LOCAL_RTTI_FLAG := -frtti
LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
ifndef BRILLO
LOCAL_REQUIRED_MODULES += icu-data
endif
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
ifneq ($(TARGET_ARCH),mips64)
LOCAL_CLANG := true
endif
include $(BUILD_SHARED_LIBRARY)

#
# Build for the host.
#

include $(CLEAR_VARS)
LOCAL_SRC_FILES += $(src_files)
LOCAL_C_INCLUDES += $(c_includes) $(optional_android_logging_includes)
LOCAL_CFLAGS += $(local_cflags)
LOCAL_SHARED_LIBRARIES += $(optional_android_logging_libraries)
LOCAL_LDLIBS += -ldl -lm -lpthread
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libicuuc-host
LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
LOCAL_REQUIRED_MODULES += icu-data-host
LOCAL_MULTILIB := both
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
LOCAL_CLANG := true
include $(BUILD_HOST_SHARED_LIBRARY)

#
# Build as a static library against the NDK
#

include $(CLEAR_VARS)
LOCAL_SDK_VERSION := 9
LOCAL_NDK_STL_VARIANT := stlport_static
LOCAL_C_INCLUDES += $(c_includes)
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)
LOCAL_RTTI_FLAG := -frtti
LOCAL_CFLAGS += $(local_cflags) -DPIC -fPIC
# Using -Os over -O3 actually cuts down the final executable size by a few dozen kilobytes
LOCAL_CFLAGS += -Os
LOCAL_EXPORT_CFLAGS += -DU_STATIC_IMPLEMENTATION=1
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libicuuc_static
LOCAL_SRC_FILES += $(src_files)
ifndef BRILLO
LOCAL_REQUIRED_MODULES += icu-data
endif
ifneq ($(TARGET_ARCH),mips64)
LOCAL_CLANG := true
endif
include $(BUILD_STATIC_LIBRARY)