<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">
Works great.  Thanks!</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Manuela Friedrich <Manuela.Friedrich@actian.com><br>
<b>Sent:</b> Wednesday, February 21, 2018 1:20 AM<br>
<b>To:</b> Matt Johnson; Paul Eggert; Time Zone Mailing List<br>
<b>Subject:</b> RE: [tz] [PATCH] Support building zic.exe and zdump.exe natively on Windows with Visual Studio nmake.</font>
<div> </div>
</div>
<style>
<!--
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:Calibri}
p.x_MsoNormal, li.x_MsoNormal, div.x_MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
a:x_link, span.x_MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:x_visited, span.x_MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
p.x_msonormal0, li.x_msonormal0, div.x_msonormal0
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
span.x_EmailStyle18
        {font-family:"Calibri",sans-serif;
        color:windowtext}
span.x_EmailStyle19
        {font-family:"Calibri",sans-serif;
        color:windowtext}
span.x_EmailStyle21
        {font-family:"Calibri",sans-serif;
        color:windowtext}
.x_MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:70.85pt 70.85pt 2.0cm 70.85pt}
div.x_WordSection1
        {}
-->
</style>
<div lang="EN-GB" link="blue" vlink="purple">
<div class="x_WordSection1">
<p class="x_MsoNormal"><span style="">This is the tools.ini file we use<br>
<br>
[NMAKE] </span></p>
<p class="x_MsoNormal"><span style="">!IF [ if not "%PLATFORM%" == "x64" exit /b 1 ] == 0</span></p>
<p class="x_MsoNormal"><span style="">CFLAGSW  = /Zi -DHAVE_SYS_WAIT_H=0 -DHAVE_UNISTD_H=0 -DHAVE_INTTYPES_H=0 -DHAVE_POSIX_DECLS=0 -DHAVE_LINK=0 -DHAVE_SYMLINK=0 -DHAVE_DECL_ASCTIME_R=0 -Dssize_t=__int64 -DHAVE_STRTOLL=0 -DRESERVE_STD_EXT_IDS -DSUPPRESS_TZDIR</span></p>
<p class="x_MsoNormal"><span style="">!ELSE</span></p>
<p class="x_MsoNormal"><span style="">CFLAGSW  = /Zi -DHAVE_SYS_WAIT_H=0 -DHAVE_UNISTD_H=0 -DHAVE_INTTYPES_H=0 -DHAVE_POSIX_DECLS=0 -DHAVE_LINK=0 -DHAVE_SYMLINK=0 -DHAVE_DECL_ASCTIME_R=0 -Dssize_t=int -DHAVE_STRTOLL=0 -DRESERVE_STD_EXT_IDS -DSUPPRESS_TZDIR</span></p>
<p class="x_MsoNormal"><span style="">!ENDIF</span></p>
<p class="x_MsoNormal"><span style="">LINKW = cl $(LDFLAGS)</span></p>
<p class="x_MsoNormal"><span style="">CCW  = cl /c</span></p>
<p class="x_MsoNormal"><span style="">LDLIBSW  =</span></p>
<p class="x_MsoNormal"><span style="">X   = .exe</span></p>
<p class="x_MsoNormal"><span style="">O   = .obj</span></p>
<p class="x_MsoNormal"><span style="">PACKAGE=          tzcode</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">BUGEMAIL=       tz@iana.org </span></p>
<p class="x_MsoNormal"><span style="">TZCOBJSW=        zic$(O) getopt$(O)</span></p>
<p class="x_MsoNormal"><span style="">TZDOBJSW=       zdump$(O) getopt$(O) localtime$(O) asctime$(O) strftime$(O)</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">root:                      zic$(X) zdump$(X)</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">version: </span></p>
<p class="x_MsoNormal"><span style="">!IF [git describe > nul 2>&1] == 0</span></p>
<p class="x_MsoNormal"><span style="">                                if not exist version for /f "delims=-" %%a in ('git describe') do echo %%a > version</span></p>
<p class="x_MsoNormal"><span style="">!ELSE</span></p>
<p class="x_MsoNormal"><span style="">                                if not exist version echo $(VERSION) > version</span></p>
<p class="x_MsoNormal"><span style="">!ENDIF</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">version.h:</span></p>
<p class="x_MsoNormal"><span style="">                                echo static char const PKGVERSION[]="($(PACKAGE)) "; >version.h</span></p>
<p class="x_MsoNormal"><span style="">                                for /F %%H in ('type version') do echo static char const TZVERSION[]="%%H"; >> version.h</span></p>
<p class="x_MsoNormal"><span style="">                                echo static char const REPORT_BUGS_TO[]="$(BUGEMAIL)"; >>version.h</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">zic$(X): $(TZCOBJSW)</span></p>
<p class="x_MsoNormal"><span style="">                                $(LINKW) $(CFLAGSW) $(TZCOBJSW) /link /out:$@
</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">zdump$(X):        $(TZDOBJSW)</span></p>
<p class="x_MsoNormal"><span style="">                                $(LINKW) $(CFLAGSW) $(TZDOBJSW) /link /out:$@
</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">clean_misc:</span></p>
<p class="x_MsoNormal"><span style="">                                del  *$(O) *.out version.h</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">clean:                    clean_misc</span></p>
<p class="x_MsoNormal"><span style="">                                del zdump$(X) zic$(X)</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">asctime$(O):      private.h tzfile.h</span></p>
<p class="x_MsoNormal"><span style="">date$(O):            private.h</span></p>
<p class="x_MsoNormal"><span style="">difftime$(O):     private.h</span></p>
<p class="x_MsoNormal"><span style="">localtime$(O):   private.h tzfile.h</span></p>
<p class="x_MsoNormal"><span style="">strftime$(O):     private.h tzfile.h</span></p>
<p class="x_MsoNormal"><span style="">zdump$(O):        version.h</span></p>
<p class="x_MsoNormal"><span style="">zic$(O):                 private.h tzfile.h version.h</span></p>
<p class="x_MsoNormal"><span style="">getopt$(O):        </span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">.c.obj:</span></p>
<p class="x_MsoNormal"><span style="">                                $(CCW) $*.c $(CFLAGSW)
</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">.PHONY: root</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0cm 0cm 0cm">
<p class="x_MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Manuela Friedrich
<br>
<b>Sent:</b> Montag, 19. Februar 2018 12:14<br>
<b>To:</b> 'Matt Johnson' <mj1856@hotmail.com>; Paul Eggert <eggert@cs.ucla.edu>; Time Zone Mailing List <tz@iana.org><br>
<b>Subject:</b> RE: [tz] [PATCH] Support building zic.exe and zdump.exe natively on Windows with Visual Studio nmake.</span></p>
</div>
</div>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal"><span style="">Hello Matt,</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">Sure, here is what we currently do.</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">Setup 32 or 64bit Visual Studio environment</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86_amd64</span></p>
<p class="x_MsoNormal"><span style="">"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">Place getopt.c from <a href="ftp://ftp.es.ele.tue.nl/pub/users/jos/poster/getopt.c">
ftp://ftp.es.ele.tue.nl/pub/users/jos/poster/getopt.c</a> in the source directory.</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">Copy attached tools.ini file into the source directory.</span></p>
<p class="x_MsoNormal"><span style="">It uses these flags for 64bit: </span></p>
<p class="x_MsoNormal"><span style="">CFLAGSW  = /Zi -DHAVE_SYS_WAIT_H=0 -DHAVE_UNISTD_H=0 -DHAVE_INTTYPES_H=0 -DHAVE_POSIX_DECLS=0 -DHAVE_LINK=0 -DHAVE_SYMLINK=0 -DHAVE_DECL_ASCTIME_R=0 -Dssize_t=__int64 -DHAVE_STRTOLL=0 -DRESERVE_STD_EXT_IDS -DSUPPRESS_TZDIR</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">Run nmake</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"><span style="">Regards</span></p>
<p class="x_MsoNormal"><span style="">Manuela Friedrich</span></p>
<p class="x_MsoNormal"><span style=""> </span></p>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0cm 0cm 0cm">
<p class="x_MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Matt Johnson [<a href="mailto:mj1856@hotmail.com">mailto:mj1856@hotmail.com</a>]
<br>
<b>Sent:</b> Freitag, 16. Februar 2018 22:42<br>
<b>To:</b> Manuela Friedrich <<a href="mailto:Manuela.Friedrich@actian.com">Manuela.Friedrich@actian.com</a>>; Paul Eggert <<a href="mailto:eggert@cs.ucla.edu">eggert@cs.ucla.edu</a>>; Time Zone Mailing List <<a href="mailto:tz@iana.org">tz@iana.org</a>><br>
<b>Subject:</b> Re: [tz] [PATCH] Support building zic.exe and zdump.exe natively on Windows with Visual Studio nmake.</span></p>
</div>
</div>
<p class="x_MsoNormal"> </p>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">Thanks for this.  May I request a brief summary of how to compile in Visual Studio, starting from sources to final output?  I'm not sure which flags to set, where to set them, how to work with
 the makefile vs. Visual Studio's project files, etc.</span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black"> </span></p>
