From nobody Tue Jan 10 15:16:10 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NrvXV5ZyDz2qyHK; Tue, 10 Jan 2023 15:16:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NrvXV5J5bz3sC6; Tue, 10 Jan 2023 15:16:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1673363770; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RbqMfkKAdRTHtVacDy0kakIzAI8EKq6Ybu6RYtuhP9g=; b=q81hDtjr7MxT8930BPU8bhT/dk6AnsuDGPxEvc6vIl4zNY56sjF2s0EvGBgAkoK+WvIYIH rhGyoxMuRQFpfGEDUkzG8g4IyMILFXPmn78xLGYaz4RA1x+g57G7t87xtaFXkvHY/AdqMy AIwPwgA2l1GknRA+7XrSYc5r8YHVcC4AS4n7/9YAqKh+6pzVY+y48kg6nf/0CVFAA+zwKb s+maKAkkVcUFQjOnpQZKDIsE/qqGlQNYRIb02fsQbkhEfUodwSkntcrH96fyyzmXvyOaGP AWbRXK2R10NiLPyYzP4lHJ5IOWGQyDmMBlqamLuWSDxnhF/00DLlPABg4GZPnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1673363770; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RbqMfkKAdRTHtVacDy0kakIzAI8EKq6Ybu6RYtuhP9g=; b=DvQ4wgx6vN3FvZFqZWe9X6xL9RuVOMFd4bN10ue/RkbvvM0eyXFuArrGUjL+6SzmxW47Td nvg3njI9GelOvuLJ0PBkMvK1mtDz+YOH7wI6ArbOHJZ3gUVAL/FxwXcu6tH6EqqTHZH7Sg 2M+lQn95Hs0qpq/PGAuY8p9cydvaulB4E1tq/ncWB/07Ks5/72AwF+E8l5DTlSu1+1+M7u YKEdY2s1Q1sUkQF0F3G2ORagffx8fGRYLH2OQICkE0P8Z62QGi04kcf9FDRe4rbCiYGBo4 JQrKlE7ej7+aY/fBES6e9qtqpj4lX7qL2tg2jUtq+BTIt47rgP/OlRkrklN+0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1673363770; a=rsa-sha256; cv=none; b=j8Y57rC/Inr9oPNUe6A13/GEmulCDXBKCu6rjT/5W6JNwFzSTz/kVphus+n98oVrvAvGDt 6ZqpLmqy7r3BCtTadX90ZT3Yi9oj5RGq7IvyIpZ5DB0hs9+nXi0laByPELsVxzXSVjmKzL KVOxHaW8mHFTtw8MvK/QLfLr5AJhTloDl6MJblK+fnyESlsg0xWQxnmyAyEaGPmXMylKdN 8d/WqGbhVO48K/I5QZNgSuD4yzBUatD0josqZeNK7xd1vXtQNzD1isMcOdNJYsWbhFp30i w5rljR8kvOJ/qfx7xKVwPGZBdJcQzdxbfG9444Rd+ngCp6TmhMmoFtBM+zft1w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NrvXV4Ltyz1CLG; Tue, 10 Jan 2023 15:16:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30AFGAoP010798; Tue, 10 Jan 2023 15:16:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30AFGAxC010796; Tue, 10 Jan 2023 15:16:10 GMT (envelope-from git) Date: Tue, 10 Jan 2023 15:16:10 GMT Message-Id: <202301101516.30AFGAxC010796@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Dag-Erling=20Sm=C3=B8rgrav?= Subject: git: bc42155199b5 - main - Bring our tzcode up to date. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bc42155199b5b0b479311e05b07aee7f6f9c5172 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=bc42155199b5b0b479311e05b07aee7f6f9c5172 commit bc42155199b5b0b479311e05b07aee7f6f9c5172 Merge: 016e46fd869e 85639444f44f Author: Dag-Erling Smørgrav AuthorDate: 2023-01-10 15:14:27 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2023-01-10 15:14:27 +0000 Bring our tzcode up to date. * Replay 2010[acflm] which had been merged but not recorded. * Merge 2010n. * Reorganize (unsplit) the code to match the upstream layout. * Merge 2022[cdefg]. MFC after: 1 week Sponsored by: Klara, Inc. contrib/tzcode/CONTRIBUTING | 97 + contrib/tzcode/LICENSE | 5 + contrib/tzcode/Makefile | 1250 ++++++ contrib/tzcode/NEWS | 5902 ++++++++++++++++++++++++++ contrib/tzcode/README | 52 + contrib/tzcode/SECURITY | 15 + contrib/tzcode/{stdtime => }/asctime.c | 71 +- contrib/tzcode/calendars | 173 + contrib/tzcode/date.1 | 167 + contrib/tzcode/date.c | 216 + contrib/tzcode/difftime.c | 62 + contrib/tzcode/localtime.c | 2669 ++++++++++++ contrib/tzcode/newctime.3 | 344 ++ contrib/tzcode/newstrftime.3 | 290 ++ contrib/tzcode/newtzset.3 | 350 ++ contrib/tzcode/private.h | 957 +++++ contrib/tzcode/stdtime/difftime.c | 67 - contrib/tzcode/stdtime/localtime.c | 2317 ---------- contrib/tzcode/stdtime/private.h | 318 -- contrib/tzcode/stdtime/tzfile.5 | 152 - contrib/tzcode/stdtime/tzfile.h | 184 - contrib/tzcode/strftime.c | 657 +++ contrib/tzcode/theory.html | 1479 +++++++ contrib/tzcode/{stdtime => }/time2posix.3 | 74 +- contrib/tzcode/tz-art.html | 636 +++ contrib/tzcode/tz-how-to.html | 719 ++++ contrib/tzcode/tz-link.html | 1175 +++++ contrib/tzcode/tzfile.5 | 492 +++ contrib/tzcode/tzfile.h | 125 + contrib/tzcode/tzselect.8 | 125 + contrib/tzcode/tzselect.ksh | 586 +++ contrib/tzcode/version | 1 + contrib/tzcode/version.h | 3 + contrib/tzcode/workman.sh | 41 + contrib/tzcode/zdump.8 | 231 + contrib/tzcode/zdump.c | 1257 ++++++ contrib/tzcode/zic.8 | 856 ++++ contrib/tzcode/zic.c | 4051 ++++++++++++++++++ contrib/tzcode/zic/README | 88 - contrib/tzcode/zic/Theory | 570 --- contrib/tzcode/zic/ialloc.c | 91 - contrib/tzcode/zic/private.h | 272 -- contrib/tzcode/zic/scheck.c | 68 - contrib/tzcode/zic/zdump.8 | 63 - contrib/tzcode/zic/zdump.c | 668 --- contrib/tzcode/zic/zdump/Makefile | 15 - contrib/tzcode/zic/zic.8 | 468 -- contrib/tzcode/zic/zic.c | 2756 ------------ contrib/tzcode/zic/zic/Makefile | 16 - lib/libc/stdtime/Makefile.inc | 10 +- {contrib/tzcode => lib/libc}/stdtime/ctime.3 | 0 lib/libc/stdtime/strftime.c | 1 + lib/libc/stdtime/strptime.c | 1 + usr.sbin/Makefile | 1 + usr.sbin/zdump/Makefile | 12 + usr.sbin/{zic => }/zdump/Makefile.depend | 0 usr.sbin/zic/Makefile | 11 +- usr.sbin/zic/{zic => }/Makefile.depend | 0 usr.sbin/zic/Makefile.inc | 3 - usr.sbin/zic/README | 88 - usr.sbin/zic/zdump/Makefile | 15 - usr.sbin/zic/zic/Makefile | 22 - 62 files changed, 25079 insertions(+), 8326 deletions(-) diff --cc contrib/tzcode/CONTRIBUTING index 000000000000,4c0f56a50265..4c0f56a50265 mode 000000,100644..100644 --- a/contrib/tzcode/CONTRIBUTING +++ b/contrib/tzcode/CONTRIBUTING diff --cc contrib/tzcode/LICENSE index 000000000000,8ba4399c622d..8ba4399c622d mode 000000,100644..100644 --- a/contrib/tzcode/LICENSE +++ b/contrib/tzcode/LICENSE diff --cc contrib/tzcode/Makefile index 000000000000,000000000000..afb9d538a203 new file mode 100644 --- /dev/null +++ b/contrib/tzcode/Makefile @@@ -1,0 -1,0 +1,1250 @@@ ++# Make and install tzdb code and data. ++ ++# This file is in the public domain, so clarified as of ++# 2009-05-17 by Arthur David Olson. ++ ++# Package name for the code distribution. ++PACKAGE= tzcode ++ ++# Version number for the distribution, overridden in the 'tarballs' rule below. ++VERSION= unknown ++ ++# Email address for bug reports. ++BUGEMAIL= tz@iana.org ++ ++# DATAFORM selects the data format. ++# Available formats represent essentially the same data, albeit ++# possibly with minor discrepancies that users are not likely to notice. ++# To get new features and the best data right away, use: ++# DATAFORM= vanguard ++# To wait a while before using new features, to give downstream users ++# time to upgrade zic (the default), use: ++# DATAFORM= main ++# To wait even longer for new features, use: ++# DATAFORM= rearguard ++# Rearguard users might also want "ZFLAGS = -b fat"; see below. ++DATAFORM= main ++ ++# Change the line below for your timezone (after finding the one you want in ++# one of the $(TDATA) source files, or adding it to a source file). ++# Alternatively, if you discover you've got the wrong timezone, you can just ++# 'zic -l -' to remove it, or 'zic -l rightzone' to change it. ++# Use the command ++# make zonenames ++# to get a list of the values you can use for LOCALTIME. ++ ++LOCALTIME= Factory ++ ++# The POSIXRULES macro controls interpretation of nonstandard and obsolete ++# POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules. ++# Such a setting uses the rules in a template file to determine ++# "spring forward" and "fall back" days and times; the environment ++# variable itself specifies UT offsets of standard and daylight saving time. ++# ++# If POSIXRULES is '-', no template is installed; this is the default. ++# ++# Any other value for POSIXRULES is obsolete and should not be relied on, as: ++# * It does not work correctly in popular implementations such as GNU/Linux. ++# * It does not work even in tzcode, except for historical timestamps ++# that precede the last explicit transition in the POSIXRULES file. ++# Hence it typically does not work for current and future timestamps. ++# In short, software should avoid ruleless settings like TZ='EET-2EEST' ++# and so should not depend on the value of POSIXRULES. ++# ++# If, despite the above, you want a template for handling these settings, ++# you can change the line below (after finding the timezone you want in the ++# one of the $(TDATA) source files, or adding it to a source file). ++# Alternatively, if you discover you've got the wrong timezone, you can just ++# 'zic -p -' to remove it, or 'zic -p rightzone' to change it. ++# Use the command ++# make zonenames ++# to get a list of the values you can use for POSIXRULES. ++ ++POSIXRULES= - ++ ++# Also see TZDEFRULESTRING below, which takes effect only ++# if the time zone files cannot be accessed. ++ ++ ++# Installation locations. ++# ++# The defaults are suitable for Debian, except that if REDO is ++# posix_right or right_posix then files that Debian puts under ++# /usr/share/zoneinfo/posix and /usr/share/zoneinfo/right are instead ++# put under /usr/share/zoneinfo-posix and /usr/share/zoneinfo-leaps, ++# respectively. Problems with the Debian approach are discussed in ++# the commentary for the right_posix rule (below). ++ ++# Destination directory, which can be used for staging. ++# 'make DESTDIR=/stage install' installs under /stage (e.g., to ++# /stage/etc/localtime instead of to /etc/localtime). Files under ++# /stage are not intended to work as-is, but can be copied by hand to ++# the root directory later. If DESTDIR is empty, 'make install' does ++# not stage, but installs directly into production locations. ++DESTDIR = ++ ++# Everything is installed into subdirectories of TOPDIR, and used there. ++# TOPDIR should be empty (meaning the root directory), ++# or a directory name that does not end in "/". ++# TOPDIR should be empty or an absolute name unless you're just testing. ++TOPDIR = ++ ++# The default local timezone is taken from the file TZDEFAULT. ++TZDEFAULT = $(TOPDIR)/etc/localtime ++ ++# The subdirectory containing installed program and data files, and ++# likewise for installed files that can be shared among architectures. ++# These should be relative file names. ++USRDIR = usr ++USRSHAREDIR = $(USRDIR)/share ++ ++# "Compiled" timezone information is placed in the "TZDIR" directory ++# (and subdirectories). ++# TZDIR_BASENAME should not contain "/" and should not be ".", ".." or empty. ++TZDIR_BASENAME= zoneinfo ++TZDIR = $(TOPDIR)/$(USRSHAREDIR)/$(TZDIR_BASENAME) ++ ++# The "tzselect" and (if you do "make INSTALL") "date" commands go in: ++BINDIR = $(TOPDIR)/$(USRDIR)/bin ++ ++# The "zdump" command goes in: ++ZDUMPDIR = $(BINDIR) ++ ++# The "zic" command goes in: ++ZICDIR = $(TOPDIR)/$(USRDIR)/sbin ++ ++# Manual pages go in subdirectories of. . . ++MANDIR = $(TOPDIR)/$(USRSHAREDIR)/man ++ ++# Library functions are put in an archive in LIBDIR. ++LIBDIR = $(TOPDIR)/$(USRDIR)/lib ++ ++ ++# Types to try, as an alternative to time_t. ++TIME_T_ALTERNATIVES = $(TIME_T_ALTERNATIVES_HEAD) $(TIME_T_ALTERNATIVES_TAIL) ++TIME_T_ALTERNATIVES_HEAD = int_least64_t ++TIME_T_ALTERNATIVES_TAIL = int_least32_t uint_least32_t uint_least64_t ++ ++# What kind of TZif data files to generate. (TZif is the binary time ++# zone data format that zic generates; see Internet RFC 8536.) ++# If you want only POSIX time, with time values interpreted as ++# seconds since the epoch (not counting leap seconds), use ++# REDO= posix_only ++# below. If you want only "right" time, with values interpreted ++# as seconds since the epoch (counting leap seconds), use ++# REDO= right_only ++# below. If you want both sets of data available, with leap seconds not ++# counted normally, use ++# REDO= posix_right ++# below. If you want both sets of data available, with leap seconds counted ++# normally, use ++# REDO= right_posix ++# below. POSIX mandates that leap seconds not be counted; for compatibility ++# with it, use "posix_only" or "posix_right". Use POSIX time on systems with ++# leap smearing; this can work better than unsmeared "right" time with ++# applications that are not leap second aware, and is closer to unsmeared ++# "right" time than unsmeared POSIX time is (e.g., 0.5 vs 1.0 s max error). ++ ++REDO= posix_right ++ ++# Whether to put an "Expires" line in the leapseconds file. ++# Use EXPIRES_LINE=1 to put the line in, 0 to omit it. ++# The EXPIRES_LINE value matters only if REDO's value contains "right". ++# If you change EXPIRES_LINE, remove the leapseconds file before running "make". ++# zic's support for the Expires line was introduced in tzdb 2020a, ++# and was modified in tzdb 2021b to generate version 4 TZif files. ++# EXPIRES_LINE defaults to 0 for now so that the leapseconds file ++# can be given to pre-2020a zic implementations and so that TZif files ++# built by newer zic implementations can be read by pre-2021b libraries. ++EXPIRES_LINE= 0 ++ ++# To install data in text form that has all the information of the TZif data, ++# (optionally incorporating leap second information), use ++# TZDATA_TEXT= tzdata.zi leapseconds ++# To install text data without leap second information (e.g., because ++# REDO='posix_only'), use ++# TZDATA_TEXT= tzdata.zi ++# To avoid installing text data, use ++# TZDATA_TEXT= ++ ++TZDATA_TEXT= leapseconds tzdata.zi ++ ++# For backward-compatibility links for old zone names, use ++# BACKWARD= backward ++# To omit these links, use ++# BACKWARD= ++ ++BACKWARD= backward ++ ++# If you want out-of-scope and often-wrong data from the file 'backzone', ++# but only for entries listed in the backward-compatibility file zone.tab, use ++# PACKRATDATA= backzone ++# PACKRATLIST= zone.tab ++# If you want all the 'backzone' data, use ++# PACKRATDATA= backzone ++# PACKRATLIST= ++# To omit this data, use ++# PACKRATDATA= ++# PACKRATLIST= ++ ++PACKRATDATA= ++PACKRATLIST= ++ ++# The name of a locale using the UTF-8 encoding, used during self-tests. ++# The tests are skipped if the name does not appear to work on this system. ++ ++UTF8_LOCALE= en_US.utf8 ++ ++# Non-default libraries needed to link. ++# On some hosts, this should have -lintl unless CFLAGS has -DHAVE_GETTEXT=0. ++LDLIBS= ++ ++# Add the following to the end of the "CFLAGS=" line as needed to override ++# defaults specified in the source code. "-DFOO" is equivalent to "-DFOO=1". ++# -DDEPRECATE_TWO_DIGIT_YEARS for optional runtime warnings about strftime ++# formats that generate only the last two digits of year numbers ++# -DEPOCH_LOCAL if the 'time' function returns local time not UT ++# -DEPOCH_OFFSET=N if the 'time' function returns a value N greater ++# than what POSIX specifies, assuming local time is UT. ++# For example, N is 252460800 on AmigaOS. ++# -DHAVE_DECL_ASCTIME_R=0 if does not declare asctime_r ++# -DHAVE_DECL_ENVIRON if declares 'environ' ++# -DHAVE_DECL_TIMEGM=0 if does not declare timegm ++# -DHAVE_DIRECT_H if mkdir needs (MS-Windows) ++# -DHAVE_GENERIC=0 if _Generic does not work* ++# -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux), ++# -DHAVE_GETRANDOM=0 to avoid using getrandom ++# -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris), ++# where LDLIBS also needs to contain -lintl on some hosts; ++# -DHAVE_GETTEXT=0 to avoid using gettext ++# -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares ++# ctime_r and asctime_r incompatibly with the POSIX standard ++# (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined). ++# -DHAVE_INTTYPES_H=0 if does not work* ++# -DHAVE_LINK=0 if your system lacks a link function ++# -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function ++# -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz ++# localtime_rz can make zdump significantly faster, but is nonstandard. ++# -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure. ++# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare ++# functions like 'link' or variables like 'tzname' required by POSIX ++# -DHAVE_SETENV=0 if your system lacks the setenv function ++# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function ++# -DHAVE_STDCKDINT_H=0 if neither nor substitutes like ++# __builtin_add_overflow work* ++# -DHAVE_STDINT_H=0 if does not work* ++# -DHAVE_STRFTIME_L if declares locale_t and strftime_l ++# -DHAVE_STRDUP=0 if your system lacks the strdup function ++# -DHAVE_STRTOLL=0 if your system lacks the strtoll function ++# -DHAVE_SYMLINK=0 if your system lacks the symlink function ++# -DHAVE_SYS_STAT_H=0 if does not work* ++# -DHAVE_TZSET=0 if your system lacks a tzset function ++# -DHAVE_UNISTD_H=0 if does not work* ++# -DHAVE_UTMPX_H=0 if does not work* ++# -Dlocale_t=XXX if your system uses XXX instead of locale_t ++# -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers ++# with external linkage, e.g., applications cannot define 'localtime'. ++# -Dssize_t=long on hosts like MS-Windows that lack ssize_t ++# -DSUPPRESS_TZDIR to not prepend TZDIR to file names; this has ++# security implications and is not recommended for general use ++# -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires; ++# not needed by the main-program tz code, which is single-threaded. ++# Append other compiler flags as needed, e.g., -pthread on GNU/Linux. ++# -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t ++# This is intended for internal use only; it mangles external names. ++# -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz" ++# -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory; ++# the default is system-supplied, typically "/usr/lib/locale" ++# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified ++# DST transitions if the time zone files cannot be accessed ++# -DUNINIT_TRAP if reading uninitialized storage can cause problems ++# other than simply getting garbage data ++# -DUSE_LTZ=0 to build zdump with the system time zone library ++# Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below. ++# -DZIC_BLOAT_DEFAULT=\"fat\" to default zic's -b option to "fat", and ++# similarly for "slim". Fat TZif files work around incompatibilities ++# and bugs in some TZif readers, notably older ones that ++# ignore or otherwise mishandle 64-bit data in TZif files; ++# however, fat TZif files may trigger bugs in newer TZif readers. ++# Slim TZif files are more efficient, and are the default. ++# -DZIC_MAX_ABBR_LEN_WO_WARN=3 ++# (or some other number) to set the maximum time zone abbreviation length ++# that zic will accept without a warning (the default is 6) ++# $(GCC_DEBUG_FLAGS) if you are using recent GCC and want lots of checking ++# ++# * Options marked "*" can be omitted if your compiler is C23 compatible. ++# ++# Select instrumentation via "make GCC_INSTRUMENT='whatever'". ++GCC_INSTRUMENT = \ ++ -fsanitize=undefined -fsanitize-address-use-after-scope \ ++ -fsanitize-undefined-trap-on-error -fstack-protector ++# Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow. ++GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \ ++ $(GCC_INSTRUMENT) \ ++ -Wall -Wextra \ ++ -Walloc-size-larger-than=100000 -Warray-bounds=2 \ ++ -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \ ++ -Wdeclaration-after-statement -Wdouble-promotion \ ++ -Wduplicated-branches -Wduplicated-cond \ ++ -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \ ++ -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op \ ++ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ ++ -Wnull-dereference \ ++ -Wold-style-definition -Woverlength-strings -Wpointer-arith \ ++ -Wshadow -Wshift-overflow=2 -Wstrict-overflow \ ++ -Wstrict-prototypes -Wstringop-overflow=4 \ ++ -Wstringop-truncation -Wsuggest-attribute=cold \ ++ -Wsuggest-attribute=const -Wsuggest-attribute=format \ ++ -Wsuggest-attribute=malloc \ ++ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \ ++ -Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \ ++ -Wvariadic-macros -Wvla -Wwrite-strings \ ++ -Wno-address -Wno-format-nonliteral -Wno-sign-compare \ ++ -Wno-type-limits ++# ++# If your system has a "GMT offset" field in its "struct tm"s ++# (or if you decide to add such a field in your system's "time.h" file), ++# add the name to a define such as ++# -DTM_GMTOFF=tm_gmtoff ++# to the end of the "CFLAGS=" line. If not defined, the code attempts to ++# guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this. ++# Similarly, if your system has a "zone abbreviation" field, define ++# -DTM_ZONE=tm_zone ++# and define NO_TM_ZONE to suppress any guessing. Although these two fields ++# not required by POSIX, a future version of POSIX is planned to require them ++# and they are widely available on GNU/Linux and BSD systems. ++# ++# The next batch of options control support for external variables ++# exported by tzcode. In practice these variables are less useful ++# than TM_GMTOFF and TM_ZONE. However, most of them are standardized. ++# # ++# # To omit or support the external variable "tzname", add one of: ++# # -DHAVE_TZNAME=0 # do not support "tzname" ++# # -DHAVE_TZNAME=1 # support "tzname", which is defined by system library ++# # -DHAVE_TZNAME=2 # support and define "tzname" ++# # to the "CFLAGS=" line. "tzname" is required by POSIX 1988 and later. ++# # If not defined, the code attempts to guess HAVE_TZNAME from other macros. ++# # Warning: unless time_tz is also defined, HAVE_TZNAME=1 can cause ++# # crashes when combined with some platforms' standard libraries, ++# # presumably due to memory allocation issues. ++# # ++# # To omit or support the external variables "timezone" and "daylight", add ++# # -DUSG_COMPAT=0 # do not support ++# # -DUSG_COMPAT=1 # support, and variables are defined by system library ++# # -DUSG_COMPAT=2 # support and define variables ++# # to the "CFLAGS=" line; "timezone" and "daylight" are inspired by ++# # Unix Systems Group code and are required by POSIX 2008 (with XSI) and later. ++# # If not defined, the code attempts to guess USG_COMPAT from other macros. ++# # ++# # To support the external variable "altzone", add ++# # -DALTZONE=0 # do not support ++# # -DALTZONE=1 # support "altzone", which is defined by system library ++# # -DALTZONE=2 # support and define "altzone" ++# # to the end of the "CFLAGS=" line; although "altzone" appeared in ++# # System V Release 3.1 it has not been standardized. ++# # If not defined, the code attempts to guess ALTZONE from other macros. ++# ++# If you want functions that were inspired by early versions of X3J11's work, ++# add ++# -DSTD_INSPIRED ++# to the end of the "CFLAGS=" line. This arranges for the following ++# functions to be added to the time conversion library. ++# "offtime" is like "gmtime" except that it accepts a second (long) argument ++# that gives an offset to add to the time_t when converting it. ++# "timelocal" is equivalent to "mktime". ++# "timeoff" is like "timegm" except that it accepts a second (long) argument ++# that gives an offset to use when converting to a time_t. ++# "posix2time" and "time2posix" are described in an included manual page. ++# X3J11's work does not describe any of these functions. ++# These functions may well disappear in future releases of the time ++# conversion package. ++# ++# If you don't want functions that were inspired by NetBSD, add ++# -DNETBSD_INSPIRED=0 ++# to the end of the "CFLAGS=" line. Otherwise, the functions ++# "localtime_rz", "mktime_z", "tzalloc", and "tzfree" are added to the ++# time library, and if STD_INSPIRED is also defined the functions ++# "posix2time_z" and "time2posix_z" are added as well. ++# The functions ending in "_z" (or "_rz") are like their unsuffixed ++# (or suffixed-by-"_r") counterparts, except with an extra first ++# argument of opaque type timezone_t that specifies the timezone. ++# "tzalloc" allocates a timezone_t value, and "tzfree" frees it. ++# ++# If you want to allocate state structures in localtime, add ++# -DALL_STATE ++# to the end of the "CFLAGS=" line. Storage is obtained by calling malloc. ++# ++# NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put ++# out by the National Institute of Standards and Technology ++# which claims to test C and Posix conformance. If you want to pass PCTS, add ++# -DPCTS ++# to the end of the "CFLAGS=" line. ++# ++# If you want strict compliance with XPG4 as of 1994-04-09, add ++# -DXPG4_1994_04_09 ++# to the end of the "CFLAGS=" line. This causes "strftime" to always return ++# 53 as a week number (rather than 52 or 53) for January days before ++# January's first Monday when a "%V" format is used and January 1 ++# falls on a Friday, Saturday, or Sunday. ++ ++CFLAGS= ++ ++# Linker flags. Default to $(LFLAGS) for backwards compatibility ++# to release 2012h and earlier. ++ ++LDFLAGS= $(LFLAGS) ++ ++# For leap seconds, this Makefile uses LEAPSECONDS='-L leapseconds' in ++# submake command lines. The default is no leap seconds. ++ ++LEAPSECONDS= ++ ++# The zic command and its arguments. ++ ++zic= ./zic ++ZIC= $(zic) $(ZFLAGS) ++ ++# To shrink the size of installed TZif files, ++# append "-r @N" to omit data before N-seconds-after-the-Epoch. ++# To grow the files and work around bugs in older applications, ++# possibly at the expense of introducing bugs in newer ones, ++# append "-b fat"; see ZIC_BLOAT_DEFAULT above. ++# See the zic man page for more about -b and -r. ++ZFLAGS= ++ ++# How to use zic to install TZif files. ++ ++ZIC_INSTALL= $(ZIC) -d '$(DESTDIR)$(TZDIR)' $(LEAPSECONDS) ++ ++# The name of a Posix-compliant 'awk' on your system. ++# mawk 1.3.3 and Solaris 10 /usr/bin/awk do not work. ++# Also, it is better (though not essential) if 'awk' supports UTF-8, ++# and unfortunately mawk and busybox awk do not support UTF-8. ++# Try AWK=gawk or AWK=nawk if your awk has the abovementioned problems. ++AWK= awk ++ ++# The full path name of a Posix-compliant shell, preferably one that supports ++# the Korn shell's 'select' statement as an extension. ++# These days, Bash is the most popular. ++# It should be OK to set this to /bin/sh, on platforms where /bin/sh ++# lacks 'select' or doesn't completely conform to Posix, but /bin/bash ++# is typically nicer if it works. ++KSHELL= /bin/bash ++ ++# Name of curl , used for HTML validation. ++CURL= curl ++ ++# Name of GNU Privacy Guard , used to sign distributions. ++GPG= gpg ++ ++# This expensive test requires USE_LTZ. ++# To suppress it, define this macro to be empty. ++CHECK_TIME_T_ALTERNATIVES = check_time_t_alternatives ++ ++# SAFE_CHAR is a regular expression that matches a safe character. ++# Some parts of this distribution are limited to safe characters; ++# others can use any UTF-8 character. ++# For now, the safe characters are a safe subset of ASCII. ++# The caller must set the shell variable 'sharp' to the character '#', ++# since Makefile macros cannot contain '#'. ++# TAB_CHAR is a single tab character, in single quotes. ++TAB_CHAR= ' ' ++SAFE_CHARSET1= $(TAB_CHAR)' !\"'$$sharp'$$%&'\''()*+,./0123456789:;<=>?@' ++SAFE_CHARSET2= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`' ++SAFE_CHARSET3= 'abcdefghijklmnopqrstuvwxyz{|}~' ++SAFE_CHARSET= $(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3) ++SAFE_CHAR= '[]'$(SAFE_CHARSET)'-]' ++ ++# These characters are Latin-1, and so are likely to be displayable ++# even in editors with limited character sets. ++UNUSUAL_OK_LATIN_1 = «°±»½¾× ++# This IPA symbol is represented in Unicode as the composition of ++# U+0075 and U+032F, and U+032F is not considered alphabetic by some ++# grep implementations that do not grok composition. ++UNUSUAL_OK_IPA = u̯ ++# Non-ASCII non-letters that OK_CHAR allows, as these characters are ++# useful in commentary. ++UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)$(UNUSUAL_OK_IPA) ++ ++# Put this in a bracket expression to match spaces. ++s = [:space:] ++ ++# OK_CHAR matches any character allowed in the distributed files. ++# This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and ++# multibyte letters are also allowed so that commentary can contain a ++# few safe symbols and people's names and can quote non-English sources. ++# Other non-letters are limited to ASCII renderings for the ++# convenience of maintainers using XEmacs 21.5.34, which by default ++# mishandles Unicode characters U+0100 and greater. ++OK_CHAR= '[][:alpha:]$(UNUSUAL_OK_CHARSET)'$(SAFE_CHARSET)'-]' ++ ++# SAFE_LINE matches a line of safe characters. ++# SAFE_SHARP_LINE is similar, except any OK character can follow '#'; ++# this is so that comments can contain non-ASCII characters. ++# OK_LINE matches a line of OK characters. ++SAFE_LINE= '^'$(SAFE_CHAR)'*$$' ++SAFE_SHARP_LINE='^'$(SAFE_CHAR)'*('$$sharp$(OK_CHAR)'*)?$$' ++OK_LINE= '^'$(OK_CHAR)'*$$' ++ ++# Flags to give 'tar' when making a distribution. ++# Try to use flags appropriate for GNU tar. ++GNUTARFLAGS= --format=pax --pax-option='delete=atime,delete=ctime' \ ++ --numeric-owner --owner=0 --group=0 \ ++ --mode=go+u,go-w --sort=name ++TARFLAGS= `if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \ ++ then echo $(GNUTARFLAGS); \ ++ else :; \ ++ fi` ++ ++# Flags to give 'gzip' when making a distribution. ++GZIPFLAGS= -9n ++ ++# When comparing .tzs files, use GNU diff's -F'^TZ=' option if supported. ++# This makes it easier to see which Zone has been affected. ++DIFF_TZS= diff -u$$(! diff -u -F'^TZ=' - - <>/dev/null >&0 2>&1 \ ++ || echo ' -F^TZ=') ++ ++############################################################################### ++ ++#MAKE= make ++ ++cc= cc ++CC= $(cc) -DTZDIR='"$(TZDIR)"' ++ ++AR= ar ++ ++# ':' on typical hosts; 'ranlib' on the ancient hosts that still need ranlib. ++RANLIB= : ++ ++TZCOBJS= zic.o ++TZDOBJS= zdump.o localtime.o asctime.o strftime.o ++DATEOBJS= date.o localtime.o strftime.o asctime.o ++LIBSRCS= localtime.c asctime.c difftime.c strftime.c ++LIBOBJS= localtime.o asctime.o difftime.o strftime.o ++HEADERS= tzfile.h private.h ++NONLIBSRCS= zic.c zdump.c ++NEWUCBSRCS= date.c ++SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) \ ++ tzselect.ksh workman.sh ++MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \ ++ tzfile.5 tzselect.8 zic.8 zdump.8 ++MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \ ++ time2posix.3.txt \ ++ tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \ ++ date.1.txt ++COMMON= calendars CONTRIBUTING LICENSE Makefile \ ++ NEWS README SECURITY theory.html version ++WEB_PAGES= tz-art.html tz-how-to.html tz-link.html ++CHECK_WEB_PAGES=check_theory.html check_tz-art.html \ ++ check_tz-how-to.html check_tz-link.html ++DOCS= $(MANS) date.1 $(MANTXTS) $(WEB_PAGES) ++PRIMARY_YDATA= africa antarctica asia australasia \ ++ europe northamerica southamerica ++YDATA= $(PRIMARY_YDATA) etcetera ++NDATA= factory ++TDATA_TO_CHECK= $(YDATA) $(NDATA) backward ++TDATA= $(YDATA) $(NDATA) $(BACKWARD) ++ZONETABLES= zone1970.tab zone.tab ++TABDATA= iso3166.tab $(TZDATA_TEXT) $(ZONETABLES) ++LEAP_DEPS= leapseconds.awk leap-seconds.list ++TZDATA_ZI_DEPS= ziguard.awk zishrink.awk version $(TDATA) \ ++ $(PACKRATDATA) $(PACKRATLIST) ++DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA) $(PACKRATLIST) ++DATA= $(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \ ++ leapseconds $(ZONETABLES) ++AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk \ ++ ziguard.awk zishrink.awk ++MISC= $(AWK_SCRIPTS) ++TZS_YEAR= 2050 ++TZS_CUTOFF_FLAG= -c $(TZS_YEAR) ++TZS= to$(TZS_YEAR).tzs ++TZS_NEW= to$(TZS_YEAR)new.tzs ++TZS_DEPS= $(YDATA) asctime.c localtime.c \ ++ private.h tzfile.h zdump.c zic.c ++TZDATA_DIST = $(COMMON) $(DATA) $(MISC) ++# EIGHT_YARDS is just a yard short of the whole ENCHILADA. ++EIGHT_YARDS = $(TZDATA_DIST) $(DOCS) $(SOURCES) tzdata.zi ++ENCHILADA = $(EIGHT_YARDS) $(TZS) ++ ++# Consult these files when deciding whether to rebuild the 'version' file. ++# This list is not the same as the output of 'git ls-files', since ++# .gitignore is not distributed. ++VERSION_DEPS= \ ++ calendars CONTRIBUTING LICENSE Makefile NEWS README SECURITY \ ++ africa antarctica asctime.c asia australasia \ ++ backward backzone \ ++ checklinks.awk checktab.awk \ ++ date.1 date.c difftime.c \ ++ etcetera europe factory iso3166.tab \ ++ leap-seconds.list leapseconds.awk localtime.c \ ++ newctime.3 newstrftime.3 newtzset.3 northamerica \ ++ private.h southamerica strftime.c theory.html \ ++ time2posix.3 tz-art.html tz-how-to.html tz-link.html \ ++ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \ ++ workman.sh zdump.8 zdump.c zic.8 zic.c \ ++ ziguard.awk zishrink.awk \ ++ zone.tab zone1970.tab ++ ++# And for the benefit of csh users on systems that assume the user ++# shell should be used to handle commands in Makefiles. . . ++ ++SHELL= /bin/sh ++ ++all: tzselect zic zdump libtz.a $(TABDATA) \ ++ vanguard.zi main.zi rearguard.zi ++ ++ALL: all date $(ENCHILADA) ++ ++install: all $(DATA) $(REDO) $(MANS) ++ mkdir -p '$(DESTDIR)$(BINDIR)' \ ++ '$(DESTDIR)$(ZDUMPDIR)' '$(DESTDIR)$(ZICDIR)' \ ++ '$(DESTDIR)$(LIBDIR)' \ ++ '$(DESTDIR)$(MANDIR)/man3' '$(DESTDIR)$(MANDIR)/man5' \ ++ '$(DESTDIR)$(MANDIR)/man8' ++ $(ZIC_INSTALL) -l $(LOCALTIME) \ ++ `case '$(POSIXRULES)' in ?*) echo '-p';; esac \ ++ ` $(POSIXRULES) \ ++ -t '$(DESTDIR)$(TZDEFAULT)' ++ cp -f $(TABDATA) '$(DESTDIR)$(TZDIR)/.' ++ cp tzselect '$(DESTDIR)$(BINDIR)/.' ++ cp zdump '$(DESTDIR)$(ZDUMPDIR)/.' ++ cp zic '$(DESTDIR)$(ZICDIR)/.' ++ cp libtz.a '$(DESTDIR)$(LIBDIR)/.' ++ $(RANLIB) '$(DESTDIR)$(LIBDIR)/libtz.a' ++ cp -f newctime.3 newtzset.3 '$(DESTDIR)$(MANDIR)/man3/.' ++ cp -f tzfile.5 '$(DESTDIR)$(MANDIR)/man5/.' ++ cp -f tzselect.8 zdump.8 zic.8 '$(DESTDIR)$(MANDIR)/man8/.' ++ ++INSTALL: ALL install date.1 ++ mkdir -p '$(DESTDIR)$(BINDIR)' '$(DESTDIR)$(MANDIR)/man1' ++ cp date '$(DESTDIR)$(BINDIR)/.' ++ cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.' ++ ++# Calculate version number from git, if available. ++# Otherwise, use $(VERSION) unless it is "unknown" and there is already ++# a 'version' file, in which case reuse the existing 'version' contents ++# and append "-dirty" if the contents do not already end in "-dirty". ++version: $(VERSION_DEPS) ++ { (type git) >/dev/null 2>&1 && \ ++ V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \ ++ --abbrev=7 --dirty` || \ ++ if test '$(VERSION)' = unknown && V=`cat $@`; then \ ++ case $$V in *-dirty);; *) V=$$V-dirty;; esac; \ ++ else \ ++ V='$(VERSION)'; \ ++ fi; } && \ ++ printf '%s\n' "$$V" >$@.out ++ mv $@.out $@ ++ ++# These files can be tailored by setting BACKWARD, PACKRATDATA, PACKRATLIST. ++vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS) ++ $(AWK) \ ++ -v DATAFORM=`expr $@ : '\(.*\).zi'` \ ++ -v PACKRATDATA='$(PACKRATDATA)' \ ++ -v PACKRATLIST='$(PACKRATLIST)' \ ++ -f ziguard.awk \ ++ $(TDATA) $(PACKRATDATA) >$@.out ++ mv $@.out $@ ++# This file has a version comment that attempts to capture any tailoring ++# via BACKWARD, DATAFORM, PACKRATDATA, PACKRATLIST, and REDO. ++tzdata.zi: $(DATAFORM).zi version zishrink.awk ++ version=`sed 1q version` && \ ++ LC_ALL=C $(AWK) \ ++ -v dataform='$(DATAFORM)' \ ++ -v deps='$(DSTDATA_ZI_DEPS) zishrink.awk' \ ++ -v redo='$(REDO)' \ ++ -v version="$$version" \ ++ -f zishrink.awk \ ++ $(DATAFORM).zi >$@.out ++ mv $@.out $@ ++ ++version.h: version ++ VERSION=`cat version` && printf '%s\n' \ ++ 'static char const PKGVERSION[]="($(PACKAGE)) ";' \ ++ "static char const TZVERSION[]=\"$$VERSION\";" \ ++ 'static char const REPORT_BUGS_TO[]="$(BUGEMAIL)";' \ ++ >$@.out ++ mv $@.out $@ ++ ++zdump: $(TZDOBJS) ++ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZDOBJS) $(LDLIBS) ++ ++zic: $(TZCOBJS) ++ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS) ++ ++leapseconds: $(LEAP_DEPS) ++ $(AWK) -v EXPIRES_LINE=$(EXPIRES_LINE) \ ++ -f leapseconds.awk leap-seconds.list >$@.out ++ mv $@.out $@ ++ ++# Arguments to pass to submakes of install_data. ++# They can be overridden by later submake arguments. ++INSTALLARGS = \ ++ BACKWARD='$(BACKWARD)' \ ++ DESTDIR='$(DESTDIR)' \ ++ LEAPSECONDS='$(LEAPSECONDS)' \ ++ PACKRATDATA='$(PACKRATDATA)' \ ++ PACKRATLIST='$(PACKRATLIST)' \ ++ TZDEFAULT='$(TZDEFAULT)' \ ++ TZDIR='$(TZDIR)' \ ++ ZIC='$(ZIC)' ++ ++INSTALL_DATA_DEPS = zic leapseconds tzdata.zi ++ ++# 'make install_data' installs one set of TZif files. ++install_data: $(INSTALL_DATA_DEPS) ++ $(ZIC_INSTALL) tzdata.zi ++ ++posix_only: $(INSTALL_DATA_DEPS) ++ $(MAKE) $(INSTALLARGS) LEAPSECONDS= install_data ++ ++right_only: $(INSTALL_DATA_DEPS) ++ $(MAKE) $(INSTALLARGS) LEAPSECONDS='-L leapseconds' \ ++ install_data ++ ++# In earlier versions of this makefile, the other two directories were ++# subdirectories of $(TZDIR). However, this led to configuration errors. ++# For example, with posix_right under the earlier scheme, ++# TZ='right/Australia/Adelaide' got you localtime with leap seconds, ++# but gmtime without leap seconds, which led to problems with applications ++# like sendmail that subtract gmtime from localtime. ++# Therefore, the other two directories are now siblings of $(TZDIR). ++# You must replace all of $(TZDIR) to switch from not using leap seconds ++# to using them, or vice versa. ++right_posix: right_only ++ rm -fr '$(DESTDIR)$(TZDIR)-leaps' ++ ln -s '$(TZDIR_BASENAME)' '$(DESTDIR)$(TZDIR)-leaps' || \ ++ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only ++ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only ++ ++posix_right: posix_only ++ rm -fr '$(DESTDIR)$(TZDIR)-posix' ++ ln -s '$(TZDIR_BASENAME)' '$(DESTDIR)$(TZDIR)-posix' || \ ++ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only ++ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only ++ ++zones: $(REDO) ++ ++# dummy.zd is not a real file; it is mentioned here only so that the ++# top-level 'make' does not have a syntax error. ++ZDS = dummy.zd ++# Rule used only by submakes invoked by the $(TZS_NEW) rule. ++# It is separate so that GNU 'make -j' can run instances in parallel. ++$(ZDS): zdump ++ ./zdump -i $(TZS_CUTOFF_FLAG) '$(wd)/'$$(expr $@ : '\(.*\).zd') \ ++ >$@ ++ ++TZS_NEW_DEPS = tzdata.zi zdump zic ++$(TZS_NEW): $(TZS_NEW_DEPS) ++ rm -fr tzs$(TZS_YEAR).dir ++ mkdir tzs$(TZS_YEAR).dir ++ $(zic) -d tzs$(TZS_YEAR).dir tzdata.zi ++ $(AWK) '/^L/{print "Link\t" $$2 "\t" $$3}' \ ++ tzdata.zi | LC_ALL=C sort >$@.out ++ wd=`pwd` && \ ++ x=`$(AWK) '/^Z/{print "tzs$(TZS_YEAR).dir/" $$2 ".zd"}' \ ++ tzdata.zi \ ++ | LC_ALL=C sort -t . -k 2,2` && \ ++ set x $$x && \ ++ shift && \ ++ ZDS=$$* && \ ++ $(MAKE) wd="$$wd" TZS_CUTOFF_FLAG="$(TZS_CUTOFF_FLAG)" \ ++ ZDS="$$ZDS" $$ZDS && \ ++ sed 's,^TZ=".*\.dir/,TZ=",' $$ZDS >>$@.out ++ rm -fr tzs$(TZS_YEAR).dir ++ mv $@.out $@ ++ ++# If $(TZS) exists but 'make check_tzs' fails, a maintainer should inspect the ++# failed output and fix the inconsistency, perhaps by running 'make force_tzs'. ++$(TZS): ++ touch $@ ++ ++force_tzs: $(TZS_NEW) ++ cp $(TZS_NEW) $(TZS) ++ ++libtz.a: $(LIBOBJS) ++ rm -f $@ ++ $(AR) -rc $@ $(LIBOBJS) ++ $(RANLIB) $@ ++ ++date: $(DATEOBJS) ++ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(DATEOBJS) $(LDLIBS) ++ ++tzselect: tzselect.ksh version ++ VERSION=`cat version` && sed \ ++ -e 's|#!/bin/bash|#!$(KSHELL)|g' \ ++ -e 's|AWK=[^}]*|AWK='\''$(AWK)'\''|g' \ ++ -e 's|\(PKGVERSION\)=.*|\1='\''($(PACKAGE)) '\''|' \ ++ -e 's|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \ ++ -e 's|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \ ++ -e 's|\(TZVERSION\)=.*|\1='"$$VERSION"'|' \ ++ <$@.ksh >$@.out ++ chmod +x $@.out ++ mv $@.out $@ ++ ++check: check_back check_mild ++check_mild: check_character_set check_white_space check_links \ ++ check_name_lengths check_slashed_abbrs check_sorted \ ++ check_tables check_web check_ziguard check_zishrink check_tzs ++ ++check_character_set: $(ENCHILADA) ++ test ! '$(UTF8_LOCALE)' || \ ++ ! printf 'A\304\200B\n' | \ ++ LC_ALL='$(UTF8_LOCALE)' grep -q '^A.B$$' >/dev/null 2>&1 || { \ ++ LC_ALL='$(UTF8_LOCALE)' && export LC_ALL && \ ++ sharp='#' && \ ++ ! grep -Env $(SAFE_LINE) $(MANS) date.1 $(MANTXTS) \ ++ $(MISC) $(SOURCES) $(WEB_PAGES) \ ++ CONTRIBUTING LICENSE README SECURITY \ ++ version tzdata.zi && \ ++ ! grep -Env $(SAFE_LINE)'|^UNUSUAL_OK_'$(OK_CHAR)'*$$' \ ++ Makefile && \ ++ ! grep -Env $(SAFE_SHARP_LINE) $(TDATA_TO_CHECK) backzone \ ++ leapseconds zone.tab && \ ++ ! grep -Env $(OK_LINE) $(ENCHILADA); \ ++ } ++ touch $@ ++ ++check_white_space: $(ENCHILADA) ++ patfmt=' \t|[\f\r\v]' && pat=`printf "$$patfmt\\n"` && \ ++ ! grep -En "$$pat" \ ++ $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list) ++ ! grep -n '[$s]$$' \ ++ $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list) ++ touch $@ ++ ++PRECEDES_FILE_NAME = ^(Zone|Link[$s]+[^$s]+)[$s]+ ++FILE_NAME_COMPONENT_TOO_LONG = $(PRECEDES_FILE_NAME)[^$s]*[^/$s]{15} ++ ++check_name_lengths: $(TDATA_TO_CHECK) backzone ++ ! grep -En '$(FILE_NAME_COMPONENT_TOO_LONG)' \ ++ $(TDATA_TO_CHECK) backzone ++ touch $@ ++ ++PRECEDES_STDOFF = ^(Zone[$s]+[^$s]+)?[$s]+ ++STDOFF = [-+]?[0-9:.]+ ++RULELESS_SAVE = (-|$(STDOFF)[sd]?) ++RULELESS_SLASHED_ABBRS = \ ++ $(PRECEDES_STDOFF)$(STDOFF)[$s]+$(RULELESS_SAVE)[$s]+[^$s]*/ ++ ++check_slashed_abbrs: $(TDATA_TO_CHECK) ++ ! grep -En '$(RULELESS_SLASHED_ABBRS)' $(TDATA_TO_CHECK) ++ touch $@ ++ ++CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; } ++ ++check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab ++ $(AWK) '/^Link/ {printf "%.5d %s\n", g, $$3} !/./ {g++}' \ ++ backward | LC_ALL=C sort -cu ++ $(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu ++ touch $@ ++ ++check_back: checklinks.awk $(TDATA_TO_CHECK) ++ $(AWK) \ ++ -v DATAFORM=$(DATAFORM) \ ++ -v backcheck=backward \ ++ -f checklinks.awk $(TDATA_TO_CHECK) ++ touch $@ ++ ++check_links: checklinks.awk tzdata.zi ++ $(AWK) \ ++ -v DATAFORM=$(DATAFORM) \ ++ -f checklinks.awk tzdata.zi ++ touch $@ ++ ++check_tables: checktab.awk $(YDATA) backward $(ZONETABLES) ++ for tab in $(ZONETABLES); do \ ++ test "$$tab" = zone.tab && links='$(BACKWARD)' || links=''; \ ++ $(AWK) -f checktab.awk -v zone_table=$$tab $(YDATA) $$links \ ++ || exit; \ ++ done ++ touch $@ ++ ++check_tzs: $(TZS) $(TZS_NEW) ++ if test -s $(TZS); then \ ++ $(DIFF_TZS) $(TZS) $(TZS_NEW); \ ++ else \ ++ cp $(TZS_NEW) $(TZS); \ ++ fi ++ touch $@ ++ ++check_web: $(CHECK_WEB_PAGES) ++check_theory.html: theory.html ++check_tz-art.html: tz-art.html ++check_tz-how-to.html: tz-how-to.html ++check_tz-link.html: tz-link.html ++check_theory.html check_tz-art.html check_tz-how-to.html check_tz-link.html: ++ $(CURL) -sS --url https://validator.w3.org/nu/ -F out=gnu \ ++ -F file=@$$(expr $@ : 'check_\(.*\)') -o $@.out && \ ++ test ! -s $@.out || { cat $@.out; exit 1; } ++ mv $@.out $@ ++ ++check_ziguard: rearguard.zi vanguard.zi ziguard.awk ++ $(AWK) -v DATAFORM=rearguard -f ziguard.awk vanguard.zi | \ ++ diff -u rearguard.zi - ++ $(AWK) -v DATAFORM=vanguard -f ziguard.awk rearguard.zi | \ ++ diff -u vanguard.zi - *** 13344 LINES SKIPPED ***