1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 06:04:57 +00:00
serenity/Meta/gn/secondary/Userland/Libraries/LibLocale/BUILD.gn

190 lines
5.6 KiB
Text

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")
locale_cache = cache_path + "CLDR/"
if (enable_unicode_database_download) {
download_file("locale_database_download") {
version = "44.1.0"
url = "https://github.com/unicode-org/cldr-json/releases/download/" +
version + "/cldr-" + version + "-json-modern.zip"
cache = locale_cache
output = "cldr.zip"
version_file = "version.txt"
}
extract_archive_contents("locale_database_files") {
deps = [ ":locale_database_download" ]
archive = get_target_outputs(":locale_database_download")
directory = locale_cache
paths = [
"cldr-bcp47",
"cldr-core",
"cldr-dates-modern",
"cldr-localenames-modern",
"cldr-misc-modern",
"cldr-numbers-modern",
"cldr-units-modern",
]
}
compiled_action("generate_datetime_format_sources") {
tool =
"//Meta/Lagom/Tools/CodeGenerators/LibLocale:GenerateDateTimeFormatData"
deps = [ ":locale_database_files" ]
outputs = [
"$target_gen_dir/DateTimeFormatData.h",
"$target_gen_dir/DateTimeFormatData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-r",
rebase_path(locale_cache + "cldr-core", root_build_dir),
"-d",
rebase_path(locale_cache + "cldr-dates-modern", root_build_dir),
]
}
compiled_action("generate_locale_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibLocale:GenerateLocaleData"
deps = [ ":locale_database_files" ]
outputs = [
"$target_gen_dir/LocaleData.h",
"$target_gen_dir/LocaleData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-b",
rebase_path(locale_cache + "cldr-bcp47", root_build_dir),
"-r",
rebase_path(locale_cache + "cldr-core", root_build_dir),
"-l",
rebase_path(locale_cache + "cldr-localenames-modern", root_build_dir),
"-m",
rebase_path(locale_cache + "cldr-misc-modern", root_build_dir),
"-n",
rebase_path(locale_cache + "cldr-numbers-modern", root_build_dir),
"-d",
rebase_path(locale_cache + "cldr-dates-modern", root_build_dir),
]
}
compiled_action("generate_number_format_sources") {
tool =
"//Meta/Lagom/Tools/CodeGenerators/LibLocale:GenerateNumberFormatData"
deps = [ ":locale_database_files" ]
outputs = [
"$target_gen_dir/NumberFormatData.h",
"$target_gen_dir/NumberFormatData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-r",
rebase_path(locale_cache + "cldr-core", root_build_dir),
"-n",
rebase_path(locale_cache + "cldr-numbers-modern", root_build_dir),
"-u",
rebase_path(locale_cache + "cldr-units-modern", root_build_dir),
]
}
compiled_action("generate_plural_rules_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibLocale:GeneratePluralRulesData"
deps = [ ":locale_database_files" ]
outputs = [
"$target_gen_dir/PluralRulesData.h",
"$target_gen_dir/PluralRulesData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-r",
rebase_path(locale_cache + "cldr-core", root_build_dir),
"-l",
rebase_path(locale_cache + "cldr-localenames-modern", root_build_dir),
]
}
compiled_action("generate_relative_time_format_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibLocale:GenerateRelativeTimeFormatData"
deps = [ ":locale_database_files" ]
outputs = [
"$target_gen_dir/RelativeTimeFormatData.h",
"$target_gen_dir/RelativeTimeFormatData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-d",
rebase_path(locale_cache + "cldr-dates-modern", root_build_dir),
]
}
# FIXME: Add optimization for serenity to use these as a shlib
source_set("locale_data_sources") {
include_dirs = [
"//Userland/Libraries",
"$target_gen_dir/..",
]
cflags_cc = [
"-g0",
"-Os",
"-Wno-parentheses-equality",
]
deps = [
":generate_datetime_format_sources",
":generate_locale_sources",
":generate_number_format_sources",
":generate_plural_rules_sources",
":generate_relative_time_format_sources",
"//AK",
]
public_deps = [ "//Userland/Libraries/LibTimeZone" ]
sources = get_target_outputs(":generate_datetime_format_sources")
sources += get_target_outputs(":generate_locale_sources")
sources += get_target_outputs(":generate_number_format_sources")
sources += get_target_outputs(":generate_plural_rules_sources")
sources += get_target_outputs(":generate_relative_time_format_sources")
}
}
source_set("LibLocale") {
output_name = "locale"
include_dirs = [
"//Userland/Libraries",
"$target_gen_dir/..",
]
sources = [
"DateTimeFormat.cpp",
"Locale.cpp",
"NumberFormat.cpp",
"PluralRules.cpp",
"RelativeTimeFormat.cpp",
]
deps = [
"//AK",
"//Userland/Libraries/LibUnicode",
]
if (enable_unicode_database_download) {
deps += [ ":locale_data_sources" ]
defines = [ "ENABLE_UNICODE_DATA=1" ]
} else {
defines = [ "ENABLE_UNICODE_DATA=0" ]
}
}