Meta: Update LibUnicode gn build to depend on icu

This commit is contained in:
Andrew Kaster 2024-09-25 12:33:21 -06:00 committed by Andrew Kaster
parent 4348efd078
commit e53ad772f3
Notes: github-actions[bot] 2024-09-27 16:16:25 +00:00
2 changed files with 18 additions and 197 deletions

View file

@ -1,200 +1,28 @@
import("//Meta/gn/build/compiled_action.gni")
import("//Meta/gn/build/download_cache.gni")
import("//Meta/gn/build/download_file.gni")
import("//Meta/gn/build/extract_archive_contents.gni")
import("//Userland/Libraries/LibUnicode/enable_unicode_download.gni")
unicode_cache = cache_path + "UCD/"
emoji_cache = cache_path + "EMOJI/"
idna_cache = cache_path + "IDNA/"
unicode_version = "15.1.0"
emoji_version = "15.1"
if (enable_unicode_database_download) {
download_file("unicode_database_download") {
version = unicode_version
url = "https://www.unicode.org/Public/$version/ucd/UCD.zip"
cache = unicode_cache
output = "UCD.zip"
version_file = "version.txt"
sha256 = "cb1c663d053926500cd501229736045752713a066bd75802098598b7a7056177"
}
download_file("emoji_test_download") {
version = emoji_version
url = "https://www.unicode.org/Public/emoji/$version/emoji-test.txt"
cache = emoji_cache
output = "emoji-test.txt"
version_file = "emoji-test-version.txt"
sha256 = "d876ee249aa28eaa76cfa6dfaa702847a8d13b062aa488d465d0395ee8137ed9"
}
download_file("idna_mapping_table_download") {
version = unicode_version
url = "https://www.unicode.org/Public/idna/$version/IdnaMappingTable.txt"
cache = idna_cache
output = "IdnaMappingTable.txt"
version_file = "version.txt"
sha256 = "402cbd285f1f952fcd0834b63541d54f69d3d8f1b8f8599bf71a1a14935f82c4"
}
extract_archive_contents("unicode_database_files") {
deps = [ ":unicode_database_download" ]
archive = get_target_outputs(":unicode_database_download")
directory = unicode_cache
files = [
"UnicodeData.txt",
"SpecialCasing.txt",
"CaseFolding.txt",
"extracted/DerivedGeneralCategory.txt",
"PropList.txt",
"DerivedCoreProperties.txt",
"extracted/DerivedBinaryProperties.txt",
"PropertyAliases.txt",
"PropertyValueAliases.txt",
"Scripts.txt",
"ScriptExtensions.txt",
"Blocks.txt",
"emoji/emoji-data.txt",
"NameAliases.txt",
"DerivedNormalizationProps.txt",
"auxiliary/GraphemeBreakProperty.txt",
"auxiliary/WordBreakProperty.txt",
"auxiliary/SentenceBreakProperty.txt",
]
}
compiled_action("generate_unicode_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibUnicode:GenerateUnicodeData"
deps = [ ":unicode_database_files" ]
inputs = get_target_outputs(":unicode_database_files")
outputs = [
"$target_gen_dir/UnicodeData.h",
"$target_gen_dir/UnicodeData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-u",
rebase_path(inputs[0], root_build_dir),
"-s",
rebase_path(inputs[1], root_build_dir),
"-o",
rebase_path(inputs[2], root_build_dir),
"-g",
rebase_path(inputs[3], root_build_dir),
"-p",
rebase_path(inputs[4], root_build_dir),
"-d",
rebase_path(inputs[5], root_build_dir),
"-b",
rebase_path(inputs[6], root_build_dir),
"-a",
rebase_path(inputs[7], root_build_dir),
"-v",
rebase_path(inputs[8], root_build_dir),
"-r",
rebase_path(inputs[9], root_build_dir),
"-x",
rebase_path(inputs[10], root_build_dir),
"-k",
rebase_path(inputs[11], root_build_dir),
"-e",
rebase_path(inputs[12], root_build_dir),
"-m",
rebase_path(inputs[13], root_build_dir),
"-n",
rebase_path(inputs[14], root_build_dir),
"-f",
rebase_path(inputs[15], root_build_dir),
"-w",
rebase_path(inputs[16], root_build_dir),
"-i",
rebase_path(inputs[17], root_build_dir),
]
}
compiled_action("generate_emoji_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibUnicode:GenerateEmojiData"
deps = [ ":emoji_test_download" ]
inputs = get_target_outputs(":emoji_test_download")
outputs = [
"$target_gen_dir/EmojiData.h",
"$target_gen_dir/EmojiData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-e",
rebase_path(inputs[0], root_build_dir),
"-s",
rebase_path("//Base/home/anon/Documents/emoji-serenity.txt",
root_build_dir),
"-f",
rebase_path("//Meta/emoji-file-list.txt", root_build_dir),
"-r",
rebase_path("//Base/res/emoji", root_build_dir),
]
# FIXME: How to add file/directory dependencies on:
# "//Base/home/anon/Documents/emoji-serenity.txt"
# "//Base/res/emoji"
# "//Meta/emoji-file-list.txt"
}
compiled_action("generate_idna_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibUnicode:GenerateIDNAData"
deps = [ ":idna_mapping_table_download" ]
inputs = get_target_outputs(":idna_mapping_table_download")
outputs = [
"$target_gen_dir/IDNAData.h",
"$target_gen_dir/IDNAData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-m",
rebase_path(inputs[0], root_build_dir),
]
}
}
source_set("LibUnicode") {
output_name = "unicode"
include_dirs = [
"//Userland/Libraries",
"$target_gen_dir/..",
]
include_dirs = [ "//Userland/Libraries" ]
sources = [
"CharacterTypes.cpp",
"Collator.cpp",
"CurrencyCode.cpp",
"Emoji.cpp",
"DateTimeFormat.cpp",
"DisplayNames.cpp",
"DurationFormat.cpp",
"ICU.cpp",
"IDNA.cpp",
"ListFormat.cpp",
"Locale.cpp",
"Normalize.cpp",
"Punycode.cpp",
"Segmentation.cpp",
"NumberFormat.cpp",
"PluralRules.cpp",
"RelativeTimeFormat.cpp",
"Segmenter.cpp",
"String.cpp",
"UnicodeUtils.cpp",
"TimeZone.cpp",
"UnicodeKeywords.cpp",
]
deps = [ "//AK" ]
if (enable_unicode_database_download) {
deps += [
":generate_emoji_sources",
":generate_idna_sources",
":generate_unicode_sources",
deps = [
"//AK",
"//Meta/gn/build/libs/icu",
]
sources += get_target_outputs(":generate_unicode_sources")
sources += get_target_outputs(":generate_emoji_sources")
sources += get_target_outputs(":generate_idna_sources")
defines = [ "ENABLE_UNICODE_DATA=1" ]
} else {
defines = [ "ENABLE_UNICODE_DATA=0" ]
}
}

View file

@ -1,7 +0,0 @@
declare_args() {
# If true, download CLDR and UCD files from unicode.org or the unicode
# consortium's github and use it in LibUnicode and LibLocale.
# Data will be downloaded to $cache_path/CLDR, $cache_path/UCD
# and $cache_path/EMOJI
enable_unicode_database_download = true
}