mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 06:04:57 +00:00
190 lines
5.6 KiB
Text
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" ]
|
|
}
|
|
}
|