</div>
<div>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black">Thanks,<br>
Matt</span></p>
</div>
<div class="x_MsoNormal" align="center" style="text-align:center">
<hr size="2" width="98%" align="center">
</div>
<div id="x_divRplyFwdMsg">
<p class="x_MsoNormal"><b><span style="color:black">From:</span></b><span style="color:black"> tz <<a href="mailto:tz-bounces@iana.org">tz-bounces@iana.org</a>> on behalf of Manuela Friedrich <<a href="mailto:Manuela.Friedrich@actian.com">Manuela.Friedrich@actian.com</a>><br>
<b>Sent:</b> Friday, February 16, 2018 2:20 AM<br>
<b>To:</b> Paul Eggert; Time Zone Mailing List<br>
<b>Subject:</b> Re: [tz] [PATCH] Support building zic.exe and zdump.exe natively on Windows with Visual Studio nmake.</span>
</p>
<div>
<p class="x_MsoNormal"> </p>
</div>
</div>
<div>
<div>
<p class="x_MsoNormal">Thanks, Paul!<br>
<br>
Your patches work.<br>
We can no build zic.exe and zdump.exe from the latest git revision.<br>
<br>
Regards<br>
Manuela Friedrich<br>
<br>
-----Original Message-----<br>
From: Paul Eggert [<a href="mailto:eggert@cs.ucla.edu">mailto:eggert@cs.ucla.edu</a>]
<br>
Sent: Donnerstag, 15. Februar 2018 09:10<br>
To: Manuela Friedrich <<a href="mailto:Manuela.Friedrich@actian.com">Manuela.Friedrich@actian.com</a>>; Time Zone Mailing List <<a href="mailto:tz@iana.org">tz@iana.org</a>><br>
Subject: Re: [tz] [PATCH] Support building zic.exe and zdump.exe natively on Windows with Visual Studio nmake.<br>
<br>
Manuela Friedrich wrote:<br>
<br>
> localtime.c(1540) : error C2084: function 'tm *localtime(const time_t <br>
> *)' already has a body<br>
<br>
I guess the Microsoft compiler is within its rights, since C89 and later say that portable applications are not allowed to redefine 'localtime'. Proposed patch attached (it's the first patch; it's not what you suggested, but I hope it works).<br>
<br>
<br>
> So we added code that checks if TZDIR is not empty and only then applies the the leading slash.<br>
<br>
I'm reluctant to base this on an empty TZDIR, partly because it's confusing (empty file names do not work with POSIX), and partly because skipping TZDIR has security implications on POSIX platforms. However, I suppose we can add a macro to do something similar.
 Proposed patch attached (it's the 2nd patch).</p>
</div>
</div>
</div>
</div>
</body>
</html>