Failure in building GFortran on Cygwin

Jerry DeLisle jvdelisle@verizon.net
Fri Nov 30 16:23:00 GMT 2007


Corinna Vinschen wrote:
> [Forgot to CC the fortran list.  Re-sending...]
> 
> On Nov 29 17:05, Jerry DeLisle wrote:
>> Angelo Graziosi wrote:
>>> /tmp/gcc/libgfortran/intrinsics/system_clock.c: In function
>>> 'system_clock_4':
>>> /tmp/gcc/libgfortran/intrinsics/system_clock.c:67: error: storage size of
>>> 'tzp' isn't known
>>> /tmp/gcc/libgfortran/intrinsics/system_clock.c:67: warning: unused
>>> variable 'tzp'
>>> /tmp/gcc/libgfortran/intrinsics/system_clock.c: In function
>>> 'system_clock_8':
>>> /tmp/gcc/libgfortran/intrinsics/system_clock.c:130: error: storage size of
>>> 'tzp' isn't known
>>> /tmp/gcc/libgfortran/intrinsics/system_clock.c:130: warning: unused
>>> variable 'tzp'
>>> [...]
>>> The Cygwin version is 1.5.25-2 (exp.).
>> I can confirm this.  I saw it last wekend trying to do my regular cygwin 
>> build of gfortran for the wiki.  The build died and I assumed I did 
>> something wrong and was going to try back later.
>>
>> Well this is definitely a regression somewhere.  Its not on the gfortran 
>> side which has not touched that file for several months.  It could be 
>> something broke in the configure for cygwin.  The error occurs in a 
>> conditional comapile:
>>
>> #if defined(HAVE_SYS_TIME_H) && defined(HAVE_GETTIMEOFDAY)
>>
>> I will open a PR to track this.
> 
> A simple testcase would have been much more helpful.
> 

Here is code with the problem:  Not super simple, but I think you can follow it.

Thanks for hellp

void
system_clock_4(GFC_INTEGER_4 *count, GFC_INTEGER_4 *count_rate,
	       GFC_INTEGER_4 *count_max)
{
   GFC_INTEGER_4 cnt;
   GFC_INTEGER_4 rate;
   GFC_INTEGER_4 mx;

#if defined(HAVE_SYS_TIME_H) && defined(HAVE_GETTIMEOFDAY)
   struct timeval tp1;
   struct timezone tzp;

   if (sizeof (tp1.tv_sec) < sizeof (GFC_INTEGER_4))
     internal_error (NULL, "tv_sec too small");

   if (gettimeofday(&tp1, &tzp) == 0)
     {
       GFC_UINTEGER_4 ucnt = (GFC_UINTEGER_4) tp1.tv_sec * TCK;
       ucnt += (tp1.tv_usec + 500000 / TCK) / (1000000 / TCK);
       if (ucnt > GFC_INTEGER_4_HUGE)
	cnt = ucnt - GFC_INTEGER_4_HUGE - 1;
       else
	cnt = ucnt;
       rate = TCK;
       mx = GFC_INTEGER_4_HUGE;
     }
   else
     {
       if (count != NULL)
	*count = - GFC_INTEGER_4_HUGE;
       if (count_rate != NULL)
	*count_rate = 0;
       if (count_max != NULL)
	*count_max = 0;
       return;
     }
#elif defined(HAVE_TIME_H)
   GFC_UINTEGER_4 ucnt;

   if (sizeof (time_t) < sizeof (GFC_INTEGER_4))
     internal_error (NULL, "time_t too small");

   ucnt = time (NULL);
   if (ucnt > GFC_INTEGER_4_HUGE)
     cnt = ucnt - GFC_INTEGER_4_HUGE - 1;
   else
     cnt = ucnt;
   mx = GFC_INTEGER_4_HUGE;
#else
   cnt = - GFC_INTEGER_4_HUGE;
   mx = 0;
#endif
   if (count != NULL)
     *count = cnt;
   if (count_rate != NULL)
     *count_rate = TCK;
   if (count_max != NULL)
     *count_max = mx;
}





--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list