sources = files(
  'appendable.cpp',
  'bmpset.cpp',
  # 'brkeng.cpp',
  # 'brkiter.cpp',
  'bytesinkutil.cpp',
  'bytestream.cpp',
  'bytestrie.cpp',
  'bytestriebuilder.cpp',
  'bytestrieiterator.cpp',
  # 'caniter.cpp',
  'characterproperties.cpp',
  'chariter.cpp',
  'charstr.cpp',
  'cmemory.cpp',
  'cstr.cpp',
  'cstring.cpp',
  # 'cwchar.cpp',
  # 'dictbe.cpp',
  # 'dictionarydata.cpp',
  'dtintrv.cpp',
  'edits.cpp',
  'emojiprops.cpp',
  'errorcode.cpp',
  # 'filteredbrk.cpp',
  # 'filterednormalizer2.cpp',
  'icudataver.cpp',
  # 'icuplug.cpp',
  # 'loadednormalizer2impl.cpp',
  'localebuilder.cpp',
  'locavailable.cpp',
  'locbased.cpp',
  'locdispnames.cpp',
  # 'locdspnm.cpp',
  'locid.cpp',
  'loclikely.cpp',
  'locmap.cpp',
  'locresdata.cpp',
  # 'locutil.cpp',
  # 'lstmbe.cpp',
  # 'messagepattern.cpp',
  # 'normalizer2.cpp',
  # 'normalizer2impl.cpp',
  # 'normlzr.cpp',
  'parsepos.cpp',
  'patternprops.cpp',
  'propname.cpp',
  'propsvec.cpp',
  # 'punycode.cpp',
  'putil.cpp',
  # 'rbbi.cpp',
  # 'rbbi_cache.cpp',
  # 'rbbidata.cpp',
  # 'rbbinode.cpp',
  # 'rbbirb.cpp',
  # 'rbbiscan.cpp',
  # 'rbbisetb.cpp',
  # 'rbbistbl.cpp',
  # 'rbbitblb.cpp',
  'resbund.cpp',
  'resbund_cnv.cpp',
  'resource.cpp',
  'ruleiter.cpp',
  'schriter.cpp',
  # 'serv.cpp',
  # 'servlk.cpp',
  # 'servlkf.cpp',
  # 'servls.cpp',
  # 'servnotf.cpp',
  # 'servrbf.cpp',
  # 'servslkf.cpp',
  'sharedobject.cpp',
  'simpleformatter.cpp',
  # 'static_unicode_sets.cpp',
  'stringpiece.cpp',
  'stringtriebuilder.cpp',
  'uarrsort.cpp',
  'ubidi.cpp',
  'ubidi_props.cpp',
  'ubidiln.cpp',
  'ubidiwrt.cpp',
  # 'ubrk.cpp',
  'ucase.cpp',
  'ucasemap.cpp',
  # 'ucasemap_titlecase_brkiter.cpp',
  'ucat.cpp',
  # 'uchar.cpp',
  'ucharstrie.cpp',
  'ucharstriebuilder.cpp',
  'ucharstrieiterator.cpp',
  'uchriter.cpp',
  'ucln_cmn.cpp',
  'ucmndata.cpp',
  'ucnv.cpp',
  # 'ucnv2022.cpp',
  'ucnv_bld.cpp',
  'ucnv_cb.cpp',
  'ucnv_cnv.cpp',
  # 'ucnv_ct.cpp',
  'ucnv_err.cpp',
  # 'ucnv_ext.cpp',
  'ucnv_io.cpp',
  # 'ucnv_lmb.cpp',
  'ucnv_set.cpp',
  'ucnv_u16.cpp',
  'ucnv_u32.cpp',
  'ucnv_u7.cpp',
  'ucnv_u8.cpp',
  'ucnvbocu.cpp',
  'ucnvdisp.cpp',
  # 'ucnvhz.cpp',
  # 'ucnvisci.cpp',
  'ucnvlat1.cpp',
  # 'ucnvmbcs.cpp',
  'ucnvscsu.cpp',
  'ucnvsel.cpp',
  # 'ucol_swp.cpp',
  'ucptrie.cpp',
  # 'ucurr.cpp',
  'udata.cpp',
  'udatamem.cpp',
  'udataswp.cpp',
  'uenum.cpp',
  'uhash.cpp',
  'uhash_us.cpp',
  # 'uidna.cpp',
  'uinit.cpp',
  'uinvchar.cpp',
  'uiter.cpp',
  'ulist.cpp',
  'uloc.cpp',
  'uloc_keytype.cpp',
  'uloc_tag.cpp',
  'umapfile.cpp',
  'umath.cpp',
  'umutablecptrie.cpp',
  'umutex.cpp',
  'unames.cpp',
  'unifiedcache.cpp',
  'unifilt.cpp',
  'unifunct.cpp',
  'uniset.cpp',
  'uniset_closure.cpp',
  'uniset_props.cpp',
  'unisetspan.cpp',
  'unistr.cpp',
  'unistr_case.cpp',
  'unistr_case_locale.cpp',
  'unistr_cnv.cpp',
  'unistr_props.cpp',
  # 'unistr_titlecase_brkiter.cpp',
  # 'unorm.cpp',
  # 'unormcmp.cpp',
  'uobject.cpp',
  'uprops.cpp',
  'ures_cnv.cpp',
  'uresbund.cpp',
  'uresdata.cpp',
  'usc_impl.cpp',
  'uscript.cpp',
  'uscript_props.cpp',
  'uset.cpp',
  'uset_props.cpp',
  'usetiter.cpp',
  'ushape.cpp',
  # 'usprep.cpp',
  'ustack.cpp',
  'ustr_cnv.cpp',
  # 'ustr_titlecase_brkiter.cpp',
  'ustr_wcs.cpp',
  'ustrcase.cpp',
  'ustrcase_locale.cpp',
  'ustrenum.cpp',
  'ustrfmt.cpp',
  'ustring.cpp',
  'ustrtrns.cpp',
  'utext.cpp',
  'utf_impl.cpp',
  'util.cpp',
  'util_props.cpp',
  'utrace.cpp',
  'utrie.cpp',
  'utrie2.cpp',
  'utrie2_builder.cpp',
  'utrie_swap.cpp',
  # 'uts46.cpp',
  'utypes.cpp',
  'uvector.cpp',
  'uvectr32.cpp',
  'uvectr64.cpp',
  'wintz.cpp',
)

