44# Package name for the code distribution.
55PACKAGE = tzcode
66
7- # Version numbers of the code and data distributions .
8- VERSION = 2016f
7+ # Version number for the distribution, overridden in the 'tarballs' rule below .
8+ VERSION = unknown
99
1010# Email address for bug reports.
1111@@ -240,7 +240,7 @@ GCC_DEBUG_FLAGS = -Dlint -g3 -O3 -fno-common -fstrict-aliasing \
240240CFLAGS =
241241
242242# Linker flags. Default to $(LFLAGS) for backwards compatibility
243- # to tzcode2012h and earlier.
243+ # to release 2012h and earlier.
244244
245245LDFLAGS = $(LFLAGS )
246246
@@ -256,7 +256,7 @@ ZIC= $(zic) $(ZFLAGS)
256256
257257ZFLAGS =
258258
259- # How to use zic to install tzdata binary files.
259+ # How to use zic to install tz binary files.
260260
261261ZIC_INSTALL = $(ZIC ) -y $(YEARISTYPE ) -d $(DESTDIR )$(TZDIR ) $(LEAPSECONDS )
262262
@@ -272,16 +272,16 @@ AWK= awk
272272KSHELL = /bin/bash
273273
274274# The path where SGML DTDs are kept and the catalog file(s) to use when
275- # validating. The default is appropriate for Ubuntu 13.10 .
275+ # validating. The default should work on both Debian and Red Hat .
276276SGML_TOPDIR = /usr
277277SGML_DTDDIR = $(SGML_TOPDIR ) /share/xml/w3c-sgml-lib/schema/dtd
278278SGML_SEARCH_PATH = $(SGML_DTDDIR ) /REC-html401-19991224
279279SGML_CATALOG_FILES = \
280- $(SGML_TOPDIR ) /share/doc/w3-recs/html/www.w3.org/TR/1999/REC-html401-19991224/HTML4.cat
280+ $(SGML_TOPDIR ) /share/doc/w3-recs/html/www.w3.org/TR/1999/REC-html401-19991224/HTML4.cat: $( SGML_TOPDIR ) /share/sgml/html/4.01/HTML4.cat
281281
282282# The name, arguments and environment of a program to validate your web pages.
283- # See <http://www.jclark.com/sp /> for a validator, and
284- # <http ://validator.w3.org/source/> for a validation library.
283+ # See <http://openjade.sourceforge.net/doc /> for a validator, and
284+ # <https ://validator.w3.org/source/> for a validation library.
285285VALIDATE = nsgmls
286286VALIDATE_FLAGS = -s -B -wall -wno-unused-param
287287VALIDATE_ENV = \
@@ -326,7 +326,7 @@ OK_LINE= '^'$(OK_CHAR)'*$$'
326326
327327# Flags to give 'tar' when making a distribution.
328328# Try to use flags appropriate for GNU tar.
329- GNUTARFLAGS= --numeric-owner --owner=0 --group=0 --mode=go+u,go-w
329+ GNUTARFLAGS= --numeric-owner --owner=0 --group=0 --mode=go+u,go-w --sort=name
330330TARFLAGS= ` if tar $(GNUTARFLAGS ) --version >/dev/null 2>&1; \
331331 then echo $(GNUTARFLAGS ) ; \
332332 else :; \
@@ -356,7 +356,7 @@ HEADERS= tzfile.h private.h
356356NONLIBSRCS= zic.c zdump.c
357357NEWUCBSRCS= date.c strftime.c
358358SOURCES= $( HEADERS) $( LIBSRCS) $( NONLIBSRCS) $( NEWUCBSRCS) \
359- tzselect.ksh workman.sh
359+ tzselect.ksh version workman.sh
360360MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \
361361 tzfile.5 tzselect.8 zic.8 zdump.8
362362MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \
@@ -378,7 +378,32 @@ DATA= $(YDATA) $(NDATA) backzone $(TABDATA) \
378378 leap-seconds.list yearistype.sh
379379AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk
380380MISC= $( AWK_SCRIPTS) zoneinfo2tdf.pl
381- ENCHILADA= $( COMMON) $( DOCS) $( SOURCES) $( DATA) $( MISC)
381+ TZS_YEAR= 2050
382+ TZS= to$( TZS_YEAR) .tzs
383+ TZS_NEW= to$( TZS_YEAR) new.tzs
384+ TZS_DEPS= $( PRIMARY_YDATA) asctime.c localtime.c \
385+ private.h tzfile.h zdump.c zic.c
386+ ENCHILADA= $( COMMON) $( DOCS) $( SOURCES) $( DATA) $( MISC) $( TZS)
387+
388+ # Consult these files when deciding whether to rebuild the 'version' file.
389+ # This list is not the same as the output of 'git ls-files', since
390+ # .gitignore is not distributed.
391+ VERSION_DEPS= \
392+ CONTRIBUTING LICENSE Makefile NEWS README Theory \
393+ africa antarctica asctime.c asia australasia \
394+ backward backzone \
395+ checklinks.awk checktab.awk \
396+ date.1 date.c difftime.c \
397+ etcetera europe factory iso3166.tab \
398+ leap-seconds.list leapseconds.awk localtime.c \
399+ newctime.3 newstrftime.3 newtzset.3 northamerica \
400+ pacificnew private.h \
401+ southamerica strftime.c systemv \
402+ time2posix.3 tz-art.htm tz-how-to.html tz-link.htm \
403+ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
404+ workman.sh yearistype.sh \
405+ zdump.8 zdump.c zic.8 zic.c \
406+ zone.tab zone1970.tab zoneinfo2tdf.pl
382407
383408# And for the benefit of csh users on systems that assume the user
384409# shell should be used to handle commands in Makefiles. . .
@@ -408,9 +433,16 @@ INSTALL: ALL install date.1
408433 cp date $( DESTDIR) $( BINDIR) /.
409434 cp -f date.1 $( DESTDIR) $( MANDIR) /man1/.
410435
411- version.h:
436+ version: $( VERSION_DEPS)
437+ { V=$$ (git describe --match ' [0-9][0-9][0-9][0-9][a-z]*' \
438+ --abbrev=7 --dirty) || \
439+ V=$( VERSION) ; } && \
440+ printf ' %s\n' " $$ V" > $@
441+
442+ version.h: version
412443 (echo ' static char const PKGVERSION[]="($(PACKAGE)) ";' && \
413- echo ' static char const TZVERSION[]="$(VERSION)";' && \
444+ printf ' static char const TZVERSION[]="%s";\n' \
445+ " $$ (cat version)" && \
414446 echo ' static char const REPORT_BUGS_TO[]="$(BUGEMAIL)";' ) > $@
415447
416448zdump: $( TZDOBJS)
@@ -477,26 +509,47 @@ posix_packrat:
477509
478510zones: $( REDO)
479511
512+ $( TZS_NEW) : $( TDATA) zdump zic
513+ mkdir -p tzs.dir
514+ $( zic) -d tzs.dir $( TDATA)
515+ $( AWK) ' /^Link/{print $$1 "\t" $$2 "\t" $$3}' \
516+ $( TDATA) | LC_ALL=C sort > $@ .out
517+ zones=$$ ($( AWK) -v wd=" $$ (pwd)" \
518+ ' /^Zone/{print wd "/tzs.dir/" $$2}' $( TDATA) \
519+ | LC_ALL=C sort) && \
520+ ./zdump -i -c $( TZS_YEAR) $$ zones >> $@ .out
521+ sed ' s,^TZ=".*tzs\.dir/,TZ=",' $@ .out > $@
522+ rm -fr tzs.dir $@ .out
523+
524+ # If $(TZS) does not already exist (e.g., old-format tarballs), create it.
525+ # If it exists but 'make check_tzs' fails, a maintainer should inspect the
526+ # failed output and fix the inconsistency, perhaps by running 'make force_tzs'.
527+ $( TZS) :
528+ $( MAKE) force_tzs
529+
530+ force_tzs: $( TZS_NEW)
531+ cp $( TZS_NEW) $( TZS)
532+
480533libtz.a: $( LIBOBJS)
481534 $( AR) ru $@ $( LIBOBJS)
482535 $( RANLIB) $@
483536
484537date: $( DATEOBJS)
485538 $( CC) -o $@ $( CFLAGS) $( LDFLAGS) $( DATEOBJS) $( LDLIBS)
486539
487- tzselect: tzselect.ksh
540+ tzselect: tzselect.ksh version
488541 sed \
489542 -e ' s|#!/bin/bash|#!$(KSHELL)|g' \
490543 -e ' s|AWK=[^}]*|AWK=$(AWK)|g' \
491544 -e ' s|\(PKGVERSION\)=.*|\1=' \' ' ($(PACKAGE)) ' \' ' |' \
492545 -e ' s|\(REPORT_BUGS_TO\)=.*|\1=$(BUGEMAIL)|' \
493546 -e ' s|TZDIR=[^}]*|TZDIR=$(TZDIR)|' \
494- -e ' s|\(TZVERSION\)=.*|\1=$(VERSION) |' \
495- < $? > $@
547+ -e ' s|\(TZVERSION\)=.*|\1=' " $$ (cat version) " ' |' \
548+ < $@ .ksh > $@
496549 chmod +x $@
497550
498551check: check_character_set check_white_space check_links check_sorted \
499- check_tables check_web
552+ check_tables check_tzs check_web
500553
501554check_character_set: $( ENCHILADA)
502555 LC_ALL=en_US.utf8 && export LC_ALL && \
@@ -532,19 +585,22 @@ check_tables: checktab.awk $(PRIMARY_YDATA) $(ZONETABLES)
532585 || exit ; \
533586 done
534587
588+ check_tzs: $( TZS) $( TZS_NEW)
589+ diff -u $( TZS) $( TZS_NEW)
590+
535591check_web: $( WEB_PAGES)
536592 $( VALIDATE_ENV) $( VALIDATE) $( VALIDATE_FLAGS) $( WEB_PAGES)
537593
538594clean_misc:
539595 rm -f core * .o * .out \
540596 date tzselect version.h zdump zic yearistype libtz.a
541597clean: clean_misc
542- rm -fr tzpublic
598+ rm -fr * .dir tzdb- * / $( TZS_NEW )
543599
544600maintainer-clean: clean
545601 @echo ' This command is intended for maintainers to use; it'
546602 @echo ' deletes files that may need special tools to rebuild.'
547- rm -f leapseconds $( MANTXTS) * .asc * .tar.gz
603+ rm -f leapseconds version $( MANTXTS) $( TZS ) * .asc * .tar.*
548604
549605names:
550606 @echo $( ENCHILADA)
@@ -591,6 +647,8 @@ set-timestamps.out: $(ENCHILADA)
591647 touch -cmr ` ls -t $$ file workman.sh | sed 1q` $$ file.txt || \
592648 exit ; \
593649 done
650+ touch -cmr $$ (ls -t $( TZS_DEPS) | sed 1q) $( TZS)
651+ touch -cmr $$ (ls -t $( VERSION_DEPS) | sed 1q) version
594652 touch $@
595653
596654# The zics below ensure that each data file can stand on its own.
@@ -599,12 +657,12 @@ set-timestamps.out: $(ENCHILADA)
599657check_public:
600658 $( MAKE) maintainer-clean
601659 $( MAKE) " CFLAGS=$( GCC_DEBUG_FLAGS) " ALL
602- mkdir tzpublic
660+ mkdir -p public.dir
603661 for i in $( TDATA) ; do \
604- $( zic) -v -d tzpublic $$ i 2>&1 || exit ; \
662+ $( zic) -v -d public.dir $$ i 2>&1 || exit ; \
605663 done
606- $( zic) -v -d tzpublic $( TDATA)
607- rm -fr tzpublic
664+ $( zic) -v -d public.dir $( TDATA)
665+ rm -fr public.dir
608666
609667# Check that the code works under various alternative
610668# implementations of time_t.
@@ -616,15 +674,15 @@ check_time_t_alternatives:
616674 fi && \
617675 zones= ` $(AWK ) '/^[^# ]/ { print $$3 }' <zone1970.tab` && \
618676 for type in $(TIME_T_ALTERNATIVES); do \
619- mkdir -p tzpublic /$$type && \
677+ mkdir -p time_t.dir /$$type && \
620678 $(MAKE) clean_misc && \
621- $(MAKE) TOPDIR=` pwd`/tzpublic /$$type \
679+ $(MAKE) TOPDIR=$$( pwd)/time_t.dir /$$type \
622680 CFLAGS='$(CFLAGS) -Dtime_tz='"'$$type'" \
623681 REDO='$(REDO)' \
624682 install && \
625683 diff $$quiet_option -r \
626- tzpublic /int64_t/etc/zoneinfo \
627- tzpublic /$$type/etc/zoneinfo && \
684+ time_t.dir /int64_t/etc/zoneinfo \
685+ time_t.dir /$$type/etc/zoneinfo && \
628686 case $$type in \
629687 int32_t) range=-2147483648,2147483647;; \
630688 uint32_t) range=0,4294967296;; \
@@ -633,16 +691,20 @@ check_time_t_alternatives:
633691 *) range=-10000000000,10000000000;; \
634692 esac && \
635693 echo checking $$type zones ... && \
636- tzpublic /int64_t/etc/zdump -V -t $$range $$zones \
637- >tzpublic /int64_t.out && \
638- tzpublic /$$type/etc/zdump -V -t $$range $$zones \
639- >tzpublic /$$type.out && \
640- diff -u tzpublic /int64_t.out tzpublic /$$type.out \
694+ time_t.dir /int64_t/etc/zdump -V -t $$range $$zones \
695+ >time_t.dir /int64_t.out && \
696+ time_t.dir /$$type/etc/zdump -V -t $$range $$zones \
697+ >time_t.dir /$$type.out && \
698+ diff -u time_t.dir /int64_t.out time_t.dir /$$type.out \
641699 || exit; \
642700 done
643- rm -fr tzpublic
701+ rm -fr time_t.dir
702+
703+ tarballs signatures : version
704+ $(MAKE ) VERSION=" $$ (cat version)" $@ _version
644705
645- tarballs : tzcode$(VERSION ) .tar.gz tzdata$(VERSION ) .tar.gz
706+ tarballs_version : tzcode$(VERSION ) .tar.gz tzdata$(VERSION ) .tar.gz \
707+ tzdb-$(VERSION ) .tar.lz
646708
647709tzcode$(VERSION ) .tar.gz : set-timestamps.out
648710 LC_ALL=C && export LC_ALL && \
@@ -655,14 +717,26 @@ tzdata$(VERSION).tar.gz: set-timestamps.out
655717 tar $(TARFLAGS ) -cf - $(COMMON ) $(DATA ) $(MISC ) | \
656718 gzip $(GZIPFLAGS ) > $@
657719
658- signatures : tzcode$(VERSION ) .tar.gz.asc tzdata$(VERSION ) .tar.gz.asc
720+ tzdb-$(VERSION ) .tar.lz : set-timestamps.out
721+ rm -fr tzdb-$(VERSION )
722+ mkdir tzdb-$(VERSION )
723+ ln $(ENCHILADA ) tzdb-$(VERSION )
724+ touch -cmr $$(ls -t tzdb-$(VERSION ) /* | sed 1q ) tzdb-$(VERSION )
725+ LC_ALL=C && export LC_ALL && \
726+ tar $(TARFLAGS ) -cf - tzdb-$(VERSION ) | lzip -9 > $@
727+
728+ signatures_version : tzcode$(VERSION ) .tar.gz.asc tzdata$(VERSION ) .tar.gz.asc \
729+ tzdb-$(VERSION ) .tar.lz.asc
659730
660731tzcode$(VERSION ) .tar.gz.asc : tzcode$(VERSION ) .tar.gz
661732 gpg --armor --detach-sign $?
662733
663734tzdata$(VERSION ) .tar.gz.asc : tzdata$(VERSION ) .tar.gz
664735 gpg --armor --detach-sign $?
665736
737+ tzdb-$(VERSION ) .tar.lz.asc : tzdb-$(VERSION ) .tar.lz
738+ gpg --armor --detach-sign $?
739+
666740typecheck :
667741 $(MAKE ) clean
668742 for i in " long long" unsigned; \
@@ -688,8 +762,10 @@ zic.o: private.h tzfile.h version.h
688762.PHONY : ALL INSTALL all
689763.PHONY : check check_character_set check_links
690764.PHONY : check_public check_sorted check_tables
691- .PHONY : check_time_t_alternatives check_web check_white_space clean clean_misc
765+ .PHONY : check_time_t_alternatives check_tzs check_web check_white_space
766+ .PHONY : clean clean_misc force_tzs
692767.PHONY : install install_data maintainer-clean names
693768.PHONY : posix_only posix_packrat posix_right
694- .PHONY : public right_only right_posix signatures tarballs typecheck
769+ .PHONY : public right_only right_posix signatures signatures_version
770+ .PHONY : tarballs tarballs_version typecheck
695771.PHONY : zonenames zones
0 commit comments