localtime.c is a stripped-down version of that from tzcode, from http://www.iana.org/time-zones, converted to use a 64-bit time_t on all platforms. Apart from removing unused code and merging in the parts of private.h which are needed, the other main changes are - to use environment variable TZDIR to point to the zoneinfo files, and failing that, R_HOME/share/zoneinfo. - to call getTZinfo() to get the default timezone if TZ is unset. strftime.c is a stripped-down version of that from tzcode, using the system version for locale-dependent day/month/am/pm names. zoneinfo.zip is formed by installing tzdata on a system with zic, and zipping up the results, after adding a file VERSION giving the version. (The binary databases are byte streams, and so do not depend on the architecture. There are some comments about whether time_t is signed, which it is on all sensible platforms. This is only used with R's implemntation, where time_t is int_fast64_t, hence signed.) To remake it, download the current version of tzdataXXXXx.tar.gz from http://www.iana.org/time-zones to this directory and run make -f Make.zi VERSION=2017c for the appropriate version. If zic is not on the path, use something like make -f Make.zi VERSION=2017c ZIC=/usr/sbin/zic NB: it seems that this needs to be done on a system with 64-bit time_t or the catalogs will be confined to 1902-2038. And even that did not suffice on macOS. As a sanity check, the size of zoneinfo.zip should be about 400KB if 64-bit: a 32-bit version will be about 280KB.