icuuc_name = '@0@icuuc@1@'.format(library_prefix, library_suffix)

common_lib = static_library(
  icuuc_name,
  sources,
  include_directories: [incdir,'../..'],
  c_args: ['-DU_COMMON_IMPLEMENTATION'] + usage_args,
  cpp_args: ['-DU_COMMON_IMPLEMENTATION'] + usage_args,
  link_with: stubdata_lib,
  # dependencies: dl_dep,
  # version: U_ICU_VERSION,
  # install: true,
)


uconfig = configuration_data()

uconfig.set('U_ENABLE_DYLOAD', 0) # no DLL
uconfig.set('U_CHECK_DYLOAD', 0) # no DLL
uconfig.set('UCONFIG_NO_FILE_IO', 1)
uconfig.set('UCONFIG_NO_LEGACY_CONVERSION', 1) # turn off file based codepage conversion
uconfig.set('UCONFIG_NO_NORMALIZATION', 1) # TODO-LDML: may want this
uconfig.set('UCONFIG_NO_BREAK_ITERATION', 1) # TODO-LDML: may want this
uconfig.set('UCONFIG_NO_IDNA', 1)
uconfig.set('UCONFIG_NO_COLLATION', 1)
uconfig.set('UCONFIG_NO_FORMATTING', 1)
uconfig.set('UCONFIG_NO_TRANSLITERATION', 1)
uconfig.set('UCONFIG_NO_REGULAR_EXPRESSIONS', 1) # TODO-LDML: Will probably want this for transforms #7375
uconfig.set('UCONFIG_NO_SERVICE', 1)

