While trying to cross compile Octave for MinGW, I hit the following errors:
In file included from /home/jwe/src/octave/liboctave/oct-time.h:26:0, from /home/jwe/src/octave/liboctave/file-stat.h:28, from /home/jwe/src/octave/liboctave/file-ops.cc:43: /usr/include/c++/4.6/ctime:72:11: error: '::gmtime' has not been declared /usr/include/c++/4.6/ctime:73:11: error: '::localtime' has not been declared The problem seems to be that config.h includes the lines /* Define to rpl_gmtime if the replacement function should be used. */ #define gmtime rpl_gmtime /* Define to rpl_localtime if the replacement function should be used. */ #define localtime rpl_localtime and the ctime header has #include <time.h> ... // Get rid of those macros defined in <time.h> in lieu of real functions. #undef clock #undef difftime #undef mktime #undef time #undef asctime #undef ctime #undef gmtime #undef localtime #undef strftime namespace std { using ::clock_t; using ::time_t; using ::tm; using ::clock; using ::difftime; using ::mktime; using ::time; using ::asctime; using ::ctime; using ::gmtime; using ::localtime; using ::strftime; } // namespace Also, defining gmtime and localtime in config.h could cause trouble for classes that have member functions with those names. Surrounding the definitions in the config.h file with #ifndef __cplusplus/#endif allowed me to get past the error, but that doesn't seem like the right fix. Would it be possible to handle these definitions in gnulib's time.h instead of inserting them in config.h? jwe