1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-23 17:25:09 +00:00
serenity/Meta/gn/secondary/Userland/Libraries/LibTimeZone/BUILD.gn

86 lines
2.2 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")
declare_args() {
# If true, Download tzdata from data.iana.org and use it in LibTimeZone
# Data will be downloaded to $cache_path/TZDB
enable_timezone_database_download = true
}
tzdb_cache = cache_path + "TZDB/"
if (enable_timezone_database_download) {
download_file("timezone_database_download") {
version = "2024a"
url =
"https://data.iana.org/time-zones/releases/tzdata" + version + ".tar.gz"
cache = tzdb_cache
output = "tzdb.tar.gz"
version_file = "version.txt"
}
extract_archive_contents("timezone_database_files") {
deps = [ ":timezone_database_download" ]
archive = get_target_outputs(":timezone_database_download")
directory = tzdb_cache
# NOSORT
files = [
"zone1970.tab",
"africa",
"antarctica",
"asia",
"australasia",
"backward",
"etcetera",
"europe",
"northamerica",
"southamerica",
]
}
compiled_action("generate_timezone_sources") {
tool = "//Meta/Lagom/Tools/CodeGenerators/LibTimeZone:GenerateTimeZoneData"
deps = [ ":timezone_database_files" ]
inputs = get_target_outputs(":timezone_database_files")
outputs = [
"$target_gen_dir/TimeZoneData.h",
"$target_gen_dir/TimeZoneData.cpp",
]
args = [
"-h",
rebase_path(outputs[0], root_build_dir),
"-c",
rebase_path(outputs[1], root_build_dir),
"-z",
# NOTE: Coordinates file must be inputs[0]
]
foreach(data_file, inputs) {
args += [ rebase_path(data_file, root_build_dir) ]
}
}
}
source_set("LibTimeZone") {
output_name = "timezone"
include_dirs = [
"//Userland/Libraries",
"$target_gen_dir/..",
]
sources = [
"DateTime.cpp",
"DateTime.h",
"Forward.h",
"TimeZone.cpp",
"TimeZone.h",
]
deps = [
"//AK",
"//Userland/Libraries/LibCore",
]
if (enable_timezone_database_download) {
deps += [ ":generate_timezone_sources" ]
sources += get_target_outputs(":generate_timezone_sources")
}
}