blob: 01f94b738af4243aa8717a06cb36102810efc517 [file] [log] [blame]
# Copyright 2010 Google Inc.
#
# 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.
#
# Based on Chromium's icu.gyp.
{
'variables': {
'use_system_icu%': 0,
},
'target_defaults': {
'direct_dependent_settings': {
'defines': [
# Tell ICU to not insert |using namespace icu;| into its headers,
# so that chrome's source explicitly has to use |icu::|.
'U_USING_ICU_NAMESPACE=0',
],
},
},
'conditions': [
['use_system_icu==0', {
'target_defaults': {
'defines': [
'U_USING_ICU_NAMESPACE=0',
],
'conditions': [
['component=="static_library"', {
'defines': [
'U_STATIC_IMPLEMENTATION',
],
}],
],
'include_dirs': [
'source/common',
'source/i18n',
'genfiles/arch/<(OS)/common/include',
],
'msvs_disabled_warnings': [4005, 4355, 4996],
},
'targets': [
{
'target_name': 'icudata',
'type': '<(library)',
'sources': [
# These are hand-generated, but will do for now. The linux
# version is an identical copy of the (mac) icudt46l_dat.S file,
# modulo removal of the .private_extern and .const directives and
# with no leading underscore on the icudt46_dat symbol.
'genfiles/arch/linux/common/icudata/icudt46l_dat.S',
'genfiles/arch/mac/common/icudata/icudt46l_dat.s',
],
'conditions': [
[ 'OS == "win"', {
'link_settings': {
'libraries': [
'<(DEPTH)/third_party/icu/genfiles/arch/win/ia32/icudata/icudt46.lib',
],
},
'sources': [
# In order to pass our icudt46.lib dependency on to dependent
# targets, we need to have at least one source file.
'genfiles/arch/win/ia32/icudata/empty.c',
],
}],
[ 'OS == "win" or OS == "mac"', {
'sources!': ['genfiles/arch/linux/common/icudata/icudt46l_dat.S'],
}],
[ 'OS != "mac"', {
'sources!': ['genfiles/arch/mac/common/icudata/icudt46l_dat.s'],
}],
[ 'library != "shared_library"', {
'defines': [
'U_HIDE_DATA_SYMBOL',
],
}],
],
},
{
'target_name': 'icuuc',
'type': '<(component)',
'sources': [
'source/common/bmpset.cpp',
'source/common/brkeng.cpp',
'source/common/brkiter.cpp',
'source/common/bytestream.cpp',
'source/common/caniter.cpp',
'source/common/chariter.cpp',
'source/common/charstr.cpp',
'source/common/cmemory.c',
'source/common/cstring.c',
'source/common/cwchar.c',
'source/common/dictbe.cpp',
'source/common/dtintrv.cpp',
'source/common/errorcode.cpp',
'source/common/filterednormalizer2.cpp',
'source/common/icudataver.c',
'source/common/icuplug.c',
'source/common/locavailable.cpp',
'source/common/locbased.cpp',
'source/common/locdispnames.cpp',
'source/common/locid.cpp',
'source/common/loclikely.cpp',
'source/common/locmap.c',
'source/common/locresdata.cpp',
'source/common/locutil.cpp',
'source/common/mutex.cpp',
'source/common/normalizer2.cpp',
'source/common/normalizer2impl.cpp',
'source/common/normlzr.cpp',
'source/common/parsepos.cpp',
'source/common/propname.cpp',
'source/common/propsvec.c',
'source/common/punycode.c',
'source/common/putil.c',
'source/common/rbbi.cpp',
'source/common/rbbidata.cpp',
'source/common/rbbinode.cpp',
'source/common/rbbirb.cpp',
'source/common/rbbiscan.cpp',
'source/common/rbbisetb.cpp',
'source/common/rbbistbl.cpp',
'source/common/rbbitblb.cpp',
'source/common/resbund.cpp',
'source/common/resbund_cnv.cpp',
'source/common/ruleiter.cpp',
'source/common/schriter.cpp',
'source/common/serv.cpp',
'source/common/servlk.cpp',
'source/common/servlkf.cpp',
'source/common/servls.cpp',
'source/common/servnotf.cpp',
'source/common/servrbf.cpp',
'source/common/servslkf.cpp',
'source/common/stringpiece.cpp',
'source/common/triedict.cpp',
'source/common/uarrsort.c',
'source/common/ubidi.c',
'source/common/ubidi_props.c',
'source/common/ubidiln.c',
'source/common/ubidiwrt.c',
'source/common/ubrk.cpp',
'source/common/ucase.c',
'source/common/ucasemap.c',
'source/common/ucat.c',
'source/common/uchar.c',
'source/common/uchriter.cpp',
'source/common/ucln_cmn.c',
'source/common/ucmndata.c',
'source/common/ucnv.c',
'source/common/ucnv2022.c',
'source/common/ucnv_bld.c',
'source/common/ucnv_cb.c',
'source/common/ucnv_cnv.c',
'source/common/ucnv_err.c',
'source/common/ucnv_ext.c',
'source/common/ucnv_io.c',
'source/common/ucnv_lmb.c',
'source/common/ucnv_set.c',
'source/common/ucnv_u16.c',
'source/common/ucnv_u32.c',
'source/common/ucnv_u7.c',
'source/common/ucnv_u8.c',
'source/common/ucnvbocu.c',
'source/common/ucnvdisp.c',
'source/common/ucnvhz.c',
'source/common/ucnvisci.c',
'source/common/ucnvlat1.c',
'source/common/ucnvmbcs.c',
'source/common/ucnvscsu.c',
'source/common/ucnvsel.cpp',
'source/common/ucol_swp.cpp',
'source/common/udata.cpp',
'source/common/udatamem.c',
'source/common/udataswp.c',
'source/common/uenum.c',
'source/common/uhash.c',
'source/common/uhash_us.cpp',
'source/common/uidna.cpp',
'source/common/uinit.c',
'source/common/uinvchar.c',
'source/common/uiter.cpp',
'source/common/ulist.c',
'source/common/uloc.c',
'source/common/uloc_tag.c',
'source/common/umapfile.c',
'source/common/umath.c',
'source/common/umutex.c',
'source/common/unames.c',
'source/common/unifilt.cpp',
'source/common/unifunct.cpp',
'source/common/uniset.cpp',
'source/common/uniset_props.cpp',
'source/common/unisetspan.cpp',
'source/common/unistr.cpp',
'source/common/unistr_case.cpp',
'source/common/unistr_cnv.cpp',
'source/common/unistr_props.cpp',
'source/common/unorm.cpp',
'source/common/unorm_it.c',
'source/common/unormcmp.cpp',
'source/common/uobject.cpp',
'source/common/uprops.cpp',
'source/common/ures_cnv.c',
'source/common/uresbund.c',
'source/common/uresdata.c',
'source/common/usc_impl.c',
'source/common/uscript.c',
'source/common/uset.cpp',
'source/common/uset_props.cpp',
'source/common/usetiter.cpp',
'source/common/ushape.c',
'source/common/usprep.cpp',
'source/common/ustack.cpp',
'source/common/ustr_cnv.c',
'source/common/ustr_wcs.c',
'source/common/ustrcase.c',
'source/common/ustrenum.cpp',
'source/common/ustrfmt.c',
'source/common/ustring.c',
'source/common/ustrtrns.c',
'source/common/utext.cpp',
'source/common/utf_impl.c',
'source/common/util.cpp',
'source/common/util_props.cpp',
'source/common/utrace.c',
'source/common/utrie.c',
'source/common/utrie2.cpp',
'source/common/utrie2_builder.c',
'source/common/uts46.cpp',
'source/common/utypes.c',
'source/common/uvector.cpp',
'source/common/uvectr32.cpp',
'source/common/uvectr64.cpp',
'source/common/wintz.c',
],
'defines': [
'U_COMMON_IMPLEMENTATION',
],
'dependencies': [
'icudata',
],
'direct_dependent_settings': {
'include_dirs': [
'source/common',
'genfiles/arch/<(OS)/common/include',
],
'conditions': [
[ 'component=="static_library"', {
'defines': [
'U_STATIC_IMPLEMENTATION',
],
}],
# This is needed due to an icu header that contains
# inline code with an unused variable.
[ 'os_posix == 1 and OS != "mac"', {
'conditions': [
['<(gcc_version) < 46', {
'cflags': ['-Wno-unused-variable']
}, {
'cflags': ['-Wno-unused-but-set-variable']
}],
],
}],
],
},
'conditions': [
[ 'os_posix == 1 and OS != "mac"', {
'cflags': [
# Since ICU wants to internally use its own deprecated APIs,
# don't complain about it.
'-Wno-deprecated-declarations',
'-Wno-unused-function',
],
'cflags_cc': [
'-frtti',
],
}],
['OS == "mac"', {
'xcode_settings': {
'GCC_ENABLE_CPP_RTTI': 'YES', # -frtti
}
}],
['OS == "win"', {
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeTypeInfo': 'true',
},
}
}],
['clang==1', {
'cflags': [
'-Wno-dynamic-class-memaccess',
'-Wno-switch',
'-Wno-tautological-compare',
],
'xcode_settings': {
'WARNING_CFLAGS': [
'-Wno-deprecated-declarations',
'-Wno-dynamic-class-memaccess',
'-Wno-switch',
'-Wno-tautological-compare',
],
},
}],
],
},
],
}, { # use_system_icu != 0
'targets': [
{
'target_name': 'system_icu',
'type': 'none',
'direct_dependent_settings': {
'defines': [
'USE_SYSTEM_ICU',
],
'cflags+': [
'<!@(icu-config --cppflags-searchpath)'
],
},
'link_settings': {
'ldflags': [
'<!@(icu-config --ldflags)',
],
'libraries': [
'<!@(icu-config --ldflags-libsonly)',
],
},
},
{
'target_name': 'icudata',
'type': 'none',
'dependencies': ['system_icu'],
'export_dependent_settings': ['system_icu'],
},
{
'target_name': 'icuuc',
'type': 'none',
'dependencies': ['system_icu'],
'export_dependent_settings': ['system_icu'],
},
],
}],
],
}