# This next one is custom to this patch:
uconfig.set('UCONFIG_NO_PROPERTIES', 1)

uconfig_local = configure_file(
  configuration : uconfig,
  output : 'uconfig_local.h',
)


icuuc_dep = declare_dependency(
  link_with: common_lib,
  compile_args: usage_args,
  include_directories: incdir,
  # dependencies: stubdata_dep,
)

headers = files(
  'unicode/appendable.h',
  'unicode/brkiter.h',
  'unicode/bytestream.h',
  'unicode/bytestrie.h',
  'unicode/bytestriebuilder.h',
  'unicode/caniter.h',
  'unicode/casemap.h',
  'unicode/char16ptr.h',
  'unicode/chariter.h',
  'unicode/dbbi.h',
  'unicode/docmain.h',
  'unicode/dtintrv.h',
  'unicode/edits.h',
  'unicode/enumset.h',
  'unicode/errorcode.h',
  'unicode/filteredbrk.h',
  'unicode/icudataver.h',
  'unicode/icuplug.h',
  'unicode/idna.h',
  'unicode/localebuilder.h',
  'unicode/localematcher.h',
  'unicode/localpointer.h',
  'unicode/locdspnm.h',
  'unicode/locid.h',
  'unicode/messagepattern.h',
  'unicode/normalizer2.h',
  'unicode/normlzr.h',
  'unicode/parseerr.h',
  'unicode/parsepos.h',
  'unicode/platform.h',
  'unicode/ptypes.h',
  'unicode/putil.h',
  'unicode/rbbi.h',
  'unicode/rep.h',
  'unicode/resbund.h',
  'unicode/schriter.h',
  'unicode/simpleformatter.h',
  'unicode/std_string.h',
  'unicode/strenum.h',
  'unicode/stringoptions.h',
  'unicode/stringpiece.h',
  'unicode/stringtriebuilder.h',
  'unicode/symtable.h',
  'unicode/ubidi.h',
  'unicode/ubiditransform.h',
  'unicode/ubrk.h',
  'unicode/ucasemap.h',
  'unicode/ucat.h',
  'unicode/uchar.h',
  'unicode/ucharstrie.h',
  'unicode/ucharstriebuilder.h',
  'unicode/uchriter.h',
  'unicode/uclean.h',
  'unicode/ucnv.h',
  'unicode/ucnv_cb.h',
  'unicode/ucnv_err.h',
  'unicode/ucnvsel.h',
  'unicode/uconfig.h',
  'unicode/ucpmap.h',
  'unicode/ucptrie.h',
  'unicode/ucurr.h',
  'unicode/udata.h',
  'unicode/udisplaycontext.h',
  'unicode/uenum.h',
  'unicode/uidna.h',
  'unicode/uiter.h',
  'unicode/uldnames.h',
  'unicode/uloc.h',
  'unicode/umachine.h',
  'unicode/umisc.h',
  'unicode/umutablecptrie.h',
  'unicode/unifilt.h',
  'unicode/unifunct.h',
  'unicode/unimatch.h',
  'unicode/uniset.h',
  'unicode/unistr.h',
  'unicode/unorm.h',
  'unicode/unorm2.h',
  'unicode/uobject.h',
  'unicode/urename.h',
  'unicode/urep.h',
  'unicode/ures.h',
  'unicode/uscript.h',
  'unicode/uset.h',
  'unicode/usetiter.h',
  'unicode/ushape.h',
  'unicode/usprep.h',
  'unicode/ustring.h',
  'unicode/ustringtrie.h',
  'unicode/utext.h',
  'unicode/utf.h',
  'unicode/utf16.h',
  'unicode/utf32.h',
  'unicode/utf8.h',
  'unicode/utf_old.h',
  'unicode/utrace.h',
  'unicode/utypes.h',
  'unicode/uvernum.h',
  'unicode/uversion.h',
)
