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',
)

if host_machine.system() == 'windows'
  sources += windows.compile_resources('common.rc', include_directories: incdir)
endif

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

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

# if meson.can_run_host_binaries()
  common_native_lib = common_lib
# else
#   common_native_lib = library(
#     '@0@-native'.format(icuuc_name),
#     sources,
#     include_directories: incdir,
#     c_args: '-DU_COMMON_IMPLEMENTATION',
#     cpp_args: '-DU_COMMON_IMPLEMENTATION',
#     link_with: stubdata_native_lib,
#     # dependencies: dl_native_dep,
#     version: U_ICU_VERSION,
#     native: true,
#   )
# endif

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

# icuuc_native_dep = declare_dependency(
#   link_with: common_native_lib,
#   compile_args: usage_args,
#   include_directories: incdir,
#   dependencies: dl_native_dep,
# )

if meson.version().version_compare('>=0.54.0')
  meson.override_dependency('icu-uc', icuuc_dep)
endif

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',
)

install_headers(
  headers,
  subdir: 'unicode',
)

pkg.generate(
  common_lib,
  name: 'icu-uc',
  description: '@0@: Common and Data libraries'.format(PACKAGE_ICU_DESCRIPTION),
  url: PACKAGE_ICU_URL,
)
